智能家居無線網(wǎng)絡通訊協(xié)議設計
來源:計算機系統(tǒng)應用
摘要: 基于ARM 微控制器技術,提出了智能家居的遠程監(jiān)控系統(tǒng)的有效方法,。實際應用中該方法以Web 瀏覽器作為操作界面,,實現(xiàn)遠程數(shù)據(jù)通信監(jiān)控操作。利用nRF24L01 射頻模塊為智能家居終端設備構建了無線數(shù)據(jù)通訊平臺,,其中nRF24L01 射頻模塊有32 個字節(jié)的數(shù)據(jù)載荷長度,。通過對載荷數(shù)據(jù)幀格式的定義,完成了無線通訊協(xié)議的設計,,統(tǒng)一了底層設備的應用程序接口,,為智能家居的開發(fā)增加了靈活性。該遠程監(jiān)控平臺對家居環(huán)境及各布控系統(tǒng)進行了有效監(jiān)控,,豐富并擴展了家居智能化的可操作性,。
Abstract:
Key words :
“智能家居”(smart home)又稱智能住宅,它利用先進的計算機技術,、嵌入式系統(tǒng)技術,、網(wǎng)絡通訊技術與傳感器技術等,把家中的各種設備有機的結合起來,,優(yōu)化用戶生活方式,,方便用戶管理設備,并能通過場景設定使多個設備間形成聯(lián)動,。
家庭網(wǎng)絡的分層結構中,,整個系統(tǒng)分成5 層:
物理媒體層(Media),底層協(xié)議層(Protocol),、應用程序接口層(API)、應用程序層(APP)和最終用戶接口層(UI),。其中第一,、二層標準已經(jīng)頒布并在實際中應用;第三層(API)是家庭網(wǎng)絡技術發(fā)展的關鍵,,是當前業(yè)界研究的熱點,;第四層是應用程序層,是在第三層的基礎上由技術人員開發(fā)的各種應用程序,;第五層是各種用戶接口(UI)工具,,包括各種遙控裝置,、應急開關、求助按鈕以及其它可視接口設備,,對整個系統(tǒng)性能的發(fā)揮和使用至關重要,。本文主要針對第三、四層結構,,設計符合智能家居系統(tǒng)平臺的數(shù)據(jù)通訊協(xié)議,。
1 系統(tǒng)總體方案
1.1 總體設計方案
圖1 中ARM 主控制器作為智能家居遠程Web 服務器,通過以太網(wǎng)芯片ENC28J60 接收遠程控制數(shù)據(jù)包,,完成數(shù)據(jù)解析后通過射頻模塊發(fā)送控制命令,,延時并接收節(jié)點應答數(shù)據(jù),將應答數(shù)據(jù)以json 數(shù)據(jù)格式(一種數(shù)據(jù)保存格式)通過網(wǎng)關發(fā)送局部更新Web信息,,達到監(jiān)測控制家居環(huán)境的效果,。

圖1 智能家居遠程監(jiān)控方案
1.2 控制單元
控制單元采用ARM 微控制器STM32F103RBT6,Cortex-M3 內(nèi)核,,64 引腳LQFP 封裝,。具有128K 字節(jié)的程序存儲空間,20K 字節(jié)的RAM,,最高工作時鐘72MHz,,具有豐富的片上資源,有7 通道DMA 控制器,,能夠支持SPI,,USART 等外設。適合低成本,,低功耗的嵌入式系統(tǒng)的開發(fā)與設計,。
圖2 中,該芯片通過SPI 串口共連3 外設:SD 卡接口,、以太網(wǎng)芯片ENC28J60 以及射頻模塊芯片nRF24l01.ARM 微控制器的PA4-PA7 口分別作為SD卡的片選信號,,時鐘信號引腳,MISO 和MOSI 口,;PB12-PB15 分別作為以太網(wǎng)芯片ENC28J60 的片選信號,,時鐘信號引腳,MISO 和MOSI 口,;PC6 為射頻模塊RX/TX 模式使能端,,PC7 為SPI 使能引腳,PC10-PC12 分別作為射頻模塊nRF24L01 的MOSI,,MISO 和時鐘信號引腳,,結合MCS-51 單片機的微控制應用能力,設計了一種簡單,、實用的嵌入式智能家庭網(wǎng)關及終端控制方案,。

