朱兆豐,劉靜琦,周振虎,劉靜波,余澤滔,時 飛
(南京工程學院 信息與通信工程學院,江蘇 南京 211167)
室內空氣質量對于人體健康具有直接的影響。隨著生活水平的提高,人們越來越重視室內環境的空氣質量、環境參數等,特別是各種有害氣體,嚴重危害了人體健康[1]。人們采取相關監測方法獲取室內溫濕度、VOC、PM2.5等環境參數,監測方法大致經歷了幾個階段:人工現場監測、在線監測、基于ZigBee和GPRS方式監測等[2-3]。隨著網絡技術的發展以及智能手機的普及,多采用智能硬件終端監測環境參數、采集數據,并通過WiFi模塊傳輸至云平臺,同時采用微信小程序實時查詢數據,發出控制指令控制硬件終端已成為一種趨勢。采用不同的主控芯片與云平臺構建的遠程監測系統具有不同的應用特點[4],本文設計的室內環境參數監測系統采用STM32主控芯片,通過WiFi模塊上傳數據至貝殼物聯云平臺,完成數據采集、存儲、上傳和微信小程序實時查詢數據、發出控制指令等應用。
系統總體組成如圖1所示,其中虛線部分為硬件終端。主控芯片采用STM32F103RCT6,這是以32位Cortex-M3為核心的高性能處理器,主頻為72 MHz,集成了多種外設,片上資源豐富[5]。采用高精度、低功耗的溫濕度傳感器HDC1080采集溫濕度數據,采用ZPH01型傳感器檢測VOC和PM2.5數據信息。ZPH01型傳感器可以配置成2種數據輸出模式,一種是串口方式,另一種以PWM波形中低電平占空比的表示輸出數據,使用靈活。WiFi模塊選用ESP8266,ESP8266可配置成多種模式,與STM32單片機通過串口連接。硬件終端采集數據,定時發送至貝殼物聯云平臺。在貝殼物聯注冊的同一個用戶ID下,電腦端和微信小程序同步接收并更新數據。微信小程序可以查詢數據信息,也可以發送指令,進而控制硬件終端數據存儲與報警閾值的設定等。系統中接有時鐘芯片DS3231,這是一款帶有溫度補償的高精度時鐘芯片[6],用以提供系統運行的時間信息、定時時間間隔的控制設定等。

圖1 系統總體組成
硬件終端包括主控芯片STM32F103RCT6。主控芯片的PC11和PC12作為I2C總線掛載了3個功能模塊,分別是溫濕度傳感器HDC1080、時鐘芯片DS3231和E2PROM存儲芯片AT24C02,STM32主控芯片通過訪問不同的器件地址[7],可以對芯片進行配置與讀寫。空氣質量傳感器ZPH01連接到串口1的PA9和PA10上;WiFi模塊ESP8266連接到串口2的PA2和PA3上。系統配置了一塊320×240分辨率的TFT彩屏,其16位數據口連接到STM32的PB端口,GT32L32字庫芯片掛載到STM32的SPI1總線上,方便顯示中英文信息。
圖2所示為硬件終端組成與接口連接示意圖,其中I2C總線上PC11為SDA數據線,PC12為SCL時鐘線。ESP8266的復位引腳由STM32的PA12控制。DS3231的INT引腳可以軟件配置為輸出1 Hz的信號,連接于STM32的PC6引腳上作外部中斷信號,由此進入外部中斷服務程序??諝赓|量傳感器的MOD模式控制端接口處于串口模式時讀取數據,ZPH01與單片機之間的數據讀取以串口1方式進行。

