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

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

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

圖3 無(wú)線(xiàn)通信系統。
2 軟件設計
2.1 射頻工作模式選擇
nRF24l01射頻模塊的收發(fā)模式有三種:EnhancedShockBurst TM收發(fā)模式、ShockBurst TM收發(fā)模式和直接收發(fā)模式三種。Enhanced ShockBurst TM收發(fā)模式由器件EN_AA寄存器配置內容決定。
在Enhanced ShockBurst TM收發(fā)模式下,使用片內先入先出堆棧區,數據從微控制器低速送入,高速發(fā)射,速率為1Mbps,通過(guò)這種節能方式即使使用低速的微控制器也能得到很高的射頻發(fā)射速率。并且與射頻協(xié)議相關(guān)的所有高速信號處理都在片內進(jìn)行,這樣有三大優(yōu)點(diǎn):節能;系統費用低;數據空中停留時(shí)間短,抗干擾性高。同時(shí)也減小了整個(gè)系統的平均工作電流。
2.2 數據發(fā)送接收流程
2.2.1 主控制器射流程
本文設計的無(wú)線(xiàn)通信系統是在同一信道下,初始狀態(tài)下只有一個(gè)發(fā)射節點(diǎn),多個(gè)接收節點(diǎn),主控制器射頻流程如圖4.
(1) 等待網(wǎng)絡(luò )數據包的到來(lái),nRF24l01射頻模塊啟動(dòng)發(fā)送模式,在配置信道上通過(guò)廣播方式發(fā)送,延時(shí)50ms,保證每個(gè)從控制器都能接收數據包。
(2) 數據發(fā)送完成后射頻模塊立即配置為接收模式,接收從控制器設備的狀態(tài)數據幀,并定時(shí)2秒,超時(shí)或成功接收從控制器設備應答數據則重新自動(dòng)配置成發(fā)送模式并返回第1步,防止射頻模塊全部進(jìn)入接收模式出現互鎖“假死”狀態(tài)。
(3) 如果成功接收從控制器設備應答數據,射頻模塊進(jìn)入等待狀態(tài)。
2.2.2 從控制器射頻流程
所有接收節點(diǎn)接收該數據包,并對該數據包的驅動(dòng)接口數據進(jìn)行解析校對,比如接收地址匹配,命令碼,操作文件?有匹配節點(diǎn)則進(jìn)入驅動(dòng)應用程序并執行操作。該射頻模塊多數情況下處于接收模式,具體流程如圖4:

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

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

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

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

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

表4 輸入數據幀

表5 輸出數據幀
輸入數據幀與輸出數據幀進(jìn)行相互轉換時(shí),發(fā)送主體不同,因此發(fā)送地址與接收地址對調。由于是控制命令,Cmdid設置為0x03,如果是讀命令或寫(xiě)命令,則該字節設置為0x01或0x02.由上已知當前操作節點(diǎn)為0x00,即Fileid的設置值。Result表示數據返回結果碼,0x00表示操作成功。在輸入數據幀中無(wú)意義。
本例中,只有1個(gè)記錄值,因此在數據輸入、輸出幀記錄地址Start從0x00開(kāi)始,數據幀長(cháng)度Len為0x01.
讀命令、寫(xiě)命令數據幀類(lèi)似,參照控制命令格式。
5 結論
本系統中,以嵌入式Web服務(wù)器為架構,實(shí)現了對智能家居終端設備的遠程監測與控制,并以nRF24L01射頻模塊32字節的數據幀為基礎,最終完成了針對較低成本智能家居的通訊協(xié)議設計。在實(shí)際操作過(guò)程中,也能夠通過(guò)網(wǎng)頁(yè)Web的調節控制,最終能夠達到對終端文件設備的控制,實(shí)現對燈控設備的開(kāi)關(guān),調亮,調暗等功能。能在發(fā)出命令后1 秒內返回準確數據信息,保證該系統的實(shí)時(shí)控制,具有較高應用價(jià)值。
【推薦閱讀】
一款會(huì )講故事的燈泡,溫馨浪漫有格調
智能家居無(wú)線(xiàn)發(fā)展:ZigBee實(shí)現雙向互動(dòng)
基于嵌入式的無(wú)線(xiàn)智能家居網(wǎng)關(guān)設計方案
被外因坑慘了的智能家居何時(shí)能夠上位?
創(chuàng )新+互聯(lián)+一站式解決方案撐起智能家居的未來(lái)