zigbee怎么用?zigbee的應(yīng)用之ZigBee學習筆記
作為一個硬件從業(yè)人員,雖然不是從事物理網(wǎng)行業(yè)的,但是多少得了解一些,以下是筆者最近學習Zigbee的筆記,包含了Zigbee基本知識,正確的學習方法。
Zigbee無線傳感網(wǎng)絡(luò)
先搞清楚IEEE802.15.4協(xié)議。
這個協(xié)議必須搞清楚,搞不定這個協(xié)議,Zigbee永遠吃不透。其實學習這個很簡單,如果學過TCP/ip的話,大家知道,我們要去掌握整個tcp/ip核心的話,我們要掌握以太網(wǎng)底層的一些協(xié)議,比如我們做驅(qū)動,我們做開發(fā),如果說不懂的話,是沒有辦法做項目的,更直白一點,沒法在工作中去解決實際的問題。對于老板來說,老板招人過來,就是要解決問題的,如果沒有解決問題的能力,那在職場中是沒有競爭力的。
ZIGBEE是什么?
在傳統(tǒng)的無線網(wǎng)絡(luò)當中,大家耳熟能詳?shù)木褪莾煞N,藍牙和wifi。在物聯(lián)網(wǎng)的世界,也存在物與物之間存在信息溝通的橋梁,也是通過無線技術(shù),最經(jīng)典的就是ZIGBEE技術(shù),還有ZWAVE技術(shù),不過ZWAVE在中國還是用得很少的。
為什么要引入zigbee呢?
有了Zigbee之后,全球才有了一個物聯(lián)網(wǎng)的概念,Zigbee號稱我們商用的第一個無線傳感網(wǎng)絡(luò)。
到目前為止,無論是國內(nèi)還是全球,Zigbee是商用最多的,Zigbee做出來的產(chǎn)品是很多的,在國內(nèi),最典型的Zigbee應(yīng)用是在智能家居領(lǐng)域,目前在國內(nèi)推出的只能家居,絕對是Zigbee,為什么呢?
zigbee出來比較早,大概是在03年,Zigbee整個協(xié)議的這個技術(shù)現(xiàn)在變得很成熟。真正可商用化的產(chǎn)品,一定會選一個成熟的技術(shù)方案。
Zigbee能夠干什么?
Zigbee主要用于構(gòu)建無線局域網(wǎng),如果這個無線局域網(wǎng)用于傳感器的數(shù)據(jù)收集和監(jiān)控,這個網(wǎng)絡(luò)就叫做無線傳感器網(wǎng)絡(luò)(WSN:Wirelss Sensor Network),是無線局域網(wǎng)的具體應(yīng)用。
Zigbee是屬于無線傳感網(wǎng)絡(luò)的一種。
圖中Sink node叫做集中器,負責整個Zigbee網(wǎng)絡(luò)的管理和接入的,同時還負責和外圍交互,可以和PC,互聯(lián)網(wǎng)進行連接。
單純的一個Zigbee是沒有實際的應(yīng)用場景的,現(xiàn)在使用的各種的物聯(lián)網(wǎng)終端,最起碼有一個app,需要用來觀看無線傳感網(wǎng)絡(luò)中的信息,需要保證這個Sink node接入到我們的物聯(lián)網(wǎng)當中來。
Zigbee特點
低功耗:6個月-2年,為什么是一個比較大的范圍呢?任何一個低功耗的傳感網(wǎng)絡(luò),首先需要問工作方式是什么,比如多長時間獲取一次數(shù)據(jù),多長時間發(fā)送一次數(shù)據(jù),才能得到具體的使用時間。
高可靠性:用tcp/ip來解釋,在tcp/ip協(xié)議中,有兩種經(jīng)典協(xié)議,TCP和UDP,一個是面向連接的,一個是無連接的,一個是可靠傳輸?shù)?,一個是不可靠傳輸?shù)?。無線連接本身存在不可靠性,zigbee針對這個做了一些高可靠性的機制。
低成本:開源,免專利費
碰撞避免機制,交互確認的機制,保證可靠通信
低延時:設(shè)備搜索時延30ms,休眠激活時延典型值是15ms,活動設(shè)備信道接入時延為15ms
低數(shù)據(jù)量:Zigbee每個網(wǎng)絡(luò)模塊射頻前端的數(shù)據(jù)傳輸為250kbps
網(wǎng)絡(luò)容量大:Zigbee可以采用星形,樹形,網(wǎng)形的結(jié)構(gòu)組網(wǎng),而且可以通過任一節(jié)點組成更大的網(wǎng)絡(luò)結(jié)構(gòu),從理論上講,其可連接的節(jié)點多達65535個,其實就是一個16bit的數(shù)。實際應(yīng)用中并沒有這么多,實際受限于硬件資源。所謂的硬件資源就是芯片的ram,flash,是否能夠容納這么多的節(jié)點,是否能夠管理。
高保密性:Zigbee提供了基于循環(huán)冗余校驗(CRC)的數(shù)據(jù)包完整性檢驗和鑒權(quán)的功能,加密算法采用AES-128,同時各個應(yīng)用可以靈活確定其安全屬性。----所有的無線傳輸,都是通過一個射頻的物理通道,任何人都可以利用zigbee協(xié)議開放特性,通過射頻芯片發(fā)送數(shù)據(jù)包。但是與互聯(lián)網(wǎng)一樣,我們訪問網(wǎng)站的時候,為什么要用https,是因為安全機制,個人網(wǎng)絡(luò)不希望被人攻擊,這個時候需要考慮網(wǎng)絡(luò)的健壯性,保密性。Zigbee采用AES-128,并需要硬件支持
全球的通用性和完好的開發(fā)性:由于Zigbee標準協(xié)議,因此不同廠家芯片利用Zigbee通信將是輕而易舉的事情。如ti的方案,恩智浦的方案,只要都滿足Zigbee,互相通信將不是問題。
Zigbee學習模式
單片機+Zigbee=學習模式
只花20%的實際學習單片機的外設(shè),編程。要花80%的時間放在Zigbee協(xié)議棧。只有這樣才能用Zigbee來做項目,但是很多書籍都是大篇介紹單片機的使用,各種外設(shè)的使用。
學Zigbee其實學的是網(wǎng)絡(luò)編程。Zigbee的代碼量其實是挺大的,不要一上來就分析代碼,要明白整個協(xié)議的設(shè)計,才能明白代碼,才能讀懂代碼。
抓包分析:如果沒有抓包能力,傳輸?shù)臄?shù)據(jù)就沒法知道是上面什么意思,當網(wǎng)絡(luò)不通的時候就沒法分析。如果掌握抓包能力,發(fā)的任何信息都能知道是上面意思,這樣才能把Zigbee掌握透徹。
Zigbee聯(lián)盟
Zigbee協(xié)議標準的一個協(xié)會。
Zigbee硬件平臺
TI,Jennic,Silicon Labs
不同廠家都有自己硬件上的芯片,都有自己軟件的協(xié)議棧。
Zigbee協(xié)議棧
Zigbee協(xié)議實現(xiàn)的代碼庫
Zigbee協(xié)議棧,有一個分層的概念。不管是軟件還是硬件項目,達到一定規(guī)模之后,都要進行分層,不分層的話,項目的管理,可擴展性等等效率問題解決不了。
Zigbee分層
最下面是IEEE802.15.4是一個標準,它規(guī)定了協(xié)議的物理層和MAC層,再上面是Zigbee的網(wǎng)絡(luò)層Zigbee NWK(network)和應(yīng)用層。網(wǎng)絡(luò)層和應(yīng)用層又分很多模塊,為什么呢?
首先網(wǎng)絡(luò)分層以后,要有加密特性(Security),再往上是一個Zigbee應(yīng)用支持的子層,在網(wǎng)絡(luò)層和應(yīng)用層之間又開辟了一個子層(Zigbee ApplicaTIon Support Subplayer(APS))這個層起到承上啟下的作用。承上指的是給整個Zigbee應(yīng)用的框架。
Zigbee會根據(jù)不同的場景(ApplicaTIon Object),比如智能家居,能源,工業(yè)等等不同的場景,有一個庫的概念。
針對設(shè)備終端的管理,又有單獨的一個層,Zigbee Device object。
學習Zigbee就是學些Zigbee層與層之間的實現(xiàn),或者說掌握層與層之間的交互,只有把各個功能模塊之間了解清楚,Zigbee才有可能吃透。
IEEE802.15.4協(xié)議
Zigbee學習第一個要搞明白的就是Zigbee的物理層和Mac層,為什么呢?我們學習單片機,其實就是和硬件打交道,Zigbee通訊也是建立在硬件的基礎(chǔ)之上的,硬件基礎(chǔ)指的就是射頻,要搞清楚這個無線射頻到底是怎么來通訊的。如果說底層搞不清的話,應(yīng)用層也是很難理解,因為它很抽象。-----所以說要搞清楚802.15.4這個協(xié)議。
Zigbee是由Zigbee聯(lián)盟所主導的標準,定義了網(wǎng)絡(luò)層,安全層和應(yīng)用層,以及各種應(yīng)用的產(chǎn)品架構(gòu);而由IEEE所制定的802.15.4標準,則是定義了物理和MAC層。
Zigbee協(xié)議,Zibgee聯(lián)盟和IEEE組織都參與制定。
Zigbee網(wǎng)絡(luò)分層
下面是MAC層和PHY層,其實幾個網(wǎng)絡(luò)協(xié)議都差不多,只是底層的實現(xiàn)不同。
比如wifi,wifi為什么能跑TCP/IP協(xié)議,wifi的物理層和以太網(wǎng)的物理層是完全不同的,如果沒有把MAC和物理層分層的話,wifi是沒有辦法很容易的跑TCP/IP協(xié)議的。有了分層,我們就可以把以太網(wǎng)協(xié)議移植到射頻里面來。
物理層頻帶參數(shù)
三個頻段,國內(nèi)用得最多是2.4Ghz-2.4835Ghz,在2.4G劃分了16個信道(信道11到信道26),信道與信道的帶寬是5Mhz,信道與wifi信道有交叉(如果應(yīng)用中信號通訊不穩(wěn)定,可以看下使用的信道是否和wifi相同,被占用比較多)
868MHZ--美國
915MHZ--歐洲
把數(shù)字信號變成一個射頻信號,涉及到調(diào)制,調(diào)整方式為FSK(頻移鍵控),通過頻率的變化來表示我們的0,1信號,把數(shù)字信號變?yōu)槟M信號。
物理幀格式
前導碼(4字節(jié)):用于符合同步。
起始分隔符(1字節(jié)):用于幀同步。
物理頭端(1字節(jié)):指定了物理服務(wù)數(shù)據(jù)單元的長度。
物理服務(wù)單元(