真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Zigbee通訊漫談(初次見面)


鄭重聲明:以下文章內容適合初學Zigbee的童鞋們,大神請略過……

成都創(chuàng)新互聯(lián)服務項目包括千陽網(wǎng)站建設、千陽網(wǎng)站制作、千陽網(wǎng)頁制作以及千陽網(wǎng)絡營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術優(yōu)勢、行業(yè)經驗、深度合作伙伴關系等,向廣大中小型企業(yè)、政府機構等提供互聯(lián)網(wǎng)行業(yè)的解決方案,千陽網(wǎng)站推廣取得了明顯的社會效益與經濟效益。目前,我們服務的客戶以成都為中心已經輻射到千陽省份的部分城市,未來相信會繼續(xù)擴大服務區(qū)域并繼續(xù)獲得客戶的支持與信任!


1 緣由:

 工作中聽說過Zigbee技術,只是知道是一種無線通訊技術,具體技術細節(jié)及使用都不是很清楚。不料,一個項目中需要使用Zigbee技術,這下可是要好好看下Zigbee是啥子東東了。這里寫下我對Zigbee技術的一些理解。

2 啥是Zigbee呀?

 Zigbee是一種無線通訊技術。無線,顧名思義,就是通過無線電波(像WIFI,手機)作為信息載體的一種通訊方式。通訊,也就是指一個設備和另一個設備之間需要溝通、交流。人和人之間需要溝通,溝通就需要使用語言,那這個語言可能存在語法,說白了就是雙方都要理解對方說的是啥,要是一個只懂中文,另一個只懂英文,那他兩個溝通就可能需要一個翻譯。設備之間也一樣,它們之間需要遵循一定的規(guī)定。兩個設備都要按照這個規(guī)定進行收發(fā)信息,那這個規(guī)定就是協(xié)議。對于Zigbee通訊技術來說就是Zigbee協(xié)議。其實啊,計算機的技術有兩個大的方面,一個是計算機本身(硬件技術上的進步),一個是不同設備之間的溝通。類比我們人類來說,一個是 人 本身的問題,一個是社會問題。說了這么多廢話,下面總結一下:Zigbee通訊就是設備和設備之間進行溝通的一種方式,這種方式規(guī)定了傳輸信息需要什么物理介質,傳輸?shù)男畔⒏袷绞鞘裁礃幼拥?,誰先發(fā)送信息,信息傳輸過程中被干擾了怎么辦,對方要是沒收到怎么辦等等一系列問題。


  算了,還是看看官方怎么定義的吧:ZigBee是基于IEEE802.15.4標準的低功耗局域網(wǎng)協(xié)議。根據(jù)國際標準規(guī)定,ZigBee技術是一種短距離、低功耗的無線通信技術。

     另外附上Zigbee、WIFI、bluetooth之間的區(qū)別和聯(lián)系圖:

     Zigbee通訊漫談(初次見面)

