【RT-Thread作品秀】基于物联网云平台的智能环境监测设计
作者:赵帅
概述
智能环境监测系统基于 STM32H7系列芯片开发,通过光照传感器与温湿度传感器采集环境中的光照与温湿度数据,通过WIFI将系统采集到的环境数据实时的上传至物联网云平台,也可以通过PC端软件实时的监控环境数据。该系统适用于家庭、办公室、教室等场所的进行环境监控,该系统具有实时性高、功耗低,丢包率低,随时随地监控数据等特点,是一个实用的设计。
开发环境
下位机:
扩展板:DHT11温湿度传感器,BH1750光照传感器,板载AP6212 WIFI模块
RT-Thread版本:RT-Thread V 4.0.3
开发工具及版本:RT-Sudio
上位机:
Qt版本:Qt5
开发工具:Qt Creator4.11.0
RT-Thread使用情况概述
内核部分:调度器,信号量,事件集
调度器:创建多个线程来实现不同的工作。
信号量:用来同步线程。
事件集:通知数据采集完成
组件部分:IIC框架, Sensor框架,SAL 套接字抽象层
IIC框架:驱动光照传感器,获取光照强度数据
Sensor框架:将温湿度传感器注册到sensor上。使用该框架提高了代码的复用性。
SAL 套接字抽象层:该组件实现了对不同网络协议栈或网络实现接口的抽象,并对上层提供一组标准的API接口,方便网络应用的开发与稳定性。
软件包部分:
cJSON:C语言实现的极简的解析 JSON 格式的软件包。
Onenet: RT-Thread 针对 OneNET 平台连接做的的适配,通过这个软件包,可以让设备在 RT-Thread 上非常方便的连接 OneNet 平台,完成数据的发送、接收、设备的注册和控制等功能。
pahomqtt,:本软件包是在 Eclipse paho-mqtt 源码包的基础上设计的一套 MQTT 客户端程序。
Webclient:提供设备与 HTTP Server 的通讯的基本功能。
硬件框架
使用stm32h7做为系统主控,通过外接dht11传感器、bh1750传感器来采集外界的温湿度数据与光照强度。
使用AP6211wifi模块,实现设备的联网,以及连接云平台的功能。
软件框架说明
下位机流程图:
上位机流程图:
上位机数据的获取是通过调用OneNet云平台的API接口来获取数据,因此需要使用HTTP协议。在QT中,QNetworkAccessManager类可以完成基于HTTP协议的数据传输。既可以向网络发送请求,也可以接收网络的应答。但是,具体的网络请求需要通过QNetworkRequest类实现,网络的应答通过QNetworkReply类来实现。在数据获取成功之后,通过调用QT中JSON相关的API函数,根据数据格式匹配出相应的环境数据。之后发送dataSignal()信号,执行setVallue槽函数将数据显示在用户界面上。通过定时器来定时发送get请求,实现数据实时更新的目的。流程图如下图所示。
软件模块说明
art_mqtt_init_entry:初始化 mqtt,初始化成功后,释放信号量,通知ArtOneNetUploadThread线程可以向OneNet发送数据。
art_onenet_upload_entry:线程接收到事件后,将数据发送至OneNet云平台
art_dht11_read_entry:温湿度数据采集线程,采集到数据后发送事件
art_bh1750_read_entry:光照采集线程,采集到数据后发送事件
演示效果
演示视频