嵌入式项目分享:复杂环境监控以及转发系统

项目背景

        1.在学习了很多基础知识后,对所学内容的一个结合汇总以及通过具体的场景进行联系。

        2.为后续的暑期实习和秋招提前做项目上的准备。

项目简介

        本项目主要实现的功能为:复杂环境的监控,环境信息的传输,服务器对环境信息的处理和对客户端连接的处理,客户端的实现和与服务器的通信过程。项目中涉及:stm32,硬件驱动,C/C++,Python,Linux系统及网络编程,线程池,QT,Mysql等等知识点,涉及内容广泛,可做练手使用。

项目结构

        本项目讲主要分为四部分分享,包括下位机stm32端,rk3568Linux服务器端,QT客户端,阿里云物联网模型设置。下面简要介绍每部分所实现的功能。

1.下位机stm32端:

        环境检测:单总线驱动DHT11获取温湿度;ADC获取光照强度以及雨滴检测器的数值;此处可任意加传感器模块,使用对应协议驱动即可。

        数据存储:使用spi总线驱动w25q64芯片对数据进行读取和存储。

        主动装置:定时器pwm控制sg90舵机转向模拟开关门;gpio驱动led模拟系统运行状态以及电灯;舵机sg90(pwm驱动)配合超声波模块hc-sr04(输入捕获检测)实现监控功能;pwm驱动直流电机模拟风扇旋转,4个按键通过单机,双击,长按实现不同的设置和显示转换功能;编码器用于对监测上下限参数的调整;蜂鸣器对异常情况进行报警。

        外部通信:串口转蓝牙模块(透传)实现和外部蓝牙设备的通信;串口转esp01s(内置mqtt协议)实现与阿里云物联网模型实现通信;模拟iic总线驱动0.96存oled屏幕显示相关参数。

        软件设计:看门狗设置防止程序跑飞;适当情况关中断保证单总线通信正常;对中断优先级进行设置;全局变量通过指针结构体进行优化。

大体功能如图1所示(功能不全):

1.下位机功能示意图

2.rk3568Linux服务器端

        父进程epoll+线程池服务器架构设计:基于socket实现C/S结构的tcp通信;使用epoll对应的函数簇实现对连接套接字的监控;在有连接请求时通过分配线程池中的线程实现与客户端的通信工作,具体结构如图2所示。

2.线程池+epoll结构

        子进程与阿里云和父进程通信:通过阿里云提供的Python程序获取阿里云物联网下发的环境信息;对下发信息进行解包以及组包通过共享内存转发置父进程。

        线程处理函数:使用状态机思想分离不同状态的处理逻辑;实现与qt客户端的通信以及和阿里云物联网平台的通信工作;通过Mysql的API操作我位于Linux上的数据库,实现登录,注册,账户管理等功能,具体如图3所示(此为初始版本,最终版本可能有所差异):

3.线程处理逻辑

3.QT客户端

        网络信息界面:显示自身ip和服务器ip信息;实现其他界面的切换按钮实现包括环境显示,设置,登录,具体如图4所示:

4.网络信息界面

        登录、注册、人员管理界面:登录界面实现人员登录功能;注册界面实现人员注册功能;人员管理界面实现人员信息的展示,对人员信息的修改功能,具体界面如图5所示:

5.登录、注册及管理界面

        环境显示界面:实现下位机环境状态的显示,包括但不限于:超声波监控数据,温湿度,下雨状态,电机风扇状态,门状态,系统是否安全的评估等等。

        环境设置界面:实现对下位机可操作器件的设置功能,包括但不限于:超声监控的设置,led,门状态等等,具体界面设计如图6所示:

6.环境显示、环境设置界面

4.阿里云物联网

        mqtt协议简介:mqtt协议可通过主题的订阅和发布来实现两端通信,订阅用于接收信息,而发布用于发送自己的信息。阿里云物联网官网:https://iot.console.aliyun.com/

        主要使用使用图7中的产品,设备,服务端订阅,云产品流转功能:

7.aliyun物联网功能

        产品:对一类产品进行表征的一个概念,产品中存在topic列表,该topic列表就是用于发布和订阅的主题,也就是理解为通信的频道。

        设备:位于产品之下一层的概念,代表同一类产品中不同的具体产品。

        服务端订阅:实现stm32到Linux服务器的环境信息流转,可将stm32上传的信息转发到RK3568Linux服务器端做后续操作。

        云产品流转:实现QT客户端->linux服务器->阿里云->stm32的链路,可将linux下发的环境设置信息转发到stm32下位机端进行设置。

        本部分仅对各部分的功能做介绍,其具体实现可参考网上教程以及阿里云物联网官方提供的教程。

分享计划

        计划分下位机,服务器,客户端进行分享,在后面会陆续给出三个部分的具体实现、设计和部分关键代码,在完成后对项目代码进行开源,同时欢迎各位大佬在项目分享的过程中分享自己的想法,对项目的实现进行自己的优化和评论,博主希望在和大家交流的过程中相互学习,共同进步。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值