程遠航, 許雪姝, 杜英魁, 關 屏, 趙麗娟, 劉 樞
(1.沈陽大學 信息工程學院,遼寧 沈陽 110014;2.沈陽恒源偉業環境檢測服務有限公司,遼寧 沈陽 110003;3.遼寧省生態環境事務服務中心,遼寧 沈陽 110161)
環境空氣質量的區域高密度在線監測,是目前環境監測領域的一個研究熱點。隨著工業的發展,人們所處的生活環境日益惡劣,各種呼吸道疾病的發病率大幅度提高[1]。傳統空氣監測設備多以有線通信方式為主。有線通信方式線路復雜,成本高,不適合大范圍電力系統的監測[2]。為了方便實際的應用部署,本文采用無線通信方式監測空氣質量。主要通過Wi-Fi模塊、STM32單片機、氣體傳感器、TFT式顯示屏構建穩定的無線空氣質量監測終端。用戶只需上電啟動,儀器即可監測環境參數,并把相應結果實時顯示在屏幕上,同時還設有數據上傳云端功能,隨時隨地供分析使用[3]。
本系統自定義數據通信協議,以STM32F103[4,5]為主控芯片,串口連接多合一傳感器進行數據采集與解析,用TFT式顯示屏顯示實時數據變化,并采用Wi-Fi模塊,依照自定義的數據通信協議將數據上傳到云端。如果網絡傳輸發生失敗,將把數據存入SPI Flash當中,在網絡通信恢復后,將上傳SPI Flash中的數據。可以通過Web下發Wi-Fi賬戶和密碼,人們可根據實際工程需求更改Wi-Fi賬戶和密碼,實現不同場景的空氣質量監測。該系統可以實時從顯示屏查看數據,也可以在云端查看連續完整的數據。
自定義基于TCP/IP[6~8]數據通信協議,并可通過Web下發Wi-Fi賬戶和密碼。以STM32F103為主控芯片,傳感器測量溫度、濕度、二氧化碳、甲醛等氣體濃度,傳感器將采集到的數據通過串口發送給STM32F103,STM32F103將數據進行解析并按照自定義的數據通信協議進行打包,串口接入TFT式顯示屏實時顯示溫度、濕度及各氣體濃度,同時STM32F103將數據包通過Wi-Fi模塊上傳到云端。如果網絡傳輸發生失敗,將把數據存入SPI Flash當中。在網絡通信恢復之后,將補傳SPI Flash中的數據。在程序設計中,時刻監測服務端是否下發的Wi-Fi賬戶和密碼。如果監測到下發的Wi-Fi賬戶和密碼,等待此刻的數據傳輸完成之后,重新連接新的Wi-Fi賬戶。
本系統采用的是STM32F103微控制器,芯片尺寸為32位,程序存儲器類型為FLASH。
本系統采用TFT式屏幕顯示氣體數據變化。TFT-LCD即薄膜晶體管液晶顯示屏,TFT液晶屏是一類有源矩陣液晶顯示設備[9]。可直接在上位機配套軟件USART HMI上制作,將制作好的文件下載到屏幕中,STM32F103通過串口發送指令控制屏幕變化。
該系統采用PTQS1005型號傳感器進行數據采集,PTQS1005是一種多合一氣體傳感器模組,數據采集模塊與主控芯片的通信方式為串口。它可以同時測量溫度、濕度、二氧化碳、甲醛等氣體濃度,各參數均以數字信號形式輸出到單片機。PTQS1005電路圖如圖1(a)所示。
Wi-Fi模塊ESP8266[10,11]與主控芯片的通信方式為串口。ESP8266支持數據透傳模式。主控芯片通過AT指令控制ESP8266。ESP8266電路圖如圖1(b)所示。

圖1 數據采集與通信電路
根據空氣質量監測無線傳感器終端采集的數據內容和數據傳輸的完整性要求,設計統一的數據通信協議,此協議在國家標準通信協議及數據格式的基礎上修改,包括起始符、網絡類型、命令單元、設備識別碼、時間單元、數據單元、判斷位、校驗碼。該協議可根據實際工程需要擴展數據單元部分,并帶有時間單元,可實時上傳帶有時間戳的數據。Wi-Fi模塊與云端依照此協議進行通信,自定義的數據通信協議的數據包結構和定義如表1所示。

