楊宸 彭洋 劉延軍



摘? 要: 本文基于ZigBee無線傳感網,樹莓派設計了一款個人氣象系統。該系統選擇溫濕度,雨量,光照傳感器對環境參數進行實時的采集與存儲。系統利用CC2530射頻芯片完成Zigbee協議功能,結合ESP8266作為網關將數據傳給樹莓派,樹莓派作為服務器實現對相關數據的存儲。用戶通過訪問樹莓派即可實時掌握天氣的變化情況。實驗結果表明,該系統能實現一定的環境監測,可擴展的范圍廣。
關鍵詞: ZigBee;ESP8266;樹莓派;局域網;傳感器
中圖分類號: TP393 ???文獻標識碼: A??? DOI:10.3969/j.issn.1003-6970.2020.07.008
本文著錄格式:楊宸,彭洋,劉延軍. 基于ZigBee和樹莓派的個人氣象系統設計與實現[J]. 軟件,2020,41(07):42-44+102
Design and Implementation of Personal WeatherSystem Based on ZigBee and Raspberry Pi
YANG Chen, PENG Yang, LIU Yan-jun
(School of Computer And Information Technology, Northeast Petroleum University, Daqing 163318, China)
【Abstract】: This article is based on ZigBee wireless sensor network, Raspberry Pi has designed a personal weather system. The system selects temperature and humidity, rainfall, and light sensors to collect and store environmental parameters in real time. The system uses the CC2530 radio frequency chip to complete the Zigbee protocol function, combines ESP8266 as a gateway to transmit data to the Raspberry Pi, and the Raspberry Pi acts as a server to store relevant data. By accessing the Raspberry Pi, users can grasp the changes of the weather in real time. The experimental results show that the system can achieve certain environmental monitoring and can be expanded in a wide range.
【Key words】: ZigBee; ESP8266; Raspberry Pi; LAN; Sensor
0? 引言
隨著我國生產力的不斷進步,實現小范圍地區環境參數的監測具有重要的戰略應用價值。目前,我國的公共氣象數據的來源都是基于地面上的氣象觀測基站,其分辨率較低,并且計算出的結果僅是該區域的平均值,無法提供較為準確的氣象數據[1]。
除此之外,氣象站的服務對象是城市而不是單獨的個人,氣象站處理的信息量龐大,從監測到發布程序多,使得氣象站的信息不能提供實時的環境數據,其數據價值也就大打折扣。
本文針對上述問題設計了一個基于ZigBee技術的個人氣象系統。該系統在ZigBee無線傳感網的
基礎上開發,結合ZigBee低功耗,低成本,擴展性強的優勢[2-4],使得該個人氣象系統能夠以較低的成本監測較大規模的氣象環境。系統采用ZigBee技術與樹莓派相結合的方式,能夠存儲實時的氣象數據,為智能家居或其他開發提供氣象方面的數據支持。
1 ?總體設計
該系統的結構大致分為兩個部分,一部分是基于ZigBee協議的無線傳感網,另一部分是以服務器為核心搭建的無線局域網。將ZigBee網絡抽象為樹形拓撲結構,局域網抽象成星形結構,系統整體結構圖如圖1所示。
ZigBee無線傳感網方面,該網絡利用CC2530作為ZigBee網絡的終端節點和協調器。各個終端節點收到協調器發來的指令后便將傳感器采集到的數據發送給協調器。協調器通過網關將數據上傳給服務器。
無線局域網方面,樹莓派服務器一方面存儲WSN傳來的數據,另一方面響應用戶發來的請求,即用戶可利用PC或手機獲取實時的氣象數據。
2 ?詳細設計
2.1 ?ZigBee無線網絡結構設計
本系統的ZigBee無線網絡可以劃分為四個部分,包括傳感器模塊、終端、協調器、路由器以及電源。本系統的ZigBee網絡結構示意圖如圖2所示。
由于市面上的傳感器種類繁多,在傳感器選型時,綜合考慮功耗、成本、外設接口、可靠性、抗干擾性、精度等多方面因素,本系統選擇DHT22溫濕度傳感器,YL-83雨量傳感器,BH1750FVI光照度傳感器。
本系統使用德州儀器(TI)公司生產的CC2530芯片,該芯片基于IEEE802.15.4標準協議開發。軟件方面,利用TI公司開發的半開源Z-Stack協議棧和IAR集成開發環境開發ZigBee無線傳感網絡。ZigBee網絡的終端節點和協調器都由CC2530模塊組成。
2.2 ?通訊協議設計
ZigBee網絡部署好之后,當協調器向終端節點發送指令,終端將傳感器采集到的數據上傳到協調器。為了數據處理的方便,本系統在無線傳感網與局域網之間的數據傳遞規定了簡單的數據通訊協議,該協議結構如表1所示。終端將采集到的數據信息封裝成該協議格式并上傳至協調器。協調器將終端發來的數據報文發送至網關。
協議由5個部分組成。若程序檢測到報文的開始單元則繼續往下讀取。地址單元表示該報文的來源,記錄了ZigBee終端節點的地址,不同的節點地址用于記錄編號。數據單元存儲著傳感器采集到的數據。校驗位單元表示校驗位,對之前的數據進行校驗。結束單元表示該報文的結束。
2.3 ?網關設計
網關在本系統中是通信鏈路中不可或缺的一個部分,由于無線局域網采用的協議標準IEEE802.11與ZigBee協議標準IEEE802.15.4并不兼容,兩者無法直接通信,因此在ZigBee網與WLAN之間需要構建一個連接兩個網絡的網關。
在網關硬件選擇上,ESP8266WIFI模塊價格低廉,性能穩定,能夠支持標準的IEEE802.11b/g/n協議和完整的TCP/IP協議棧。ESP8266在STA通信模式下,獲得路由器分配的本地IP地址,實現其與無線傳感網的通信。在與ZigBee網絡通信時,ESP8266WIFI模塊處理協調器UART串口發來的數據,并將數據上傳到局域網中。
2.4 ?服務器設計
考慮到系統長時間運作的需求,本系統采用樹莓派作為個人服務器的硬件載體,并由無線局域網為其分配IP地址。
TCP/IP協議是網絡中使用最基本的協議,包括了應用層、運輸層、網絡層、網絡接口層四個層次,而Socket作為TCP/IP與服務器進程之間連接的接口,為服務器應用層與TCP運輸層之間的通信建立起了橋梁,如圖3所示。
本系統在Socket網絡編程的程序中利用推遲調用線程時間的方法,使程序能夠周期性的自動訪問路由器分配給網關ESP8266的IP地址,向分配好的端口發送指令,ESP8266接收到指令后,接收ZigBee經由串口發送的信息,并經由局域網上傳到個人服務器,個人服務器收到局域網傳來的數據并存儲到數據庫。
Python內置的SQLite3數據庫作為一款小體積的嵌入式開源數據庫軟件,其驅動內置在Python標準庫中,本身沒有獨立的維護進程,所有的維護也都來自于程序本身,從而避免了復雜的數據庫環境搭建工作,因此本系統選用Python內置的SQLite3作為存儲氣象數據信息的數據庫。
Socket程序將獲取到數據進行處理后存入數據庫中。一方面,用戶請求數據時,服務器返回給他最新的氣象數據。另一方面,數據庫存儲了當地的氣象數據,為大數據分析提供數據支持。
個人服務器在提供數據存儲功能的同時,也要滿足用戶讀取氣象數據的需求。本系統在服務器的程序設計語言及應用選擇方面,選用基于Python的Flask框架來開發響應局域網服務器的程序,服務器整體通信結構設計圖如圖4所示。
uWSGI作為Web服務器,擔負著與Flask框架進行數據交換的任務,考慮到局域網安全防護能力較弱,uWSGI不足以應對局域網可能出現的安全問題以及個人服務器可能出現多個應用同時運行監聽80端口的情況,本系統在用戶與uWSGI服務器之間加入一層Nginx服務器。
3 ?系統測試
系統測試通過分析傳感器采集到數據的流向,確認系統正確運行。從系統的數據庫部分,用戶訪問部分出發,結合環境中的實際情況,分別對它們收集到的數據進行對比分析,以檢查各部分數據發送和接收的可靠性。
3.1 ?數據庫部分
系統采集到的樣本數據結果如表2所示。
從數據庫表中采集到的數據可以推斷出傳感器、ZigBee網及無線局域網之間的通信正常。
3.2 ?用戶訪問部分
用戶在瀏覽器中輸入正確的URL地址,獲取到的數據結果顯示如圖5所示。
實時環境下采集到的樣本數據溫度為22℃,濕度為32%RH,光照為146lx,雨量為162(占比5%)。環境中采集到的數據與數據庫存儲及用戶訪問到的數據一致,用戶訪問部分運行良好。
4 ?結束語
個人氣象節點作為一個能夠采集局部氣象數據的個人系統,采用ZigBee無線傳感網技術收集并傳遞數據,其能量消耗低,續航時間長。利用樹莓派作為服務器對數據進行存儲,實現了對環境的實時監控,服務器存儲的數據也可以為大數據分析提供數據支撐。另外,系統本身具有結構簡單,成本低廉等優點,具有一定的市場應用前景,對智能家居的發展具有一定的積極意義。
參考文獻