廣東職業技術學院 歐浩源
一、引言
在物聯網技術應用的知識體系中,zigbee無線組網技術是非常重要的一環,也是大家感覺比較難以掌握的乙個部分。zigbee無線組網技術之所以讓你感有學習難度,不是因為它真的複雜,而是它看起來很複雜,讓人望而止步。另一方面則是zigbee技術在應用層面上將硬體和軟體完成融為乙個體系,要求開發人員既要有紮實的硬體技術,又要有清晰的軟體思維。
目前,儘管有不少關於zigbee無線組網的技術書籍寫得非常棒,但對於初學者入門來說可能還是有點難。由於工作需要和形勢所迫,我自己摸索著學習zigbee無線組網技術。其入門過程可謂一波三折,碰過不少障礙,走過不少彎路,吃過不少苦頭。所以,在這裡結合自己學習zigbee技術的過程,和大家分享一下學習體會,**一下學習路線。大家互助互勉,共同進步。
二、關於zigbee與z-stack
明明看的是關於zigbee協議的技術教材,為什麼裡面的內容講的卻是z-stack協議棧的內容呢?相信有不少初學者都要這樣的疑問。
zigbee是基於ieee 802.15.4標準的低功耗區域網協議。
z-stack是ti公司提供的一套符合zigbee協議標準的協議棧。使用者可以使用其提供的程式框架和api函式進行應用專案的開發。該協議棧經過了zigbee聯盟的認可,並且被全球很多企業作為商業級協議棧。實際上,z-stack只是乙個半開源的協議棧,其中的mac層和zmac層並沒有全部開源,但使用者可以使用其提供的api來呼叫相關的庫函式。
簡單來說,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無線組網技術應該可以入門的了,但是你要達到精通的水平還不夠,還得需要通過很多專案開發的不斷錘煉。
無線組網技術 作業
1 wimax 是採用哪種技術標準來構建寬頻無線網路的?正確答案 d 我的答案 d得分 12.5分2 下列調製模式中,不屬於 ieee 802.16a 定義的調製模式是 正確答案 b 我的答案 b得分 12.5分3 以下那個 ieee 聯網標準定義了 wman 的 phy 和 mac 層?正確答案 ...
無線組網技術 作業3
zigbee物理層有哪幾種速率標準?正確答案 abc 我的答案 abc得分 25.0分1 zigbee定義了兩種裝置 和 正確答案 第一空 完全功能裝置 ffd 第二空 簡化功能裝置 rfd 我的答案 得分 25.0分 第一空 完全功能裝置 ffd 第二空 簡化功能裝置 rfd 批語答案解析 2 每...
無線組網技術 作業3 2
下列哪種技術充分利用多徑效應,可以在不增加頻寬的情況下成倍提高通訊系統的容量和頻譜利用率?正確答案 b 我的答案 b得分 10.0分2 可以實現流動網路對移動終端及ap的認證的安全標準是 正確答案 a 我的答案 a得分 10.0分1 ieee 802.11 mac層提供兩類協調功能 和 正確答案 第...