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