你的位置:首頁 > RF/微波 > 正文

智能家居無線網(wǎng)絡(luò)通訊協(xié)議設(shè)計(jì)

發(fā)布時(shí)間:2016-04-19 責(zé)任編輯:wenwei

【導(dǎo)讀】基于ARM微控制器技術(shù),提出了智能家居的遠(yuǎn)程監(jiān)控系統(tǒng)的有效方法。實(shí)際應(yīng)用中該方法以Web瀏覽器作為操作界面,實(shí)現(xiàn)遠(yuǎn)程數(shù)據(jù)通信監(jiān)控操作。利用nRF24L01射頻模塊為智能家居終端設(shè)備構(gòu)建了無線數(shù)據(jù)通訊平臺(tái),其中nRF24L01射頻模塊有32個(gè)字節(jié)的數(shù)據(jù)載荷長度。通過對(duì)載荷數(shù)據(jù)幀格式的定義,完成了無線通訊協(xié)議的設(shè)計(jì),統(tǒng)一了底層設(shè)備的應(yīng)用程序接口,為智能家居的開發(fā)增加了靈活性。該遠(yuǎn)程監(jiān)控平臺(tái)對(duì)家居環(huán)境及各布控系統(tǒng)進(jìn)行了有效監(jiān)控,豐富并擴(kuò)展了家居智能化的可操作性。

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

家庭網(wǎng)絡(luò)的分層結(jié)構(gòu)中,整個(gè)系統(tǒng)分成5 層:

物理媒體層(Media),底層協(xié)議層(Protocol)、應(yīng)用程序接口層(API)、應(yīng)用程序?qū)樱ˋPP)和最終用戶接口層(UI)。其中第一、二層標(biāo)準(zhǔn)已經(jīng)頒布并在實(shí)際中應(yīng)用;第三層(API)是家庭網(wǎng)絡(luò)技術(shù)發(fā)展的關(guān)鍵,是當(dāng)前業(yè)界研究的熱點(diǎn);第四層是應(yīng)用程序?qū)?,是在第三層的基礎(chǔ)上由技術(shù)人員開發(fā)的各種應(yīng)用程序;第五層是各種用戶接口(UI)工具,包括各種遙控裝置、應(yīng)急開關(guān)、求助按鈕以及其它可視接口設(shè)備,對(duì)整個(gè)系統(tǒng)性能的發(fā)揮和使用至關(guān)重要。本文主要針對(duì)第三、四層結(jié)構(gòu),設(shè)計(jì)符合智能家居系統(tǒng)平臺(tái)的數(shù)據(jù)通訊協(xié)議。

1 系統(tǒng)總體方案

1.1 總體設(shè)計(jì)方案

圖1 中ARM 主控制器作為智能家居遠(yuǎn)程Web服務(wù)器,通過以太網(wǎng)芯片ENC28J60接收遠(yuǎn)程控制數(shù)據(jù)包,完成數(shù)據(jù)解析后通過射頻模塊發(fā)送控制命令,延時(shí)并接收節(jié)點(diǎn)應(yīng)答數(shù)據(jù),將應(yīng)答數(shù)據(jù)以json數(shù)據(jù)格式(一種數(shù)據(jù)保存格式)通過網(wǎng)關(guān)發(fā)送局部更新Web信息,達(dá)到監(jiān)測(cè)控制家居環(huán)境的效果。
智能家居無線網(wǎng)絡(luò)通訊協(xié)議設(shè)計(jì)
圖1 智能家居遠(yuǎn)程監(jiān)控方案

1.2 控制單元

控制單元采用ARM 微控制器STM32F103RBT6,Cortex-M3 內(nèi)核,64引腳LQFP封裝。具有128K字節(jié)的程序存儲(chǔ)空間,20K字節(jié)的RAM,最高工作時(shí)鐘72MHz,具有豐富的片上資源,有7通道DMA控制器,能夠支持SPI,USART等外設(shè)。適合低成本,低功耗的嵌入式系統(tǒng)的開發(fā)與設(shè)計(jì)。

