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