表1 數據通信協議的數據包結構和定義
本系統通過氣體傳感器對空氣質量進行數據采集。主控芯片對采集到的數據進行解析,并且通過TFT式顯示屏實時顯示氣體數據變化。通過Wi-Fi模塊實時將數據發送到云端,當網絡發生異常,數據存入SPI Flash中,網絡恢復后,將SPI Flash中數據上傳到云端。期間可通過Web下發Wi-Fi賬戶和密碼更改Wi-Fi模塊所連接的賬戶與密碼。
開啟定時器,設置數據采集時間間隔為2 s,主控芯片通過串口發送讀取數據的指令,傳感器收到指令之后,將上傳給主控芯片一組數據,STM32F103對此組數據進行解析,并且將各氣體數據通過串口實時發送給TFT式屏幕顯示。在程序中,為了避免其他干擾信號的影響,采取一段時間內多個數值去掉最大與最小值再求平均值的方式得到最終的各氣體濃度數據。
本系統在TCP協議下進行網絡傳輸。首次開機Wi-Fi模塊通過AT指令連接原始熱點,原始熱點賬戶與密碼存儲在FLASH中地址0x00處。Wi-Fi模塊連接對外服務IP地址以及端口號,發送登錄包。登錄成功后,在瀏覽器下發所要更改的Wi-Fi賬號以及Wi-Fi密碼。當Wi-Fi模塊檢測到服務端平臺下發的帶有Wi-Fi賬號以及Wi-Fi密碼的數據包,主控芯片確認該數據包的命令標識為Wi-Fi標識,將對數據包進行解析,并斷開原有連接,嘗試用新的Wi-Fi賬號及Wi-Fi密碼連接網絡。如果連網成功,再次連接到對外服務IP地址以及端口號,發送登錄包,并且在芯片內部FLASH中地址0x40處存儲新的Wi-Fi賬戶以及Wi-Fi密碼,以便下次開機時直接連接此網絡。
程序中設WiFi_FLAG為判斷下發WiFi賬號后是否重新連接網絡成功標識。連接成功之后,標志位WIFI_FLAG設置為1,如果連續3次連接網絡失敗,WiFi_FLAG設置為0。當WiFi_FLAG為1,Wi-Fi模塊進入透傳模式,在定時器中斷中進行校時、發送實時數據以及補傳數據。當WIFI_FLAG為0,Wi-Fi模塊自動重新連接到以前的Wi-Fi賬號及Wi-Fi密碼。Wi-Fi模塊與云端將依照表1的數據通信協議進行通信。
云平臺在CentOS系統下基于SSM(Spring+SpringMVC+Mybatis)框架下進行開發。終端與云端采用異步非阻塞通信方式,采用Netty組件進行接入請求響應和建立長鏈接通道。云端負責接收Wi-Fi模塊發送的數據包、解析數據包和下發應答報文。
采集終端運行測試主要包括:主控芯片讀取從傳感器返回的數據,并且在TFT式顯示屏上實時顯示出來。終端采集測試結果如圖2所示。

圖2 終端采集測試結果
網絡通信測試主要包括:Wi-Fi模塊與云端建立的TCP/IP長鏈接是否成功,當Web下發新的Wi-Fi賬號及密碼時,系統是否能正常響應,在網絡中斷后的數據補傳是否穩定。具體有如下的過程:1)主控芯片串口接入Wi-Fi模塊,等待主控芯片監測到Wi-Fi模塊。2)Wi-Fi模塊進行初始化,連接IP地址以及端口號,建立TCP連接。3)通過Web下發新的Wi-Fi賬號及密碼,Wi-Fi模塊重新建立TCP連接之后,發送登錄包。之后開始進行實時數據傳輸,當主控芯片監測到Flash中存有數據,還將進行補發數據。串口助手顯示數據補傳測試結果如圖3所示。

圖3 數據補傳測試結果
采用STM32F103微處理器,串口接入傳感器,系統能自動測試溫度、濕度、甲醛等氣體濃度指標,TFT式顯示屏顯示各參數變化。自定義了柔性可擴展數據通信協議,通過Wi-Fi模塊實現基于TCP/IP協議的網絡通信,并且可通過Web下發所要更改的Wi-Fi賬戶和密碼。系統具有校時功能,可上傳帶有時間戳的數據。當Wi-Fi網絡出現異常時,將數據保存在SPI Flash中,網絡恢復正常后,將SPI Flash中的數據補傳到云端,以確保數據的完整性。經實驗測試,數據傳輸穩定,即使網絡發生異常,網絡恢復后也可實現穩定的數據補傳,同時驗證了數據通信協議設計的有效性。