基于STM32的室內(nèi)環(huán)境檢測(cè)調(diào)節(jié)系統(tǒng)*
*指導(dǎo)老師:王迷迷
本文引用地址:http://2s4d.com/article/202110/428815.htm0 引言
隨著科技與經(jīng)濟(jì)的發(fā)展,大多數(shù)人對(duì)生活環(huán)境質(zhì)量開始有了更高的追求。因此,家庭室內(nèi)環(huán)境的檢測(cè)與調(diào)節(jié)技術(shù)成為了一個(gè)重要項(xiàng)目。傳統(tǒng)的檢測(cè)裝置和調(diào)節(jié)設(shè)備,不僅設(shè)備成本高,而且對(duì)家庭環(huán)境的適用性不是很強(qiáng)。現(xiàn)在物聯(lián)網(wǎng)技術(shù)發(fā)展迅速,但大多數(shù)傳統(tǒng)裝置卻無法實(shí)現(xiàn)遠(yuǎn)程檢測(cè)與調(diào)控。因此,我們通過ESP8266 以及MQTT 協(xié)議實(shí)現(xiàn)單片機(jī)與云平臺(tái)OneNET 的交互,以此來達(dá)到人們對(duì)環(huán)境參數(shù)的實(shí)時(shí)檢測(cè)與調(diào)節(jié)的功能。在數(shù)據(jù)被OneNET 物聯(lián)網(wǎng)開放平臺(tái)所部署的產(chǎn)品(服務(wù)器)成功接收并存儲(chǔ)后,用戶可通過PC 或智能手機(jī)登錄在OneNET 物聯(lián)網(wǎng)開放平臺(tái)開發(fā)的監(jiān)測(cè)界面,實(shí)現(xiàn)對(duì)室內(nèi)環(huán)境數(shù)據(jù)的實(shí)時(shí)監(jiān)測(cè)。
1 系統(tǒng)設(shè)計(jì)
系統(tǒng)方案如圖1 所示,主要以STM32F103 芯片為核心,利用傳感器為外設(shè),圍繞STM32 完成對(duì)環(huán)境信息的采集。利用繼電器完成對(duì)環(huán)境信息調(diào)節(jié)。利用MQTT協(xié)議,通過ESP8266 模塊,使環(huán)境信息上傳到OneNET 平臺(tái),可以通過設(shè)備云遠(yuǎn)程監(jiān)控和調(diào)節(jié)系統(tǒng)所在的室內(nèi)環(huán)境。
圖1 系統(tǒng)方案
2 系統(tǒng)硬件/數(shù)據(jù)采集
本系統(tǒng)采用的是瑞士Sensirion 公司生產(chǎn)的SHT20溫濕度傳感器,其在高溫、高濕環(huán)境下性能更加穩(wěn)定。溫度誤差在0.3 ℃,濕度誤差在3.0%RH,在本系統(tǒng)中已經(jīng)達(dá)到使用標(biāo)準(zhǔn)。SHT20 溫濕度傳感器采用的是I2C總線通信,基本命令如表1 所示。
表1 基本命令
有害氣體檢測(cè)使用的是MQ-135 模塊,鼠標(biāo)靠近一個(gè)紅色文字,可以直接查看與分句相似的情況,dout輸出都是數(shù)碼信號(hào),ttl 輸出的有效電壓通常是一個(gè)小的低電平,aout 輸出的都是模仿信號(hào),模仿輸出的電流會(huì)隨著濃度的增加而逐漸減少和增加,濃度也就會(huì)變得更高,而且電壓也會(huì)隨之變得更高。aout 可以用來當(dāng)做1個(gè)模擬信號(hào)的輸入和引腳。ttl 輸出的有效信號(hào)是一個(gè)較低的電平,aout 輸出的是1 個(gè)模擬信號(hào),仿真后的輸出就會(huì)隨著濃度的改變而逐漸增加,濃度也就越高,那么電壓就會(huì)逐漸變得更高。aout 可以作為1 個(gè)模擬信號(hào)的輸出引腳。aout 引腳直接與STM32 的AD 轉(zhuǎn)換和輸入引腳相連,ADC 將采集后得到的模擬信號(hào)轉(zhuǎn)換成1 個(gè)數(shù)字信號(hào)。在正常環(huán)境(即沒有收到檢測(cè)氣體)下,將該傳感器所需的輸入和參考電壓設(shè)置為正常輸入和參考電壓。此時(shí)aout 端的檢測(cè)電壓大約為1 V,當(dāng)傳感器檢測(cè)到被檢測(cè)氣體時(shí),檢測(cè)電壓額定值增加為0。在正常環(huán)境下,即沒有檢測(cè)到氣體的情況下,將該傳感所需的輸入和參考電壓設(shè)置為正常輸入和參考電壓。此時(shí)aout 端的模擬濃度電壓約為1 V,當(dāng)單片機(jī)傳感器在模擬濃度檢測(cè)時(shí)得到被用于模擬濃度檢測(cè)的氣體時(shí),當(dāng)模擬濃度電壓額定值變化增加0.1 V 時(shí),被用于模擬濃度檢測(cè)氣體的實(shí)際濃度額定值將會(huì)增加2×10-5。根據(jù)該參數(shù),單片機(jī)可以把測(cè)量出來的模擬濃度電壓額定值自動(dòng)變成模擬濃度額定值。這個(gè)模塊的濃度變換公式定義為:
使用2 路繼電器模塊來控制風(fēng)扇等溫度調(diào)節(jié)設(shè)備和蜂鳴器。在STM32 上定義出2 個(gè)輸出口用于判斷溫濕度是否達(dá)到給定閾值。第1 個(gè)繼電器的常閉觸點(diǎn)接升溫設(shè)備,第2 個(gè)繼電器的常開觸點(diǎn)為降溫設(shè)備。當(dāng)溫度低于最低溫度時(shí),2 個(gè)輸出口均輸出低電平,2 個(gè)繼電器都處在常閉觸點(diǎn)上,第1 個(gè)繼電器控制升溫設(shè)備;當(dāng)溫度處于閾值給定的區(qū)間內(nèi),第1 個(gè)輸出口為高電平,第1 個(gè)繼電器處在常開觸點(diǎn)上,提供電源給第2 個(gè)繼電器,第2 個(gè)輸出口為低電平,處于常閉觸點(diǎn),沒有設(shè)備打開;當(dāng)溫度高于最高溫度時(shí),兩個(gè)輸出口輸出高電平,繼電器都處在常開觸點(diǎn)上,第1 個(gè)繼電器提供第2 個(gè)繼電器的電源,使第2 個(gè)繼電器可以打開降溫設(shè)備。無線網(wǎng)絡(luò)模塊使用的ESP8266 芯片,運(yùn)用AT 指令選擇運(yùn)行模式即可實(shí)現(xiàn)無線網(wǎng)絡(luò)和單片機(jī)之間的數(shù)據(jù)連接。為了存儲(chǔ)環(huán)境數(shù)據(jù)變送器所采集上傳的室內(nèi)環(huán)境數(shù)據(jù),接入OneNET 流程時(shí),需要對(duì)OneNET 物聯(lián)網(wǎng)開放平臺(tái)進(jìn)行相應(yīng)的部署,具體可分為創(chuàng)建產(chǎn)品、添加設(shè)備和數(shù)據(jù)上傳3 個(gè)步驟。首先,登錄OneNET 物聯(lián)網(wǎng)開放平臺(tái)進(jìn)入控制臺(tái),在OneNET 產(chǎn)品目錄選擇“多協(xié)議接入”服務(wù),并創(chuàng)建一個(gè)用于接收和存儲(chǔ)監(jiān)測(cè)數(shù)據(jù)的產(chǎn)品。值得注意的是,一個(gè)產(chǎn)品可以擁有多個(gè)設(shè)備。產(chǎn)品創(chuàng)建成功后點(diǎn)擊進(jìn)入該產(chǎn)品,并打開該產(chǎn)品的設(shè)備列表,使用“添加設(shè)備”功能為該產(chǎn)品添加設(shè)備。然后使用AT 指令將ESP8266連接到自己設(shè)定的路由器上,根據(jù)說明文檔,接入AP的AT 指令為:
AT + CWJAP = ssid,pswd;
其中ssid 為路由器名稱,pswd 為路由器密碼。設(shè)備登陸的AT 指令為:
AT + IOTCFG = devide.proiduct,auth_info;
其中devide 為設(shè)備DI,proiduct 為產(chǎn)品ID,auth_info 為鑒權(quán)信息。在燒錄完成后刷新設(shè)備頁面,可以發(fā)現(xiàn)設(shè)備已經(jīng)在線。之后就要上傳數(shù)據(jù),可以在平臺(tái)建立一個(gè)數(shù)據(jù),數(shù)據(jù)類似程序中的一個(gè)變量,用來存數(shù)值,也可以使用固件上報(bào)功能,若這個(gè)數(shù)據(jù)不存在,會(huì)自動(dòng)新建一個(gè),根據(jù)手冊(cè):
嘗試自己定義一個(gè)數(shù)字,輸入指令A(yù)T+IOTSEND=0,test,125;此時(shí)可以發(fā)現(xiàn),設(shè)備數(shù)據(jù)流(設(shè)備列表→數(shù)據(jù)流)中新增1 個(gè)數(shù)據(jù)125。由此可以實(shí)現(xiàn)定周期向云平臺(tái)上傳數(shù)據(jù)。
3 系統(tǒng)軟件設(shè)計(jì)
本系統(tǒng)采用OneNET 云平臺(tái)服務(wù)實(shí)現(xiàn)網(wǎng)絡(luò)監(jiān)控室內(nèi)環(huán)境數(shù)據(jù)。云平臺(tái)也提供了相應(yīng)的手機(jī)APP,幫助實(shí)現(xiàn)遠(yuǎn)程監(jiān)測(cè)的功能。本系統(tǒng)使用MQTT 協(xié)議實(shí)現(xiàn)數(shù)據(jù)上傳。需要用到安信可ESP8266 IDE、ESP8266 官方SDK等官方提供的文件,需要注意的是,要在云平臺(tái)上創(chuàng)建產(chǎn)品并選擇協(xié)議,得到設(shè)備認(rèn)證三元組:ProductKey、DeviceName 和DeviceSecret,在官方提供的文件中改變相應(yīng)的部分。進(jìn)行編譯、燒錄,即可連接到OneNET平臺(tái)。關(guān)于ESP8266 傳輸數(shù)據(jù)的格式,MQTT 協(xié)議中給出了與數(shù)據(jù)相關(guān)的基本內(nèi)容,其基本格式分別為:固定報(bào)文頭(fixed header)、可變報(bào)文頭(variable header)、有效負(fù)荷(payload)。其中,有效負(fù)荷為實(shí)際檢測(cè)的數(shù)據(jù)。由于設(shè)備原因,我們采用的是網(wǎng)絡(luò)帶寬占用較低的QoS0。
4 系統(tǒng)實(shí)際效果
在打開電源后,可以在PC 端或手機(jī)上看到設(shè)備已連接在無線網(wǎng)中。通過手指按壓測(cè)溫濕度模塊可以看到OneNET 平臺(tái)和移動(dòng)端的設(shè)備云上監(jiān)測(cè)數(shù)據(jù)的變化。但由于MQTT數(shù)據(jù)傳輸質(zhì)量問題,有些數(shù)據(jù)不會(huì)實(shí)時(shí)更新,但總體上可以看出溫度的大致走向,在網(wǎng)絡(luò)較好的地方會(huì)體現(xiàn)得更加明顯。
5 結(jié)束語
本文設(shè)計(jì)了以STM32F103 為核心的室內(nèi)環(huán)境信息監(jiān)測(cè)和調(diào)節(jié)系統(tǒng)。測(cè)試結(jié)果表明,系統(tǒng)能夠準(zhǔn)確檢測(cè)出室內(nèi)的溫度、濕度、一氧化碳等環(huán)境量,可以利用繼電器操控風(fēng)扇和制冷片,制熱片對(duì)對(duì)環(huán)境量進(jìn)行調(diào)節(jié)。利用OneNET 物聯(lián)網(wǎng)平臺(tái),通過MQTT 協(xié)議,完成了對(duì)環(huán)境量的遠(yuǎn)程操控和報(bào)警功能。該設(shè)計(jì)符合系統(tǒng)設(shè)計(jì)的最初目標(biāo),給遠(yuǎn)程環(huán)境監(jiān)控和調(diào)節(jié)提供了新的思路,有一定實(shí)用價(jià)值。
參考文獻(xiàn):
[1] 劉萬元,黃連清,黃方連,等.基于OneNET物聯(lián)網(wǎng)開放平臺(tái)的智慧農(nóng)業(yè)監(jiān)測(cè)系統(tǒng)設(shè)計(jì)[J].農(nóng)業(yè)科技與信息,2021(05):82-85.
[2] 王鵬,王發(fā)言,劉龍龍.基于物聯(lián)網(wǎng)的“OneNET病房”監(jiān)測(cè)與信息反饋平臺(tái)[J].數(shù)碼世界,2021(1):218-219.
[3] 李麗榮,薄立康.STM32技術(shù)下單片機(jī)的通信技術(shù)實(shí)驗(yàn)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].電子測(cè)試,2021(7):30-31.
[4] 李威,王宏濤.基于NB-IoT的酒窖環(huán)境遠(yuǎn)程監(jiān)測(cè)系統(tǒng)[J].應(yīng)用科技,2020,47(4):32-36.
[5] 張晨,王玉槐,韓齊,等.基于OneNET云平臺(tái)的智能家居遠(yuǎn)程控制系統(tǒng)設(shè)計(jì)[J].信息技術(shù)與信息化,2020(10):223-226.
(本文來源于《電子產(chǎn)品世界》雜志2021年9月期)
評(píng)論