,,
(貴州大學 計算機科學與技術學院,貴陽 550000)
基于FreakZ協議棧與開源操作系統的智能家居設計*
嚴凱,姚凱學,何勇
(貴州大學 計算機科學與技術學院,貴陽 550000)
為了解決以傳統綜合布線為主要技術的家居監控的局限性,設計了基于FreakZ的智能遠程監控系統。采用WiFi、FreakZ技術將攝像頭、家電、傳感器模塊等組成一個物聯網。智能網關集成了STM32F103ZET6嵌入式微處理器、WiFi模塊、協調器模塊 ,實現了協調器與終端節點的遠程通信。通過μC/OS-II操作系統和contiki操作系統將各個模塊有機結合在一起,實現了對電器的遠程監控。智能家居PC端由C#語言編寫,目前可以成功獲取家庭環境數據以及準確控制家用電器。通過SmartRF Studio 7獲取網關與節點的信號強度與丟包率,實驗證明本智能家居遠程監控系統安全可靠。
智能家居;FreakZ 協議棧;STM32F103ZET6;WiFi;μC/OS-II
隨著嵌入式技術發展與物聯網時代的到來,人們越來越追求家庭的物聯和智能化。在智能家居系統中,利用計算機技術、網絡技術、控制技術以及人工智能等家庭環境的監控[1-2],實現了家具設備的安全和可控。目前,市場上已經出現了一些智能家居系統,如智能視頻監控系統、智能安防預警系統、智能可視對講系統、智能門鎖聯動系統、智能家庭影院系統、智能廚房安防系統、智能家庭管控系統、智能照明窗簾系統、智能背景音樂系統等[3-4]。以上市場化的智能家居系統價格較高、功能單一、多為綜合布線系統且安裝麻煩。為此,本文基于WiFi、FreakZ等無線通信技術,建立了安全可靠的智能家居遠程監控系統。
系統總體設計主要由三部分組成:集成了協調器模塊和STM32F103ZET6的智能網關、遠程PC端和手機端、環境監測和家電控制子系統[5]。整個系統如圖1所示。

圖1 系統總體框架圖
系統工作流程:智能家居采用星型網絡拓撲結構,智能家居電器狀態數據(電視機、窗簾、電燈、空調等)、異常圖片和環境數據(溫度、濕度、紅外、PM2.5等)運用FreakZ協議棧和無線網絡傳輸到網關的協調器中,協調器將數據傳輸到STM32F103ZET6,經過調度和處理,通過WiFi將數據傳輸到云端,用戶通過PC機和手機讀取環境數據、監控圖片和控制電器,家庭控制命令經協調器傳輸到終端節點,FreakZ節點執行命令控制電器。
系統硬件主要包括兩部分:智能網關硬件設計和FreakZ終端節點硬件設計。
2.1 智能網關硬件設計
網關作為智能家具的核心,實現了家電節點與PC/手機端的有效通信。STM32F103ZET6芯片通過SPI接口與WiFi模塊連接,通過串口與FreakZ協調器連接。其硬件電路結構框圖如圖2所示。