圖2 系統(tǒng)控制單元設計
1.3 射頻通訊單元
接收部分采用無線射頻模塊nRF24l01,,該模塊在2.4GHz 全球開放ISM 頻段使用;最高工作速率2Mbps,,高效GFSK 調(diào)制,,抗干擾能力強;共有126個頻道,,滿足多點通信和跳頻通信的需要,;內(nèi)置硬件CRC 校錯和點對多點通信地址控制[9]。其中至少兩個模塊組成了通信系統(tǒng),,圖3 中,,一個作為主控制器數(shù)據(jù)發(fā)送端;其它作為節(jié)點設備數(shù)據(jù)接收端,。接收端完成命令數(shù)據(jù)接收,,依據(jù)命令內(nèi)容聯(lián)動對應設備;完成命令后節(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 寄存器配置內(nèi)容決定,。
在Enhanced ShockBurst TM 收發(fā)模式下,使用片內(nèi)先入先出堆棧區(qū),,數(shù)據(jù)從微控制器低速送入,,高速發(fā)射,速率為1Mbps,,通過這種節(jié)能方式即使使用低速的微控制器也能得到很高的射頻發(fā)射速率,。并且與射頻協(xié)議相關的所有高速信號處理都在片內(nèi)進行,這樣有三大優(yōu)點:節(jié)能,;系統(tǒng)費用低,;數(shù)據(jù)空中停留時間短,抗干擾性高,。同時也減小了整個系統(tǒng)的平均工作電流,。
2.2 數(shù)據(jù)發(fā)送接收流程
2.2.1 主控制器射流程
本文設計的無線通信系統(tǒng)是在同一信道下,初始狀態(tài)下只有一個發(fā)射節(jié)點,,多個接收節(jié)點,,主控制器射頻流程如圖4.
(1) 等待網(wǎng)絡數(shù)據(jù)包的到來,,nRF24l01 射頻模塊啟動發(fā)送模式,在配置信道上通過廣播方式發(fā)送,,延時50ms,,保證每個從控制器都能接收數(shù)據(jù)包,。
(2) 數(shù)據(jù)發(fā)送完成后射頻模塊立即配置為接收模式,,接收從控制器設備的狀態(tài)數(shù)據(jù)幀,,并定時2 秒,超時或成功接收從控制器設備應答數(shù)據(jù)則重新自動配置成發(fā)送模式并返回第1 步,,防止射頻模塊全部進入接收模式出現(xiàn)互鎖“假死”狀態(tài),。
(3) 如果成功接收從控制器設備應答數(shù)據(jù),,射頻模塊進入等待狀態(tài),。
2.2.2 從控制器射頻流程
所有接收節(jié)點接收該數(shù)據(jù)包,并對該數(shù)據(jù)包的驅動接口數(shù)據(jù)進行解析校對,,比如接收地址匹配,,命令碼,操作文件,?有匹配節(jié)點則進入驅動應用程序并執(zhí)行操作,。該射頻模塊多數(shù)情況下處于接收模式,具體流程如圖4:

圖4 主控射頻流程
?。?) 從控制器節(jié)點nRF24l01 射頻模塊配置成接收模式,,直到接收數(shù)據(jù)包。
?。?) 對數(shù)據(jù)包的驅動接口部分進行解析,,接收地址是否匹配,如不匹配則返回步驟(1),,再判斷命令操作碼及文件標志,,如出現(xiàn)非法操作碼或文件標志,則返回步驟(1),,有對應驅動接口則進入驅動應用程序,。
(3) 根據(jù)輸入的應用數(shù)據(jù)(記錄控制數(shù)據(jù)和記錄數(shù)據(jù)),,操作設備將設備狀態(tài)寫入發(fā)送數(shù)據(jù)幀,。完成后,射頻模塊配置進入發(fā)送模式,,將發(fā)送數(shù)據(jù)幀返回主控制器,,并延時1 秒。
?。?) 判斷是還發(fā)送成功,,失敗則重新進入步驟(1),成功則結束,,同樣進入初始化狀態(tài),。

