,,
(貴州大學 計算機科學與技術學院,貴陽 550000)
基于FreakZ協(xié)議棧與開源操作系統(tǒng)的智能家居設計*
嚴凱,姚凱學,何勇
(貴州大學 計算機科學與技術學院,貴陽 550000)
為了解決以傳統(tǒng)綜合布線為主要技術的家居監(jiān)控的局限性,設計了基于FreakZ的智能遠程監(jiān)控系統(tǒng)。采用WiFi、FreakZ技術將攝像頭、家電、傳感器模塊等組成一個物聯(lián)網(wǎng)。智能網(wǎng)關集成了STM32F103ZET6嵌入式微處理器、WiFi模塊、協(xié)調(diào)器模塊 ,實現(xiàn)了協(xié)調(diào)器與終端節(jié)點的遠程通信。通過μC/OS-II操作系統(tǒng)和contiki操作系統(tǒng)將各個模塊有機結(jié)合在一起,實現(xiàn)了對電器的遠程監(jiān)控。智能家居PC端由C#語言編寫,目前可以成功獲取家庭環(huán)境數(shù)據(jù)以及準確控制家用電器。通過SmartRF Studio 7獲取網(wǎng)關與節(jié)點的信號強度與丟包率,實驗證明本智能家居遠程監(jiān)控系統(tǒng)安全可靠。
智能家居;FreakZ 協(xié)議棧;STM32F103ZET6;WiFi;μC/OS-II
隨著嵌入式技術發(fā)展與物聯(lián)網(wǎng)時代的到來,人們越來越追求家庭的物聯(lián)和智能化。在智能家居系統(tǒng)中,利用計算機技術、網(wǎng)絡技術、控制技術以及人工智能等家庭環(huán)境的監(jiān)控[1-2],實現(xiàn)了家具設備的安全和可控。目前,市場上已經(jīng)出現(xiàn)了一些智能家居系統(tǒng),如智能視頻監(jiān)控系統(tǒng)、智能安防預警系統(tǒng)、智能可視對講系統(tǒng)、智能門鎖聯(lián)動系統(tǒng)、智能家庭影院系統(tǒng)、智能廚房安防系統(tǒng)、智能家庭管控系統(tǒng)、智能照明窗簾系統(tǒng)、智能背景音樂系統(tǒng)等[3-4]。以上市場化的智能家居系統(tǒng)價格較高、功能單一、多為綜合布線系統(tǒng)且安裝麻煩。為此,本文基于WiFi、FreakZ等無線通信技術,建立了安全可靠的智能家居遠程監(jiān)控系統(tǒng)。
系統(tǒng)總體設計主要由三部分組成:集成了協(xié)調(diào)器模塊和STM32F103ZET6的智能網(wǎng)關、遠程PC端和手機端、環(huán)境監(jiān)測和家電控制子系統(tǒng)[5]。整個系統(tǒng)如圖1所示。
圖1 系統(tǒng)總體框架圖
系統(tǒng)工作流程:智能家居采用星型網(wǎng)絡拓撲結(jié)構(gòu),智能家居電器狀態(tài)數(shù)據(jù)(電視機、窗簾、電燈、空調(diào)等)、異常圖片和環(huán)境數(shù)據(jù)(溫度、濕度、紅外、PM2.5等)運用FreakZ協(xié)議棧和無線網(wǎng)絡傳輸?shù)骄W(wǎng)關的協(xié)調(diào)器中,協(xié)調(diào)器將數(shù)據(jù)傳輸?shù)絊TM32F103ZET6,經(jīng)過調(diào)度和處理,通過WiFi將數(shù)據(jù)傳輸?shù)皆贫?,用戶通過PC機和手機讀取環(huán)境數(shù)據(jù)、監(jiān)控圖片和控制電器,家庭控制命令經(jīng)協(xié)調(diào)器傳輸?shù)浇K端節(jié)點,F(xiàn)reakZ節(jié)點執(zhí)行命令控制電器。
系統(tǒng)硬件主要包括兩部分:智能網(wǎng)關硬件設計和FreakZ終端節(jié)點硬件設計。
2.1 智能網(wǎng)關硬件設計
網(wǎng)關作為智能家具的核心,實現(xiàn)了家電節(jié)點與PC/手機端的有效通信。STM32F103ZET6芯片通過SPI接口與WiFi模塊連接,通過串口與FreakZ協(xié)調(diào)器連接。其硬件電路結(jié)構(gòu)框圖如圖2所示。
圖2 網(wǎng)關硬件結(jié)構(gòu)圖
系統(tǒng)將μC/OS-II系統(tǒng)移植到STM32F103ZET6中,STM32F103ZET6 MCU采用的內(nèi)核為Cortex-M3,最高工作頻率為72 MHz[6];SRAM高達64 KB,帶4個片選的靜態(tài)存儲器控制器;支持2.0~3.6 V供電和I/O引腳;帶校準功能的32 kHz RTC振蕩器;支持定時器、ADC、DAC、SDIO、I2C、I2S和USART等外設[7]。協(xié)調(diào)器負責創(chuàng)建和管理網(wǎng)絡,收集終端節(jié)點的數(shù)據(jù)。
WiFi模塊實現(xiàn)網(wǎng)關與Internet連接。本系統(tǒng)采用WM-G-MR-09 WiFi無線通信模組,該WiFi芯片支持802.11b/g無線網(wǎng)絡模式,芯片體積小,休眠功耗為0.6 mA,接收數(shù)據(jù)功耗為170 mA,最高視頻傳輸速率可達54 Mb/s。本系統(tǒng)通過WiFi將傳感器數(shù)據(jù)、家電狀態(tài)數(shù)據(jù)和異常圖片數(shù)據(jù)傳入到Internet,供給用戶使用。
2.2 FreakZ終端節(jié)點硬件設計
FreakZ無線節(jié)點采用的是CC2530芯片,CC2530是2.4 GHz、IEEE802.15.4兼容RF收發(fā)器[8],具有極高的接收靈敏度和抗干擾性能。它十分適合需要超低功耗的系統(tǒng),不同的運行模式間轉(zhuǎn)換時間短更加保證了低功耗。它將協(xié)調(diào)器與終端節(jié)點緊密聯(lián)系在一起,是智能家居系統(tǒng)重要組成部分。
視頻監(jiān)控模塊通過一些比較算法(開元motion程序)識別異常情況(在特定時間段家里有異常動靜)并取出該幀,傳輸?shù)骄W(wǎng)關,圖片解壓后通過WiFi傳輸?shù)絀nternet,從而用戶可以及時發(fā)現(xiàn)異常情況并做出處理。
智能網(wǎng)關主要由控制器模塊(STM32F103ZET6)、FreakZ模塊(協(xié)調(diào)器)、WiFi模塊組成。軟件設計主要在硬件平臺移植μC/OS-II操作系統(tǒng)、FreakZ協(xié)議棧以及WiFi驅(qū)動。
μC/OS-II是一個具有可裁剪性、可剝奪性的實時多任務內(nèi)核[9],每個任務類似線程一樣,都處于死循環(huán)狀態(tài),根據(jù)優(yōu)先級來分時得到MCU的控制權。μC/OS-II源碼包括三個文件夾(CONFIG、CORE、PORTS),將源碼添加到Keil uVision5工程中去。CORE文件夾(與處理器無關的代碼)里面的os_core.c、os_flag.c、os_mbox.c、os_mem.c、os_mutex.c、os_q.c、os_sem.c、os_task.c、os_time.c、os_tmr.c、ucos_ii.h均無需修改,主要對PORTS文件夾下的os_cpu.h、os_cpu_c.c、os_cpu_a.asm三個文件進行修改。
os_cpu.h文件主要用來定義操作系統(tǒng)與硬件平臺兼容的一些數(shù)據(jù)類型和函數(shù)。OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()這兩個函數(shù)用來保護任務的臨界代碼免于中斷程序的破壞。堆棧設置為從高地址向低地址生長的,OS_STK_GROWTH定義為1U。
os_cpu_c.c中定義了OSInitHookBegin()、OSTaskCreateHook()、OSTaskDelHook()、OSTaskIdleHook()、OSTaskReturnHook()、OSTaskStatHook()、OSTaskStkInit()、OSTaskSwHook()、OSTCBInitHook()、OSTCBInitHook()這些函數(shù),只用修改任務堆棧初始化函數(shù)OSTaskStkInit()。
os_cpu_a.asm的多個函數(shù)都需要修改,達到修改對應的優(yōu)先級寄存器地址和中斷控制寄存器地址的目的,如OSStart HighRdy() 運行最高優(yōu)先級的就緒任務。
μC/OS-II最多可以創(chuàng)建256個任務,每個任務執(zhí)行具體的應用功能,在智能家居遠程監(jiān)控系統(tǒng)中,任務分配如表1所列。
表1 任務分配表
3.2 在協(xié)調(diào)器和終端節(jié)點上移植FreakZ協(xié)議棧
鑒于無線傳感器網(wǎng)絡ZigBee協(xié)議棧產(chǎn)品價格昂貴且代碼封閉[1],本文將云峰物聯(lián)科技勘誤后的FreakZ進行二次改寫和添加功能,利用基于IDE集成管理的IAR移植到協(xié)調(diào)器和終端節(jié)點中。FreakZ是一個徹底開源的ZigBee協(xié)議,而其自身攜帶的contiki也是個徹底開源的操作系統(tǒng),contiki短小精悍,非常適合物聯(lián)網(wǎng)的智能家居設備。
圖3為FreakZ數(shù)據(jù)處理流程。智能家居多個FreakZ終端節(jié)點將節(jié)點數(shù)據(jù)傳入到tx隊列中,Smarthome_af_tx_handler()函數(shù)從tx隊列取出一幀數(shù)據(jù)傳遞到APS層;若重復表不存在該數(shù)據(jù),則通過Smarthome_aps_data_req()從綁定表中取出數(shù)據(jù)的目的ip地址和端口,經(jīng)過Smarthome_aps_tx()構(gòu)造NWK層的數(shù)據(jù)包并傳遞到NWK層;Smarthome_nwk_data_req()將數(shù)據(jù)傳遞到Smarthome_nwk_fwd(),執(zhí)行路由算法,如果目的地址為廣播地址則直接廣播,如果目的地址在路由表中且存在下一條路由,則轉(zhuǎn)發(fā)下一跳,如果目的地不在路由表且允許路由發(fā)現(xiàn),則緩沖信息并開啟路由發(fā)現(xiàn)再發(fā)送,如果以上三種方式均失敗,則進行樹路由,如果仍失敗則停止轉(zhuǎn)發(fā),若獲取下一跳,則將智能家居節(jié)點信息通過Smarthome_nwk_tx()函數(shù)傳遞到MAC層;MAC層調(diào)用Smarthome_data_req()、Smarthome_tx_handler()和Smarthome_mac_out()三個函數(shù)將數(shù)據(jù)傳輸?shù)骄W(wǎng)卡,通過radio傳輸?shù)浇邮斩说膮f(xié)調(diào)器[2]。
圖3 FreakZ數(shù)據(jù)處理流程
FreakZ協(xié)調(diào)器的MAC層接收到信息發(fā)送到接收數(shù)據(jù)隊列,Smarthome_mac_eventhandler()取出一幀數(shù)據(jù)并解析報頭,判斷其為命令幀、信標幀、ACK幀還是數(shù)據(jù)幀,如果是數(shù)據(jù)幀,則將節(jié)點信息傳輸?shù)絽f(xié)調(diào)器的NWK層。Smarthome_mac_eventhandler()從NWK層rx隊列中取出一幀數(shù)據(jù)并解析報頭,此時只有兩種類型的幀,即命令幀和數(shù)據(jù)幀,命令幀將被解析并路由到相應的命令功能處理程序,數(shù)據(jù)幀則有目的地被轉(zhuǎn)發(fā)到協(xié)調(diào)器的APS層。Smarthome_nwk_data_ind()解析由NWK層傳遞來的幀,如果它在重復拒絕表中則丟棄,如果是應答幀,則把應答幀發(fā)送到APS應答處理機制進行處理[3],如果是數(shù)據(jù)幀且需要ACK應答則立刻ACK,之后發(fā)送到AF層。Smarthome_af_rx_handler()從rx隊列中取出數(shù)據(jù)并解析,最后調(diào)用相應的接收回調(diào)函數(shù),將數(shù)據(jù)傳輸?shù)綌帱c,此時數(shù)據(jù)從智能家居終端節(jié)點完全到達協(xié)調(diào)器。
CC2530移植了contiki,contiki支持8位、16位、32位的幾乎所有處理器類型,支持IAR編輯,支持6lowpan和802.15.4協(xié)議[10],是一種無線網(wǎng)絡協(xié)議棧的小型操作系統(tǒng),非常符合智能家居小型低功耗的要求。
3.3 基于FreakZ的視頻監(jiān)控模塊
本視頻監(jiān)控模塊負責對智能家居異常(一定時間段)圖像(以圖片方式)的采集、傳輸與處理。本視頻監(jiān)控模塊主要由S3C2440微處理器和CC2530兩個芯片集成的。視頻監(jiān)控模塊的架構(gòu)如圖4所示。
圖4 視頻監(jiān)控子模塊硬件結(jié)構(gòu)圖
本監(jiān)控系統(tǒng)的運動圖像檢測原理:當移動物體在規(guī)定的時間內(nèi)(家庭規(guī)定的時間段)進入攝像頭監(jiān)控范圍且攝像頭的當前幀與前一幀的不同像素點點數(shù)超過規(guī)定的閾值,此時認為出現(xiàn)異常,S3C2440微處理器在存儲器模塊中取出異常的圖片,通過RS232接口傳輸?shù)紺C2530,由CC2530終端子模塊運用FreakZ協(xié)議棧和網(wǎng)絡通信將異常圖片傳輸?shù)骄W(wǎng)關內(nèi)的協(xié)調(diào)器,再由WiFi模塊傳輸?shù)絀nternet。監(jiān)控系統(tǒng)規(guī)定:若兩分鐘內(nèi)圖像連續(xù)變化次數(shù)超過15次,則監(jiān)控系統(tǒng)休眠一個小時,一個小時后自動開啟監(jiān)控。由于基于FreakZ的網(wǎng)絡是短距離低速率的傳輸,所以在視頻監(jiān)控子節(jié)點的S3C2440微處理器需要調(diào)用H.264編碼庫對圖片進行壓縮再傳輸,PC端的顯示程序?qū)D片數(shù)據(jù)解碼并顯示。
智能家居PC端是由C#編寫,基本功能包括數(shù)據(jù)收發(fā)、數(shù)據(jù)存儲、數(shù)據(jù)顯示等。無線路由器與計算機相連,終端節(jié)點通過控制器與家電相連,用戶可以從PC端、手機端對家電設備進行遠程控制。運行系統(tǒng)軟件界面如圖5所示。當WiFi設備和協(xié)調(diào)器設備連接上之后,室內(nèi)溫度是17.87 ℃,濕度為61.53%,PM2.5為53.66 μg/m3,此時有人進入,熱源為滿格,異常情況圖片顯示區(qū)顯示圖片,將電視機、空調(diào)、窗簾設置為開啟狀態(tài)。
本實驗采用SmartRF Studio 7應用程序測試智能家居的節(jié)點與網(wǎng)關之間的信號強度與丟包率,數(shù)據(jù)如表2所列。
從實驗可以看出,隨著通信距離的增加,節(jié)點與網(wǎng)關之間的信號強度會變差,丟包率也會慢慢增加,在無障礙物的情況下,5米以內(nèi)丟包率為0,10米之后便出現(xiàn)丟包。由于墻體的存在信號強度會變得比較差,丟包率也相對很大。實驗證明本系統(tǒng)收發(fā)較好,性能穩(wěn)定,滿足正常家居的通信需要。
表2 可靠性測試
[1] 申斌.基于物聯(lián)網(wǎng)的智能家居設計與實現(xiàn)[J].自動化與儀表,2013,28(2):6-10.
[2] 郭穩(wěn)濤,何怡剛.智能家居遠程監(jiān)控系統(tǒng)的研究與設計[J].計算機測量與控制,2011,19(9):2109-2113.
[3] 楊堤.基于物聯(lián)網(wǎng)的智能家居控制系統(tǒng)設計與實現(xiàn)[J].電子世界,2012(21):16-17.
[4] 何勉,楊明飛.基于STM32的智能家居網(wǎng)關設計[J].機械工程與自動化,2016(5):78-80.
[5] 張玉,姚凱學,何勇,等.基于S3C6410的智能家居遠程監(jiān)控系統(tǒng)的設計與實現(xiàn)[J].現(xiàn)代電子技術,2016,39(10):159-161,166.
[6] 洪樹亮.基于STM32F103住宅智能防火防盜報警系統(tǒng)的設計[D].蘭州:蘭州交通大學,2014.
[7] 劉志龍,吳昊.STM32F103ZET6芯片在LED顯示屏控制應用中的探索[J].科技創(chuàng)新與應用,2014(4):30-31.
[8] 尹紀庭,袁佳,焦志曼,等.基于ARM和ZigBee的智能家居控制系統(tǒng)研究與開發(fā)[J].計算機測量與控制,2013,21(9):2451-2454.
[9] 楚紅雨,李磊民,黃玉清,等.實時操作系統(tǒng)μC/OS-II在ARM9上移植的實現(xiàn)[J].計算機工程,2005,31(20):226-228.
[10] 張春園,劉興長,張偉偉,等.基于Contiki的無線傳感器網(wǎng)絡平臺設計與實現(xiàn)[J].后勤工程學院學報,2014,30(6):90-96.
嚴凱(碩士研究生),主要研究方向為嵌入式應用技術。
IntelligentHomeDesignBasedonFreakZProtocolStackandOpen-sourceOperatingSystem
YanKai,YaoKaixue,HeYong
(College of Computer Science and Technology,Guizhou University,Guiyang 550000,China)
In order to solve the limitation of home monitoring system with traditional integrated wiring as the main technology,the intelligent remote monitoring system based on FreakZ is designed.The camera,the home appliances and the sensor modules are composed of IoT by WiFi and FreakZ technology.The smart gateway integrates STM32F103ZET6 embedded microprocessor,the WiFi module and the coordinator module.The remote communication between the coordinator and the terminal node is realized.Through the μC/OS-II operating system and contiki operating system,each module can be organically combined to achieve the purpose of the remote monitoring of electrical appliances.The PC side of smart home is written by the C# language,which can now successfully access the home environment data and accurate control of household appliances.The gateway and node signal strength and packet loss rate can obtained through SmartRF Studio 7.The experiment results show that the intelligent home remote monitoring system is safe and reliable.
smart home;FreakZ protocol stack;STM32F103ZET6;WiFi;μC/OS-II
面向智慧健康服務的物聯(lián)網(wǎng)關鍵技術示范應用(黔科合成轉(zhuǎn)字[2015]5115) 。
TP393;TP273
A
2017-08-11)