圖2 硬件終端組成與接口電路
ESP8266是一款高集成度的WiFi模塊,它是一個32位的MCU系統,可獨立運行訪問網絡,或者作為通信模塊搭載于其他主控芯片上,幫助其他主控芯片接入互聯網[8]。ESP8266模塊符合IEEE802.11b/g/n標準,支持TTL電平,板載PCB天線[9],與STM32通過串口2連接,ESP8266模塊可配置成AP,STA或AP+STA模式。
(1)AP模式是指把ESP8266作為熱點,允許其他外設接入ESP8266模塊;
(2)STA模式是將ESP8266作為客戶端,用于將ESP8266接入其他熱點,例如無線路由器等;
(3)AP+STA模式是前兩種模式的整合,兼具熱點功能,為其他設備提供接入服務,同時也可以接入其他WiFi網絡。
本設計把ESP8266配置為STA工作模式,通過路由器連接網絡。
TI公司出品的HDC1080溫濕度傳感器具有高精度、低功耗的特點,可進行溫度與濕度監測,分辨率較高。相對濕度精度典型值為±2%RH,溫度精度典型值為±0.2 ℃,供電電壓為2.7~5.5 V。借助數字總線I2C接口與單片機進行數據讀寫:HDC1080讀寫遵守I2C協議,設備地址0x80(寫),0x81(讀)。測量溫度數據計算式見(1):

式中,TEMP[15:00]為溫度寄存器的十進制數。
測量濕度數據計算見式(2):

式中,HUMI[15:00]為濕度寄存器的十進制數。
ZPH01空氣質量傳感器可以同時提供VOC檢測和PM2.5檢測。VOC檢測單元對甲醛、苯等有機揮發氣體具有極高的靈敏度。ZPH01出廠經過標定校準,數據的傳輸方式由MOD引腳配置。當MOD引腳接地時,數據以串口方式輸出;當MOD懸空時,數據以PWM方式輸出,其中,以PWM波形低電平的占空比表示數據大小。ZPH01模塊通過串口1方式與STM32進行數據交互。該傳感器發送一次檢測數據的周期為1 s,包含VOC等級以及PM2.5等空氣質量數據。程序接收數據并通過校驗后得到PM2.5和VOC等級有效數據。
通過串口配置工具發送AT指令,配置ESP8266連接路由器,并確定是否連接成功。STM32單片機通過傳感器讀取室內環境參數,以固定的時長間隔存儲數據至E2PROM,同時通過ESP8266定時發送數據至貝殼物聯云平臺。貝殼物聯云平臺電腦端和微信小程序均可發送指令,硬件終端根據不同的指令解析指令含義,作出響應,系統主程序流程如圖3所示。程序將時間讀取、測量溫濕度、顯示溫濕度和存儲數據等放置在外中斷服務程序中,利用DS3231輸出的1 Hz信號連接STM32的PC6,提高主程序的效率。I2C總線下的溫濕度傳感器HDC1080、時鐘芯片DS3231和E2PROM存儲器AT24C02均按照應用手冊寫入控制字,先配置內部控制寄存器,之后讀出數據。在串口2中斷接收并解析收到的控制指令,串口2中斷接收到指令后給主程序一個標志位,之后進行判斷,并根據不同的指令完成相應的操作。可以通過電腦端或手機微信小程序下達指令進行遠程控制,控制數據上傳的時間間隔和輸出報警的閾值等。