圖5 從機節(jié)點射頻流程圖
3 無線通訊協(xié)議
智能家終端設備品種繁多,,且功能不一,不同設備要進行統(tǒng)一控制,,必須對各種設備進行抽象處理,,提取它們的共同特征??梢园呀K端設備抽象成文件,,在控制端分配一塊內(nèi)存描述該設備當前狀態(tài),利用設備控制方法讀取或修改當前狀態(tài),,控制方法可分為三類:文件讀?。≧ead),文件修改(Write),,文件控制(Control),。
Read:讀設備文件操作,即對節(jié)點設備狀態(tài)掃描查詢,,程序設計API 如下:
void drv_lit_read(rxp_cmdreq req)以上為讀設備API 入口,,參數(shù)req 為結構體指針,寫,、控制設備操作類似,。
Write:寫設備文件操作,即對節(jié)點設備狀態(tài)修改,,程序設計API 如下:
void drv_lit_write(rxp_cmdreq req)Control:控制設備文件操作,,即對節(jié)點設備狀態(tài)的調(diào)節(jié)。程序設計API 如下:
void drv_lit_cnt(rxp_cmdreq req)并不是所有的文件都支持這三種控制方法,,多數(shù)文件只支持前兩種控制方法,,下文以燈控設備為例。
3.1 通訊協(xié)議
無線射頻模塊nRF24l01 對應收發(fā)模式的數(shù)據(jù)有效負載最大為32 個字節(jié),,該數(shù)據(jù)包作為一幀數(shù)據(jù),,其中可分成三類數(shù)據(jù):驅動接口數(shù)據(jù),記錄控制數(shù)據(jù)以及記錄數(shù)據(jù),,輸入幀與輸出幀數(shù)據(jù)類型相同,。數(shù)據(jù)格式如表1.
表1 幀數(shù)據(jù)格式

(1)驅動接口數(shù)據(jù),。
Dest:接收端地址,,1 字節(jié)表示,屬性值從0-255,,可以表示256 個節(jié)點地址,,滿足多數(shù)智能家居的節(jié)點資源。
Src:發(fā)送端地址,1 字節(jié)表示,,與Dest 意義相同,。
Cmdid:節(jié)點命令碼,1 字節(jié)表示,,如上文表示,共有三種類型:0x01,,表示讀命令(read),;0x02,表示寫命令(write),;0x03,,表示控制命令(control)。
節(jié)點即對應從控制器編號,。
Fileid:文件標志符,,1 字節(jié)表示,即節(jié)點地址上對應的設備號,,最大支持0x00-0xFF 256 個文件,。
(2)記錄控制數(shù)據(jù),。
Result:操作結果碼,,1 字節(jié)表示,當有數(shù)據(jù)返回時,,要求填寫該字節(jié),。0x00,操作成功,;0x10,,非法節(jié)點;0x11,,非法文件標識符,;0x12,非法初始記錄值,;0x13,,非法記錄。0xFF,,默認無效值,。
Start:記錄開始值,1 字節(jié)表示,,當有多條記錄操作時,,該值即對應的記錄序。
Len:記錄長度,1 字節(jié)表示,,當作為輸入數(shù)據(jù)時,,表示記錄操作的長度,如果Len 值大于當前節(jié)點的最大記錄長度,,則取當前節(jié)點記錄長度最大值,;當作為輸出數(shù)據(jù)時,表示當前節(jié)點操作的記錄長度,。
?。?)記錄數(shù)據(jù)Records:記錄數(shù)據(jù)緩沖,緩沖區(qū)達25 個字節(jié),。
該緩沖區(qū)可存放多條記錄,,記錄格式如表2,每條記錄字節(jié)長度不一,,一般在3-5 個字節(jié)左右,,最多能存放8 條記錄。
表2 記錄數(shù)據(jù)格式

該Len 值與記錄控制數(shù)據(jù)中的Len 值意義不同,,表示該條記錄的字節(jié)長度,,其中并不包含本身字節(jié)長度,1 個字節(jié)長度,;Opt 值為保留字節(jié),,一般無意義,控制命令與該字節(jié)相關,,1 個字節(jié)度,;Content 為設備文件的記錄值,記錄字節(jié)長度不定,,一般1-2 字節(jié)長,。
3.2 協(xié)議擴展與特點
地址資源,單字節(jié)的Dest 與Src 地址分配對于普通的智能家居用戶完全能滿足要求,,對于家居環(huán)境復雜,,地址分配點較多的用戶,可能會出現(xiàn)資源不夠的情況,,該情況可將Dest 與Src 地址擴展至16 位,,即2字節(jié)。滿足65535 個節(jié)點要求,。
節(jié)點命令碼,,三種命令類型只占用Cmdid 的二位,其余的高六位值保留,,以備協(xié)議擴展所需,。同理。
記錄選項,Opt 為保留字節(jié),,默認值為0x00,,該字節(jié)主要針對控制操作,用于記錄控制操作符,,如表2 說明,,主要針對燈控文件的變亮,變暗操作,。
該通訊協(xié)議的設計主要有以下特點:
?。?)統(tǒng)一外設,將外部設備抽象成標準文件,,并在控制器內(nèi)存記錄文件內(nèi)容,操作指定設備只需訪問該設備映射文件所處內(nèi)存空間數(shù)據(jù)即可,,規(guī)范外設標準,,提高通訊效率。
?。?)通訊協(xié)議的制定極大的優(yōu)化了主控制器與射頻模塊之間的數(shù)據(jù)傳輸性能,,主控制器只需根據(jù)固定的通訊協(xié)議格式填充即可,簡化其處理過程,。
?。?)同樣簡化了從控制節(jié)點的數(shù)據(jù)處理過程。
4 通訊協(xié)議實現(xiàn)結果
按照系統(tǒng)功能需求的劃分,,可分為智能溫度的控制,,智能安防的控制,智能家電的控制,,智能照明的控制等,。
智能溫度控制:系統(tǒng)實時采集室內(nèi)的溫度,并能以圖形方式展示給用戶,,用戶可以根據(jù)需要自行控制室內(nèi)溫度,。
智能安防控制:系統(tǒng)集成防盜、防劫等功能,,能夠通過網(wǎng)頁遠程監(jiān)控家居狀況,,并能查詢控制警報器的狀態(tài)。
智能照明控制:用戶可以根據(jù)需要控制家庭的燈光效果,,具有調(diào)光功能,,不僅能夠滿足用戶的需求,還能達到節(jié)能和環(huán)保的功能,,其記錄數(shù)據(jù)說明見表3.
表3 燈控記錄數(shù)據(jù)

