1 物聯網的無線技術
4GLTE、NB-IOT、LoRa、wifi、Bluetooth、Zigbeee
1)ZigBee是IEEE 802.15.4協議的代名詞。根據這個協議規定的技術是一種短距離、低功耗的無線通信技術。ZigBee可工作在2.4GHz(全球流行)頻段上,有最高250kbit/s的傳輸速率,它的傳輸距離在50~200m的範圍內,但可以繼續增加。
2)802.11標準是IEEE最初制定的一個無線局域網標準,小範圍的無線接入,業務主要限於數據存取。IEEE 802.11b/g/n即爲Wi-Fi標準,工作頻段在2.4GHz~2.4835GHz,傳輸速率分別可達11Mbps/54Mbps/600Mbps
3)藍牙(Bluetooth),是一種支持設備短距離通信(一般10m內)的無線電技術。進行無線信息交換。藍牙採用分散式網絡結構以及快跳頻和短包技術,支持點對點及點對多點通信,工作在全球通用的2.4GHz ISM頻段。其數據速率爲1Mbp採用時分傳輸方案實現全雙工傳輸。
4)LoRa是基於LPWAN(低功耗廣域網)的一種新型通信技術,其接受靈敏度達到了的-148dbm,這確保了網絡連接可靠性。LoRa採用線性調頻擴頻調製技術, LoRa集中器/網關能夠並行接收並處理多個節點的數據,大大擴展了系統容量。LoRa採用LoRaWAN協議,是LoRa聯盟推出的一個基於開源的MAC層協議的低功耗廣域網標準。LoRa主要在全球免費頻段運行(即非授權頻段),包括433、868、915 MHz等。
5)NB-IoT是一種基於蜂窩數據連接的LPWAN(低功耗廣域網),NB-IoT只消耗大約180KHz的帶寬,可直接部署於GSM網絡、UMTS網絡或LTE網絡,以降低部署成本、實現平滑升級。
優勢比較!
2 Zigbee節點
2.1 TI CC2530處理器
ZigBee新一代SOC芯片CC2530是真正的基於2.4-GHz IEEE802.15.4支持ZigBee協議的片上系統解決方案。其特點是以極低的總材料成本建立較爲強大的網絡節點。集成增強型8051 CPU,內置高性能RF收發器,系統內可編程閃存(32~256KB),8KB RAM ,廣泛的外設集等許多其他模塊的強大的功能。
CC2530與8051基本型的主要區別?
1.內置無線射頻模塊,全面實現 IEEE 802.15.4的PHY 層和MAC 層
2.內置ADC模塊,提高了對傳感器信號的採集效率。
3.CPU速度提高(單時鐘指令),內存增加(8K的RAM,256K的ROM)。更好的支持傳感器信號採集和無線通信。
4.更低功耗。
2.2 ZXBee無線節點
ZXBee 系列無線節點目前提供 4 種類型支持:
-
-
- ZXBeeEdu(+)無線節點:用於實驗室教學型節點。
- ZXBeeLite 無線節點:用於創新套件或戶外場合,帶鋁外殼,2 路工業 MD8/S 端子接口, 可外接各種商用/工業傳感器。
- ZXBeePlus 無線節點:用於創新套件或戶外場合。
-
2.3 傳感器
智能物聯網綜合系統工作框架:
- 傳感器:是一種能把特定的被測信號,按一定規律轉換成某種可用信號輸出的器件或裝置,以滿足信息的傳輸、處理、記錄、顯示和控制等要求。
- 傳感器作用:傳感器處於研究對象與檢測系統的接口位置,是感知、獲取與檢測信息的窗口,它提供物聯網系統賴以進行決策和處理所必需的原始數據。
光傳感器是利用光敏元件將光信號轉換爲電信號的傳感器,它的敏感波長在可見光波長附近, 包括紅外線波長和紫外線波長。
DHT11 數字溫溼度傳感器是一款含有已校準數字信號輸出的溫溼度複合傳感器 。DHT11 的串行接口DATA 用於微處理器與 DHT11 之間的通訊和同步,採用單總線數據格式,一次通訊時間 4ms 左右,一次完整的數據傳輸爲 40bit,高位先出。數據格式:8bit 溼度整數數據 +8bit 溼度小數數據 +8bit 溫度整數數據 +8bit 溫度小數數據+8bit 校驗和數據傳送正確時校驗和數據等於“ 8bit 溼度整數數據 +8bit 溼度小數數據+8bit 溫度整數數 據 +8bit 溫度小數數據 ” 所得結果的末 8 位。
SRF05 超聲波測距模塊可以提供 2cm-450cm 的非接觸式距離感測功能,測距精度可達到 3mm;SRF05 基本工作原理:
採用 IO 口 TRIG 觸發測距,給至少 10us 的高電平信號;
模塊自動發送 8 個 40khz 的方波,自動檢測是否有信號返回;
有信號返回,通過 io 口 ECHO 輸出一個高電平,高電平持續的時間就是超聲波從發射到返回的 時間;
測試距離=(高電平時間*聲速(340M/S))/ 2(最主要參數)
紅外線傳感器是利用紅外線的物理性質來進行測量的傳感器。。
3 ZigBee無線通信技術基礎
3.1 技術特點
- 數據傳輸速率低:10KB/秒~250KB /秒,專注於低傳輸應用
- 功耗低:在低功耗待機模式下,兩節普通5號電池可使用6~24個月
- 成本低:ZigBee數據傳輸速率低,協議簡單,所以大大降低了成本
- 網絡容量大:網絡可容納65,000個設備
- 時延短:通常時延都在15ms~30ms
- 安全: 提供了數據完整性檢查和鑑權功能,採用AES-128加密算法
- 有效範圍小:有效覆蓋範圍10~75米,
- 工作頻段靈活:使用頻段爲2.4GHz、868MHz(歐洲)和915MHz(美國),均爲免執照(免費)的頻段
- 傳輸可靠:採用碰撞避免策略,同時爲需要固定帶寬的業務預留專用時隙。
3.2 技術體系
ZigBee堆棧是在IEEE 802.15.4標準基礎上建立的,從下往上依次是物理層,MAC層,網絡/安全層,應用支持子層,應用層。
物理層
- 調製方式:擴頻通信
- 信號傳輸距離:~50m(室內),~150m(室外)。
3.3 設備與網絡
從節點類型來分類ZigBee設備包括:協調器(上電啓動和配置網絡)、路由器、終端節點(檢測傳感器信息並上傳)。
ZigBee有三種網絡拓撲,即星形、樹形和網狀網絡。
- 星形網絡中,所有節點只能與協調器進行通信,而他們相互之間的通信是禁止的;
- 樹形網絡中,終端節點只能與它的父節點通信,路由節點可與它的父節點和子節點通信;
- 網狀網絡中,全功能節點之間是可以相互通信的。
宏定義修改HOME_CONTROLS的網絡模式 (NWK_MODE),來選擇不同的網絡拓撲。
樹狀網:NEW_MODE_TREE;網狀網:NEW_MODE_MESH
4 ZStack協議棧
4.1 ZStack的設計
ZStack採用操作系統的思想來構建,採用事件輪循機制,當各層初始化之後,系統進入低功耗模式,當事件發生時,喚醒系統,開始進入中斷處理事件,結束後繼續進入低功耗模式,如果同時有幾個事件發生,判斷優先級,逐次處理事件,這種軟件構架可以極大地降級系統的功耗。
4.2 ZStack源碼工程架構:
APP(Application Programming):應用層目錄,這是用戶創建各種不同工程的區域
HAL(Hardware (H/W) Abstraction Layer):硬件層目錄,包含有與硬件相關的配置和驅動及操作函數。
MAC:MAC 層目錄,包含了MAC 層的參數配置文件及其MAC 的LIB 庫的函數接口文件。
MT(Monitor Test):實現通過串口可控各層,與各層進行直接交互。
NWK(ZigBee Network Layer):網絡層目錄,含網絡層配置參數文件及網絡層庫的函數接口文件,APS 層庫的函數接口。
4.3 地址分配
ZStack 中定義了兩種地址,64 位的擴展地址(IEEE 地址)和 16 位網絡短地址。
- 擴展地址是 全球唯一的,就像網卡地址;
- 網絡短地址是加入 ZigBee 網時,由協調器動態分配,在特定的網絡 中是唯一的但是不一定每次都是一樣。由三個參數決定:
- MAX_DEPTH 代表網絡最大深度,協調器爲 0 級深度,它決定了物理上網絡的―長度。
- MAX_CHILDREN 決定了一個協調器或路由器能擁有幾個子節點
- MAX_ROUTERS 決定了一個協 調器或路由器能擁有幾個路由功能的節點
4.4 ZStack工作流程
整個ZStack的主要工作流程,大致分爲系統啓動,驅動初始化,OSAL初始化和啓動,進入任務輪循幾個階段。
main 函數一共做了兩件工作,一個是系統初始化,另外一個就是開始啓動操作系統。
4.6 串口應用
使用串口的基本步驟:
- 初始化串口,包括設置波特率,中斷等;
- 向發送緩衝區發送數據或者從接收緩衝區讀取數據。
ZigBee協議棧中提供的與串口操作相關的三個函數爲:
- uint8 HalUARTOpen(uint8 port, halUARTCfg_t *config);
- uint16 HalUARTRead(uint8 port, uint8 *buf, uint16 len);
- uint16 HalUARTWrite(uint8 port, uint8 *buf, uint16 len)。
4.5 自定義事件
用戶也可以自定義事件,用戶事件值只能設置爲0x0000~0x00FF,大於0xFF的是系統事件。#define MY_REPORT_TEMP_EVT 0x0002
通過osal_start_timerEx( uint8 taskID, uint16 event_id, uint16 timeout_value );函數可以產生用戶事件。
5 嵌入式網關設計
網關(Gateway)又稱網間連接器、協議轉換器。在傳輸層上以實現網絡互連,是最複雜的網絡互連設備,僅用於兩個高層協議不同的網絡互連。
物聯網智能網關是一箇中央數據轉換單元,基於傳統嵌入式技術,運行復雜的嵌入式操作系統,實現傳感無線網數據與電信網/互聯網之間的數據交互。
智能網關採用嵌入式高性能ARM處理器,運行Linux操作系統,實現網絡的數據M2M交互。
主芯片採用ARM CortexTM-A8內核的S5PV210,通過串口外掛Zigbee協調器,藍牙模塊(Master模式),WiFi模塊(ap模式),4G通信模塊。
5.1 軟件架構(Android)
數據上行(終端節點數據到用戶):協調器將終端節點上報的信息通過串口與 Android 網關的串口進行數據通信。
數據下行(用戶指令到終端節點):用戶程序先建立 socket 連接,將數據下發到該網關服務程序,然後網關服務程序將 socket 數據向串口進行發送。
JNI技術,使得開發者可以通過java程序(代碼)調用到操作系統相關的技術實現的庫函數,從而與其他技術和系統交互,使用其他技術實現的系統的功能;JNI是一種函數調用格式標準。
Socket 服務的作用就是實現串口服務線程的數據和客戶端程序的 socket 客戶端的數據的交換。Socket 服務分爲 Socket Server 和 Socket Client
BOA服務器是一個小巧高效的web服務器,是一個運行於unix或linux下的,支持CGI的、適合於嵌入式系統的單任務的http服務器。
5.2 通信協議設計
- 根據數據流向將通信分爲三層:第一層爲上層應用程序與 Zigbee 網關之間的通信(應用層通信協議);第二層爲 Zigbee 網關與 Coo 節點之間的通信(串口通信協 議),採用 TI 提供的標準串口通信;第三層爲 Coo 節點與普通節點之間的通信(協議棧通信協議)
- 前兩層通信協議幀通過網關服務程序進行轉換,第三層通信 協議幀封裝在前兩層通信協議幀中。
6 實驗
6.1 P2P點對點通信(點播)
void main(void)
{ halMcuInit(); //初始化mcu
hal_led_init(); //初始化LED
hal_uart_init(); //初始化串口
if (FAILED == halRfInit()) {
HAL_ASSERT(FALSE); }
basicRfConfig.panId = PAN_ID; //個域網 ID 標示
basicRfConfig.channel = RF_CHANNEL; //通信信道
basicRfConfig.ackRequest = TRUE; //應答請求
#if NODE_TYPE //節點類型:0-接收節點,1-發送節點
basicRfConfig.myAddr = SEND_ADDR; //發送地址
#else
basicRfConfig.myAddr = RECV_ADDR; //接收地址
#endif
if(basicRfInit(&basicRfConfig)==FAILED) {
HAL_ASSERT(FALSE);
}
#if NODE_TYPE
rfSendData(); //發送數據
#else
rfRecvData(); //接收數據
#endif
ifdef SECURITY_CCM
basicRfConfig.securityKey = key; //安全祕鑰
#endif
}
CC2530 芯片使用了 2.4GHZ 頻段定義的 16 個信道,節點使用相同的信道才能進行通信。
6.2 廣播通信
程序與點對點通信的主要區別
/* 射頻模塊發送數據函數 */
void rfSendData(void){
while (TRUE) {
ret = basicRfSendPacket(0xffff, pTxData, sizeof pTxData); //廣播發送數據包
...
} }
若目的地址爲自己的 地址或廣播地址則接收數據。
6.3 RSSI信號採集實驗
RSSI:Received Signal Strength Indication 接收的信號強度指示,定位技術.
CC2530 芯片中有專門讀取 RSSI 值的寄存器,
6.4 綁定實驗
通過綁定,節點之間可以在不知道對方地址的情況下實現數據傳輸。
配置設備綁定服務,有兩種機制:如果目標設備的擴展地址已知,可通過調用zb_BindDeviceRequest()建立綁定條目;如果目標設備的擴展地址未知,可實施一個“按鍵” 策略實現綁定。
採用按鍵策略綁定:
- 只有分別在兩個節點的簡單描述結構體(simple descriptor structure) 中,同時註冊了相同的命令標識符(command_id)並且方向相反(一個屬於輸出指令“output”,另 一個屬於輸入指令“input”),才能成功建立綁定。
zb_ BindDevice(TRUE, TOGGLE_LIGHT_CMD_ID, NULL); //發送綁定請求