【RT-Thread作品秀】基于物聯網云平臺的智能環(huán)境監(jiān)測設計
作者:趙帥
概述
智能環(huán)境監(jiān)測系統(tǒng)基于 STM32H7系列芯片開發(fā),通過光照傳感器與溫濕度傳感器采集環(huán)境中的光照與溫濕度數據,通過WIFI將系統(tǒng)采集到的環(huán)境數據實時的上傳至物聯網云平臺,也可以通過PC端軟件實時的監(jiān)控環(huán)境數據。該系統(tǒng)適用于家庭、辦公室、教室等場所的進行環(huán)境監(jiān)控,該系統(tǒng)具有實時性高、功耗低,丟包率低,隨時隨地監(jiān)控數據等特點,是一個實用的設計。
開發(fā)環(huán)境
下位機:
擴展板:DHT11溫濕度傳感器,BH1750光照傳感器,板載AP6212 WIFI模塊
RT-Thread版本:RT-Thread V 4.0.3
開發(fā)工具及版本:RT-Sudio
上位機:
Qt版本:Qt5
開發(fā)工具:Qt Creator4.11.0
RT-Thread使用情況概述
內核部分:調度器,信號量,事件集
調度器:創(chuàng)建多個線程來實現不同的工作。
信號量:用來同步線程。
事件集:通知數據采集完成
組件部分:IIC框架, Sensor框架,SAL 套接字抽象層
IIC框架:驅動光照傳感器,獲取光照強度數據
Sensor框架:將溫濕度傳感器注冊到sensor上。使用該框架提高了代碼的復用性。
SAL 套接字抽象層:該組件實現了對不同網絡協(xié)議?;蚓W絡實現接口的抽象,并對上層提供一組標準的API接口,方便網絡應用的開發(fā)與穩(wěn)定性。
軟件包部分:
cJSON:C語言實現的極簡的解析 JSON 格式的軟件包。
Onenet: RT-Thread 針對 OneNET 平臺連接做的的適配,通過這個軟件包,可以讓設備在 RT-Thread 上非常方便的連接 OneNet 平臺,完成數據的發(fā)送、接收、設備的注冊和控制等功能。
pahomqtt,:本軟件包是在 Eclipse paho-mqtt 源碼包的基礎上設計的一套 MQTT 客戶端程序。
Webclient:提供設備與 HTTP Server 的通訊的基本功能。
硬件框架
使用stm32h7做為系統(tǒng)主控,通過外接dht11傳感器、bh1750傳感器來采集外界的溫濕度數據與光照強度。
使用AP6211wifi模塊,實現設備的聯網,以及連接云平臺的功能。
軟件框架說明
下位機流程圖:
上位機流程圖:
上位機數據的獲取是通過調用OneNet云平臺的API接口來獲取數據,因此需要使用HTTP協(xié)議。在QT中,QNetworkAccessManager類可以完成基于HTTP協(xié)議的數據傳輸。既可以向網絡發(fā)送請求,也可以接收網絡的應答。但是,具體的網絡請求需要通過QNetworkRequest類實現,網絡的應答通過QNetworkReply類來實現。在數據獲取成功之后,通過調用QT中JSON相關的API函數,根據數據格式匹配出相應的環(huán)境數據。之后發(fā)送dataSignal()信號,執(zhí)行setVallue槽函數將數據顯示在用戶界面上。通過定時器來定時發(fā)送get請求,實現數據實時更新的目的。流程圖如下圖所示。
軟件模塊說明
art_mqtt_init_entry:初始化 mqtt,初始化成功后,釋放信號量,通知ArtOneNetUploadThread線程可以向OneNet發(fā)送數據。
art_onenet_upload_entry:線程接收到事件后,將數據發(fā)送至OneNet云平臺
art_dht11_read_entry:溫濕度數據采集線程,采集到數據后發(fā)送事件
art_bh1750_read_entry:光照采集線程,采集到數據后發(fā)送事件
演示效果
演示視頻