3 和Zigbee打個招呼(混個臉熟)

 我們把Zigbee通訊和人之間溝通做個類比,然后以不斷提問的方式來闡述一下Zigbee是怎么實現(xiàn)不同設備之間通訊的。前面說啦,Zigbee一般用于局域網(wǎng)通訊(有同學舉手了,“啥是局域網(wǎng)呀?”“那個同學,你先把手放下,舉著怪累的”“局域網(wǎng)就是局部使用的網(wǎng)絡,也就是說小范圍內的通訊,你像你家里需要不同設備通訊,就可以使用Zigbee技術” “我們都使用Internet上網(wǎng)、聊天,它是基于TCP/IP協(xié)議的,TCP/IP可以組成局域網(wǎng),也可以組成Internet”),那我們就以你家里人之間溝通作為類比的例子。下面假設以下場景:你家里有3口人,你、爸爸、媽媽|類比Zigbee網(wǎng)絡里有3個Zigbee設備。你現(xiàn)在大概知道我會以什么方式來聊聊這個Zigbee了吧。

  64 bit MAC地址(全球唯一地址)

  哎呦,我們的目的是想讓Zigbee設備之間能相互溝通。那首先最先擺在我們面前的問題是怎么保證Zigbee設備的唯一性吶?在你家里,你肯定是要認識爸爸、媽媽的,同樣爸爸、媽媽也要認識你。你是怎么認識爸爸、媽媽的?現(xiàn)在給你1S思考時間,恩,你記住了爸爸、媽媽的身高、長相等特征。也就是說爸爸、媽媽有一定的外貌特征,兩個人長的完全一模一樣還真是不多見?,F(xiàn)在醫(yī)學說是DNA不一樣,所以每個人就不一樣,對人來說是DNA就是你在地球上的唯一標示。那Zigbee設備是以什么來確定其唯一性的吶,這個好說,Zigbee設備都是我們人類制造的,我們可以人為地給它們分配一個唯一的地址。我是這么想的,查下資料(稍等5分鐘…………)。唯一標示Zigbee設備的物理地址是64bit的一串數(shù)字,比如:000124B00028B679,前面24bit代表公司代碼,后40bit代表地址段。這些地址需要向IEEE委員會申請。

  16 bit 網(wǎng)絡地址(用于標示Zigbee網(wǎng)絡內部一個設備)

  你可能會想,我在家里,一般只喊“爸爸”、“媽媽”就可以區(qū)分他們了,不用每次都去看他們的身高、長相等等一系列特征我就可以唯一確定我要找的人。在一個給定的Zigbee網(wǎng)絡內,唯一確定Zigbee設備有其他方法嗎?我想應該是有的,Zigbee設備之間組成網(wǎng)絡后,每個設備會分配一個16bit的短地址,設備之間可以通過這個短地址進行通訊。局域網(wǎng)內,范圍小了,可以使用一個更簡短的地址區(qū)分不同設備。

 Zigbee網(wǎng)絡建立、設備加入

 在你們的家庭中,你的爸爸、媽媽和你都有著不同的角色。有時間找出你家的戶口本,戶口本一般是有編號的(在戶口本的左上角或者右上角)。你的爸爸有可能是戶主,你是父母的子女(這不是廢話嗎?我只是讓你知道,在家庭中不同的人有不同的角色)。那你可能要問了,Zigbee設備中都有哪些角色,不同的角色都做哪些工作?Zigbee設備里分為Coordinator、Router、Enddevice三種角色。Coordinator負責建立Zigbee網(wǎng)絡,并為這個Zigbee網(wǎng)絡分配一個唯一的ID(他們都叫這個ID,PANID),Router可以加入Coordinator建立的網(wǎng)絡,同時它可以轉發(fā)數(shù)據(jù),也就是作為數(shù)據(jù)中繼,用來延長Zigbee無線通訊距離。Enddevice是終端設備,加入Zigbee網(wǎng)絡,只能接收、發(fā)送數(shù)據(jù)。

來張Zigbee家庭圖:

Zigbee通訊漫談(初次見面)

Zigbee通訊漫談(初次見面)

圖二:Zigbee網(wǎng)絡拓撲圖

    ***,你媽喊你回家吃飯啦!

   你和爸爸、媽媽在家里,你玩游戲累了,想點東西。你可以選擇以下方式和你的爸爸、媽媽溝通。

1:直接扯開嗓子大喊:“我餓啦,趕緊給我做點吃的”。這種情況下,爸爸、媽媽都聽見了,可能出現(xiàn)以下情形:a,爸爸比較忙,回了句:“我忙著,找你媽媽”,媽媽回了句“我給你做個蛋炒飯”。b,爸爸媽媽一起回:“好孩子,我們這就給你做飯”,然后出現(xiàn)爸爸、媽媽一起做飯的恩愛場景。c,爸爸媽媽都比較忙,回到“熊孩子,整天打游戲,還有臉說餓,自己做飯去,我們還要看電視劇吶”,當然這種情況下,你可以考慮你自己是不是沖電話費送的。不過,話說回來啦,你扯開嗓子喊,其實有個更專業(yè)的通訊術語,廣播。對,Zigbee設備之間通訊的其中一種方式就是廣播,一個設備廣播,其他網(wǎng)內的設備都能聽到。

普及一下Zigbee規(guī)定的廣播地址小知識:

0xFFFF -這個一個對全網(wǎng)絡中設備進行廣播的廣播地址

0xFFFD -如果在命令中將目標地址設為這個地址的話那么只對打開了接收的設備進行廣播

0xFFFC -廣播到協(xié)調器和路由器

0xFFFE -如果目的地址為這個地址的話,那么應用層將不指定目標設備,而是通過協(xié)議棧讀取綁定表來獲得相應目標設備的短地址

此外的0x0000到0xFFF8都是有效的目的地址。每一個地址就只是了一個目標設備。

2:悄悄滴走到媽媽身邊,單獨跟媽媽說:“媽媽,我餓了”。這種情況下,極有可能是爸爸做的飯菜實在是太難吃了。想這種,在Zigbee里就是點對點的通訊方式。在這種方式下,通訊雙方都要指定目標地址。

3:和爸爸約定個暗號,大聲咳嗽三聲。這種方式,你不用考慮什么原地址、目標地址這些瑣碎的事情。你只要發(fā)出這個暗號,老爸就知道你額了,還知道你想吃啥。高明啊,這招,但是這個也要看爸爸當時的心情咋樣啊。這種在Zigbee里,叫綁定(Bonding)。通訊雙方綁定后,雙方通訊時就不需要過多的信息,只要發(fā)送暗號,就能完成相應的功能。

