濟寧職業技術學院電子信息工程系 李漢挺 李 航
本文設計了一種基于Zigbee和WIFI的無線溫濕度監測系統,可實現相對空間中不受環境約束的在任意位置進行溫濕度采集,充分檢測空間溫濕度的數據和變化趨勢.文中介紹了系統的總體結構和軟硬件設計,通過終端設備、智能網關、實現了溫濕數據的無線傳輸和實時監控.經過實驗測試,該系統能夠在獨立空間中進行穩定的工作。
相對獨立空間(RIS)是指空間位置獨立、內部環境不統一、與外部環境關聯性低的空間環境.我們每一個人實際上每天都在這樣的環境中進行活動。其中接觸最多的是每個人居住的家庭生活空間,這個空間是以家庭的生活的空間作為獨立單位、社區中的每一戶居民都在自己的家庭環境中生活。除此之外,還有許多的遠離人民居住位置的的農作物種植大棚、占地面積寬廣的機械工廠、聳立在城市之間提供工作辦公的寫字樓等等。
隨著新一代信息技術的發展,相對獨立空間也逐漸向智能化的方向進行發展。比如智能農業、智能家居、智慧工廠的目標就是利用物聯網、云計算、大數據、移動應用等實現物理空間的關鍵信息的實時感知、動態監測、深度分析。在這些智慧化推進的過程中,溫濕度數據的采集與監控作為其中非常重要的一環也遇到了很多的問題,其中在原有環境中的智能化的升級改造過程中的綜合布線、終端設備放置受限、數據采集不均衡無法作為有效診斷數據等矛盾更為突出。面對這種痛點,以及更好的與當前的智能化升級做兼容性匹配,本文專門對多點分布式溫濕度數據采集、傳輸、分析的整個過程進行研究和分析,結合現有的物聯網技術和硬件設備模塊,設計了一套基于Zigbee和WIFI的溫度監控系統。
以Zigbee和WIFI為核心研究溫濕度監測系統主要由感知層、網絡層、應用層三個模塊組成。系統結構如圖1所示。
感知層的每個終端節點在啟動運行后會主動掃描并加入Zigbee網絡。定時獲取傳感器數據通過網絡實現數據的無線傳輸,每個終端節點的供電采用鋰電池供電,無須額外的布線操作。
網絡層負責整個Zigbee網絡的創建、構建終端設備節點局域通信網絡。除此之外還會創建基于AP模式下運行的WIFI網絡,可移動設備的APP程序通過WIFI網絡與基于Zigbee的無線傳感網進行數據的通信。
應用層作為整個系統的最上層,按其功能進行劃分兩種:本地可移動終端,負責溫濕度數據的展示和歷史記錄存儲,這個設備會放置在獨立空間中。外部可移動終端,是指進入該空間的用戶可通過自己手持的終端設備查看實時的溫濕度數據。這兩種終端設備的運行的軟件都是基于Android的APP程序。

圖1 溫濕度監測系統結構圖
2.1.1 溫濕度采集節點硬件設計
溫濕度采集節點硬件模塊采用模塊化的設計方案,以降低系統功耗的同時且滿足體積小、功耗低、抗干擾能力強,建立網絡節點為出發點進行設計。硬件結構引腳連接圖如圖2所示。

圖2 溫濕度采集節點硬件引腳連接圖
終端節點模塊硬件以TI公司推出片上系統CC2530F256,基于此能夠降低模塊的硬件成本和功耗。該模塊同時還結合了業界領先的黃金單元ZigBee 協議棧(Z-StackTM),最大可編程輸出功率 為4.5dBm。電源模塊以輸出電壓為9V的6F22型的電池供電,經過三端穩壓器AMS1117-3.3和AMS1117-5.5多路輸出5V和3.3V的電壓來。溫濕度采集模塊,為了更好的適應應用環境,選擇了含有己校準數組信號輸出的溫濕度傳感器AM2302,該模塊應用專用的數字模塊采集技術和溫濕度傳感技術,響應快,抗干擾能力強,通過單總線模式與CC2530F256的P0_6引腳進行串行通信。0.96寸的OLED屏能夠在終端模塊運行時顯示相關的數據信息,通過IIC通信方式與CC2530的P1_6和P1_7引腳之間進行數據傳遞。串聯1KΩ的LED指示燈,標識當前終端模塊的運行狀態。
2.1.2 智能網關節點硬件設計
智能網關節點與常見的Zigbee協調器不同,在這里負責創建Zigbee和WIFI網絡且這兩個網絡之間可進行數據的通信,智能網關節點的硬件框圖如圖3所示。
智能網關節點的電源模塊和Zigbee模塊與終端節點的設計相同。NodeMCU是一個開源的物聯網平臺,包含的ESP8266基于WIFI協議的無線傳輸模塊,芯片內置32位CPU和固件化的協議棧,其中主要包括Wi-Fi Direct(P2P)、802.11b/g/n、Soft-AP協議棧以及內置TCP/IP協議棧。由此WIFI工作模式可分為兩種情況:STA模式是將WIFI模塊加入到已有的WIFI網絡中進行通信傳輸、AP模式是將WIFI模塊本身作為服務器,本系統中通過軟件層將其設置為AP的工作模式,方便移動終端的的APP軟件可以在空間范圍內獲取傳感器數據。智能網關節點的NodeMCU模塊采用串口與CC2530進行通信。
溫濕度監測系統軟件主要由三部分組成:溫濕度采集節點程序設計、智能網關程序設計、可移動終端APP程序設計。溫濕度采集節點程序主要完成對溫濕度數據的采集,封裝和發送等。智能網關程序主要組建Zigbee網絡和WIFI網絡,接收終點節點數據,并通過WIFI網絡進行數據廣播等。可移動終端APP程序負責接收WIFI網絡中廣播數據,并進行解析、顯示存儲等。
2.2.1 溫濕度采集節點軟件設計
溫濕度數據采集節點的軟件是基于Z-Stack協議進行設計的,使用IAR軟件開發環境進行編碼,其程序流程圖如圖4左側圖所示。
終端采集上電啟動之后,首先會進行節點初始化,這里分為硬件環境初始化和協議棧初始化。硬件初始化包括設置P1DIR,P0DIR寄存器來確定CC2530的IIC通信和單總線通信的P1_6、P1_7、P0_6引腳的IO方向,協議棧初始化主要是配置Z-stack協議相關參數,終端節點在Zigbee網絡中工作為RFD設備。初始化結束后,終端節點開始查找當前環境中智能網絡的Zigbee網絡,發現相應的網絡后主動申請加入,如果加入不成功則會繼續加入直至進入網絡。成功之后則會開啟定時器獲取溫濕度傳感器相關的數據,相關數據與節點的身份識別碼(16位短地址用于在本地網絡中標識設備)封裝之后發送到智能網關。發數據過程防止數據丟失會對發送的數據的結果通過與智能網關進行握手驗證。以保證數據能夠發送成功,否則會重復發送數據。