圖2 中,該芯片通過SPI串口共連3外設(shè):SD卡接口、以太網(wǎng)芯片ENC28J60以及射頻模塊芯片nRF24l01.ARM 微控制器的PA4-PA7口分別作為SD卡的片選信號(hào),時(shí)鐘信號(hào)引腳,MISO和MOSI口;PB12-PB15分別作為以太網(wǎng)芯片ENC28J60的片選信號(hào),時(shí)鐘信號(hào)引腳,MISO和MOSI口;PC6為射頻模塊RX/TX模式使能端,PC7為SPI使能引腳,PC10-PC12分別作為射頻模塊nRF24L01的MOSI,MISO和時(shí)鐘信號(hào)引腳,結(jié)合MCS-51單片機(jī)的微控制應(yīng)用能力,設(shè)計(jì)了一種簡單、實(shí)用的嵌入式智能家庭網(wǎng)關(guān)及終端控制方案。
智能家居無線網(wǎng)絡(luò)通訊協(xié)議設(shè)計(jì)
圖2 系統(tǒng)控制單元設(shè)計(jì)。
1.3 射頻通訊單元

接收部分采用無線射頻模塊nRF24l01,該模塊在2.4GHz全球開放ISM頻段使用;最高工作速率2Mbps,高效GFSK調(diào)制,抗干擾能力強(qiáng);共有126個(gè)頻道,滿足多點(diǎn)通信和跳頻通信的需要;內(nèi)置硬件CRC 校錯(cuò)和點(diǎn)對(duì)多點(diǎn)通信地址控制[9]。其中至少兩個(gè)模塊組成了通信系統(tǒng),圖3中,一個(gè)作為主控制器數(shù)據(jù)發(fā)送端;其它作為節(jié)點(diǎn)設(shè)備數(shù)據(jù)接收端。接收端完成命令數(shù)據(jù)接收,依據(jù)命令內(nèi)容聯(lián)動(dòng)對(duì)應(yīng)設(shè)備;完成命令后節(jié)點(diǎn)射頻模塊進(jìn)入發(fā)送狀態(tài),返回當(dāng)前節(jié)點(diǎn)設(shè)備狀態(tài)。
智能家居無線網(wǎng)絡(luò)通訊協(xié)議設(shè)計(jì)
圖3 無線通信系統(tǒng)。

2 軟件設(shè)計(jì)

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é)議相關(guān)的所有高速信號(hào)處理都在片內(nèi)進(jìn)行,這樣有三大優(yōu)點(diǎn):節(jié)能;系統(tǒng)費(fèi)用低;數(shù)據(jù)空中停留時(shí)間短,抗干擾性高。同時(shí)也減小了整個(gè)系統(tǒng)的平均工作電流。

2.2 數(shù)據(jù)發(fā)送接收流程

2.2.1 主控制器射流程

本文設(shè)計(jì)的無線通信系統(tǒng)是在同一信道下,初始狀態(tài)下只有一個(gè)發(fā)射節(jié)點(diǎn),多個(gè)接收節(jié)點(diǎn),主控制器射頻流程如圖4.

(1) 等待網(wǎng)絡(luò)數(shù)據(jù)包的到來,nRF24l01射頻模塊啟動(dòng)發(fā)送模式,在配置信道上通過廣播方式發(fā)送,延時(shí)50ms,保證每個(gè)從控制器都能接收數(shù)據(jù)包。

(2) 數(shù)據(jù)發(fā)送完成后射頻模塊立即配置為接收模式,接收從控制器設(shè)備的狀態(tài)數(shù)據(jù)幀,并定時(shí)2秒,超時(shí)或成功接收從控制器設(shè)備應(yīng)答數(shù)據(jù)則重新自動(dòng)配置成發(fā)送模式并返回第1步,防止射頻模塊全部進(jìn)入接收模式出現(xiàn)互鎖“假死”狀態(tài)。

(3) 如果成功接收從控制器設(shè)備應(yīng)答數(shù)據(jù),射頻模塊進(jìn)入等待狀態(tài)。

2.2.2 從控制器射頻流程

所有接收節(jié)點(diǎn)接收該數(shù)據(jù)包,并對(duì)該數(shù)據(jù)包的驅(qū)動(dòng)接口數(shù)據(jù)進(jìn)行解析校對(duì),比如接收地址匹配,命令碼,操作文件?有匹配節(jié)點(diǎn)則進(jìn)入驅(qū)動(dòng)應(yīng)用程序并執(zhí)行操作。該射頻模塊多數(shù)情況下處于接收模式,具體流程如圖4:
智能家居無線網(wǎng)絡(luò)通訊協(xié)議設(shè)計(jì)
圖4 主控射頻流程

(1) 從控制器節(jié)點(diǎn)nRF24l01射頻模塊配置成接收模式,直到接收數(shù)據(jù)包。

