1. 程式人生 > >【Zigbee技術入門教程-01】Zigbee無線組網技術入門的學習路線

【Zigbee技術入門教程-01】Zigbee無線組網技術入門的學習路線

自組織 問題 作者 項目 建築 企業 color 基本概念 基礎

【Zigbee技術入門教程-01】Zigbee無線組網技術入門的學習路線

廣東職業技術學院 歐浩源

一、引言
物聯網技術應用的知識體系中,Zigbee無線組網技術是非常重要的一環,也是大家感覺比較難以掌握的一個部分。Zigbee無線組網技術之所以讓你感有學習難度,不是因為它真的復雜,而是它看起來很復雜,讓人望而止步。另一方面則是Zigbee技術在應用層面上將硬件和軟件完成融為一個體系,要求開發人員既要有紮實的硬件技術,又要有清晰的軟件思維
目前,盡管有不少關於Zigbee無線組網的技術書籍寫得非常棒,但對於初學者入門來說可能還是有點難。由於工作需要和形勢所迫,我自己摸索著學習Zigbee無線組網技術。其入門過程可謂一波三折,碰過不少障礙,走過不少彎路,吃過不少苦頭。所以,在這裏結合自己學習Zigbee技術的過程,和大家分享一下學習體會,探討一下學習路線。大家互助互勉,共同進步。

二、關於Zigbee與Z-Stack
明明看的是關於Zigbee協議的技術教材,為什麽裏面的內容講的卻是Z-Stack協議棧的內容呢?相信有不少初學者都要這樣的疑問。
Zigbee是基於IEEE 802.15.4標準的低功耗局域網協議。該協議的物理層(PHY)和介質訪問層(MAC)由IEEE 802.15.4標準來定義;網絡層(NWK)和應用層(APP)則由Zigbee聯盟來定義。
Z-Stack是TI公司提供的一套符合Zigbee協議標準的協議棧。用戶可以使用其提供的程序框架和API函數進行應用項目的開發。該協議棧經過了Zigbee聯盟的認可,並且被全球很多企業作為商業級協議棧。


簡單來說,Zigbee是一個符合國際標準的協議,而Z-Stack則是實現該協議的具體代碼如果前者是一個建築圖紙,那麽後者就是按照圖紙修建的建築物。所以,學習基於CC2530芯片的Zigbee無線組網技術,實際上就是學習Z-Stack協議棧的結構和運行機理,並且在其基礎上進行項目開發。

三、學習Z-Stack協議棧的基本思路
古語有雲:物有本末,事有終始,知所先後,則近道矣。
在進行Z-Stack協議棧的具體學習之前,必須先掌握CC2530芯片的開發流程及幾個基礎外設的應用。如果沒有這方面的硬件基礎,在看HAL層中的代碼,你會覺得自己在看天書。在項目應用開發中,會因為應用場景的不同,使用不同的硬件電路,這個時候,不但要求你能夠讀懂硬件底層的代碼,還要能夠根據硬件的不同設計底層代碼。


對於Z-Stack協議棧,最好先從整體上掌握其程序架構,通過分析Z-Stack的代碼,把任務標識符、任務初始化函數、任務事件列表和任務事件處理函數列表幾個關鍵的代碼的關系理清楚,從根本上理解OSAL的運行機理,並掌握任務、事件、消息等基本概念。然後理解其任務的調度算法,把事件的產生和事件的處理的來龍去脈弄清楚,最後,自己能夠根據項目需求創建任務,處理事件。
上述的兩部分內容看起來跟Zigbee無線組網沒有多大的關系,而然,你要進行Zigbee無線組網技術的開發,又離不開上面兩個部分的內容。當你比較紮實的掌握了上面兩部分內容之後,就可以很順利進行無線組網和無線數據傳輸。至於信道、PANID、協調器、路由器、終端設備、廣播、單播、組播、綁定等概念和應用,那都是水到渠成的事情了。
我覺得可以把Z-Stack理解為:Z-Stack = OSAL + CC2530 + RF
從總體上看,Z-Stack協議棧是一個用OSAL操作系統通過任務輪詢方式來管理CC2530底層硬件IEEE 802.15.4無線網絡的體系結構。那麽,你要學習Zigbee無線網絡應用的基本路徑也就清晰了。

四、學習Z-Stack協議棧的參考路線
從我自己的學習過程來看,學習Z-Stack協議棧可以分為三個部分:CC2530微控制器的硬件基礎開發OSAL操作系統的基本應用RF無線網絡應用開發
在CC2530微控制器的基礎學習中,我們掌握其中幾個最基礎的功能模塊就可以了,至於DAM傳輸、Flash讀寫和低功耗控制等,你在後面的項目開發中,碰到什麽再學什麽,沒有太大困難的。