知識領域 VS Endpoint

  通過上面的描述,我們知道了,設備短地址是用于標示一個Zigbee設備的。就相當于在家里面你、爸爸、媽媽一樣,不同稱謂表示不同的人。但是,又一個問題隨之浮出水面,那就是小孩和大人擁有的生活經歷和涉足的知識領域不太一樣啊,你把你兒子(6歲)叫過來,給他說:“兒子,媽媽不在家,今天下午我們去吃肯德基,好吧?”。“好的”兒子高興地回答。雙方溝通愉快。那下面的場景你想下,“兒子,你知道C語言里指針變量是一種存儲內存地址的變量嗎?”,兒子一臉茫然,“??????”。剩下的場面腦補下吧。上面的故事告訴我們雙方能夠愉快地溝通,交流的內容需要雙方都要了解。在Zigbee通訊里有一個概念和這類似,叫Endpoit,一個Zigbee設備上可以存在好多Endpoit。還是上個圖吧。

Zigbee通訊漫談(初次見面)

 在這個例子里,左邊是兩個開關(可能裝在走廊里),兩個開關共用一個Zigbee節(jié)點“Z1”(相當于開發(fā)板上的兩個按鍵,這點應該不難理解吧),他們一起控制右邊的三個燈泡(也是接在同一個節(jié)點上的--“Z2”)。Z1的key1控制Z2的lamp1,而key2則控制Z2的lamp2與lamp3。

上圖中有幾個沒見過的概念:cluster ID 、Binding Table,其實還有一個profile、attribute。下面我們慢慢來說這些都是什么東東。

  Binding Table最好理解,上面說了,為了溝通方便,我們可以建立綁定關系,建立綁定關系的雙方的短地址、Endpoit等信息都存儲在Binding Table中。

 Profile ID, 這個是由Zigbee組織來分配的應用ID號,比如無線開關用0x0001,智能電表用ox0002,萬用遙控器用0x0003等等。在這個例子里,這個ID號是專門用來做電燈開關的。為什么要這么做呢?這里就體現(xiàn)了“標準”的意義,不同廠家功能的設備,由于有了這個ID就能互相間使用了,正泰的開關一樣可以控制Philips的燈。。。
 Endpoint,這個名字看起來容易誤解,以為是設備的序號了,其實不然。在這個例子中,Z1有key1/key2兩個Endpoint,分別做不同的事情。其對應了同一個"application"中的0-240個不同的“子應用”,其中0號endpoint是用"ZDO"預留的,不能占用。如果你熟悉TCP/IP,你可能感覺Endpoit和port(端口號)有點相似之處。
 Cluster ID,這個怎么叫呢?叫信息簇ID吧。。。我的理解是,“這是個哪類的信息”,發(fā)送端和接收端一定要對應,但是具體這個“類”怎么分,是我們可以自己決定的。比如說這個例子,我可以這樣定:Cluster ID=1代表開關一次,Cluster ID=2代表連續(xù)閃爍。。。或者定義Cluster ID=1代表點對點控制,而Cluster ID=2代表全部控制,等等。。。

  attribute,在Zigbee協(xié)議棧中,每一個標準的profile(例如HA,專門用于智能家居的應用層規(guī)范)都定義了很多的Cluster ID,而每一個Cluster ID都有一些規(guī)定好的attribute及動作。

什么?太難理解了,好吧,還是來個生活中的例子吧。

以大學一年級流行的友好寢室為例:
男宿舍8個人構成開發(fā)板A, 女宿舍8個人構成開發(fā)板B.
男宿舍8個人就是開發(fā)板A上的8個EndPoint。
男宿舍5個人喜歡學習,3個愛玩,分為具有不同行為愛好的兩個集團,也就是兩個Profile.
女宿舍8個人3個喜歡學習,2個愛玩,剩下4個愛吃,分為3個集團,也就是三個Profile。
愛學習的Profile = 0x0010; 愛玩的Profile = 0x0011; 愛吃的Profile = 0x0012;
以上定義結束,現(xiàn)在來看綁定過程:
某男同學(愛玩)打個電話給女宿舍說要出去玩,8個女同學中的6個因為愛好不同(Profile值不同),直接拒絕。剩下的2個女生有一個因為討厭該男同學(腦子中沒有注冊該男同學的任何示好),也拒絕了,另外一個女生暗戀該男生(腦子中已經填滿該男同學的任何示好,隨時準備...), 于是綁定成功。
這樣以后該男生就會直接撥這位女生的手機了。
假設這位男生排名老3, 那并不一定要求這位女生也排名老3。

4 小結:

 我瞎白扯了半天,不知各位看官能不能看到這個地方。上面討論的內容也基本涵蓋了初學者最疑惑,也是最想弄清楚的概念。