(2) 對(duì)數(shù)據(jù)包的驅(qū)動(dòng)接口部分進(jìn)行解析,接收地址是否匹配,如不匹配則返回步驟(1),再判斷命令操作碼及文件標(biāo)志,如出現(xiàn)非法操作碼或文件標(biāo)志,則返回步驟(1),有對(duì)應(yīng)驅(qū)動(dòng)接口則進(jìn)入驅(qū)動(dòng)應(yīng)用程序。

(3) 根據(jù)輸入的應(yīng)用數(shù)據(jù)(記錄控制數(shù)據(jù)和記錄數(shù)據(jù)),操作設(shè)備將設(shè)備狀態(tài)寫入發(fā)送數(shù)據(jù)幀。完成后,射頻模塊配置進(jìn)入發(fā)送模式,將發(fā)送數(shù)據(jù)幀返回主控制器,并延時(shí)1秒。

(4) 判斷是還發(fā)送成功,失敗則重新進(jìn)入步驟(1),成功則結(jié)束,同樣進(jìn)入初始化狀態(tài)。
智能家居無線網(wǎng)絡(luò)通訊協(xié)議設(shè)計(jì)
圖5 從機(jī)節(jié)點(diǎn)射頻流程圖。

3 無線通訊協(xié)議

智能家終端設(shè)備品種繁多,且功能不一,不同設(shè)備要進(jìn)行統(tǒng)一控制,必須對(duì)各種設(shè)備進(jìn)行抽象處理,提取它們的共同特征??梢园呀K端設(shè)備抽象成文件,在控制端分配一塊內(nèi)存描述該設(shè)備當(dāng)前狀態(tài),利用設(shè)備控制方法讀取或修改當(dāng)前狀態(tài),控制方法可分為三類:文件讀?。≧ead),文件修改(Write),文件控制(Control)。

Read:讀設(shè)備文件操作,即對(duì)節(jié)點(diǎn)設(shè)備狀態(tài)掃描查詢,程序設(shè)計(jì)API如下:

void drv_lit_read(rxp_cmdreq req)以上為讀設(shè)備API入口,參數(shù)req為結(jié)構(gòu)體指針,寫、控制設(shè)備操作類似。

Write:寫設(shè)備文件操作,即對(duì)節(jié)點(diǎn)設(shè)備狀態(tài)修改,程序設(shè)計(jì)API如下:

void drv_lit_write(rxp_cmdreq req)Control:控制設(shè)備文件操作,即對(duì)節(jié)點(diǎn)設(shè)備狀態(tài)的調(diào)節(jié)。程序設(shè)計(jì)API如下:

void drv_lit_cnt(rxp_cmdreq req)并不是所有的文件都支持這三種控制方法,多數(shù)文件只支持前兩種控制方法,下文以燈控設(shè)備為例。

3.1 通訊協(xié)議

無線射頻模塊nRF24l01對(duì)應(yīng)收發(fā)模式的數(shù)據(jù)有效負(fù)載最大為32個(gè)字節(jié),該數(shù)據(jù)包作為一幀數(shù)據(jù),其中可分成三類數(shù)據(jù):驅(qū)動(dòng)接口數(shù)據(jù),記錄控制數(shù)據(jù)以及記錄數(shù)據(jù),輸入幀與輸出幀數(shù)據(jù)類型相同。數(shù)據(jù)格式如表1.
智能家居無線網(wǎng)絡(luò)通訊協(xié)議設(shè)計(jì) 
表1 幀數(shù)據(jù)格式

(1)驅(qū)動(dòng)接口數(shù)據(jù)。

Dest:接收端地址,1字節(jié)表示,屬性值從0-255,可以表示256個(gè)節(jié)點(diǎn)地址,滿足多數(shù)智能家居的節(jié)點(diǎn)資源。

Src:發(fā)送端地址,1字節(jié)表示,與Dest 意義相同。

Cmdid:節(jié)點(diǎn)命令碼,1字節(jié)表示,如上文表示,共有三種類型:0x01,表示讀命令(read);0x02,表示寫命令(write);0x03,表示控制命令(control)。

節(jié)點(diǎn)即對(duì)應(yīng)從控制器編號(hào)。

Fileid:文件標(biāo)志符,1字節(jié)表示,即節(jié)點(diǎn)地址上對(duì)應(yīng)的設(shè)備號(hào),最大支持0x00-0xFF 256個(gè)文件。

(2)記錄控制數(shù)據(jù)。

Result:操作結(jié)果碼,1字節(jié)表示,當(dāng)有數(shù)據(jù)返回時(shí),要求填寫該字節(jié)。0x00,操作成功;0x10,非法節(jié)點(diǎn);0x11,非法文件標(biāo)識(shí)符;0x12,非法初始記錄值;0x13,非法記錄。0xFF,默認(rèn)無效值。

