葛華 湯曉燕
基于CC2530的溫濕度無線數(shù)據(jù)采集
葛華 湯曉燕
(沙洲職業(yè)工學(xué)院,江蘇 張家港 215600)
分析ZigBee協(xié)議棧的工作流程,闡述以CC2530芯片為硬件核心構(gòu)建的點(diǎn)對點(diǎn)ZigBee無線網(wǎng)絡(luò),分別從硬件、軟件方面設(shè)計(jì)實(shí)現(xiàn)了基于ZigBee協(xié)議棧的溫濕度無線數(shù)據(jù)采集。使用IAR開發(fā)環(huán)境,基于TI公司的Z-Stack協(xié)議棧完成無線網(wǎng)絡(luò)協(xié)調(diào)器和終端設(shè)備的程序設(shè)計(jì)過程。終端設(shè)備和協(xié)調(diào)器之間通過ZigBee無線網(wǎng)絡(luò)通信,協(xié)調(diào)器和PC端之間通過串口通信,協(xié)調(diào)器可執(zhí)行對終端設(shè)備溫濕度的檢測與超限報(bào)警。
ZigBee;CC2530;Z-Stack;溫濕度采集
近年來,MEMS技術(shù)、無線通信技術(shù)的不斷發(fā)展推動了無線傳感網(wǎng)的誕生和發(fā)展。2009年,溫家寶總理視察了中科院物聯(lián)網(wǎng)感知中心,提出感知中國的概念。隨后,上海、無錫等城市相繼成立物聯(lián)網(wǎng)研究中心。國內(nèi)眾多高校成立了物聯(lián)網(wǎng)學(xué)院或者物聯(lián)網(wǎng)工程專業(yè)。[1]
沙洲職業(yè)工學(xué)院單獨(dú)開設(shè)“物聯(lián)網(wǎng)技術(shù)與應(yīng)用”課程,作為電子信息工程技術(shù)專業(yè)、電氣自動化技術(shù)專業(yè)的必修課。根據(jù)專業(yè)人才培養(yǎng)的需要,同時(shí)降低課程學(xué)習(xí)的難度,電子信息工程系于2017年添置了基于TI公司CC2530芯片的物聯(lián)網(wǎng)實(shí)驗(yàn)設(shè)備20套。
在“物聯(lián)網(wǎng)技術(shù)與應(yīng)用”課程之前,相關(guān)專業(yè)的學(xué)生已經(jīng)先修了“電路與電工技術(shù)”、“模擬電路分析與實(shí)踐”、“數(shù)字電路分析與實(shí)踐”、“C語言程序設(shè)計(jì)”、“單片機(jī)應(yīng)用技術(shù)”等基礎(chǔ)課程,具備了基本的專業(yè)知識。目前,該課程安排共56學(xué)時(shí),采用理實(shí)一體的教學(xué)方式,主要學(xué)習(xí)內(nèi)容:CC2530的GPIO口,外部中斷,定時(shí)器/計(jì)數(shù)器,電源管理,串口通信,AD轉(zhuǎn)換,ZigBee協(xié)議棧的無線網(wǎng)絡(luò)通信。課程的教學(xué)實(shí)驗(yàn)分為三個層次,首先是CC2530的基礎(chǔ)實(shí)驗(yàn),了解與掌握CC2530接口的功能與使用;其次是利用傳感器采集環(huán)境數(shù)據(jù)并分析;最后是基于ZigBee協(xié)議棧的組網(wǎng)實(shí)驗(yàn),進(jìn)行節(jié)點(diǎn)組網(wǎng)、數(shù)據(jù)采集與無線傳輸。實(shí)驗(yàn)難度循序漸進(jìn)。溫濕度無線數(shù)據(jù)采集是在完成了課程的主要學(xué)習(xí)內(nèi)容后,融合“物聯(lián)網(wǎng)技術(shù)與應(yīng)用”課程的知識要點(diǎn),進(jìn)行的綜合性ZigBee協(xié)議棧數(shù)據(jù)采集與無線網(wǎng)絡(luò)通信訓(xùn)練,還可以為相關(guān)專業(yè)后續(xù)的技能訓(xùn)練、畢業(yè)設(shè)計(jì)提供基礎(chǔ)平臺。
CC2530實(shí)驗(yàn)系統(tǒng)的硬件主要包括CC2530單片機(jī)模塊、常用傳感器模塊和其他模塊。CC2530單片機(jī)模塊主要由8051內(nèi)核和無線ZigBee構(gòu)成,可以完成對外設(shè)的控制和數(shù)據(jù)的無線傳輸。常用傳感器模塊主要包括溫濕度傳感器、煙霧傳感器、人體紅外傳感器等。其他模塊包括電源模塊、串口模塊、JTAG接口模塊、發(fā)光二極管模塊、按鍵模塊、液晶顯示模塊、RFID模塊、AD轉(zhuǎn)換模塊等。
實(shí)驗(yàn)系統(tǒng)中,無論是終端設(shè)備還是路由器、協(xié)調(diào)器,均采用相同的硬件模塊結(jié)構(gòu),采用TI公司的CC2530 芯片結(jié)合ZigBee協(xié)議來完成無線通信。CC2530單片機(jī)模塊的電路如圖1所示,主要包括晶振電路和巴倫變換電路。圖中的VCC 接3.3 V,負(fù)載電容C221與C231和32 M的振蕩器X1構(gòu)成32 MHz的晶振,負(fù)載電容C321、C331與32.768 k的振蕩器X2構(gòu)成32 kHz的晶振。電路中通過巴倫電路L252、L261和C252、C262將CC2530輸出的平衡天線信號轉(zhuǎn)換為實(shí)驗(yàn)系統(tǒng)板載天線所需要的非平衡天線信號。
圖1 CC2530單片機(jī)模塊的電路圖
ZigBee采用IEEE 802.15.4標(biāo)準(zhǔn),利用2.4 GHz頻段進(jìn)行通信,具有低功耗、低成本、網(wǎng)絡(luò)容量大等特點(diǎn)。低速率、無線自組網(wǎng)的ZigBee技術(shù),與藍(lán)牙、WiFi并稱為三大無線通信技術(shù)。[2]CC2530為一款片上系統(tǒng),兼容IEEE 802.15.4標(biāo)準(zhǔn),可以簡便、快速地構(gòu)建無線通信網(wǎng)絡(luò)。
ZigBee網(wǎng)絡(luò)中的設(shè)備按功能劃分為三類:協(xié)調(diào)器(Coordinator),路由器(Router),終端設(shè)備(End Device)。協(xié)調(diào)器主要功能是啟動和配置IEEE 802.15.4 ZigBee網(wǎng)絡(luò),一個ZigBee網(wǎng)絡(luò)只能有一個協(xié)調(diào)器。路由器是一種支持關(guān)聯(lián)的設(shè)備,將自己關(guān)聯(lián)至協(xié)調(diào)器或者已在網(wǎng)絡(luò)的其他路由器,同時(shí)允許其他的路由器和終端設(shè)備加入網(wǎng)絡(luò)。終端設(shè)備執(zhí)行具體的任務(wù),如:數(shù)據(jù)采集,并使用ZigBee網(wǎng)絡(luò)實(shí)現(xiàn)信息交互。
Z-Stack協(xié)議棧是一個小型操作系統(tǒng),協(xié)議棧內(nèi)有基本函數(shù)庫,開發(fā)人員通過調(diào)用函數(shù)庫內(nèi)的入口函數(shù)來實(shí)現(xiàn)ZigBee組網(wǎng)和數(shù)據(jù)傳輸?shù)裙δ?。Z-Stack協(xié)議棧采用層結(jié)構(gòu),圖2所示為Z-Stack協(xié)議棧的工程目錄,從上至下各個文件夾分別是:APP文件夾,應(yīng)用層;HAL文件夾,硬件層;MAC文件夾,媒介訪問控制層;MT文件夾,監(jiān)控測試;NWK文件夾,網(wǎng)絡(luò)層;OSAL文件夾,操作系統(tǒng)層;Profile文件夾,應(yīng)用工作層;Security文件夾,安全層;Tools文件夾,工程配置;ZDO文件夾,ZigBee設(shè)備對象層;Zmac文件夾,參數(shù)配置和回調(diào)處理函數(shù);ZMain文件夾,Z-Stack的主函數(shù)入口。其中,ZigBee聯(lián)盟對應(yīng)用層、網(wǎng)絡(luò)層架構(gòu)進(jìn)行了定義,而IEEE 802.15.4標(biāo)準(zhǔn)則對媒介訪問控制層進(jìn)行了定義[3]。由下至上,各層均能為上層提供滿足其需要的服務(wù)。
CC2530實(shí)驗(yàn)系統(tǒng)的無線通信采用Z-Stack,用戶只需調(diào)用應(yīng)用層程序的入口函數(shù)來實(shí)現(xiàn)具體功能[4]。Z-Stack的工作流程如圖3所示,主要包括初始化中斷、初始化驅(qū)動和各層、各任務(wù)輪詢等。Z-Stack的主入口函數(shù)在ZMain文件夾下的ZMain.c文件中。Zmain.c實(shí)現(xiàn)的功能主要有:初始化系統(tǒng)時(shí)鐘、初始化電源、初始化堆棧、初始化硬件模塊、初始化內(nèi)存管理、初始化消息隊(duì)列、初始化任務(wù)系統(tǒng)、初始化操作系統(tǒng)并啟動操作系統(tǒng)。其中,初始化任務(wù)系統(tǒng)是進(jìn)行任務(wù)列表和各項(xiàng)任務(wù)的添加,任務(wù)系統(tǒng)是整個協(xié)議棧中協(xié)調(diào)各個任務(wù)模塊及用戶應(yīng)用的核心。Zmain.c最后調(diào)用了osal_start_system( )函數(shù),啟動操作系統(tǒng),此后的操作權(quán)都交給OSAL操作系統(tǒng)。
OSAL是TI公司開發(fā)的一個輪詢式操作系統(tǒng)。osal_start_system( )函數(shù)中有一個死循環(huán),循環(huán)按照任務(wù)優(yōu)先級查詢各任務(wù)是否有事件發(fā)生,若有事件發(fā)生則轉(zhuǎn)入相應(yīng)的函數(shù)處理。初始化任務(wù)系統(tǒng)時(shí)已將HAL、MT、MAC、NWK、APP、ZDO等模塊添加到操作系統(tǒng)中,且在操作系統(tǒng)中以獨(dú)立任務(wù)運(yùn)行。操作系統(tǒng)專門為任務(wù)事件分配任務(wù)數(shù)組,一個任務(wù)的所有事件存放在一個任務(wù)單元中,操作系統(tǒng)輪詢每個任務(wù)單元是否有事件發(fā)生,若發(fā)生則進(jìn)入事件處理函數(shù),若沒有則繼續(xù)輪詢下一任務(wù)單元。
圖2 Z-Stack協(xié)議棧的工程目錄
圖3 Z-Stack的工作流程圖
溫濕度傳感器采用的是DHT11,在其正常工作時(shí)溫度測量范圍為0℃~50℃,測量精度為±2℃,分辨度為1℃;濕度測量范圍為20%~90%RH,測量精度為±5%RH。
DHT11與CC2530之間的通信為單總線格式,一次傳輸40位數(shù)據(jù),一次傳輸時(shí)間約為4 ms(時(shí)序要求比較嚴(yán)格),40位數(shù)據(jù)的傳輸順序?yàn)椋?位濕度整數(shù)數(shù)據(jù)、8位濕度小數(shù)數(shù)據(jù)、8位溫度整數(shù)數(shù)據(jù)、8位溫度小數(shù)數(shù)據(jù)、8位校驗(yàn)位。
使用CC2530來實(shí)時(shí)無線采集傳感器的數(shù)據(jù),是極為實(shí)用的功能。傳感器可以是溫度傳感器,濕度傳感器,光敏傳感器,煙霧傳感器等等。使用不同的傳感器,與CC2530的接口電路有所不同、驅(qū)動程序有所不同,但是對傳感器數(shù)據(jù)的采集、發(fā)送和接收的流程是相同的。
如圖4所示,溫濕度無線數(shù)據(jù)采集系統(tǒng)由2個節(jié)點(diǎn)組成。一個CC2530單片機(jī)模塊作為終端設(shè)備,與溫濕度傳感器DHT11相連,負(fù)責(zé)驅(qū)動傳感器,間隔固定時(shí)間讀取傳感器的采集值,并通過點(diǎn)播方式將采集的數(shù)據(jù)發(fā)送給協(xié)調(diào)器。另一個CC2530單片機(jī)模塊作為協(xié)調(diào)器,負(fù)責(zé)建立網(wǎng)絡(luò),將接收到的傳感器采集值在OLED 12864液晶屏上顯示,同時(shí)將數(shù)據(jù)發(fā)送給上位機(jī)的串口調(diào)試助手;在傳感器采集值超過設(shè)定的上限值時(shí),協(xié)調(diào)器向終端節(jié)點(diǎn)發(fā)送信號,控制終端設(shè)備點(diǎn)亮LED,作為報(bào)警指示。
圖4 溫濕度無線數(shù)據(jù)采集系統(tǒng)框圖
溫濕度無線數(shù)據(jù)采集系統(tǒng)選用IAR 8.10.1集成開發(fā)平臺設(shè)計(jì)軟件,基于ZStack-CC2530 version 2.5.1a協(xié)議棧,完成相關(guān)應(yīng)用層程序的編寫。
ZigBee的通訊方式主要有三種:點(diǎn)播、組播、廣播。其中,點(diǎn)播就是點(diǎn)對點(diǎn)通信,即2個設(shè)備之間的通訊。采集系統(tǒng)選用點(diǎn)播的通訊方式。
采集系統(tǒng)的軟件設(shè)計(jì)包括:CC2530終端設(shè)備節(jié)點(diǎn)的設(shè)計(jì)和CC2530協(xié)調(diào)器節(jié)點(diǎn)的設(shè)計(jì)。
(1)協(xié)調(diào)器的軟件設(shè)計(jì)
協(xié)調(diào)器的軟件設(shè)計(jì)主要分為三部分,包括系統(tǒng)初始化、網(wǎng)絡(luò)建立與通信實(shí)現(xiàn)、溫度超限報(bào)警控制。協(xié)調(diào)器負(fù)責(zé)ZigBee網(wǎng)絡(luò)的建立,節(jié)點(diǎn)的加入允許與分配網(wǎng)絡(luò)地址,網(wǎng)絡(luò)維護(hù)等。在Z-Stack協(xié)議棧中設(shè)置其為協(xié)調(diào)器。
協(xié)調(diào)器選用的是自啟動模式。在關(guān)閉中斷情況下,先初始化硬件,再初始化操作系統(tǒng),最后啟動操作系統(tǒng)。溫濕度無線數(shù)據(jù)采集系統(tǒng)開始工作時(shí),ZigBee網(wǎng)絡(luò)協(xié)調(diào)器節(jié)點(diǎn)根據(jù)程序定義的網(wǎng)絡(luò)編號PANID,啟動并組建ZigBee網(wǎng)絡(luò)。Z-Stack協(xié)議?;赯DO初始化函數(shù),完成網(wǎng)絡(luò)的初始化,若完成協(xié)調(diào)器網(wǎng)絡(luò)的構(gòu)建,則觸發(fā)ZDO_STATE_CHANGE事件,在OLED 12864液晶屏上顯示網(wǎng)絡(luò)建立狀態(tài)。協(xié)調(diào)器網(wǎng)絡(luò)構(gòu)建完成后,等待路由器節(jié)點(diǎn)或終端設(shè)備節(jié)點(diǎn)的入網(wǎng)請求;組網(wǎng)后,溫濕度傳感終端開始采集信息,將檢測數(shù)據(jù)發(fā)送到協(xié)調(diào)器節(jié)點(diǎn)。在ZigBee網(wǎng)絡(luò)終端設(shè)備節(jié)點(diǎn)完成初始化后,協(xié)調(diào)器進(jìn)入OSAL任務(wù)的輪詢,系統(tǒng)在此循環(huán)中主要檢查和處理事件程序,完成讀取傳感器信息、收發(fā)數(shù)據(jù)等任務(wù)。協(xié)調(diào)器的軟件設(shè)計(jì)流程如圖5所示。
(2)終端設(shè)備的軟件設(shè)計(jì)
終端設(shè)備的軟件設(shè)計(jì)主要分為四部分,包括系統(tǒng)初始化、網(wǎng)絡(luò)加入與通信實(shí)現(xiàn)、傳感器數(shù)據(jù)采集、報(bào)警功能。在Z-Stack協(xié)議棧中設(shè)置其為終端設(shè)備。
終端設(shè)備和路由器一樣選用自啟動模式。在Z-Stack協(xié)議棧中,在應(yīng)用層注冊報(bào)告事件,加入?yún)f(xié)調(diào)器所在網(wǎng)絡(luò),并完成網(wǎng)絡(luò)通信功能。網(wǎng)絡(luò)初始化時(shí),調(diào)用函數(shù)NLME_Network Discovery Request( )來發(fā)現(xiàn)網(wǎng)絡(luò),網(wǎng)絡(luò)接入成功后,觸發(fā)任務(wù)的ZDO_STATE_CHANGE事件,向協(xié)調(diào)器發(fā)送網(wǎng)絡(luò)地址。若接收到控制命令數(shù)據(jù),則調(diào)用數(shù)據(jù)采集函數(shù)會采集實(shí)時(shí)溫度值和濕度值,并發(fā)送給協(xié)調(diào)器;若發(fā)送失敗,則延遲1 s后再次發(fā)送。傳感器數(shù)據(jù)采集功能即設(shè)置CC2530的端口P0. 6為輸入端,每隔2 s對該端口進(jìn)行一次數(shù)據(jù)采集。而報(bào)警功能即設(shè)置CC2530的端口P0. 4為輸出端,以高低電平作為輸出控制LED,以達(dá)到溫度超限報(bào)警的目的。終端設(shè)備的軟件設(shè)計(jì)流程如圖6所示。
圖5 協(xié)調(diào)器節(jié)點(diǎn)程序流程圖
圖6 終端設(shè)備節(jié)點(diǎn)程序流程圖
協(xié)調(diào)器模塊調(diào)試:將協(xié)調(diào)器通過USB口連接至計(jì)算機(jī),打開計(jì)算機(jī)中的串口助手軟件,并設(shè)置好COM口和波特率,將終端節(jié)點(diǎn)通電,在計(jì)算機(jī)的串口助手軟件數(shù)據(jù)區(qū)中可以看到監(jiān)測的溫度值和濕度值,說明協(xié)調(diào)器工作正常。
溫濕度模塊調(diào)試:人為調(diào)節(jié)溫濕度傳感器周圍空氣的溫度和濕度,計(jì)算機(jī)的串口助手軟件數(shù)據(jù)區(qū)中顯示的溫度值和濕度值相應(yīng)變化,說明溫濕度模塊調(diào)試正常。
數(shù)據(jù)顯示調(diào)試:溫濕度無線數(shù)據(jù)采集系統(tǒng)運(yùn)行后,計(jì)算機(jī)的串口助手軟件數(shù)據(jù)區(qū)和OLED 12864液晶屏上可以看到規(guī)定格式的數(shù)據(jù)顯示,說明數(shù)據(jù)顯示正常。
報(bào)警模塊調(diào)試:調(diào)節(jié)環(huán)境的溫度,當(dāng)溫度超過閾值時(shí),終端設(shè)備上的LED閃爍,說明報(bào)警模塊正常。
基于CC2530和Z-Stack的溫濕度無線數(shù)據(jù)采集系統(tǒng)實(shí)現(xiàn)了對溫濕度的實(shí)時(shí)采集與控制,若環(huán)境溫度超出閾值,則上位機(jī)控制LED閃爍,以提醒用戶進(jìn)行處理。實(shí)驗(yàn)證明,系統(tǒng)具有成本低、數(shù)據(jù)傳輸可靠、功耗低等特點(diǎn)。
[1] 李雙,潘毅,尤越,秦宏.面向應(yīng)用型高校的無線傳感網(wǎng)課程實(shí)驗(yàn)平臺的設(shè)計(jì)[J].電腦知識與技術(shù), 2018 (6): 142-143.
[2] 孫占偉,趙爍,王盼星, 等.基于物聯(lián)網(wǎng)的社區(qū)服務(wù)信息交互終端與系統(tǒng)[J]. 吉林大學(xué)學(xué)報(bào)(信息科學(xué)版), 2016, 34 (4): 516-519.
[3] 王小強(qiáng), 歐陽駿, 黃寧淋. ZigBee無線傳感器網(wǎng)絡(luò)設(shè)計(jì)與實(shí)現(xiàn)[M].北京: 化學(xué)工業(yè)出版社, 2012.
[4] 高翔, 鄧永莉, 呂愿愿, 等.基于Z-Stack協(xié)議棧的ZigBee網(wǎng)絡(luò)節(jié)能算法的研究[J]. 傳感器技術(shù)學(xué)報(bào), 2014, 27 (11): 1534-1538.
Wireless Data Acquisition of Temperature and Humidity Based on CC2530
Ge Hua, Tang Xiaoyan
( Shazhou Professional Institute of Technology, Zhangjiagang 215600, Jiangsu, China )
The working process of ZigBee protocol stack is briefly analyzed, and the point-to-point ZigBee wireless network built with CC2530 chip as the hardware core is described in this paper. The temperature and humidity wireless data acquisition based on ZigBee protocol stack is designed and realized respectively from the aspects of hardware and software. With the developing environment of IAR, the programming process of wireless network coordinator and terminal device are completed based on TI's Z-Stack protocol Stack. Through ZigBee wireless network communication between terminal device and coordinator, and through serial port communication between coordinator and PC, the coordinator can perform temperature and humidity detection and over-limit alarm for terminal device.
ZigBee; CC2530; Z-Stack; temperature and humidity acquisition
TP391.44
A
1009-8429(2019)01-0011-05
2019-02-25
葛 華(1974-),女,沙洲職業(yè)工學(xué)院電子信息工程系講師;
湯曉燕(1971-),女,沙洲職業(yè)工學(xué)院電子信息工程系副教授。
沙洲職業(yè)工學(xué)院學(xué)報(bào)2019年1期