5 Zigbee協(xié)議棧結構

 Zigbee協(xié)議棧設計時采用了分層的設計思想。還是上個圖:

Zigbee通訊漫談(初次見面)可以看到,Physical (PHY) Layer和MAC  Layer是IEEE 802.15.4定義的。

分層模式下Zigbee通訊的示意圖:

Zigbee通訊漫談(初次見面)在802.15.4和Zigbee協(xié)議中,用“原語”的概念來描述相鄰兩個層間的服務,層間調用函數(shù)或者傳遞信息,都可以用原語來表示。雖然,在整個系統(tǒng)中,有很多不同的層,但是層間的通訊方式是非常相似的。比如PHY、MAC與NWK層都為他們的上一級提供數(shù)據(jù)服務,其請求數(shù)據(jù)服務的機制類似:高層通過D-SAP向下級請求傳輸,下級傳輸成功后將狀態(tài)返回給上級。

  正是由于這種相似性,才讓“服務原語”這種方式顯得格外重要。每一個原語要么執(zhí)行一個指令,要么返回一個之前指令的運行結果。原語也會帶著指令運行需要的參數(shù)。

Zigbee通訊漫談(初次見面) 上圖描述了某層為其上層提供服務的一般方法,如圖所示,有四種類型的原語:請求、指示、響應和確認。換句話說,在802.15.4和Zigbee標準中的所有服務都可以歸類為上述四種原語之一。原語用下面的格式來描述:
(注:出于本文讀者多數(shù)為現(xiàn)在或者未來的軟件工程師,后面直接用英文名稱來表述四種原語)
.request
.indication
.response
.confirm

  首先,由N+1層向N層用request原語申請一個服務,比如說MAC層向PHY層請求一個MPDU傳輸服務,它必須要向PHY層申請一個PD-Data.request的原語。

  而N層會向其服務用戶(經常是N+1層)發(fā)出一個indication的原語,用來指示一個對N+1層很重要的事件。比如說,PHY層接收到一組數(shù)據(jù),需要將此數(shù)據(jù)傳遞給MAC層,那么它就向MAC層產生發(fā)出一個PD_Data.indication的原語,用來向其傳遞數(shù)據(jù)。

  如果這個indication原語要求對其做出響應,那么N+1層就會發(fā)出一個response原語。值得注意的是,PHY和NWK層沒有任何response原語,而只有MAC和APL層有。

  而confirm原語是由N層發(fā)出,用來最終確認最初N+1層申請的request服務已經完成。比如在上例中,數(shù)據(jù)發(fā)送完成后,PHY層會告訴MAC層,傳輸已經成功完成。

注:本文只是用一種淺顯易懂的方式,讓讀者了解原語的基本概念,如果讀者需要深入了解每層提供的原語細節(jié),請直接閱讀802.15.4和Zigbee的協(xié)議文檔。

 ZigBee設備在工作時,各種不同的任務在不同的層次上執(zhí)行,通過層的服務,完成所要執(zhí)行的任務。每一層的服務主要完成兩種功能:根據(jù)它的下層服務要求,為上層提供相應的服務;另一則是根據(jù)上層的服務要求,對它的下層提供相應的服務。各項服務通過服務原語來實現(xiàn)??梢园言Z看作是API函數(shù) 是ZigBee中最基本的操作, 一般協(xié)議都有對原語進行程序實現(xiàn) 在自己開發(fā)系統(tǒng)時,只需要調用,設定參數(shù)就好了 。如果要自己實現(xiàn)底層的細節(jié)那就必須在開源的協(xié)議棧中,深入到原語的級別。也就是說,對于原語我們只需要了解就行,真正開發(fā)程序只知道我們給系統(tǒng)哪些參數(shù)就行了。

6 總結

  有了上面的基礎,我們就可以根據(jù)實際的實驗平臺做做實驗。我們就大致上理解了什么是Zigbee協(xié)議了,當然這只是從應用層了解了,如果你只是使用Zigbee技術實現(xiàn)你項目中的用戶需求,那你根據(jù)實際的協(xié)議棧(比如Z-Stack,TI提供的Zigbee開發(fā)平臺)提供的API來進行應用層開發(fā)就可以了。如果你想深入研究Zigbee協(xié)議?;蛘呦雽W習Zigbee協(xié)議棧設計思想,建議閱讀開源的Zigbee協(xié)議棧源代碼(freakz協(xié)議棧、TinyOS等)。

記得閱讀 ZIGBEESPECIFICATION 哦。

官方資料:Zigbee specification


網(wǎng)頁名稱:Zigbee通訊漫談(初次見面)
標題來源:http://weahome.cn/article/gcphse.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部