Start:記錄開始值,1字節(jié)表示,當(dāng)有多條記錄操作時(shí),該值即對(duì)應(yīng)的記錄序。

Len:記錄長度,1字節(jié)表示,當(dāng)作為輸入數(shù)據(jù)時(shí),表示記錄操作的長度,如果Len值大于當(dāng)前節(jié)點(diǎn)的最大記錄長度,則取當(dāng)前節(jié)點(diǎn)記錄長度最大值;當(dāng)作為輸出數(shù)據(jù)時(shí),表示當(dāng)前節(jié)點(diǎn)操作的記錄長度。

(3)記錄數(shù)據(jù)Records:記錄數(shù)據(jù)緩沖,緩沖區(qū)達(dá)25個(gè)字節(jié)。

該緩沖區(qū)可存放多條記錄,記錄格式如表2,每條記錄字節(jié)長度不一,一般在3-5個(gè)字節(jié)左右,最多能存放8條記錄。
智能家居無線網(wǎng)絡(luò)通訊協(xié)議設(shè)計(jì) 
表2 記錄數(shù)據(jù)格式

該Len 值與記錄控制數(shù)據(jù)中的Len值意義不同,表示該條記錄的字節(jié)長度,其中并不包含本身字節(jié)長度,1個(gè)字節(jié)長度;Opt值為保留字節(jié),一般無意義,控制命令與該字節(jié)相關(guān),1個(gè)字節(jié)度;Content為設(shè)備文件的記錄值,記錄字節(jié)長度不定,一般1-2字節(jié)長。

3.2 協(xié)議擴(kuò)展與特點(diǎn)

地址資源,單字節(jié)的Dest與Src地址分配對(duì)于普通的智能家居用戶完全能滿足要求,對(duì)于家居環(huán)境復(fù)雜,地址分配點(diǎn)較多的用戶,可能會(huì)出現(xiàn)資源不夠的情況,該情況可將Dest與Src地址擴(kuò)展至16位,即2字節(jié)。滿足65535個(gè)節(jié)點(diǎn)要求。

節(jié)點(diǎn)命令碼,三種命令類型只占用Cmdid的二位,其余的高六位值保留,以備協(xié)議擴(kuò)展所需。同理。

記錄選項(xiàng),Opt為保留字節(jié),默認(rèn)值為0x00,該字節(jié)主要針對(duì)控制操作,用于記錄控制操作符,如表2說明,主要針對(duì)燈控文件的變亮,變暗操作。

該通訊協(xié)議的設(shè)計(jì)主要有以下特點(diǎn):

(1)統(tǒng)一外設(shè),將外部設(shè)備抽象成標(biāo)準(zhǔn)文件,并在控制器內(nèi)存記錄文件內(nèi)容,操作指定設(shè)備只需訪問該設(shè)備映射文件所處內(nèi)存空間數(shù)據(jù)即可,規(guī)范外設(shè)標(biāo)準(zhǔn),提高通訊效率。

(2)通訊協(xié)議的制定極大的優(yōu)化了主控制器與射頻模塊之間的數(shù)據(jù)傳輸性能,主控制器只需根據(jù)固定的通訊協(xié)議格式填充即可,簡化其處理過程。

(3)同樣簡化了從控制節(jié)點(diǎn)的數(shù)據(jù)處理過程。

4 通訊協(xié)議實(shí)現(xiàn)結(jié)果

按照系統(tǒng)功能需求的劃分,可分為智能溫度的控制,智能安防的控制,智能家電的控制,智能照明的控制等。

智能溫度控制:系統(tǒng)實(shí)時(shí)采集室內(nèi)的溫度,并能以圖形方式展示給用戶,用戶可以根據(jù)需要自行控制室內(nèi)溫度。

智能安防控制:系統(tǒng)集成防盜、防劫等功能,能夠通過網(wǎng)頁遠(yuǎn)程監(jiān)控家居狀況,并能查詢控制警報(bào)器的狀態(tài)。

智能照明控制:用戶可以根據(jù)需要控制家庭的燈光效果,具有調(diào)光功能,不僅能夠滿足用戶的需求,還能達(dá)到節(jié)能和環(huán)保的功能,其記錄數(shù)據(jù)說明見表3.
智能家居無線網(wǎng)絡(luò)通訊協(xié)議設(shè)計(jì) 
表3 燈控記錄數(shù)據(jù)

