>[success] 導師視頻講解:[去聽課](https://www.bilibili.com/video/BV1k34y1D7Vz?p=34)
>[success] **技術支持說明:**
>**1**.一般以自主學習為主
> **2**.可到官方問答社區中提問:[**去提問**](https://bbs.csdn.net/forums/zigbee)
> **3**.工程師**會盡快**解答社區問題,但他們是一線開發,【**難以保證**】解答時效,解答辛苦,感謝理解!
<br/>
>[warning] 本節課講解的多個理論知識,理解起來并不容易,如果大家暫時不理解也沒關系,隨著后續的學習,相信大家會逐步加深理解!
<br/>
Commissioning 可以直譯為“調試”或“嘗試運作”,這有點奇怪,所以本文暫不做翻譯。讀者可以籠統地把其理解為“組建網絡”的意思,因此“Commissioning Modes”可籠統地理解為“組網模式”,但為了嚴謹性,本文仍使用Commissioning。
###
BDB提供了4種主要的Commissioning模式給開發者使用,分別是Network Steering、Network Formation、Finding and Binding(F & B)和Touchlink。
<br/>
## **Network Steering**?
定義了設備如何加入到ZigBee網絡中,具體方式如下:
* 如果設備還沒有在ZigBee網絡中,那么它們會尋找一個合適的ZigBee網絡并加入到其中。
* 特別地,對于路由器類型的設備,在入網成功后,允許其它設備通過本設備來加入到這個ZigBee網絡中。
###
所有需要加入到ZigBee網絡中的設備都必須要支持Network Steering。
<br/>
## **Network Formation**
Network Formation 規定協調器類型的設備需要去建立一個中心信任的安全網絡。這種網絡的特點是所有需要加入到網絡中的設備都需要經過信任中心的同意才能加入,而協調器本身就是這個信任中心。
###
類似地,對于路由器類型的設備,如果條件允許的話會創建一個分布式安全網絡。這里暫時不展開講解這種網絡了。
###
所有的協調器類型設備都必須要支持 Network Formation ,而對于路由器類型的設備來說,這是可選的模式。
<br/>
## **Finding and Binding(F & B)**
顧名思義,Finding and Binding的意思就是發現與綁定,那么發現與綁定什么呢?
###
ZigBee 3.0是使用Cluster(集群)來描述設備的功能的。每種設備都有各自的功能,都有各自的一系列Cluster。這里的發現與綁定是指ZigBee設備的Cluster之間的相互發現、相互綁定。隨著后續章節對Cluster深入地講解,讀者將會更深入地了解到其中的原理。
###
所有的ZigBee設備都必須要支持Finding and Binding(F & B)。
<br/>
## **Touchlink**?
一般用于兩個ZigBee設備之間直接進行通信,舉個例子說明其原理。
###
假設現在有兩個支持Toucklink的ZigBee設備:
* 一個是無線按鈕,支持通過Touchlink的方式發送一個恢復出廠設置的指令;
* 另一個是燈,支持接收通過Touchlink方式發來的恢復出廠設置指令并執行相應的處理。
用戶可以拿著這個按鈕靠近這個燈,**讓兩者相距約2cm**,然后按下按鈕發送指令,這個燈會收到指令并執行相應處理。
如果用戶**把按鈕拿遠一些測試**,會發現燈收不到這個指令。如果用戶把這個按鈕拿去靠近**一個新買的相同的燈**測試,會發現這個燈也會收到這個指令。
###
從這個例子中可以總結出Touchlink具有下面這些特點:
* 通信距離短,約2cm。按鈕向燈發送指令時,燈會通過檢測按鈕的網絡信號強度來判斷按鈕的距離,從而決定是否處理該指令。
* 設備之間可以直接通信,可以把這個按鈕拿去直接跟一個新買的相同的燈通信。
Touchlink用得相對比較少,ZigBee設備并不一定都需要支持Touchlink,開發者可以讓自己開發的設備支持或不支持這個功能。
<br/>
## **BDB Commissioning Modes API簡介**
雖然上述的Commissioning模式比較復雜,但是得益于Z-Stack 3.0 ,ZigBee設備的組網代碼非常簡單,只需要調用1個API就可以了。
###
打開配套的工程代碼,可以在bdb_interface.h文件中找到BDB Commissioning Modes的API,如圖所示。

###
這個函數需要傳入一個模式參數,可以在bdb.h中找到由協議棧定義好的模式,如圖所示。

<br/>
于是,終于可以組建ZigBee網絡了。首先,讓協調器創建網絡,代碼如下:
```
bdb_StartCommissioning(//組建網絡
BDB_COMMISSIONING_MODE_NWK_FORMATION | //支持Network Formation
BDB_COMMISSIONING_MODE_FINDING_BINDING //支持Finding and Binding(F & B)
);
```
然后,讓路由器或終端設備加入網絡中,代碼如下:
```
bdb_StartCommissioning(//設備入網
BDB_COMMISSIONING_MODE_NWK_STEERING?| //支持Network Steering
BDB_COMMISSIONING_MODE_FINDING_BINDING //支持Finding and Binding(F & B)
);
```
一般地,在實際的開發過程中,開發者只需要使用這個API就基本可以滿足網絡創建和設備入網的功能需求了。這是BDB的一大優點,使用簡單!
<br/>
<br/>
## **項目定制**
* 如需項目定制開發,可掃碼添加項目經理好友(注明“**項目定制**”)
* 定制范圍:**NB-IoT**、**CATn(4G)**、**WiFi**、**ZigBee**、**BLE Mesh**以及**STM32**、**嵌入式Linux**等IoT技術方案
* 善學坊官網:[www.sxf-iot.com](https://www.sxf-iot.com/)

* 非項目定制**勿擾**,此處**非**技術支持
- 課程簡介
- 配套資源下載
- 配套開發套件簡介
- 簡介
- 技術參數
- 電路原理圖 & PCB圖——標準板
- 電路原理圖 & PCB圖——MiNi板
- CC2530F256 核心模組
- MCU簡介
- 模組尺寸 & 引腳定義
- 模組技術參數
- 電路原理圖 & PCB設計圖
- 封裝及生產指導
- 第一部分:準備
- 1.1 小白也能讀懂的 ZigBee 3.0 簡介
- 1.2 IAR EW for 8051 簡介與安裝
- 1.3 TI Z-Stack 3.0 簡介與安裝
- 1.4 SmartRF Flash Programmer 下載與安裝
- 1.5 串口助手簡介與安裝
- 1.6 SmartRF04EB 驅動程序
- 1.7 USB轉串口驅動程序
- 其他軟件安裝(非必須)
- 1.7.1 Xshell 7 簡介與安裝指南
- 1.7.2 PuTTY 簡介與安裝
- 第二部分:51單片機入門——基于CC2530
- 第1章:CC2530 開發基礎實驗
- 1.1 新建工作空間及工程
- 1.2 源代碼編寫及編譯
- 1.3 程序下載及仿真
- 1.4 固件燒錄
- 第2章:GPIO實驗
- 2.1 多工程管理基礎
- 2.2 GPIO輸出實驗——LED控制
- 2.3 GPIO輸入實驗——機械按鍵
- 2.4 GPIO輸入輸出通用配置實驗
- 2.5 GPIO外部中斷實驗
- 第3章:定時器實驗
- 3.1 工程概述
- 3.2 定時器T1實驗——查詢觸發
- 3.3 定時器T3實驗——中斷觸發
- 3.4 看門狗定時器實驗
- 3.5 低功耗定時器實驗
- 第4章:串口通信實驗
- 第5章:ADC實驗——使用光照傳感器
- 第6章:OLED 顯示器實驗
- 第7章:外設實驗
- 7.1 DHT11溫濕度傳感器
- 7.2 NorFLASH讀寫實驗
- 7.3 繼電器控制實驗
- 第三部分:Z-Stack 3.0 詳解
- 第1章:Z-Stack 3.0 架構詳解
- 1.1 Z-Stack 3.0.1 文件組織
- 2.2 Z-Stack 3.0.1 工程框架
- 第2章:操作系統的任務調度原理
- 第3章:OSAL 詳解
- 3.1 OSAL的任務調度原理
- 3.2 任務初池始化與事件處理
- 3.3 Z-Stack 事件的應用
- 3.4 使用動態內存
- 第4章:硬件適配層應用——LED
- 4.1 HAL的文件結構和工程結構
- 4.2 HAL的架構簡介
- 4.2 LED API簡介
- 4.3 LED 實驗
- 第5章:硬件適配層應用——按鍵
- 5.1 按鍵實驗
- 5.2 HAL 按鍵框架詳解(選修)
- 第6章:硬件適配層應用——串口
- 第7章:硬件適配層應用——顯示屏
- 第8章:硬件適配層應用——ADC
- 第四部分:ZigBee 3.0 網絡編程
- 第1章:ZigBee 3.0 網絡原理
- 1.1 協議層次結構
- 1.2 IEEE 802.15.4協議
- 1.3 網絡層
- 第2章:ZigBee 3.0 BDB
- 2.1 BDB 簡介
- 2.2 BDB Commissioning Modes
- 2.3 ZigBee 3.0 組網實驗
- 第3章:基于AF的數據通信
- 3.1 簡單描述符
- 3.2 通信原理
- 3.3 數據發送API簡介
- 3.4 ZigBee 3.0 通信實驗
- 第4章:ZCL 基本原理
- 4.1 ZCL 簡介
- 4.2 ZCL 內容詳解
- 第5章:基于ZCL的開關命令收發
- 5.1 應用層對 ZCL API 的調用
- 5.2 ZCL 開關命令收發 API
- 5.3 ZCL 開關命令收發實驗
- 第6章:基于ZCL的屬性讀寫
- 6.1 ZCL 屬性讀寫 API
- 6.2 ZCL 屬性讀寫實驗
- 第7章:基于ZCL的屬性上報實驗
- 7.1 概述
- 7.2 終端設備開發
- 7.3 協調器設備開發
- 7.4 仿真調試
- 課外篇:項目實戰
- ZigBee 3.0 環境信息采集
- 基于ZigBee的農業環境信息采集
- 基于ZigBee的文件傳輸系統
- 基于ZigBee的光照自動開關窗簾
- 基于ZigBee的溫濕度 & 光照強度采集系統
- 其他項目
- 基于ZigBee的溫度和有害氣體短信報警系統
- 基于ZigBee的多傳感器探測與亮燈報警系統
- 基于ZigBee的溫濕度、人體紅外與聲光報警系統
- ZigBee 3.0 多節點組網實戰
- 基于ZigBee的溫濕度 & 信號強度探測系統
- 課外篇:進階選修
- 《課外篇:進階選修》的說明
- 第1章:串口通信協議設計
- 1.1 設計基礎
- 1.2 協議格式
- 第2章:優化協調器工程結構
- 2.1 工程結構
- 2.2 應用框架詳解
- 2.2.1 框架說明
- 2.2.2 zbmsg
- 2.2.3 zbcategory
- 第3章:協調器上位機調試
- 3.1上位機說明
- 3.2 調試說明
- 第4章:信道及PanId的動態修改
- 4.1 串口協議
- 4.2 重要接口說明
- 4.2.1 NIB
- 4.2.2 NLME_UpdateNV
- 4.3 架構調整
- 4.4 應用
- 4.4.1 zbnwk接口實現
- 4.4.2 串口通信解析
- 4.4.3 燒錄調試
- 第5章:網絡短地址及MAC地址的獲取
- 5.1 接口說明
- 5.1.1 描述
- 5.1.2 調用流程
- 5.1.3 異步數據
- 5.2 調試
- 第6章:入網控制及白名單
- 6.1 基本內容
- 6.1.1 入網控制
- 6.1.2 白名單
- 6.2 函數封裝
- 6.3 程序調試
- 第7章:協調器分區存儲管理
- 7.1 軟件框架
- 7.2 應用
- 7.3 調試
- ZigBee 2 WiFi —— 基于ESP8266
- 1.使用云端服務器
- 2.源碼說明與測試
- 3.ESP8266模塊參考資料
- ZigBee 無線報文的抓取與分析
- 接入小米Aqara智能插座和溫濕度傳感器
- Z-Stack的NV應用
- 1. NV 簡介
- 2. NV的讀寫
- 基于HAL的外部FLASH應用
- TFT顯示器實驗(選修)
- Lighting工程源碼分析
- 9.1 ZHA Lighting工程
- 9.2 ZHA Lighting源碼分析
- 9.3 Lighting亮度調節實驗
- TemperatureSensor工程源碼分析
- 10.1 ZHA TemperatureSensor工程
- 10.2 ZHA TemperatureSensor源碼分析
- 版權聲明與免責聲明