【Zigbee精華教程01】Zigbee無線組網技術入門建議與學習路線

小蜜蜂老師發表於2019-03-14

1. 引言

      在物聯網技術應用的知識體系中,Zigbee無線組網技術是非常重要的一環,也是大家感覺比較難以掌握的一個部分。Zigbee無線組網技術之所以讓你感有學習難度,不是因為它真的複雜,僅僅是它看起來很複雜而已,讓人望而止步。另一方面則是Zigbee技術在應用層面上將硬體和軟體完成融為一個體系,要求開發人員既要有紮實的硬體技術,又要有清晰的軟體思維

      目前,儘管有不少關於Zigbee無線組網的技術書籍寫得非常棒,但對於初學者入門來說可能還是有點難。由於工作需要和形勢所迫,我自己摸索著學習Zigbee無線組網技術。其入門過程可謂一波三折,碰過不少障礙,走過不少彎路,吃過不少苦頭。所以,在這裡結合自己學習Zigbee技術的過程,和大家分享一下學習體會,探討一下學習路線。大家互助互勉,共同進步。

2. 關於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聯盟的認可,並且被全球很多企業作為商業級協議棧。實際上,Z-Stack只是一個半開源的協議棧,其中的MAC層ZMAC層並沒有全部開源,但使用者可以使用其提供的API來呼叫相關的庫函式。

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

3. 學習Z-Stack協議棧的基本思路

      古語有云:物有本末,事有終始,知所先後,則近道矣

      在進行Z-Stack協議棧的具體學習之前,必須先掌握CC2530晶片的開發流程及幾個基礎外設的應用。如果沒有這方面的硬體基礎,在看HAL層中的程式碼,你會覺得自己在看天書。在專案應用開發中,會因為應用場景的不同,使用不同的硬體電路,這個時候,不但要求你能夠讀懂硬體底層的程式碼,還要能夠根據硬體的不同設計底層程式碼。

      對於Z-Stack協議棧,最好先從整體上掌握其程式架構,通過分析Z-Stack的程式碼,把任務識別符號、任務初始化函式、任務事件列表和任務事件處理函式列表幾個關鍵的程式碼的關係理清楚,從根本上理解OSAL的執行機理,並掌握任務、事件、訊息等基本概念。然後理解其任務的排程演算法,把事件的產生和事件的處理的來龍去脈弄清楚,最後,自己能夠根據專案需求建立任務,處理事件。這個可以參考本人博文《一圖讀懂ZStack協議棧的核心思想與工作機理》

      上述的兩部分內容看起來跟Zigbee無線組網沒有多大的關係,而然,你要進行Zigbee無線組網技術的開發,又離不開上面兩個部分的內容。當你比較紮實的掌握了上面兩部分內容之後,就可以很順利進行無線組網和無線資料傳輸。至於通道、PANID、協調器、路由器、終端裝置、廣播、單播、組播、繫結等概念和應用,那都是水到渠成的事情了。

      我覺得可以把Z-Stack理解為:Z-Stack = OSAL + CC2530 + RF

      從總體上看,Z-Stack協議棧是一個用OSAL作業系統通過任務輪詢方式來管理CC2530底層硬體和IEEE 802.15.4無線網路的體系結構。那麼,你要學習Zigbee無線網路應用的基本路徑也就清晰了。

4. 學習Z-Stack協議棧的參考路線

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

【CC2530基礎的學習內容參考】:
 1-IAR開發環境的建立與專案開發流程。
 2-通用I/O埠的輸入和輸出控制。
 3-中斷系統及外部中斷應用。
 4-定時/計數器原理及其應用。
 5-序列介面原理及其應用。
 6-ADC工作原理及其應用。
 7-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協議棧進行系統性的綜合應用學習。

【Zigbee組網的學習參考內容】:
 1-基於BasicRF的點對點通訊。
 2-Z-Stack協議棧的結構及基本概念。
 3-Z-Stack協議棧中的HelloWorld。
 4-Z-Stack協議棧中的三種通訊方式。
 5-Z-Stack協議棧中的繫結技術。
 6-Z-Stack協議棧中的多點自組織網路。
 7-Z-Stack協議棧的基礎技能綜合實訓案例。

5. 個人學習體會

    在應用層面上,Zigbee無線網路技術的難點不是射頻資料收發部分,也不是網路組建管理部分, 但需要開發者具備硬體開發基礎和軟體程式設計思維。在閱讀Z-Satck協議棧程式碼過程中,有大量的陣列、指標、結構體、巨集定義、條件編譯等內容,所以要求開發者有紮實的C語言功底,如果你有閱讀過作業系統原始碼的經驗的話,那會事半功倍。

    技術書籍是需要看的,最好結合著原始碼來看。雖然技術書籍可以帶你從整體上認識Z-Satck協議棧,但是會比較抽象,離開原始碼你無法形象地摸清其中的脈絡。在閱讀書籍和原始碼的時候關鍵是理解,而理解的最好方法是動手編寫程式碼進行驗證。你可以首先執行最原始的Z-Stack協議棧,讓它跑起來。在這個過程中,你可以設定一些斷點,看看程式的執行路徑,可以加深你對概念的理解。然後,你可以試著按照書上或者你自己的構想,修改程式碼,出現錯誤就找出原因;執行成功你的理解又會前進一步。就這樣一步一個腳印的慢慢邁向Zigbee無線網路ying應用的大門。這時候有人就會說,沒有開發板怎麼辦?我只能回答你:“放棄吧”。學習Zigbee無線網路技術最起碼你需要三個開發板。呵呵呵...有興趣的話,不妨考慮一下小蜜蜂自行製作的Zigbee開發板哦

      在學過程中遇到問題怎麼辦?簡單,網上搜尋就會有很多資料,而且都很不錯的,基本上能解決入門學習的所有問題。實際上,有很多部落格文章記錄了作者遇到問題和解決問題的過程,非常有針對性,對初學者來說非常有幫助,而且很多是技術書籍沒有講到的。在學習過程中,利用技術書籍和技術部落格,結合Z-Stack協議棧原始碼,邊理解邊實踐,我相信您會很快的掌握其技術要點和開發技能的。

廣東職業技術學院  歐浩源 <小蜜蜂老師>  ohy3686@qq.com

 

相關文章