圖3 智能網關節點硬件框圖

圖4 溫濕度采集節點和智能網關節點流程圖
2.2.2 智能網關節點
智能網關節點的軟件設計分成了兩部分:構建Mesh模型的Zigbee網絡,新建AP模式的WIFI網絡,接收終端節點發送的數據包并反饋信息,基于WIFI網絡的廣播數據給可移動終端設備APP。其程序流程圖如圖4右側兩個圖所示。
Mesh模型的Zigbee網絡是由智能網關節點的CC2530芯片基于Z-Stack協議構建的,在系統上電完成,硬件和協議棧初始化完成之后,智能網關節點工作為FFD設備。然后開始掃描信道,尋找合適的信道ID組件Zigbee網絡,網絡構建完成之后開始監聽是否有節點加入網絡,如果有則分配相應的地址給節點。同時會開始接受節點發送的溫濕度數據信息,并將接收到的消息發送響應包給節點模塊,此時接受到的消息通過串口發送給NodeMCU模塊。NodeMCU模塊在系統上電完成,引腳初始化之后開始配置WIFI網絡,并通過數組維護加入網絡的可移動設備終端列表,監聽串口數據,當接收到相關數據時,根據維護的設備APP地址列表發送數據到可移動終端APP。NodeMCU的軟件編碼是基于Arduino IDE進行開發,下列代碼為NodeMCU的創建WIFI網絡的關鍵代碼。
#include
#define softAPName “jnzy-wsn”
#define password “1234567890”
void setup(){
IPAddress softLocal(192,168,4,1); // 1 設置內網WIFI IP地址
IPAddress softGateway(192,168,4,1);
IPAddress softSubnet(255,255,255,0);
WiFi.softAPConfig(softLocal,softGateway,softSubnet);
WiFi.softAP(softAPName,password);//創建AP網絡
}
2.2.3 可移動終端APP軟件設計
基于Android系統運行的APP為用戶提供了查詢溫濕度數據的用戶交互界面、歷史記錄查詢、終端節點設備管理等功能。
APP程序的使用多線程的編程模式創建一個網絡線程專門負責接收智能網關發送的節點數據,通過回調函數函數機制更新用戶界面。并保存溫濕度的數據。APP界面基于Material Design的設計風格增加界面的親和性。使用第三方的MPAndroidChart圖形庫進行界面的繪制,并通過SQLite數據庫保存數據方便歷史記錄的查詢。APP與智能網關的數據包發送格式如表1所示。

表1 智能網關和APP協議格式
將編寫的代碼程序下載對應的終端節點和智能網關的預備結束工作結束之后。首先對智能網關節點進行系統上電開始創建Zigbee網絡和WIFI網絡,等待網絡創建完成之后。啟動終端設備節點和設置可移動設備連接到WiFi網絡,并運行APP程序。此時通過APP可查看已經開始工作的終端節點采集的數據,為了更好的標注每個終端節點,APP程序的節點管理功能可讓用戶給不同節點編輯修改有意的備注名字,在APP顯示數據時更能直觀的確定哪一個終端節點的數據設備。
結語:本文主要提出了一種在相對獨立空間中基于無線傳輸的溫濕度采集的解決方案,通過CC2530芯片和Z-Stack協議構建Zigbee網絡,負責終端節點的數據傳輸,NodeMCU模塊作為可移動終端APP與Zigbee網絡之間數據傳遞的橋梁,方便更多的可移動設備查看數據創建了AP工作模式的WIFI網絡。在可移動終端的基于Android系統的APP程序和NodeMCU進行無線通信,獲取、保存溫濕度數據并提供非常友好的用戶交互界面。通過本解決方案,可以有效的構建一個WSN網絡,并且可進一步移植到其它相關環境參數的采集和傳輸。