記錄數(shù)據(jù)的首字節(jié)Len 表示當前記錄字節(jié)長度,,照明的三種控制方法具體說明如下:
Read:讀當前燈的亮度。
輸入:無。
輸出:Opt 保留字節(jié)0x00.Value 表示當前燈的亮度值(0x00-0x09),,值越大,,亮度越高,下同,。
Write:設置燈的亮度值,。
輸入:Opt 保留字節(jié)0x00.Value 為要設置的亮度值。
輸出:Opt 保留字節(jié)0x00.Value 表示當前燈的亮度值(0x00-0x09),。
Cnt:調(diào)節(jié)燈的亮度,。
輸入:Opt 的最低位為1,表示減少亮度,;Opt 的最低位為0,,表示增加亮度。Value 省略無意義,。
輸出:Opt 為保留字節(jié)0x00.Value 表示當前燈的亮度值(0x00-0x09),。
燈控設備支持多條記錄同時讀取與返回,設備的讀操作無記錄輸入,,有記錄輸出,;寫操作與控制操作有記錄輸入,同時有記錄輸出,。假設當前操作節(jié)點為0x00,,主控節(jié)點為0xFF,Value 值為0x03.
以燈控控制命令為例:
控制命令(0x03):假設當前亮度值為0x03,,將燈亮度值加1,,則輸入數(shù)據(jù)幀如表4,輸出數(shù)據(jù)幀如表5.
表4 輸入數(shù)據(jù)幀

表5 輸出數(shù)據(jù)幀

輸入數(shù)據(jù)幀與輸出數(shù)據(jù)幀進行相互轉換時,,發(fā)送主體不同,,因此發(fā)送地址與接收地址對調(diào)。由于是控制命令,,Cmdid 設置為0x03,,如果是讀命令或寫命令,則該字節(jié)設置為0x01 或0x02.由上已知當前操作節(jié)點為0x00,,即Fileid 的設置值,。Result 表示數(shù)據(jù)返回結果碼,0x00 表示操作成功,。在輸入數(shù)據(jù)幀中無意義,。
本例中,只有1 個記錄值,,因此在數(shù)據(jù)輸入,、輸出幀記錄地址Start 從0x00 開始,,數(shù)據(jù)幀長度Len 為0x01.
讀命令、寫命令數(shù)據(jù)幀類似,,參照控制命令格式,。
5 結論
本系統(tǒng)中,以嵌入式Web 服務器為架構,,實現(xiàn)了對智能家居終端設備的遠程監(jiān)測與控制,,并以nRF24L01射頻模塊32 字節(jié)的數(shù)據(jù)幀為基礎,最終完成了針對較低成本智能家居的通訊協(xié)議設計,。在實際操作過程中,,也能夠通過網(wǎng)頁Web 的調(diào)節(jié)控制,最終能夠達到對終端文件設備的控制,,實現(xiàn)對燈控設備的開關,,調(diào)亮,調(diào)暗等功能,。能在發(fā)出命令后1 秒內(nèi)返回準確數(shù)據(jù)信息,,保證該系統(tǒng)的實時控制,具有較高應用價值,。
此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權禁止轉載,。