圖2 網關硬件結構圖
系統將μC/OS-II系統移植到STM32F103ZET6中,STM32F103ZET6 MCU采用的內核為Cortex-M3,最高工作頻率為72 MHz[6];SRAM高達64 KB,帶4個片選的靜態存儲器控制器;支持2.0~3.6 V供電和I/O引腳;帶校準功能的32 kHz RTC振蕩器;支持定時器、ADC、DAC、SDIO、I2C、I2S和USART等外設[7]。協調器負責創建和管理網絡,收集終端節點的數據。
WiFi模塊實現網關與Internet連接。本系統采用WM-G-MR-09 WiFi無線通信模組,該WiFi芯片支持802.11b/g無線網絡模式,芯片體積小,休眠功耗為0.6 mA,接收數據功耗為170 mA,最高視頻傳輸速率可達54 Mb/s。本系統通過WiFi將傳感器數據、家電狀態數據和異常圖片數據傳入到Internet,供給用戶使用。
2.2 FreakZ終端節點硬件設計
FreakZ無線節點采用的是CC2530芯片,CC2530是2.4 GHz、IEEE802.15.4兼容RF收發器[8],具有極高的接收靈敏度和抗干擾性能。它十分適合需要超低功耗的系統,不同的運行模式間轉換時間短更加保證了低功耗。它將協調器與終端節點緊密聯系在一起,是智能家居系統重要組成部分。
視頻監控模塊通過一些比較算法(開元motion程序)識別異常情況(在特定時間段家里有異常動靜)并取出該幀,傳輸到網關,圖片解壓后通過WiFi傳輸到Internet,從而用戶可以及時發現異常情況并做出處理。
智能網關主要由控制器模塊(STM32F103ZET6)、FreakZ模塊(協調器)、WiFi模塊組成。軟件設計主要在硬件平臺移植μC/OS-II操作系統、FreakZ協議棧以及WiFi驅動。
μC/OS-II是一個具有可裁剪性、可剝奪性的實時多任務內核[9],每個任務類似線程一樣,都處于死循環狀態,根據優先級來分時得到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文件主要用來定義操作系統與硬件平臺兼容的一些數據類型和函數。OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()這兩個函數用來保護任務的臨界代碼免于中斷程序的破壞。堆棧設置為從高地址向低地址生長的,OS_STK_GROWTH定義為1U。
os_cpu_c.c中定義了OSInitHookBegin()、OSTaskCreateHook()、OSTaskDelHook()、OSTaskIdleHook()、OSTaskReturnHook()、OSTaskStatHook()、OSTaskStkInit()、OSTaskSwHook()、OSTCBInitHook()、OSTCBInitHook()這些函數,只用修改任務堆棧初始化函數OSTaskStkInit()。
os_cpu_a.asm的多個函數都需要修改,達到修改對應的優先級寄存器地址和中斷控制寄存器地址的目的,如OSStart HighRdy() 運行最高優先級的就緒任務。
μC/OS-II最多可以創建256個任務,每個任務執行具體的應用功能,在智能家居遠程監控系統中,任務分配如表1所列。

表1 任務分配表
3.2 在協調器和終端節點上移植FreakZ協議棧
鑒于無線傳感器網絡ZigBee協議棧產品價格昂貴且代碼封閉[1],本文將云峰物聯科技勘誤后的FreakZ進行二次改寫和添加功能,利用基于IDE集成管理的IAR移植到協調器和終端節點中。FreakZ是一個徹底開源的ZigBee協議,而其自身攜帶的contiki也是個徹底開源的操作系統,contiki短小精悍,非常適合物聯網的智能家居設備。
圖3為FreakZ數據處理流程。智能家居多個FreakZ終端節點將節點數據傳入到tx隊列中,Smarthome_af_tx_handler()函數從tx隊列取出一幀數據傳遞到APS層;若重復表不存在該數據,則通過Smarthome_aps_data_req()從綁定表中取出數據的目的ip地址和端口,經過Smarthome_aps_tx()構造NWK層的數據包并傳遞到NWK層;Smarthome_nwk_data_req()將數據傳遞到Smarthome_nwk_fwd(),執行路由算法,如果目的地址為廣播地址則直接廣播,如果目的地址在路由表中且存在下一條路由,則轉發下一跳,如果目的地不在路由表且允許路由發現,則緩沖信息并開啟路由發現再發送,如果以上三種方式均失敗,則進行樹路由,如果仍失敗則停止轉發,若獲取下一跳,則將智能家居節點信息通過Smarthome_nwk_tx()函數傳遞到MAC層;MAC層調用Smarthome_data_req()、Smarthome_tx_handler()和Smarthome_mac_out()三個函數將數據傳輸到網卡,通過radio傳輸到接收端的協調器[2]。

圖3 FreakZ數據處理流程
FreakZ協調器的MAC層接收到信息發送到接收數據隊列,Smarthome_mac_eventhandler()取出一幀數據并解析報頭,判斷其為命令幀、信標幀、ACK幀還是數據幀,如果是數據幀,則將節點信息傳輸到協調器的NWK層。Smarthome_mac_eventhandler()從NWK層rx隊列中取出一幀數據并解析報頭,此時只有兩種類型的幀,即命令幀和數據幀,命令幀將被解析并路由到相應的命令功能處理程序,數據幀則有目的地被轉發到協調器的APS層。Smarthome_nwk_data_ind()解析由NWK層傳遞來的幀,如果它在重復拒絕表中則丟棄,如果是應答幀,則把應答幀發送到APS應答處理機制進行處理[3],如果是數據幀且需要ACK應答則立刻ACK,之后發送到AF層。Smarthome_af_rx_handler()從rx隊列中取出數據并解析,最后調用相應的接收回調函數,將數據傳輸到斷點,此時數據從智能家居終端節點完全到達協調器。
CC2530移植了contiki,contiki支持8位、16位、32位的幾乎所有處理器類型,支持IAR編輯,支持6lowpan和802.15.4協議[10],是一種無線網絡協議棧的小型操作系統,非常符合智能家居小型低功耗的要求。
3.3 基于FreakZ的視頻監控模塊
本視頻監控模塊負責對智能家居異常(一定時間段)圖像(以圖片方式)的采集、傳輸與處理。本視頻監控模塊主要由S3C2440微處理器和CC2530兩個芯片集成的。視頻監控模塊的架構如圖4所示。

