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