沈陽(yáng)理工大學(xué)信息科學(xué)與工程學(xué)院 魏玉峰
近些年科技發(fā)展如此的迅速,以計(jì)算機(jī)技術(shù)為基礎(chǔ)的人工智能領(lǐng)域、大數(shù)據(jù)領(lǐng)域以及物聯(lián)網(wǎng)領(lǐng)域均取得了重大的科技成就。其中物聯(lián)網(wǎng)技術(shù)是嵌入式技術(shù)和互聯(lián)網(wǎng)技術(shù)的結(jié)合,為了實(shí)現(xiàn)物與物之間、人與物之間的“通訊”和“控制”,廣泛應(yīng)用于各種智能控制領(lǐng)域如智能家居、車載智能終端、物流管理以及自動(dòng)化控制。
物聯(lián)網(wǎng)技術(shù)主要由以下幾部分組成:
1)具有無(wú)線通信功能的終端節(jié)點(diǎn);
2)控制終端的網(wǎng)關(guān)設(shè)備;
3)服務(wù)器平臺(tái)。
其中終端節(jié)點(diǎn)是以傳感器模塊、無(wú)線通信模塊為核心用來(lái)檢測(cè)或控制外部設(shè)備的一個(gè)小型嵌入式產(chǎn)品,終端節(jié)點(diǎn)在物聯(lián)網(wǎng)設(shè)計(jì)中的作用就如同人體的感知網(wǎng)絡(luò)和動(dòng)作執(zhí)行器,因此在物聯(lián)網(wǎng)設(shè)計(jì)中終端節(jié)點(diǎn)尤為重要。目前無(wú)線終端節(jié)點(diǎn)網(wǎng)絡(luò)設(shè)計(jì)中以TI公司的Zigbee技術(shù)最為成熟。Zigbee技術(shù)是2.4GHz符合IEEE802.15.4標(biāo)準(zhǔn)的無(wú)線通信技術(shù),TI公司又為Zigbee技術(shù)開發(fā)了Zstack協(xié)議棧以及必要的開發(fā)工具。
因此利用Zstack協(xié)議??梢钥焖俑咝У拈_發(fā)Zigbee無(wú)線通信網(wǎng)絡(luò)。
Zigbee節(jié)點(diǎn)使用TI公司的CC2530芯片作為核心處理器,選用的理由是:
1)以CC2530為核心的無(wú)線通信產(chǎn)品已廣泛應(yīng)用于各種工業(yè)產(chǎn)品中,能保證產(chǎn)品的穩(wěn)定性;
2)CC2530芯片完美支持Zstack協(xié)議棧,便于協(xié)議棧的移植和二次開發(fā);
3)CC2530芯片資料文檔較為齊全,可以配合TI公司的專用工具Zigbee Sensor Monitor進(jìn)行測(cè)試。
因此選擇TI公司的Zigbbe節(jié)點(diǎn)完成Zstack協(xié)議棧的無(wú)線網(wǎng)絡(luò)終端設(shè)計(jì),節(jié)點(diǎn)包括溫濕度傳感器節(jié)點(diǎn)、可燃?xì)怏w濃度檢測(cè)節(jié)點(diǎn)、繼電器控制節(jié)點(diǎn)。
Zigbbe開發(fā)中需要用到以下工具:
1)IAR Embedded Workbench,這是一款集成C/C++編譯器、調(diào)試器的開發(fā)環(huán)境,主要用于ARM處理器的軟件開發(fā)和程序下載與調(diào)試,在本設(shè)計(jì)中CC2530芯片基于Zstack的程序設(shè)計(jì)就是在IAR中完成的。
2)串口調(diào)試助手,串口調(diào)試助手主要用于軟件開發(fā)過程中節(jié)點(diǎn)數(shù)據(jù)傳輸是否準(zhǔn)確,并且可以通過串口調(diào)試助手直接與節(jié)點(diǎn)進(jìn)行通信。
3)Zigbee Sensor Monitor,這是一款TI公司開發(fā)的測(cè)試軟件用于Zstack組網(wǎng)測(cè)試以及數(shù)據(jù)測(cè)試,通過Zigbee Sensor Monitor可以直觀的看到Zigbee網(wǎng)絡(luò)中協(xié)調(diào)器節(jié)點(diǎn)、路由節(jié)點(diǎn)以及終端節(jié)點(diǎn)的組網(wǎng)情況。
以上三款軟件就是Zigbee設(shè)計(jì)中最基本以及最常用的軟件,使用這三款軟件可以完成Zstack協(xié)議棧的無(wú)線網(wǎng)絡(luò)終端設(shè)計(jì)。
Z-stack協(xié)議棧也是一款小型的操作系統(tǒng),由TI公司在2007年發(fā)布。協(xié)議棧內(nèi)有各個(gè)基本函數(shù)庫(kù),開發(fā)人員可以調(diào)用函數(shù)庫(kù)內(nèi)的入口函數(shù)來(lái)實(shí)現(xiàn)Zigbee組網(wǎng)、數(shù)據(jù)傳輸?shù)?。通過TI的官方網(wǎng)站可以下載Zstack協(xié)議棧的安裝包,點(diǎn)擊安裝即可,安裝完成后在Texas Instruments/Zstack-CC2530/Project/zstack/Samples目錄下找到官方例程使用IAR打開。
圖1 Zstack工程目錄
上圖是Zstack工程目錄,由上至下各個(gè)文件依次是:1)APP層,應(yīng)用層目錄;2)HAL層,硬件目錄層;3)MAC層;4)MT層,監(jiān)控測(cè)試層;5)NWK層,網(wǎng)絡(luò)層目錄;6)OSAL層,操作系統(tǒng)層;7)Profile層,應(yīng)用工作層;8)Seurity層,安全層;9)Tools層,工程配置;10)ZDO層,Zigbee設(shè)備對(duì)象層;11)Zmac層,參數(shù)配置信息和回調(diào)處理函數(shù);12)ZMain層,Zstack的主函數(shù)入口。
以上是Zstack協(xié)議棧的工程目錄,通過了解可以知道以下兩點(diǎn):
第一Zstack的入口函數(shù)在ZMain目錄下,找到其中的ZMain.c文件,在ZMain.c文件中找到int main(void)函數(shù),這是協(xié)議棧的主函數(shù),也就是工程的啟動(dòng)函數(shù)。Zmain.c函數(shù)實(shí)現(xiàn)了以下功能,初始化系統(tǒng)的時(shí)鐘、檢測(cè)芯片電壓、初始化堆棧、初始化硬件模塊、初始化存儲(chǔ)器、初始化操作系統(tǒng)以及啟動(dòng)操作系統(tǒng)。Zmain.c最后調(diào)用了osal_start_system()函數(shù),這個(gè)函數(shù)本質(zhì)上是一個(gè)死循環(huán),在循環(huán)體內(nèi)通過輪詢的方式依次判斷是否有事件發(fā)生,如果發(fā)生則進(jìn)入事件處理函數(shù)中。事件的定義函數(shù)在const pTaskEventHandlerFn taskArr[]結(jié)構(gòu)體內(nèi)。
圖2 事件定義結(jié)構(gòu)體
結(jié)構(gòu)體內(nèi)依據(jù)事件的優(yōu)先級(jí)依次處理mac層、nwk層、hal層、MT層、APSF層、ZDApp層和SampleApp層的任務(wù),因此用戶自定義任務(wù)是優(yōu)先級(jí)最低的任務(wù)。Zstack通過定義任務(wù)標(biāo)識(shí)符taskID來(lái)區(qū)分各個(gè)任務(wù),taskID和tasksArr[]的對(duì)應(yīng)關(guān)系如下1表所示:
表1 taskID和任務(wù)事件對(duì)應(yīng)關(guān)系
因此只要taskID=6,那么系統(tǒng)就會(huì)運(yùn)行用戶自定義程序。
溫濕度傳感器使用DHT11,其與CC2530模塊采用單總線通信模式,CC2530的GPIO連接DHT11的DATA口,通過模擬DHT11的時(shí)序即可得到40bit的數(shù)據(jù),其數(shù)據(jù)格式為:8bit濕度整數(shù)數(shù)據(jù)+8bit濕度小數(shù)數(shù)據(jù)+8bit溫度整數(shù)數(shù)據(jù)+8bit溫度小數(shù)數(shù)據(jù)+8bit校驗(yàn)和。
首先編寫DHT11傳感器的驅(qū)動(dòng)程序:
圖3 DHT11初始化及驅(qū)動(dòng)流程圖
依據(jù)驅(qū)動(dòng)流程圖以及DHT11數(shù)據(jù)手冊(cè)中的時(shí)序編寫CC2530與DHT11的通信程序,在IAR軟件中編寫具體程序代碼,點(diǎn)擊Project->Rebuild All在底部窗口中可看到程序的部分編譯過程和編譯結(jié)果,在修改及完善項(xiàng)目工程后通過IAR軟件的Projece->Download and Debug將編譯后的.hex文件燒錄進(jìn)CC2530節(jié)點(diǎn)板并通過串口觀察實(shí)驗(yàn)結(jié)果。
柳江塑造了柳州的風(fēng)景名勝,也因其對(duì)柳州城區(qū)呈現(xiàn)的“水抱城流”之景,江水的流淌沖擊,使得城區(qū)形成一個(gè)壺形的半島而有了“壺城”的別稱。又因其城區(qū)山清水秀,景色別致而有了“世界第一天然盆景”的美譽(yù)。
圖4 溫濕度節(jié)點(diǎn)獨(dú)立測(cè)試結(jié)果
在編譯并測(cè)試完成DHT11的驅(qū)動(dòng)程序后,將程序移植至Zstack協(xié)議棧的APP文件中,接口函數(shù)定義在SApp用戶任務(wù)里。這樣就可以通過Zstack的輪詢方式實(shí)現(xiàn)節(jié)點(diǎn)的溫濕度檢測(cè)功能。最后配置節(jié)點(diǎn)的完整參數(shù)例如節(jié)點(diǎn)的類型:協(xié)調(diào)器節(jié)點(diǎn)、路由節(jié)點(diǎn)、終端節(jié)點(diǎn),網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu):樹形網(wǎng)、星形網(wǎng)、網(wǎng)狀網(wǎng),并將程序編譯燒錄進(jìn)節(jié)點(diǎn)板。
可燃?xì)怏w傳感器選用MQ-2模塊,傳感器的工作原理是MQ-2的電導(dǎo)率與空氣中煙霧濃度成正比例關(guān)系,也就是當(dāng)空氣中濃度增大時(shí),MQ-2模塊輸出的電阻就越低,具體電阻與濃度的對(duì)應(yīng)關(guān)系查閱模塊技術(shù)文檔可知。
CC2530芯片內(nèi)部有12位AD轉(zhuǎn)換器,因此僅需利用基準(zhǔn)電壓和分壓電阻即可通過AD轉(zhuǎn)換器計(jì)算出MQ-2模塊的電阻,也就能得到當(dāng)前空氣中可燃?xì)怏w的濃度系數(shù)。
設(shè)計(jì)可燃?xì)怏w節(jié)點(diǎn)同樣采用循序漸進(jìn)的處理方式,首先編寫節(jié)點(diǎn)的獨(dú)立測(cè)試程序,測(cè)試通過完成后基于Z-stack協(xié)議棧編寫最終使用程序,程序的設(shè)計(jì)過程與思路和溫濕度節(jié)點(diǎn)相同,此處不再贅述。
可控繼電器選用5V直流繼電器,節(jié)點(diǎn)共裝有兩個(gè)繼電器,繼電器程序設(shè)計(jì)過程如下:
1)實(shí)現(xiàn)CC2530控制繼電器按一定頻率自動(dòng)開合;
2)通過串口與CC2530通信實(shí)現(xiàn)繼電器的可控開關(guān);
繼電器為開關(guān)控制元件,在繼電器的線圈端加載5V直流電壓即可控制幾點(diǎn)閉合,閉合時(shí)繼電器的公共端與常開點(diǎn)連通,繼電器是一款小電流控制大電流的元件,用于多種工業(yè)控制場(chǎng)合。
繼電器程序設(shè)計(jì)過程中移植了前節(jié)點(diǎn)的工程,包括節(jié)點(diǎn)串口通信以及Z-stack下節(jié)點(diǎn)的組網(wǎng)和數(shù)據(jù)處理。
1)實(shí)現(xiàn)CC2530控制繼電器按一定頻率自動(dòng)開合;
2)通過串口與CC2530通信實(shí)現(xiàn)繼電器的可控開關(guān);
3)繼電器節(jié)點(diǎn)與協(xié)調(diào)器通過組網(wǎng)實(shí)現(xiàn)繼電器的狀態(tài)查詢以及開關(guān)控制。
繼電器為開關(guān)控制元件,在繼電器的線圈端加載5V直流電壓即可控制幾點(diǎn)閉合,閉合時(shí)繼電器的公共端與常開點(diǎn)連通,繼電器是一款小電流控制大電流的元件,用于多種工業(yè)控制場(chǎng)合。
繼電器程序設(shè)計(jì)過程中移植了前節(jié)點(diǎn)的工程,包括節(jié)點(diǎn)串口通信、點(diǎn)對(duì)點(diǎn)通信以及Z-stack下節(jié)點(diǎn)的組網(wǎng)和數(shù)據(jù)處理。
圖5 繼電器測(cè)試結(jié)果
圖5 是組網(wǎng)后通過串口連接協(xié)調(diào)器,并最終查詢及控制繼電器的狀態(tài),通過串口輸入0表示關(guān)閉繼電器,輸入1表示打開繼電器,輸入2可查詢當(dāng)前繼電器的開關(guān)狀態(tài)。
至此基于Zstack協(xié)議棧的無(wú)線網(wǎng)絡(luò)終端設(shè)計(jì)已經(jīng)完成,其中包含溫濕度節(jié)點(diǎn)、可燃?xì)怏w檢測(cè)節(jié)點(diǎn)、繼電器控制節(jié)點(diǎn)。
本設(shè)計(jì)是基于TI公司CC2530無(wú)線通信芯片設(shè)計(jì)的Zigbee無(wú)線終端,移植了TI公司的Zstack協(xié)議棧,組建樹形網(wǎng)并將節(jié)點(diǎn)數(shù)據(jù)信息通過串口輸送至電腦,實(shí)現(xiàn)了通過串口可測(cè)可控各個(gè)節(jié)點(diǎn)的功能,首先本設(shè)計(jì)基于嵌入式發(fā)展的趨勢(shì)以及物聯(lián)網(wǎng)技術(shù)中的感知網(wǎng)絡(luò),編寫了三組不同功能的節(jié)點(diǎn)程序,并成功實(shí)現(xiàn)相應(yīng)的功能,本設(shè)計(jì)只是簡(jiǎn)單的完成了Zstack協(xié)議棧的無(wú)線網(wǎng)絡(luò)終端設(shè)計(jì),其可提升和擴(kuò)展的空間也十分的廣闊。