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