1. 程式人生 > >我的ZigBee學習過程

我的ZigBee學習過程

1. 我為什麼選擇ZigBee
         物聯網風起雲湧,可以說是目前最熱的技術,但對物聯網的看法可謂見仁見智,有人認為物聯網就是新瓶裝舊酒,有人認為物聯網是本世紀最有前途的技術。拋開爭論不說,在物聯網領域,ZigBee技術無疑是引人注意的無線通訊技術之一。
        在眾多的無線通訊技術中,ZigBee技術是和感測器結合最緊密的技術之一,可以說是為遠端無線監控而生。主要源於以下幾個原因。
        首先是無線,放眼四望,還有什麼不是無線的?無線網路,無線通訊、無線裝置。只有在控制領域還被有線牢牢控制,ZigBee技術是無疑是無線測控領域的開拓者。
        其次是低能耗。只有低能耗才能保證在無線的條件下長期的工作。ZigBee終端節點以週期性的工作方式(就像沒事的時候可以打個盹),保證其在乾電池供電的條件下頑強的工作幾個月。
        能夠自組網。雖然每個節點的傳輸距離有限,但很多節點聯起手來就可以獲得很高的傳輸距離。更關鍵的是,整個過程不需要人為地干預,完全可以自動完成。類似於人體的自愈功能,當每個節點出現問題無法完成資訊的傳遞時,馬上有一個新的節點挺身而出代替其職責。
        安全可以得到有效的保證。無線網路的致命傷是其安全和可靠性得不到保證,ZigBee中有類似於有線網路的加密演算法和資訊確認功能,能夠實現安全可靠的資訊傳遞。
        當然在無線領域除了ZigBee之外,還有藍芽、Wi-Fi、IrDA、NFC等技術,它們在自己各自領域深耕細作,井水不犯河水。下面這張圖大家一定熟悉。

ZigBee技術以低傳輸率換取低功耗和低成本及低複雜度。


     2. ZigBee的學習過程
          開始學習zigBee的時候,可謂亂花漸欲迷人眼,這麼多的知識,從哪裡入手,各位看官,且看下面這個圖。

   


        要學習ZigBee,首先要有硬體基礎,微控制器是必須的,要熟悉微控制器的原理,因為所有的無線晶片幾乎都要用到微控制器。使用TI的系列無線微控制器無疑是正確的選擇,因為可以在網上找到大量的CC2430.2430.2530的資料,大大降低學習曲線。當然,飛思卡爾的也是不錯的選擇。
        在語言方面,C語言是微控制器程式設計的首選,特別是在一些複雜的應用系統中,不要吝嗇你的微控制器的硬體資源,高速的晶片技術和編譯器技術的發展足以抵消C語言在硬體控制方面的所謂的低效率。更重要的是C語言可以成倍地提高我們的開發效率。
        當可以在微控制器上跑程式的時候,可以為自己自豪一下了。接下來需要熟悉微控制器的IO,定時器、AD及DA轉換等外圍部件和介面電路,特別是中斷程式的編寫,是否能合理地使用中斷和對介面程式設計,是老手和新手的區別。
        還需要熟悉一些感測器電路的設計,先從最簡單的溫度感測器開始,採用單匯流排技術的DS18B20溫度感測器是一種很好的選擇,可以從網上下載DS18B20的C語言原始碼,經過修改以後,在自己的模組上顯示結果是一件很有意義的事情。很久以來,我一直努力去做有意義的事情,現在看來,過去做的很多事情是沒有意義的。但寫這篇文章肯定是有意義的。做完了溫度感測器,還可以做個光敏感測器,熟悉一下模數轉換。
        ZigBee技術屬於無線網路技術,網路技術也是必須要了解的,計算機出身的應該問題不大,電子專業出身的這方面要花些氣力了。至少要了解網路協議的基本結構。ZigBee技術在構建在802.15.4標準之上的無線協議,從這個角度來看,它有著和藍芽技術一樣的出身。ZigBee在這個基礎上實現了網路層和應用層。對於初學者來講,不瞭解網路層也沒有關係,應用開發主要是在應用層。程式碼以任務的方式編寫,任務和任務之間通過事件和訊息進行通訊,而不同節點的任務之間通過簇建立起連線和通訊。為什麼在茫茫人海中找到了你,因為你我有“簇”連線。
        開啟IAR的編輯器,初學者也許會對一大堆資料夾感到頭暈。其實先開始只需要搞懂兩個資料夾下的檔案即可。即App和HAL。這裡面涉及到的內容太多,說起來話就長了,以後有時間再嘮。

     

     有人要問了,學習ZigBee,除了這些基礎知識以外,我需要投入多少呢?我投入了大概不足800元,節點3個600多元,模擬器100多元,如果有條件的可以加一個協議分析儀,200左右,有錢的話可以多買幾個節點,做定位的話最少5個節點。這裡面沒有算軟體成本,這個……你懂的。
     3. 我的感受
     學習是一個付出的過程,就像一個人走夜路,有時候你真的看不清前面的方向,能看清的只有自己的信念、堅守、堅持是唯一能做的事。堅持可以創造奇蹟,信不信由你,我是信了。