圖4 視頻監控子模塊硬件結構圖
本監控系統的運動圖像檢測原理:當移動物體在規定的時間內(家庭規定的時間段)進入攝像頭監控范圍且攝像頭的當前幀與前一幀的不同像素點點數超過規定的閾值,此時認為出現異常,S3C2440微處理器在存儲器模塊中取出異常的圖片,通過RS232接口傳輸到CC2530,由CC2530終端子模塊運用FreakZ協議棧和網絡通信將異常圖片傳輸到網關內的協調器,再由WiFi模塊傳輸到Internet。監控系統規定:若兩分鐘內圖像連續變化次數超過15次,則監控系統休眠一個小時,一個小時后自動開啟監控。由于基于FreakZ的網絡是短距離低速率的傳輸,所以在視頻監控子節點的S3C2440微處理器需要調用H.264編碼庫對圖片進行壓縮再傳輸,PC端的顯示程序對圖片數據解碼并顯示。
智能家居PC端是由C#編寫,基本功能包括數據收發、數據存儲、數據顯示等。無線路由器與計算機相連,終端節點通過控制器與家電相連,用戶可以從PC端、手機端對家電設備進行遠程控制。運行系統軟件界面如圖5所示。當WiFi設備和協調器設備連接上之后,室內溫度是17.87 ℃,濕度為61.53%,PM2.5為53.66 μg/m3,此時有人進入,熱源為滿格,異常情況圖片顯示區顯示圖片,將電視機、空調、窗簾設置為開啟狀態。
本實驗采用SmartRF Studio 7應用程序測試智能家居的節點與網關之間的信號強度與丟包率,數據如表2所列。
從實驗可以看出,隨著通信距離的增加,節點與網關之間的信號強度會變差,丟包率也會慢慢增加,在無障礙物的情況下,5米以內丟包率為0,10米之后便出現丟包。由于墻體的存在信號強度會變得比較差,丟包率也相對很大。實驗證明本系統收發較好,性能穩定,滿足正常家居的通信需要。

表2 可靠性測試

[1] 申斌.基于物聯網的智能家居設計與實現[J].自動化與儀表,2013,28(2):6-10.
[2] 郭穩濤,何怡剛.智能家居遠程監控系統的研究與設計[J].計算機測量與控制,2011,19(9):2109-2113.
[3] 楊堤.基于物聯網的智能家居控制系統設計與實現[J].電子世界,2012(21):16-17.
[4] 何勉,楊明飛.基于STM32的智能家居網關設計[J].機械工程與自動化,2016(5):78-80.
[5] 張玉,姚凱學,何勇,等.基于S3C6410的智能家居遠程監控系統的設計與實現[J].現代電子技術,2016,39(10):159-161,166.
[6] 洪樹亮.基于STM32F103住宅智能防火防盜報警系統的設計[D].蘭州:蘭州交通大學,2014.
[7] 劉志龍,吳昊.STM32F103ZET6芯片在LED顯示屏控制應用中的探索[J].科技創新與應用,2014(4):30-31.
[8] 尹紀庭,袁佳,焦志曼,等.基于ARM和ZigBee的智能家居控制系統研究與開發[J].計算機測量與控制,2013,21(9):2451-2454.
[9] 楚紅雨,李磊民,黃玉清,等.實時操作系統μC/OS-II在ARM9上移植的實現[J].計算機工程,2005,31(20):226-228.
[10] 張春園,劉興長,張偉偉,等.基于Contiki的無線傳感器網絡平臺設計與實現[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
面向智慧健康服務的物聯網關鍵技術示范應用(黔科合成轉字[2015]5115) 。
TP393;TP273
A
2017-08-11)