記錄數(shù)據(jù)的首字節(jié)Len表示當(dāng)前記錄字節(jié)長度,照明的三種控制方法具體說明如下:

Read:讀當(dāng)前燈的亮度。

輸入:無。

輸出:Opt保留字節(jié)0x00.Value表示當(dāng)前燈的亮度值(0x00-0x09),值越大,亮度越高,下同。

Write:設(shè)置燈的亮度值。

輸入:Opt保留字節(jié)0x00.Value 為要設(shè)置的亮度值。

輸出:Opt保留字節(jié)0x00.Value 表示當(dāng)前燈的亮度值(0x00-0x09)。

Cnt:調(diào)節(jié)燈的亮度。

輸入:Opt的最低位為1,表示減少亮度;Opt的最低位為0,表示增加亮度。Value省略無意義。

輸出:Opt為保留字節(jié)0x00.Value 表示當(dāng)前燈的亮度值(0x00-0x09)。

燈控設(shè)備支持多條記錄同時(shí)讀取與返回,設(shè)備的讀操作無記錄輸入,有記錄輸出;寫操作與控制操作有記錄輸入,同時(shí)有記錄輸出。假設(shè)當(dāng)前操作節(jié)點(diǎn)為0x00,主控節(jié)點(diǎn)為0xFF,Value值為0x03.

以燈控控制命令為例:

控制命令(0x03):假設(shè)當(dāng)前亮度值為0x03,將燈亮度值加1,則輸入數(shù)據(jù)幀如表4,輸出數(shù)據(jù)幀如表5.
智能家居無線網(wǎng)絡(luò)通訊協(xié)議設(shè)計(jì) 
表4 輸入數(shù)據(jù)幀
智能家居無線網(wǎng)絡(luò)通訊協(xié)議設(shè)計(jì)  
表5 輸出數(shù)據(jù)幀

輸入數(shù)據(jù)幀與輸出數(shù)據(jù)幀進(jìn)行相互轉(zhuǎn)換時(shí),發(fā)送主體不同,因此發(fā)送地址與接收地址對(duì)調(diào)。由于是控制命令,Cmdid設(shè)置為0x03,如果是讀命令或?qū)懨?,則該字節(jié)設(shè)置為0x01或0x02.由上已知當(dāng)前操作節(jié)點(diǎn)為0x00,即Fileid的設(shè)置值。Result表示數(shù)據(jù)返回結(jié)果碼,0x00表示操作成功。在輸入數(shù)據(jù)幀中無意義。

本例中,只有1個(gè)記錄值,因此在數(shù)據(jù)輸入、輸出幀記錄地址Start從0x00開始,數(shù)據(jù)幀長度Len為0x01.

讀命令、寫命令數(shù)據(jù)幀類似,參照控制命令格式。

5 結(jié)論

本系統(tǒng)中,以嵌入式Web服務(wù)器為架構(gòu),實(shí)現(xiàn)了對(duì)智能家居終端設(shè)備的遠(yuǎn)程監(jiān)測(cè)與控制,并以nRF24L01射頻模塊32字節(jié)的數(shù)據(jù)幀為基礎(chǔ),最終完成了針對(duì)較低成本智能家居的通訊協(xié)議設(shè)計(jì)。在實(shí)際操作過程中,也能夠通過網(wǎng)頁Web的調(diào)節(jié)控制,最終能夠達(dá)到對(duì)終端文件設(shè)備的控制,實(shí)現(xiàn)對(duì)燈控設(shè)備的開關(guān),調(diào)亮,調(diào)暗等功能。能在發(fā)出命令后1 秒內(nèi)返回準(zhǔn)確數(shù)據(jù)信息,保證該系統(tǒng)的實(shí)時(shí)控制,具有較高應(yīng)用價(jià)值。



【推薦閱讀】

一款會(huì)講故事的燈泡,溫馨浪漫有格調(diào)
智能家居無線發(fā)展:ZigBee實(shí)現(xiàn)雙向互動(dòng)
基于嵌入式的無線智能家居網(wǎng)關(guān)設(shè)計(jì)方案
被外因坑慘了的智能家居何時(shí)能夠上位?
創(chuàng)新+互聯(lián)+一站式解決方案撐起智能家居的未來






要采購射頻么,點(diǎn)這里了解一下價(jià)格!
特別推薦
技術(shù)文章更多>>
技術(shù)白皮書下載更多>>
熱門搜索
?

關(guān)閉

?

關(guān)閉