楊宸 彭洋 劉延軍
摘? 要: 本文基于ZigBee無線傳感網(wǎng),樹莓派設(shè)計了一款個人氣象系統(tǒng)。該系統(tǒng)選擇溫濕度,雨量,光照傳感器對環(huán)境參數(shù)進行實時的采集與存儲。系統(tǒng)利用CC2530射頻芯片完成Zigbee協(xié)議功能,結(jié)合ESP8266作為網(wǎng)關(guān)將數(shù)據(jù)傳給樹莓派,樹莓派作為服務(wù)器實現(xiàn)對相關(guān)數(shù)據(jù)的存儲。用戶通過訪問樹莓派即可實時掌握天氣的變化情況。實驗結(jié)果表明,該系統(tǒng)能實現(xiàn)一定的環(huán)境監(jiān)測,可擴展的范圍廣。
關(guān)鍵詞: ZigBee;ESP8266;樹莓派;局域網(wǎng);傳感器
中圖分類號: TP393 ???文獻標(biāo)識碼: A??? DOI:10.3969/j.issn.1003-6970.2020.07.008
本文著錄格式:楊宸,彭洋,劉延軍. 基于ZigBee和樹莓派的個人氣象系統(tǒng)設(shè)計與實現(xiàn)[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? 引言
隨著我國生產(chǎn)力的不斷進步,實現(xiàn)小范圍地區(qū)環(huán)境參數(shù)的監(jiān)測具有重要的戰(zhàn)略應(yīng)用價值。目前,我國的公共氣象數(shù)據(jù)的來源都是基于地面上的氣象觀測基站,其分辨率較低,并且計算出的結(jié)果僅是該區(qū)域的平均值,無法提供較為準確的氣象數(shù)據(jù)[1]。
除此之外,氣象站的服務(wù)對象是城市而不是單獨的個人,氣象站處理的信息量龐大,從監(jiān)測到發(fā)布程序多,使得氣象站的信息不能提供實時的環(huán)境數(shù)據(jù),其數(shù)據(jù)價值也就大打折扣。
本文針對上述問題設(shè)計了一個基于ZigBee技術(shù)的個人氣象系統(tǒng)。該系統(tǒng)在ZigBee無線傳感網(wǎng)的
基礎(chǔ)上開發(fā),結(jié)合ZigBee低功耗,低成本,擴展性強的優(yōu)勢[2-4],使得該個人氣象系統(tǒng)能夠以較低的成本監(jiān)測較大規(guī)模的氣象環(huán)境。系統(tǒng)采用ZigBee技術(shù)與樹莓派相結(jié)合的方式,能夠存儲實時的氣象數(shù)據(jù),為智能家居或其他開發(fā)提供氣象方面的數(shù)據(jù)支持。
1 ?總體設(shè)計
該系統(tǒng)的結(jié)構(gòu)大致分為兩個部分,一部分是基于ZigBee協(xié)議的無線傳感網(wǎng),另一部分是以服務(wù)器為核心搭建的無線局域網(wǎng)。將ZigBee網(wǎng)絡(luò)抽象為樹形拓撲結(jié)構(gòu),局域網(wǎng)抽象成星形結(jié)構(gòu),系統(tǒng)整體結(jié)構(gòu)圖如圖1所示。
ZigBee無線傳感網(wǎng)方面,該網(wǎng)絡(luò)利用CC2530作為ZigBee網(wǎng)絡(luò)的終端節(jié)點和協(xié)調(diào)器。各個終端節(jié)點收到協(xié)調(diào)器發(fā)來的指令后便將傳感器采集到的數(shù)據(jù)發(fā)送給協(xié)調(diào)器。協(xié)調(diào)器通過網(wǎng)關(guān)將數(shù)據(jù)上傳給服務(wù)器。
無線局域網(wǎng)方面,樹莓派服務(wù)器一方面存儲WSN傳來的數(shù)據(jù),另一方面響應(yīng)用戶發(fā)來的請求,即用戶可利用PC或手機獲取實時的氣象數(shù)據(jù)。
2 ?詳細設(shè)計
2.1 ?ZigBee無線網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計
本系統(tǒng)的ZigBee無線網(wǎng)絡(luò)可以劃分為四個部分,包括傳感器模塊、終端、協(xié)調(diào)器、路由器以及電源。本系統(tǒng)的ZigBee網(wǎng)絡(luò)結(jié)構(gòu)示意圖如圖2所示。
由于市面上的傳感器種類繁多,在傳感器選型時,綜合考慮功耗、成本、外設(shè)接口、可靠性、抗干擾性、精度等多方面因素,本系統(tǒng)選擇DHT22溫濕度傳感器,YL-83雨量傳感器,BH1750FVI光照度傳感器。
本系統(tǒng)使用德州儀器(TI)公司生產(chǎn)的CC2530芯片,該芯片基于IEEE802.15.4標(biāo)準協(xié)議開發(fā)。軟件方面,利用TI公司開發(fā)的半開源Z-Stack協(xié)議棧和IAR集成開發(fā)環(huán)境開發(fā)ZigBee無線傳感網(wǎng)絡(luò)。ZigBee網(wǎng)絡(luò)的終端節(jié)點和協(xié)調(diào)器都由CC2530模塊組成。
2.2 ?通訊協(xié)議設(shè)計
ZigBee網(wǎng)絡(luò)部署好之后,當(dāng)協(xié)調(diào)器向終端節(jié)點發(fā)送指令,終端將傳感器采集到的數(shù)據(jù)上傳到協(xié)調(diào)器。為了數(shù)據(jù)處理的方便,本系統(tǒng)在無線傳感網(wǎng)與局域網(wǎng)之間的數(shù)據(jù)傳遞規(guī)定了簡單的數(shù)據(jù)通訊協(xié)議,該協(xié)議結(jié)構(gòu)如表1所示。終端將采集到的數(shù)據(jù)信息封裝成該協(xié)議格式并上傳至協(xié)調(diào)器。協(xié)調(diào)器將終端發(fā)來的數(shù)據(jù)報文發(fā)送至網(wǎng)關(guān)。
協(xié)議由5個部分組成。若程序檢測到報文的開始單元則繼續(xù)往下讀取。地址單元表示該報文的來源,記錄了ZigBee終端節(jié)點的地址,不同的節(jié)點地址用于記錄編號。數(shù)據(jù)單元存儲著傳感器采集到的數(shù)據(jù)。校驗位單元表示校驗位,對之前的數(shù)據(jù)進行校驗。結(jié)束單元表示該報文的結(jié)束。
2.3 ?網(wǎng)關(guān)設(shè)計
網(wǎng)關(guān)在本系統(tǒng)中是通信鏈路中不可或缺的一個部分,由于無線局域網(wǎng)采用的協(xié)議標(biāo)準IEEE802.11與ZigBee協(xié)議標(biāo)準IEEE802.15.4并不兼容,兩者無法直接通信,因此在ZigBee網(wǎng)與WLAN之間需要構(gòu)建一個連接兩個網(wǎng)絡(luò)的網(wǎng)關(guān)。
在網(wǎng)關(guān)硬件選擇上,ESP8266WIFI模塊價格低廉,性能穩(wěn)定,能夠支持標(biāo)準的IEEE802.11b/g/n協(xié)議和完整的TCP/IP協(xié)議棧。ESP8266在STA通信模式下,獲得路由器分配的本地IP地址,實現(xiàn)其與無線傳感網(wǎng)的通信。在與ZigBee網(wǎng)絡(luò)通信時,ESP8266WIFI模塊處理協(xié)調(diào)器UART串口發(fā)來的數(shù)據(jù),并將數(shù)據(jù)上傳到局域網(wǎng)中。
2.4 ?服務(wù)器設(shè)計
考慮到系統(tǒng)長時間運作的需求,本系統(tǒng)采用樹莓派作為個人服務(wù)器的硬件載體,并由無線局域網(wǎng)為其分配IP地址。
TCP/IP協(xié)議是網(wǎng)絡(luò)中使用最基本的協(xié)議,包括了應(yīng)用層、運輸層、網(wǎng)絡(luò)層、網(wǎng)絡(luò)接口層四個層次,而Socket作為TCP/IP與服務(wù)器進程之間連接的接口,為服務(wù)器應(yīng)用層與TCP運輸層之間的通信建立起了橋梁,如圖3所示。
本系統(tǒng)在Socket網(wǎng)絡(luò)編程的程序中利用推遲調(diào)用線程時間的方法,使程序能夠周期性的自動訪問路由器分配給網(wǎng)關(guān)ESP8266的IP地址,向分配好的端口發(fā)送指令,ESP8266接收到指令后,接收ZigBee經(jīng)由串口發(fā)送的信息,并經(jīng)由局域網(wǎng)上傳到個人服務(wù)器,個人服務(wù)器收到局域網(wǎng)傳來的數(shù)據(jù)并存儲到數(shù)據(jù)庫。
Python內(nèi)置的SQLite3數(shù)據(jù)庫作為一款小體積的嵌入式開源數(shù)據(jù)庫軟件,其驅(qū)動內(nèi)置在Python標(biāo)準庫中,本身沒有獨立的維護進程,所有的維護也都來自于程序本身,從而避免了復(fù)雜的數(shù)據(jù)庫環(huán)境搭建工作,因此本系統(tǒng)選用Python內(nèi)置的SQLite3作為存儲氣象數(shù)據(jù)信息的數(shù)據(jù)庫。
Socket程序?qū)@取到數(shù)據(jù)進行處理后存入數(shù)據(jù)庫中。一方面,用戶請求數(shù)據(jù)時,服務(wù)器返回給他最新的氣象數(shù)據(jù)。另一方面,數(shù)據(jù)庫存儲了當(dāng)?shù)氐臍庀髷?shù)據(jù),為大數(shù)據(jù)分析提供數(shù)據(jù)支持。
個人服務(wù)器在提供數(shù)據(jù)存儲功能的同時,也要滿足用戶讀取氣象數(shù)據(jù)的需求。本系統(tǒng)在服務(wù)器的程序設(shè)計語言及應(yīng)用選擇方面,選用基于Python的Flask框架來開發(fā)響應(yīng)局域網(wǎng)服務(wù)器的程序,服務(wù)器整體通信結(jié)構(gòu)設(shè)計圖如圖4所示。
uWSGI作為Web服務(wù)器,擔(dān)負著與Flask框架進行數(shù)據(jù)交換的任務(wù),考慮到局域網(wǎng)安全防護能力較弱,uWSGI不足以應(yīng)對局域網(wǎng)可能出現(xiàn)的安全問題以及個人服務(wù)器可能出現(xiàn)多個應(yīng)用同時運行監(jiān)聽80端口的情況,本系統(tǒng)在用戶與uWSGI服務(wù)器之間加入一層Nginx服務(wù)器。
3 ?系統(tǒng)測試
系統(tǒng)測試通過分析傳感器采集到數(shù)據(jù)的流向,確認系統(tǒng)正確運行。從系統(tǒng)的數(shù)據(jù)庫部分,用戶訪問部分出發(fā),結(jié)合環(huán)境中的實際情況,分別對它們收集到的數(shù)據(jù)進行對比分析,以檢查各部分數(shù)據(jù)發(fā)送和接收的可靠性。
3.1 ?數(shù)據(jù)庫部分
系統(tǒng)采集到的樣本數(shù)據(jù)結(jié)果如表2所示。
從數(shù)據(jù)庫表中采集到的數(shù)據(jù)可以推斷出傳感器、ZigBee網(wǎng)及無線局域網(wǎng)之間的通信正常。
3.2 ?用戶訪問部分
用戶在瀏覽器中輸入正確的URL地址,獲取到的數(shù)據(jù)結(jié)果顯示如圖5所示。
實時環(huán)境下采集到的樣本數(shù)據(jù)溫度為22℃,濕度為32%RH,光照為146lx,雨量為162(占比5%)。環(huán)境中采集到的數(shù)據(jù)與數(shù)據(jù)庫存儲及用戶訪問到的數(shù)據(jù)一致,用戶訪問部分運行良好。
4 ?結(jié)束語
個人氣象節(jié)點作為一個能夠采集局部氣象數(shù)據(jù)的個人系統(tǒng),采用ZigBee無線傳感網(wǎng)技術(shù)收集并傳遞數(shù)據(jù),其能量消耗低,續(xù)航時間長。利用樹莓派作為服務(wù)器對數(shù)據(jù)進行存儲,實現(xiàn)了對環(huán)境的實時監(jiān)控,服務(wù)器存儲的數(shù)據(jù)也可以為大數(shù)據(jù)分析提供數(shù)據(jù)支撐。另外,系統(tǒng)本身具有結(jié)構(gòu)簡單,成本低廉等優(yōu)點,具有一定的市場應(yīng)用前景,對智能家居的發(fā)展具有一定的積極意義。
參考文獻