趙清華,葛彥凱,趙 揚,楊 靜
(1.太原理工大學信息與計算機學院,山西晉中 030600;2.太原理工大學信息中心,山西太原 030024)
當前,日漸嚴重的環(huán)境問題已引起全社會的持續(xù)關(guān)注,工業(yè)污染等原因造成多種有害氣體的含量急劇增加[1]。在校園等密集場所及時監(jiān)測環(huán)境中的有害氣體含量可以有效避免因此導致的群體性健康問題。雖然各省市已普遍建設地面監(jiān)測站進行環(huán)境監(jiān)測,但是在環(huán)境監(jiān)測方面,相關(guān)技術(shù)還存在監(jiān)測指標單一、價格昂貴、缺乏健全的監(jiān)測網(wǎng)絡等不足,致使人們無法對周邊的環(huán)境質(zhì)量做出準確的判斷[2]。
隨著IPv6 協(xié)議用于物聯(lián)網(wǎng)技術(shù),并制定了對適配層及相關(guān)協(xié)議進行優(yōu)化的適用于嵌入式技術(shù)的LwIP 協(xié)議棧,將IPv6 技術(shù)擴展至嵌入式領域,使嵌入式設備實現(xiàn)通過IP 地址接入互聯(lián)網(wǎng)的端到端通信[3]。因此,該文依托嵌入式設備接入以太網(wǎng)與IPv6網(wǎng)絡技術(shù),設計了一種基于LwIP 協(xié)議棧的校園環(huán)境監(jiān)測平臺。
根據(jù)實現(xiàn)功能不同,校園環(huán)境監(jiān)測平臺分為感知層、網(wǎng)絡層與應用層。感知層為6~10 個獨立監(jiān)測節(jié)點ESP8266_STA 按星型拓撲結(jié)構(gòu)組成的局域環(huán)境監(jiān)測系統(tǒng),系統(tǒng)可同時采集各監(jiān)測節(jié)點的環(huán)境指標數(shù)據(jù)[4]。在局域環(huán)境監(jiān)測系統(tǒng)中,選取一個獨立監(jiān)測節(jié)點作為中央節(jié)點,實現(xiàn)匯總系統(tǒng)內(nèi)所有節(jié)點所采集的數(shù)據(jù)并發(fā)送至數(shù)據(jù)處理轉(zhuǎn)換中心。網(wǎng)絡層為數(shù)據(jù)處理轉(zhuǎn)換中心,轉(zhuǎn)換中心基于STM32F103芯片開發(fā),移植LwIP 輕型協(xié)議棧,使其能夠接入IPv6 網(wǎng)絡并自動獲取IPv6 地址,采用無限循環(huán)與外部中斷相結(jié)合的方式運行LwIP 協(xié)議棧進行處理與傳輸數(shù)據(jù),作為串口轉(zhuǎn)以太網(wǎng)網(wǎng)關(guān)[5]。應用層為云平臺,接收自數(shù)據(jù)處理轉(zhuǎn)換中心傳送的IPv6 數(shù)據(jù)幀,將其解碼后存儲至MySQL 數(shù)據(jù)庫[6]。云平臺將各空氣指標數(shù)據(jù)結(jié)合算法對當前監(jiān)測區(qū)域空氣質(zhì)量進行綜合評價,并將評價結(jié)果與環(huán)境指標數(shù)據(jù)一同顯示于前端頁面?;贚wIP 協(xié)議棧的環(huán)境監(jiān)測平臺結(jié)構(gòu)如圖1 所示。
圖1 環(huán)境監(jiān)測平臺結(jié)構(gòu)
局域環(huán)境監(jiān)測系統(tǒng)由6~10 個獨立監(jiān)測節(jié)點ESP8266_STA 通過星型網(wǎng)拓撲結(jié)構(gòu)組成,設置一個中央節(jié)點執(zhí)行集中式通信控制策略,其余監(jiān)測節(jié)點作為周圍節(jié)點采用WiFi 與中央節(jié)點通信。獨立監(jiān)測節(jié)點ESP8266_STA 采用ESP8266 無線芯片作為主控制器,包括傳感器組、報警模塊與OLED 液晶模塊。
ESP8266 是一款可作為主控制器從設備或可獨立運行程序的無線芯片,其內(nèi)部封裝集成一款Tensilica L106 32-bit RISC 處理器,內(nèi)置標準IEEE 802.11 b/g/n 與TCP/IP 協(xié)議棧,最大時鐘速度可達160 MHz,支持實時操作系統(tǒng)(RTOS),可選擇STA、AP、STA+AP 工作模式[7]。監(jiān)測系統(tǒng)中,各周圍節(jié)點通過ESP-NOW 技術(shù)連接中央節(jié)點的WiFi 熱點實現(xiàn)局域組網(wǎng),完成環(huán)境監(jiān)測數(shù)據(jù)的傳輸與匯總。ESPNOW 是一種使用IEEE802.11 Action Vendor 幀技術(shù)的無連接、短數(shù)據(jù)傳輸WiFi 通信協(xié)議,適用于物聯(lián)網(wǎng)設備組網(wǎng)。ESP8266 無線芯片初始化后,調(diào)用esp_now_add_peer()接口將周圍節(jié)點MAC 地址添加至中央節(jié)點配對設備列表,完成配對后,中央節(jié)點可與周圍節(jié)點實現(xiàn)連續(xù)的點對點連接,接收周圍節(jié)點發(fā)送的環(huán)境監(jiān)測數(shù)據(jù)。匯總數(shù)據(jù)后,中央節(jié)點通過UART 串口傳輸至數(shù)據(jù)處理轉(zhuǎn)換中心,ESP8266 電路圖 如圖2 所示[8]。
圖2 ESP8266電路圖
局域環(huán)境監(jiān)測系統(tǒng)中獨立監(jiān)測節(jié)點ESP8266_STA采用SHT15、CCS811、SGP30、MQ-7 等傳感器組成傳感器組,由ESP8266 控制傳感器組采集溫濕度、CO、CO2、TVOC 濃度數(shù)據(jù)。
SHT15 是一款廣泛應用于物聯(lián)網(wǎng)技術(shù)的數(shù)字溫濕度傳感器芯片,芯片內(nèi)集成溫濕度感測單元、IIC總線接口、模數(shù)轉(zhuǎn)換電路與信號調(diào)理電路,可完全校準數(shù)字信號輸出[9-10]。SHT15 傳感器采用3.3 V 電壓供電,與ESP8266 主控芯片通過IIC 總線通信,電路圖如圖3 所示。
圖3 SHT15電路圖
獨立監(jiān)測節(jié)點選用SPG30 氣體傳感器監(jiān)測環(huán)境中的CO2濃度,傳感器內(nèi)置多種金屬氧化物傳感器件,接通電源后,傳感器內(nèi)部產(chǎn)生多種氧化還原反應,經(jīng)電路處理后傳回CO2濃度數(shù)值至ESP8266[11]。SGP30 采用3.3 V 電壓供電,采用IIC 接口與ESP8266通信,電路圖如4 所示。
圖4 SGP30電路圖
MQ-7 氣體傳感器選用二氧化錫作為氣敏材料,其在加熱的情況下對CO 有較高的靈敏度和選擇性,常用來檢測環(huán)境中的CO濃度。傳感器采用5 V電壓供電,經(jīng)過A/D 轉(zhuǎn)換電路將模擬量轉(zhuǎn)換為CO 濃度數(shù)值。
TVOC 是空氣中除CO、CO2、金屬碳化物之外的含碳化合物,其濃度也是一項重要的環(huán)境監(jiān)測指標。CCS811 是CMOS Sensors 公司推出的一款用于檢測TVOC 濃度的微型氣體傳感器芯片,通過其內(nèi)置的板載加熱電路,促使含碳化合物氣體與氧負離子發(fā)生氧化還原反應,測量生成的二氧化碳含量得到TVOC 濃度數(shù)值[12]。CCS811 采用3.3 V 電壓供電,通過IIC 總線接口與ESP8266 通信,根據(jù)計算,上拉電阻選用10 kΩ,電路圖如圖5 所示。
圖5 CCS811電路圖
獨立監(jiān)測節(jié)點選用7 寸OLED 液晶屏幕顯示當前時刻傳感器組所采集的溫濕度、CO、CO2、TVOC 等指標數(shù)據(jù),OLED 液晶屏幕型號為YSHMIPC1070,內(nèi)置SSD1306 OLED 驅(qū)動芯片,采用3.3 V 電壓供電,與ESP8266 通過IIC 接口實現(xiàn)通信。
數(shù)據(jù)處理轉(zhuǎn)換中心接收發(fā)送自局域環(huán)境監(jiān)測系統(tǒng)中央節(jié)點的環(huán)境監(jiān)測數(shù)據(jù)后,根據(jù)運輸層協(xié)議將數(shù)據(jù)編碼為以太網(wǎng)數(shù)據(jù)幀,通過IPv6 網(wǎng)絡上傳至云平臺。數(shù)據(jù)處理轉(zhuǎn)換中心選擇ENC28J60 以太網(wǎng)控制芯片實現(xiàn)單片機接入以太網(wǎng),采用STM32F103 芯片作為主控制器,通過移植LwIP 協(xié)議棧使其支持IPv6 網(wǎng)絡。
ENC28J60 是一款兼容IEEE802.3 標準協(xié)議,內(nèi)置PHY 與MAC 模塊的獨立以太網(wǎng)控制器[13],采用DMA 模塊實現(xiàn)高速傳輸數(shù)據(jù),通過SPI 總線接口使STM32F103 主控制器建立連接后,STM32F103 可對ENC28J60 寄存器讀寫命令與數(shù)據(jù),將環(huán)境監(jiān)測數(shù)據(jù)通過IPv6 網(wǎng)絡發(fā)送至云平臺。
利用ENC28J60 完成以太網(wǎng)數(shù)據(jù)的發(fā)送需要依賴驅(qū)動芯片內(nèi)部的硬件緩沖區(qū)。硬件緩沖區(qū)大小為8 K,分為接收緩沖區(qū)與發(fā)送緩沖區(qū)。數(shù)據(jù)處理轉(zhuǎn)換中心發(fā)送環(huán)境監(jiān)測數(shù)據(jù)時,首先初始化ENC28J60 并將數(shù)據(jù)封裝為以太網(wǎng)數(shù)據(jù)幀,再指定發(fā)送緩沖區(qū)寫指針,實現(xiàn)向發(fā)送緩沖區(qū)中填充數(shù)據(jù),通過主控制器觸發(fā)相關(guān)寄存器復制緩沖區(qū)中數(shù)據(jù)并執(zhí)行發(fā)送命令,完成發(fā)送流程。當寫指針的地址遇到結(jié)束地址時返回起始地址,等待下一次發(fā)送命令[14]。ENC28J60以太網(wǎng)控制器發(fā)送數(shù)據(jù)流程,如圖6 所示。
圖6 ENC28J60發(fā)送數(shù)據(jù)流程圖
STM32F103 微處理器采用Cortex-M3 內(nèi)核,支持最高72 MHz 工作頻率,具有64 K SRAM,具有高處理性能、低功耗等優(yōu)點,因此選擇STM32F103 作為數(shù)據(jù)處理轉(zhuǎn)換中心主控制器。數(shù)據(jù)處理轉(zhuǎn)換中心采用3.3 V 電壓供電,選擇8 MHz 高頻晶振和32.768 MHz低頻晶振組成晶振電路。
數(shù)據(jù)處理轉(zhuǎn)換中心通過STM32F103與ENC28J60移植LwIP 協(xié)議棧,使其支持IPv6 網(wǎng)絡協(xié)議。LwIP 協(xié)議棧是一種開源輕型TCP/IP 協(xié)議棧,在保持TCP/IP協(xié)議?;竟δ艿耐瑫r簡化了處理過程與內(nèi)存要求,適用于嵌入式設備接入以太網(wǎng),經(jīng)過多個版本的迭代,LwIP 協(xié)議棧的多個API 已逐步支持IPv6 協(xié)議,LwIP 協(xié)議棧移植流程如圖7 所示[15]。
圖7 LwIP協(xié)議棧移植流程
1)LwIP 源文件導入
新建keil工程,并在工程目錄下添加LwIP_APP、LwIP_netif、LwIP_core、LwIP_api、LwIP_ipv4、LwIP_iPv6 等內(nèi)核核心函數(shù)源代碼,修改LWIP-NETIF 中的ethernetif.c 文件,調(diào)用low_level_init 函數(shù),完成數(shù)據(jù)處理轉(zhuǎn)換中心MAC 地址初始化及ENC28J60 網(wǎng)絡控制器初始化。
2)接口函數(shù)對接
將ENC28J60 以太網(wǎng)控制器的接收發(fā)送函數(shù)與LwIP協(xié)議棧底層數(shù)據(jù)接收發(fā)送端口對接,修改底層發(fā)送函數(shù)low_level_output,實現(xiàn)向微處理器申請發(fā)送數(shù)據(jù)緩沖區(qū)內(nèi)存空間;修改底層接收函數(shù)low_level_input,設置網(wǎng)卡netif 結(jié)構(gòu)體中連接層硬件地址長度和hwaddr地址數(shù)組,設置最大允許傳輸單元mtu、mtu6[16]。
3)初始化LwIP 協(xié)議棧
調(diào)用LwIP_init(),初始化LwIP 協(xié)議棧模塊,調(diào)用netif_add 函數(shù)實現(xiàn)在LwIP 協(xié)議棧中添加注冊一個網(wǎng)絡接口,添加LwIP_Polling()函數(shù)至主函數(shù),并導入LwIP_netif 結(jié)構(gòu)體,此結(jié)構(gòu)體可實現(xiàn)導入IPv4 地址、IPv6 地址、子網(wǎng)掩碼與網(wǎng)關(guān)地址。
4)獲取IPv6 地址
完成移植過程后,STM32F103 可獲取到IPv6 本地鏈路地址與以太網(wǎng)分配的靜態(tài)IPv6 地址。
環(huán)境監(jiān)測系統(tǒng)整體采用C/S 架構(gòu)設計,局域環(huán)境監(jiān)測系統(tǒng)與數(shù)據(jù)處理轉(zhuǎn)換中心組成客戶端,負責環(huán)境數(shù)據(jù)的采集,云平臺作為服務器,實現(xiàn)將客戶端通過IPv6 網(wǎng)絡傳輸?shù)臄?shù)據(jù)進行解析、存儲與展示,云平臺分為數(shù)據(jù)管理中心與數(shù)據(jù)展示頁面。
數(shù)據(jù)管理中心基于Netty 框架開發(fā),云平臺與數(shù)據(jù)處理轉(zhuǎn)換中心建立TCP 連接進行通信,當接收到發(fā)送自數(shù)據(jù)處理轉(zhuǎn)換中心的數(shù)據(jù)并驗證數(shù)據(jù)完整后,將各項環(huán)境監(jiān)測數(shù)據(jù)及采集時間存儲至后端MySQL 數(shù)據(jù)庫。
數(shù)據(jù)展示頁面采用JDBC API 訪問MySQL 數(shù)據(jù)庫中環(huán)境監(jiān)測數(shù)據(jù)并使用圖形化進行展示,數(shù)據(jù)展示頁面如圖8 所示。
圖8 云平臺數(shù)據(jù)展示頁面
該文對監(jiān)測平臺所采集環(huán)境數(shù)據(jù)準確性進行系統(tǒng)測試。在學校教學區(qū)域放置局域環(huán)境監(jiān)測系統(tǒng)與數(shù)據(jù)處理轉(zhuǎn)換中心,局域監(jiān)測系統(tǒng)包含一個中央節(jié)點和3 個周圍節(jié)點,經(jīng)過多次實驗,將所采集數(shù)據(jù)與標準數(shù)值進行對比,結(jié)果如表1 所示。
分析表1 中數(shù)據(jù)可知,該平臺所采集數(shù)據(jù)與當前地點標準值誤差較小,可滿足在校園內(nèi)進行環(huán)境監(jiān)測。
表1 采集數(shù)據(jù)與標準值對比表
該文設計與實現(xiàn)了一種基于LwIP 協(xié)議棧的校園環(huán)境監(jiān)測平臺,實現(xiàn)了實時采集溫濕度、CO、CO2、TVOC 等環(huán)境指標數(shù)據(jù),有助于學校工作人員隨時了解各教室當前時刻的空氣質(zhì)量,有效避免因有毒有害氣體濃度過高導致的群體性健康問題,具有支持IPv6 傳輸、成本低廉、測量精度高等優(yōu)點。平臺基于新型物聯(lián)網(wǎng)技術(shù)與LwIP 協(xié)議棧移植技術(shù),設計了局域環(huán)境監(jiān)測系統(tǒng)、數(shù)據(jù)處理轉(zhuǎn)換中心與云平臺,實現(xiàn)了完整的物聯(lián)網(wǎng)應用場景。