《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 設計應用 > 智能家居無線網絡通訊協議設計
智能家居無線網絡通訊協議設計
來源:計算機系統(tǒng)應用
摘要: 基于ARM 微控制器技術,提出了智能家居的遠程監(jiān)控系統(tǒng)的有效方法。實際應用中該方法以Web 瀏覽器作為操作界面,實現遠程數據通信監(jiān)控操作。利用nRF24L01 射頻模塊為智能家居終端設備構建了無線數據通訊平臺,其中nRF24L01 射頻模塊有32 個字節(jié)的數據載荷長度。通過對載荷數據幀格式的定義,完成了無線通訊協議的設計,統(tǒng)一了底層設備的應用程序接口,為智能家居的開發(fā)增加了靈活性。該遠程監(jiān)控平臺對家居環(huán)境及各布控系統(tǒng)進行了有效監(jiān)控,豐富并擴展了家居智能化的可操作性。
Abstract:
Key words :

   “智能家居”(smart home)又稱智能住宅,它利用先進的計算機技術、嵌入式系統(tǒng)技術、網絡通訊技術與傳感器技術等,把家中的各種設備有機的結合起來,優(yōu)化用戶生活方式,方便用戶管理設備,并能通過場景設定使多個設備間形成聯動。

  家庭網絡的分層結構中,整個系統(tǒng)分成5 層:
  物理媒體層(Media),底層協議層(Protocol)、應用程序接口層(API)、應用程序層(APP)和最終用戶接口層(UI)。其中第一、二層標準已經頒布并在實際中應用;第三層(API)是家庭網絡技術發(fā)展的關鍵,是當前業(yè)界研究的熱點;第四層是應用程序層,是在第三層的基礎上由技術人員開發(fā)的各種應用程序;第五層是各種用戶接口(UI)工具,包括各種遙控裝置、應急開關、求助按鈕以及其它可視接口設備,對整個系統(tǒng)性能的發(fā)揮和使用至關重要。本文主要針對第三、四層結構,設計符合智能家居系統(tǒng)平臺的數據通訊協議。
  1 系統(tǒng)總體方案
  1.1 總體設計方案
  圖1 中ARM 主控制器作為智能家居遠程Web 服務器,通過以太網芯片ENC28J60 接收遠程控制數據包,完成數據解析后通過射頻模塊發(fā)送控制命令,延時并接收節(jié)點應答數據,將應答數據以json 數據格式(一種數據保存格式)通過網關發(fā)送局部更新Web信息,達到監(jiān)測控制家居環(huán)境的效果。
  
  圖1 智能家居遠程監(jiān)控方案
  1.2 控制單元
  控制單元采用ARM 微控制器STM32F103RBT6,Cortex-M3 內核,64 引腳LQFP 封裝。具有128K 字節(jié)的程序存儲空間,20K 字節(jié)的RAM,最高工作時鐘72MHz,具有豐富的片上資源,有7 通道DMA 控制器,能夠支持SPI,USART 等外設。適合低成本,低功耗的嵌入式系統(tǒng)的開發(fā)與設計。
  圖2 中,該芯片通過SPI 串口共連3 外設:SD 卡接口、以太網芯片ENC28J60 以及射頻模塊芯片nRF24l01.ARM 微控制器的PA4-PA7 口分別作為SD卡的片選信號,時鐘信號引腳,MISO 和MOSI 口;PB12-PB15 分別作為以太網芯片ENC28J60 的片選信號,時鐘信號引腳,MISO 和MOSI 口;PC6 為射頻模塊RX/TX 模式使能端,PC7 為SPI 使能引腳,PC10-PC12 分別作為射頻模塊nRF24L01 的MOSI,MISO 和時鐘信號引腳,結合MCS-51 單片機的微控制應用能力,設計了一種簡單、實用的嵌入式智能家庭網關及終端控制方案。
  
  圖2 系統(tǒng)控制單元設計
  1.3 射頻通訊單元
  接收部分采用無線射頻模塊nRF24l01,該模塊在2.4GHz 全球開放ISM 頻段使用;最高工作速率2Mbps,高效GFSK 調制,抗干擾能力強;共有126個頻道,滿足多點通信和跳頻通信的需要;內置硬件CRC 校錯和點對多點通信地址控制[9]。其中至少兩個模塊組成了通信系統(tǒng),圖3 中,一個作為主控制器數據發(fā)送端;其它作為節(jié)點設備數據接收端。接收端完成命令數據接收,依據命令內容聯動對應設備;完成命令后節(jié)點射頻模塊進入發(fā)送狀態(tài),返回當前節(jié)點設備狀態(tài)。
  
  圖3 無線通信系統(tǒng)
  2 軟件設計
  2.1 射頻工作模式選擇
  nRF24l01 射頻模塊的收發(fā)模式有三種:EnhancedShockBurst TM 收發(fā)模式、ShockBurst TM 收發(fā)模式和直接收發(fā)模式三種。Enhanced ShockBurst TM 收發(fā)模式由器件EN_AA 寄存器配置內容決定。
  在Enhanced ShockBurst TM 收發(fā)模式下,使用片內先入先出堆棧區(qū),數據從微控制器低速送入,高速發(fā)射,速率為1Mbps,通過這種節(jié)能方式即使使用低速的微控制器也能得到很高的射頻發(fā)射速率。并且與射頻協議相關的所有高速信號處理都在片內進行,這樣有三大優(yōu)點:節(jié)能;系統(tǒng)費用低;數據空中停留時間短,抗干擾性高。同時也減小了整個系統(tǒng)的平均工作電流。
  2.2 數據發(fā)送接收流程
  2.2.1 主控制器射流程
  本文設計的無線通信系統(tǒng)是在同一信道下,初始狀態(tài)下只有一個發(fā)射節(jié)點,多個接收節(jié)點,主控制器射頻流程如圖4.
  (1) 等待網絡數據包的到來,nRF24l01 射頻模塊啟動發(fā)送模式,在配置信道上通過廣播方式發(fā)送,延時50ms,保證每個從控制器都能接收數據包。
  (2) 數據發(fā)送完成后射頻模塊立即配置為接收模式,接收從控制器設備的狀態(tài)數據幀,并定時2 秒,超時或成功接收從控制器設備應答數據則重新自動配置成發(fā)送模式并返回第1 步,防止射頻模塊全部進入接收模式出現互鎖“假死”狀態(tài)。
  (3) 如果成功接收從控制器設備應答數據,射頻模塊進入等待狀態(tài)。
  2.2.2 從控制器射頻流程
  所有接收節(jié)點接收該數據包,并對該數據包的驅動接口數據進行解析校對,比如接收地址匹配,命令碼,操作文件?有匹配節(jié)點則進入驅動應用程序并執(zhí)行操作。該射頻模塊多數情況下處于接收模式,具體流程如圖4:
  
  圖4 主控射頻流程
 ?。?) 從控制器節(jié)點nRF24l01 射頻模塊配置成接收模式,直到接收數據包。
  (2) 對數據包的驅動接口部分進行解析,接收地址是否匹配,如不匹配則返回步驟(1),再判斷命令操作碼及文件標志,如出現非法操作碼或文件標志,則返回步驟(1),有對應驅動接口則進入驅動應用程序。
 ?。?) 根據輸入的應用數據(記錄控制數據和記錄數據),操作設備將設備狀態(tài)寫入發(fā)送數據幀。完成后,射頻模塊配置進入發(fā)送模式,將發(fā)送數據幀返回主控制器,并延時1 秒。
 ?。?) 判斷是還發(fā)送成功,失敗則重新進入步驟(1),成功則結束,同樣進入初始化狀態(tài)。
  
  圖5 從機節(jié)點射頻流程圖
  3 無線通訊協議
  智能家終端設備品種繁多,且功能不一,不同設備要進行統(tǒng)一控制,必須對各種設備進行抽象處理,提取它們的共同特征??梢园呀K端設備抽象成文件,在控制端分配一塊內存描述該設備當前狀態(tài),利用設備控制方法讀取或修改當前狀態(tài),控制方法可分為三類:文件讀?。≧ead),文件修改(Write),文件控制(Control)。
  Read:讀設備文件操作,即對節(jié)點設備狀態(tài)掃描查詢,程序設計API 如下:
  void drv_lit_read(rxp_cmdreq req)以上為讀設備API 入口,參數req 為結構體指針,寫、控制設備操作類似。
  Write:寫設備文件操作,即對節(jié)點設備狀態(tài)修改,程序設計API 如下:
  void drv_lit_write(rxp_cmdreq req)Control:控制設備文件操作,即對節(jié)點設備狀態(tài)的調節(jié)。程序設計API 如下:
  void drv_lit_cnt(rxp_cmdreq req)并不是所有的文件都支持這三種控制方法,多數文件只支持前兩種控制方法,下文以燈控設備為例。
  3.1 通訊協議
  無線射頻模塊nRF24l01 對應收發(fā)模式的數據有效負載最大為32 個字節(jié),該數據包作為一幀數據,其中可分成三類數據:驅動接口數據,記錄控制數據以及記錄數據,輸入幀與輸出幀數據類型相同。數據格式如表1.
  表1 幀數據格式
  
 ?。?)驅動接口數據。
  Dest:接收端地址,1 字節(jié)表示,屬性值從0-255,可以表示256 個節(jié)點地址,滿足多數智能家居的節(jié)點資源。
  Src:發(fā)送端地址,1 字節(jié)表示,與Dest 意義相同。
  Cmdid:節(jié)點命令碼,1 字節(jié)表示,如上文表示,共有三種類型:0x01,表示讀命令(read);0x02,表示寫命令(write);0x03,表示控制命令(control)。
  節(jié)點即對應從控制器編號。
  Fileid:文件標志符,1 字節(jié)表示,即節(jié)點地址上對應的設備號,最大支持0x00-0xFF 256 個文件。
 ?。?)記錄控制數據。
  Result:操作結果碼,1 字節(jié)表示,當有數據返回時,要求填寫該字節(jié)。0x00,操作成功;0x10,非法節(jié)點;0x11,非法文件標識符;0x12,非法初始記錄值;0x13,非法記錄。0xFF,默認無效值。
  Start:記錄開始值,1 字節(jié)表示,當有多條記錄操作時,該值即對應的記錄序。
  Len:記錄長度,1 字節(jié)表示,當作為輸入數據時,表示記錄操作的長度,如果Len 值大于當前節(jié)點的最大記錄長度,則取當前節(jié)點記錄長度最大值;當作為輸出數據時,表示當前節(jié)點操作的記錄長度。
 ?。?)記錄數據Records:記錄數據緩沖,緩沖區(qū)達25 個字節(jié)。
  該緩沖區(qū)可存放多條記錄,記錄格式如表2,每條記錄字節(jié)長度不一,一般在3-5 個字節(jié)左右,最多能存放8 條記錄。
  表2 記錄數據格式
  
  該Len 值與記錄控制數據中的Len 值意義不同,表示該條記錄的字節(jié)長度,其中并不包含本身字節(jié)長度,1 個字節(jié)長度;Opt 值為保留字節(jié),一般無意義,控制命令與該字節(jié)相關,1 個字節(jié)度;Content 為設備文件的記錄值,記錄字節(jié)長度不定,一般1-2 字節(jié)長。
  3.2 協議擴展與特點
  地址資源,單字節(jié)的Dest 與Src 地址分配對于普通的智能家居用戶完全能滿足要求,對于家居環(huán)境復雜,地址分配點較多的用戶,可能會出現資源不夠的情況,該情況可將Dest 與Src 地址擴展至16 位,即2字節(jié)。滿足65535 個節(jié)點要求。
  節(jié)點命令碼,三種命令類型只占用Cmdid 的二位,其余的高六位值保留,以備協議擴展所需。同理。
  記錄選項,Opt 為保留字節(jié),默認值為0x00,該字節(jié)主要針對控制操作,用于記錄控制操作符,如表2 說明,主要針對燈控文件的變亮,變暗操作。
  該通訊協議的設計主要有以下特點:
  (1)統(tǒng)一外設,將外部設備抽象成標準文件,并在控制器內存記錄文件內容,操作指定設備只需訪問該設備映射文件所處內存空間數據即可,規(guī)范外設標準,提高通訊效率。
 ?。?)通訊協議的制定極大的優(yōu)化了主控制器與射頻模塊之間的數據傳輸性能,主控制器只需根據固定的通訊協議格式填充即可,簡化其處理過程。
 ?。?)同樣簡化了從控制節(jié)點的數據處理過程。
  4 通訊協議實現結果
  按照系統(tǒng)功能需求的劃分,可分為智能溫度的控制,智能安防的控制,智能家電的控制,智能照明的控制等。
  智能溫度控制:系統(tǒng)實時采集室內的溫度,并能以圖形方式展示給用戶,用戶可以根據需要自行控制室內溫度。
  智能安防控制:系統(tǒng)集成防盜、防劫等功能,能夠通過網頁遠程監(jiān)控家居狀況,并能查詢控制警報器的狀態(tài)。
  智能照明控制:用戶可以根據需要控制家庭的燈光效果,具有調光功能,不僅能夠滿足用戶的需求,還能達到節(jié)能和環(huán)保的功能,其記錄數據說明見表3.
  表3 燈控記錄數據
  
  記錄數據的首字節(jié)Len 表示當前記錄字節(jié)長度,照明的三種控制方法具體說明如下:
  Read:讀當前燈的亮度。
  輸入:無。
  輸出:Opt 保留字節(jié)0x00.Value 表示當前燈的亮度值(0x00-0x09),值越大,亮度越高,下同。
  Write:設置燈的亮度值。
  輸入:Opt 保留字節(jié)0x00.Value 為要設置的亮度值。
  輸出:Opt 保留字節(jié)0x00.Value 表示當前燈的亮度值(0x00-0x09)。
  Cnt:調節(jié)燈的亮度。
  輸入:Opt 的最低位為1,表示減少亮度;Opt 的最低位為0,表示增加亮度。Value 省略無意義。
  輸出:Opt 為保留字節(jié)0x00.Value 表示當前燈的亮度值(0x00-0x09)。
  燈控設備支持多條記錄同時讀取與返回,設備的讀操作無記錄輸入,有記錄輸出;寫操作與控制操作有記錄輸入,同時有記錄輸出。假設當前操作節(jié)點為0x00,主控節(jié)點為0xFF,Value 值為0x03.
  以燈控控制命令為例:
  控制命令(0x03):假設當前亮度值為0x03,將燈亮度值加1,則輸入數據幀如表4,輸出數據幀如表5.
  表4 輸入數據幀
  
  表5 輸出數據幀
  
  輸入數據幀與輸出數據幀進行相互轉換時,發(fā)送主體不同,因此發(fā)送地址與接收地址對調。由于是控制命令,Cmdid 設置為0x03,如果是讀命令或寫命令,則該字節(jié)設置為0x01 或0x02.由上已知當前操作節(jié)點為0x00,即Fileid 的設置值。Result 表示數據返回結果碼,0x00 表示操作成功。在輸入數據幀中無意義。
  本例中,只有1 個記錄值,因此在數據輸入、輸出幀記錄地址Start 從0x00 開始,數據幀長度Len 為0x01.
  讀命令、寫命令數據幀類似,參照控制命令格式。
  5 結論
  本系統(tǒng)中,以嵌入式Web 服務器為架構,實現了對智能家居終端設備的遠程監(jiān)測與控制,并以nRF24L01射頻模塊32 字節(jié)的數據幀為基礎,最終完成了針對較低成本智能家居的通訊協議設計。在實際操作過程中,也能夠通過網頁Web 的調節(jié)控制,最終能夠達到對終端文件設備的控制,實現對燈控設備的開關,調亮,調暗等功能。能在發(fā)出命令后1 秒內返回準確數據信息,保證該系統(tǒng)的實時控制,具有較高應用價值。
此內容為AET網站原創(chuàng),未經授權禁止轉載。