杜英魁,楊國棟,李 娟,張首星,孫 博,原忠虎
(1.沈陽大學信息工程學院,沈陽 110014;2.沈陽大學體育學院,沈陽 110014)
已有研究表明,居室裝修導致的室內(nèi)空氣污染會對人體健康造成嚴重的危害。當甲醛濃度高于0.08 mg/m,會直接對眼睛、肝臟和肺部產(chǎn)生嚴重影響,甚至會導致血癌??倱]發(fā)性 有 機 物(total volatile organic compounds,TVOC)如苯類揮發(fā)性有機物,主要來源于各種建筑材料、家具、涂料、壁紙和黏合劑等。世界衛(wèi)生組織國際癌癥研究機構(gòu)公布的致癌物清單中,甲醛和苯為一類致癌物。
室內(nèi)的甲醛和TVOCs的監(jiān)測,主要有離線監(jiān)測和在線監(jiān)測兩種方式。離線監(jiān)測方式依據(jù)《室內(nèi)空氣質(zhì)量標準》(GB/T 18883-2002)國家標準,甲醛采用苯酚試劑分光光度法測定。TVOCs采用氣相色譜儀分析,成本高、監(jiān)測周期間隔大。在線監(jiān)測方式是利用電化學和半導體傳感器,進行甲醛和TVOCs濃度實時連續(xù)監(jiān)測,具有長時監(jiān)測和成本極低的突出優(yōu)勢。
本文設計了一種結(jié)構(gòu)緊湊的甲醛和總揮發(fā)性有機物濃度無線監(jiān)測終端,以ESP-12F模組為核心器件,將數(shù)據(jù)采集、顯示和無線傳輸?shù)裙δ苓M行了一體化集成設計,有效降低了終端體積和功耗。一鍵式網(wǎng)絡連接設計,則極大地簡化了用戶網(wǎng)絡設置過程。
ESP-12F模組的幾何尺寸僅為24 mm×16 mm×3 mm,如圖1所示。內(nèi)置WIFI前端和高性能的32位MCU。
圖1 ESP-12F模組
該模組支持UART、I2C、PWM、GPIO等多種模式。支持80MHz和160MHz主頻,支持IEEE 802.11 b/g/n協(xié)議,具有完整TCP/IP協(xié)議棧,集成板載天線。支持RTOS。
該模塊能耗極低。深度睡眠保持電流僅為10 uA,關斷電流小于5 uA,待機狀態(tài)消耗功率小于1 mW,喚醒時間小于2 ms。本文能耗控制采用睡眠模式。
傳感器采用DS-HCHO-20電化學和半導體雙模集成數(shù)字式傳感器,幾何尺寸為29 mm×14 mm×9 mm,如圖2所示。內(nèi)置電化學和半導體雙模塊,內(nèi)置數(shù)據(jù)處理單元采用雙模塊修正經(jīng)驗算法,兼容TVOC標定曲線,不同溫度和濕度環(huán)境數(shù)據(jù)自動修正,UART通信模式。
圖2 DS-HCHO-20傳感器
設計了下載電路和復位電路,以ESP-12F為核心模組,進行了無線監(jiān)測終端的硬件系統(tǒng)集成,如圖3所示。利用ESP-12F模組GPIO端口的狀態(tài),配置CPU的運行模式,實現(xiàn)了程序下載和運行之間的模式切換。復位電路用于保證系統(tǒng)處于確定狀態(tài),并從初態(tài)開始工作。
圖3 終端系統(tǒng)組成
數(shù)據(jù)顯示方面,則采用0.91寸低功耗OLED液晶屏。ESP-12F模組通過GPIO模擬IIC時序驅(qū)動屏幕顯示。依據(jù)《民用建筑工程室內(nèi)環(huán)境污染控制規(guī)范》(GB50325-2001)國家標準,利用采集到的甲醛和總有機揮發(fā)物濃度數(shù)據(jù),自動進行空氣質(zhì)量的優(yōu)、良、差三級評價和顯示,用戶可據(jù)此判斷甲醛和總有機揮發(fā)物的濃度是否處于安全水平。
設計了心跳機制。周期性地查詢當前端云網(wǎng)絡通信狀態(tài),以解決長時間斷網(wǎng)條件下的長鏈接更新以及云端無效鏈接請求的資源消耗問題,不僅能夠保證云平臺監(jiān)控系統(tǒng)有效地得到各節(jié)點的網(wǎng)絡連接狀態(tài),也大幅降低了云端網(wǎng)絡通信資源消耗。
這個用于周期性查詢網(wǎng)絡狀態(tài)的數(shù)據(jù)幀由起始符、詢問標識符和設備識別碼組成。除了設備識別碼唯一之外,其他位的數(shù)據(jù)是統(tǒng)一的。
應答包設備識別碼與上傳數(shù)據(jù)通信協(xié)議設備識別碼相同,主控芯片通過解析云平臺下發(fā)的應答包判斷數(shù)據(jù)是否上傳成功。同心跳包類似,應答包也包含起始字符、標識符和設備識別碼,同時應答包還包括接收時間和BCC校驗碼。
云平臺依據(jù)該協(xié)議判斷設備是否登錄成功否則,中斷后續(xù)操作。登錄幀里除起始字符、命令標識字符、設備識別碼之外還增加有數(shù)據(jù)單元長度、數(shù)據(jù)單元內(nèi)容兩個數(shù)據(jù)段。
用于保證數(shù)據(jù)上傳時帶有的時間戳的正確性。硬件終端開機后對RTC功能進行初始化設置,使能PWR時鐘和后備寄存器,配置RTC的時鐘源并使能RTC時鐘。設置分頻系數(shù)和時鐘格式、初始化時間和日期。
數(shù)據(jù)上傳通信協(xié)議,如表1所示。由基礎的起始字符、命令單元、設備設別碼、數(shù)據(jù)包里特有的數(shù)據(jù)加密方式、數(shù)據(jù)單元長度、可擴展數(shù)據(jù)單元、校驗碼組成。
表1 數(shù)據(jù)上傳的數(shù)據(jù)包結(jié)構(gòu)和定義
片上軟件設計,包括數(shù)據(jù)采集模塊、手機配網(wǎng)模塊、網(wǎng)絡數(shù)據(jù)傳輸模塊和網(wǎng)絡連接狀態(tài)監(jiān)測模塊組成。片上軟件的執(zhí)行流程如圖4所示。
圖4 片上軟件流程
ESP-12F模組內(nèi)嵌的ESP8266芯片SDK采用基于“內(nèi)核回調(diào)”編程方式。對于輪詢?nèi)蝿蘸捅O(jiān)測狀態(tài),無法采用常規(guī)單片機的“主循環(huán)”編程方式實現(xiàn),需要依靠用戶任務或定時器回調(diào)函數(shù)來完成。本文采用定時器回調(diào)函數(shù)方式。
初始化硬件定時器。內(nèi)核將調(diào)用硬件回調(diào)函數(shù),在回調(diào)函數(shù)中通過串口問詢傳感器,并通過串口接收中斷處理傳感器采集的數(shù)據(jù)。
對數(shù)據(jù)進行解析后,首先將數(shù)據(jù)通過OLED屏幕進行實時顯示,再根據(jù)數(shù)據(jù)通信協(xié)議進行打包,通過數(shù)據(jù)傳輸模塊,上傳至云端。
設置網(wǎng)絡連接狀態(tài)監(jiān)測軟件定時器,讀取flash中已保存的路由信息然后自動連接。在軟件定時器回調(diào)函數(shù)中設計網(wǎng)絡連接狀態(tài)監(jiān)測函數(shù),若網(wǎng)絡連接成功,則關閉軟件定時器并設置TCP連接,開啟網(wǎng)絡數(shù)據(jù)傳輸軟件定時器。若網(wǎng)絡連接失敗,則開啟手機配網(wǎng)。
采用“Smartconfig”方式,通過APP或微信公眾號進行配網(wǎng)。開啟sniffer模式,掃描所有開啟的路由器。通過手機UDP組播發(fā)送加密SSID和PASSWORD信息。ESP8266抓取并解密SSID和PASSWORD信息,從而連接路由。
系統(tǒng)連接路由成功后,將配置網(wǎng)絡信息,通過服務器IP地址或域名信息連接服務器。同時,開啟網(wǎng)絡數(shù)據(jù)傳輸軟件定時器,在軟件定時回調(diào)函數(shù)中調(diào)用打包的傳感器采集數(shù)據(jù)通過網(wǎng)絡發(fā)送給服務器。
利用TCP連接的接收回調(diào)函數(shù),接收服務器的報文信息,判斷服務器連接狀態(tài)和接收信息,若發(fā)送失敗則重新發(fā)送,直至連續(xù)第3次發(fā)送失敗即放棄本次發(fā)送。若因服務器斷開TCP連接,則設備將通過TCP連接的成功斷開回調(diào)函數(shù)。
監(jiān)測終端對云平臺的網(wǎng)絡鏈接狀態(tài)主動監(jiān)測。設備上電或復位之后,設備首次連接已保存路由信息時的狀態(tài)監(jiān)測。
若無路由信息或路由信息改變時,將由網(wǎng)絡連接狀態(tài)監(jiān)測任務啟動設備配網(wǎng)模式,通過閃屏的方式告訴用戶需要通過手機APP進行配置有效的網(wǎng)絡。
首次監(jiān)測網(wǎng)絡連接狀態(tài)后,將關閉網(wǎng)絡連接狀態(tài)監(jiān)測軟件定時器,由更為可靠的硬件定時器監(jiān)測網(wǎng)絡連接狀態(tài),若發(fā)現(xiàn)網(wǎng)絡連接失敗,立即開啟配網(wǎng)模式。軟件定時器基于內(nèi)核任務和內(nèi)核資源實現(xiàn)。通過軟件定時器和硬件定時器的嵌套使用輪詢監(jiān)測,能夠有效保了網(wǎng)絡連接的可靠和CPU資源的合理分配。
云平臺對監(jiān)測終端的網(wǎng)絡鏈接狀態(tài)主動監(jiān)測。云平臺根據(jù)心跳機制,周期性主動向監(jiān)測終端發(fā)送心跳包,解析并判斷網(wǎng)絡連接狀態(tài)。在本文中,設置最大間隔為30 s,最大間隔實踐內(nèi),若未收到終端發(fā)送的心跳包,云端認為網(wǎng)絡中斷,自動刪除該終端節(jié)點的網(wǎng)絡長鏈接數(shù)據(jù),終端狀態(tài)設置為設備下線。
基于Vue輕量級漸進式框架和Apache Cordova插件混合開發(fā)。具有對終端甲醛檢測儀的數(shù)據(jù)可視化分析、設備配置管理以及用戶管理等功能。采用Vue-Router、Vue-x、local Storage、Session Storage等插件,實現(xiàn)頁面路由跳轉(zhuǎn)配置,完成對用戶信息、設備信息以及組件的狀態(tài)管理和存儲。利用proxy Table代理解決前端開發(fā)的跨域問題。
使用AJAX請求后端服務提供的API接口,從而得到JSON格式的監(jiān)測數(shù)據(jù)。基于ECharts圖表庫,進行數(shù)據(jù)可視化分析的圖形化表達。通過AppVersion、FileTransfer、FileOpener2等插件,完成APP軟件的版本號讀取、文件下載、打開文件等軟件安裝步驟以及在線升級功能。
基于SpringBoot微服務框架,主要實現(xiàn)對終端甲醛檢測儀的登錄處理以及對采集數(shù)據(jù)的處理?;赥CP協(xié)議,云端與終端依據(jù)自定義數(shù)據(jù)通信協(xié)議來實現(xiàn)數(shù)據(jù)傳輸以及業(yè)務下發(fā)。云端微服務平臺主要包括兩個部分:
(1)網(wǎng)關微服務?;贜etty高性能技術框架開發(fā),實現(xiàn)對無線監(jiān)測終端節(jié)點的高并發(fā)接入,數(shù)據(jù)存儲于Redis高速緩存數(shù)據(jù)庫。
(2)應用后臺微服務。采用Spring、Spring MVC以及My batis plus等后端Web技術搭建,主要實現(xiàn)對數(shù)據(jù)以及終端設備的CRUD業(yè)務邏輯編寫,為客戶端應用程序提供基于HTTP/IP協(xié)議的RESTful API接口。其中,后端監(jiān)控微服務執(zhí)行流程,如圖5所示。
圖5 后端監(jiān)控微服務執(zhí)行流程
采集終端運行測試內(nèi)容是模組定時問詢傳感器,并解析傳感器的數(shù)據(jù),并在OLED屏幕上實時顯示。硬件電路實物,如圖6所示。
圖6 終端硬件電路實物
終端功能測試結(jié)果,如圖7所示。
圖7 監(jiān)測終端功能測試結(jié)果
網(wǎng)絡通信測試主要包括:設備連接路由是否穩(wěn)定可靠、配網(wǎng)功能是否有效、網(wǎng)絡連接成功之后網(wǎng)絡數(shù)據(jù)傳輸是否可靠且穩(wěn)定。通信實驗的測試過程包括以下幾個部分。
(1)上電重啟設備,測試是否能夠主動重連有效路由。
(2)若路由信息修改或無有效路由,測試設備是否進入配網(wǎng)模式且配網(wǎng)是否成功。
(3)當連接路由成功之后,測試向云端的數(shù)據(jù)上傳是否成功。
如圖8所示,串口調(diào)試助手顯示的TCP接收回調(diào)函數(shù)中接收的服務器應答信息,表明了無線監(jiān)測終端數(shù)據(jù)上傳成功。
圖8 網(wǎng)絡數(shù)據(jù)傳輸測試結(jié)果
數(shù)據(jù)上傳成功后,APP頁面監(jiān)測數(shù)據(jù)實時顯示和圖形可視化分析頁面,如圖9所示。
圖9 APP軟件的數(shù)據(jù)顯示頁面
本文研發(fā)了一種面向室內(nèi)環(huán)境安全的便攜式甲醛和總揮發(fā)性有機物監(jiān)測系統(tǒng),以ESP-12F模組為核心器件,通過數(shù)據(jù)采集、顯示和傳輸功能的一體化集成設計,有效降低了終端功耗。跟據(jù)自定義數(shù)據(jù)通信協(xié)議所開發(fā)的一鍵配網(wǎng)和遠程監(jiān)控等軟件功能,則有有效簡化了用戶操作過程。