[CC2530基礎的學習內容參考]:
1-IAR開發環境的建立與項目開發流程。
2-通用I/O端口的輸入和輸出控制。
3-中斷系統及外部中斷應用。
4-定時/計數器原理及其應用。
5-串行接口原理及其應用。
6-ADC工作原理及其應用。
7-CC2530基礎技能綜合實訓案例。
<關於這一部分的內容已經在本博客的《CC2530入門基礎教程》的系列在論壇發布了。>

OSAL是一個基於輪轉查詢方式的操作系統。在OSAL操作系統的學習過程中,我們要掌握的是如何在OSAL中實現對CC2530基礎模塊的控制。對於一些沒有操作系統概念或者沒有具體接觸過操作系統的人來說,那是有一定難度的。而然,你要真正的踏進Zigbee無線網絡應用的大門,這是必經之路。
[OSAL基礎的學習參考內容]:
1-理解OSAL的運行機理及相關概念。
2-基於OSAL的跑馬燈程序。
3-自定義任務的創建及事件處理。
4-基於OSAL的按鍵驅動及任務同步。
5-基於OSAL的串口數據收發應用。
6-基於OSAL的ADC數據采集。
7-基於OSAL的基礎技能綜合實訓案例。

最後才是基於IEEE 802.15.4無線網絡應用的學習。在這裏並不是單一內容的學習,而是結合前面兩個部分的內容,對Z-Stack協議棧進行系統性的綜合應用學習。
[無線網絡應用的學習參考內容]:
1-基於BasicRF的點對點通信。
2-Z-Stack協議棧的結構及基本概念。
3-Z-Stack協議棧中的HelloWorld。
4-Z-Stack協議棧中的三種通訊方式。
5-Z-Stack協議棧中的綁定技術。
6-Z-Stack協議棧中的多點自組織網絡。
7-Z-Stack協議棧的基礎技能綜合實訓案例。

五、個人學習體會
在應用層面上,Zigbee無線網絡技術的難點不是射頻數據收發部分,也不是網絡組建管理部分, 但需要開發者具備硬件開發基礎軟件編程思維。在閱讀Z-Satck協議棧代碼過程中,有大量的數組、指針、結構體、宏定義、條件編譯等內容,所以要求開發者有紮實的C語言功底,如果你有閱讀過操作系統源碼的經驗的話,那會事半功倍。
技術書籍是需要看的,最好結合著源碼來看。雖然技術書籍可以帶你從整體上認識Z-Satck協議棧,但是會比較抽象,離開源碼你無法形象地摸清其中的脈絡。在閱讀書籍和源碼的時候關鍵是理解,而理解的最好方法是動手編寫代碼進行驗證。你可以首先運行最原始的Z-Stack協議棧,讓它跑起來。在這個過程中,你可以設置一些斷點,看看程序的運行路徑,可以加深你對概念的理解。然後,你可以試著按照書上或者你自己的構想,修改代碼,出現錯誤就找出原因;運行成功你的理解又會前進一步。就這樣一步一個腳印的慢慢邁向Zigbee無線網絡ying應用的大門。這時候有人就會說,沒有開發板怎麽辦?我只能回答你:“放棄吧”。學習Zigbee無線網絡技術最起碼你需要三個開發板
在學習過程中遇到問題怎麽辦?簡單,網上搜索就會有很多資料,而且都很不錯的,基本上能解決入門學習的所有問題。實際上,有很多博客文章記錄了作者遇到問題和解決問題的過程,非常有針對性,對初學者來說非常有幫助,而且很多是技術書籍沒有講到的。在學習過程中,利用技術書籍技術博客,結合Z-Stack協議棧源碼,邊理解邊實踐,我相信您會很快的掌握其技術要點和開發技能的。

六、小結
Z-Stack協議棧之所以復雜,那是因為它看起來復雜而已。技術的學習往往都沒有捷徑,只有循序漸進,紮實前行,才能真正把握本質和內涵。對於那些興趣濃厚或者目標堅定的初學者來說,我相信掌握Zigbee無線組網技術的入門技能是不會化太長時間的。
如果能夠完成上面三個部分內容的學習,我想Zigbee無線組網技術應該可以入門的了,但是你要達到精通的水平還不夠,還得需要通過很多項目開發的不斷錘煉。

【Zigbee技術入門教程-01】Zigbee無線組網技術入門的學習路線