圖3 主程序流程
貝殼物聯云平臺采用以TCP協議為主,UDP協議為輔的形式通信,兩種協議間信息可互通。TCP協議為遠程網絡控制系統提供可靠且面向多元化連接的傳輸控制協議[10],在TCP協議的基礎上,可以直接使用TCP建立長連接,定時發送心跳數據,保持用戶、設備在線期間與服務器可進行JSON字符串格式數據通信,也可采用HTTP(s)通信協議獲取用戶資源,向設備發送指令。
ESP8266具有硬件終端與貝殼物聯云平臺之間數據傳輸的功能,把STM32采集的數據按照平臺通信協議格式發送至云平臺,同時接收云平臺發送的JSON格式的指令,解析后執行不同的任務。ESP8266與平臺之間保持通信,定時發送心跳信號、檢查當前登錄狀態。當串口2中斷標志產生,意味著云平臺發出指令,這時STM32調用JSON解析函數解析接收的JSON字符串,得到有效指令。硬件終端根據上傳數據的最低時間間隔,按照通信協議上傳數據至云平臺,上傳數據的時間間隔可以根據不同指令增加或減小。
ESP8266配置為STA客戶端模式加透傳模式,其配置方式可以用串口2發送命令函數或用串口配置工具進行配置。輸入的指令“AT+SAVETRANSLINK”用于配置ESP8266上電后自主連接貝殼物聯云平臺。待AT指令發送成功后,ESP8266返回“OK”。
官方給出的上傳數據的協議格式為{"M":"update", "ID":"xx1","V":{"id1":"value1",...}} ,“xx1”表示注冊用戶的設備ID,“id1”和“value1”是掛在當前設備ID下的數據接口1和上傳數據1,“…”是該設備下的多個數據接口與數據。對照此格式,上傳數據的函數如下:

變量“did”表示注冊用戶的設備ID,“inpitid”是所屬設備ID下的數據接口ID,如果上傳多個數據,可以按照協議格式添加數據接口,由平臺給出數據接口ID,掛在當前所屬設備ID的其他數據接口?!癡alue”是上傳的數據,如溫濕度和PM2.5等。
貝殼物聯云平臺提供預先設定的按鈕,可以在電腦端和微信小程序里發送指令,指令封裝為JSON數據格式,例如用戶硬件終端接收到電腦端發出的“play”按鍵的數據格式是{"M":"say", "ID":"U*****", "NAME":"*****(web)", "C":"play","T":"1601725434"},其中“U*****”是用戶ID,NAME后的“*****”是用戶名,C后的“play”是解析的關鍵字,不同的按鍵指令含義即為C后的字符,包括stop、up、down等。T后的數字是服務器發送信息時的時間戳,為格林威治時間1970年01月01日00:00:00到當前時間的秒數。程序解析按鍵解析出不同的關鍵字,從而實現不同的功能選項。
ZPH01可以配置為串口方式,發送數據至STM32串口1,每秒發送一幀數據,一幀數據共有9個字節,其中字節00為起始位,字節03和04是PM2.5顆粒物低脈沖率的整數和小數部分,最后乘以系數得到顆粒物濃度。07字節是VOC等級,08字節是01~07字節的校驗和,含義是01~07字節的和取反加1。串口1的中斷處理程序中,數據存放于數組aRxBuffer[RxCounter],當一幀數據結束后產生空閑總線中斷,給出中斷標志位ReceiveState,主程序根據中斷標志位ReceiveState讀取并組合字節03和字節04的數據,得到PM2.5濃度。程序代碼如下:

通過對硬件終端采集、上傳數據進行測試,可以看到電腦端的貝殼物聯網平臺與手機微信小程序同步接收、顯示數據。測試過程中,通過平臺發布指令,調整數據上傳的時間間隔等。圖4所示為硬件終端顯示數據界面,圖5所示為微信小程序接收數據界面,圖6所示為電腦端溫度實時接收數據界面。

圖4 硬件終端顯示數據界面

圖5 微信小程序接收數據界面

圖6 溫度實時接收數據界面
本系統經過系統硬件設計、軟件編程配置和實際測試,實現了溫濕度、PM2.5和VOC數據的采集,并能將數據上傳貝殼物聯云平臺和手機微信小程序,從而實現同步遠程監測、發布指令的目的。測試表明,系統符合室內環境參數監測的要求,通過接入貝殼物聯云平臺實現了遠程監測,兼顧了成本、效率和實時性,滿足了實際應用需求。STM32豐富的接口和外設可以作為測量其他參數的監測接口,增加貝殼物聯云平臺的數據接口,上傳需要的數據,開啟平臺保存歷史數據、發送指令等功能,為系統進一步的拓展應用夯實了基礎。