來源:網(wǎng)絡(luò) 2012-07-24 關(guān)鍵詞:自動化 M2M 技術(shù) 智能家居 數(shù)字顯示終端  摘要:闡述了基于M2M 技術(shù)的智能家居系統(tǒng)和數(shù)字顯示終端的設(shè)計原理與方案,介紹了數(shù)字顯示終端的硬件實現(xiàn)和軟件實現(xiàn),重點解決了數(shù)字顯示模塊的組網(wǎng)問題?! o線傳感器網(wǎng)絡(luò)、嵌入式處理技術(shù)、無線網(wǎng)絡(luò)技術(shù)和無線控制技術(shù)的發(fā)展, 給智能家居領(lǐng)域的發(fā)展帶來了實際可行的應(yīng)用成果。同時, M2M 技術(shù)的應(yīng)用使智能家居系統(tǒng)的設(shè)計更加人性化?! ∧壳埃?國內(nèi)外很多公司的智能家居系統(tǒng)已經(jīng)實現(xiàn)穩(wěn)定可靠的室內(nèi)電氣設(shè)備的控制和各種計量設(shè)備(煤氣、水和電) 的無線抄表, 但許多公司的智能家居系統(tǒng)還缺乏一種可以迅捷地進行室內(nèi)電氣設(shè)備工作狀態(tài)檢測和控制以及可供用戶隨時查詢、記錄抄表數(shù)據(jù)的手持智能顯示終端。筆者設(shè)計的智能家居系統(tǒng)數(shù)字顯示終端是一個基于ZigBee 技術(shù)和USB OTG 技術(shù)的用戶和智能家居系統(tǒng)互動的媒介,可有效地幫助用戶實現(xiàn)對智能家居系統(tǒng)的監(jiān)測和抄表數(shù)據(jù)查詢。  1 數(shù)字顯示終端  數(shù)字顯示終端是基于M2M 技術(shù)的智能家居系統(tǒng)唯一最終面向用戶的部分。采用ZigBee 技術(shù)和USB OTG 技術(shù)完成對無線設(shè)備的監(jiān)控和抄表數(shù)據(jù)的查詢、記錄?! ?.1 基于M2M 技術(shù)的智能家居系統(tǒng)  基于M2M 技術(shù)的智能家居系統(tǒng)主要通過Zig-Bee 技術(shù)與相關(guān)的無線設(shè)備組建無線局域網(wǎng), 采集無線傳感器的數(shù)據(jù)和輸出控制信號, 并由塢站將采集到得數(shù)據(jù)匯總封裝后通過M2M網(wǎng)關(guān)和Internet傳送到提供相關(guān)家居服務(wù)的公司的服務(wù)器上。它主要由5部分組成: 低功耗數(shù)據(jù)采集系統(tǒng)、數(shù)據(jù)匯總傳輸系統(tǒng)(又稱塢站), 數(shù)字顯示終端, M2M網(wǎng)關(guān)和服務(wù)器, 并主要使用在居家能源管理和居家自動化兩個方面。  1) 居家能源管理。塢站將管理安裝在家庭中的幾個低功耗無線傳感器(煤氣、水和電)。所有塢站從無線傳感器采集到的信息在對接模式時被傳送給數(shù)字顯示終端。數(shù)字顯示終端將使用文字、圖形、圖標(biāo)和圖片把這些信息顯示出來?! ?) 居家自動化。這種情況類似于居家能源管理, 只是其使用的無線傳感器可以管理輸入輸出信號以控制室內(nèi)電氣設(shè)備, 如門窗、室內(nèi)照明等設(shè)備。  本套智能家居系統(tǒng)主要將M2M 技術(shù)融合在網(wǎng)關(guān), 而最終面向用戶的只是數(shù)字顯示終端(見圖1)。  

  1.2 數(shù)字顯示終端的設(shè)計原理與方案  數(shù)字顯示終端是智能家居系統(tǒng)與用戶互動的關(guān)鍵部分, 通過ZigBee 技術(shù)與安裝在室內(nèi)的低功耗無線設(shè)備建立無線局域網(wǎng), 監(jiān)控?zé)o線設(shè)備的工作狀態(tài), 并通過USB OTG 高速數(shù)據(jù)傳輸接口與塢站連接, 將塢站采集到的抄表數(shù)據(jù)以圖、表或文字的形式顯示出來, 同時將檢測到的室內(nèi)低功耗無線設(shè)備的工作狀態(tài)發(fā)送到服務(wù)器, 供用戶遠(yuǎn)程登錄服務(wù)器監(jiān)測和控制低功耗無線設(shè)備。數(shù)字顯示終端工作在兩種模式下, 一種是對接模式進行, 即通過USBOTG 高速數(shù)據(jù)傳輸接口和塢站連接進行數(shù)據(jù)交換;另一種是移動模式, 即不與塢站連接的工作狀態(tài),這時它只能檢測和控制相關(guān)低功耗無線設(shè)備。USBOTG 接口不僅可以傳輸數(shù)據(jù), 當(dāng)數(shù)字顯示終端與塢站對接時, 可以通過USB OTG 接口給數(shù)字顯示終端的蓄電池充電?! ?shù)字顯示終端主要由無線模塊、顯示模塊、數(shù)據(jù)存儲模塊、數(shù)據(jù)傳輸接口、電源部分和用戶導(dǎo)航鍵6 部分組成(見圖2)?! ?center>
  2 數(shù)字顯示終端的實現(xiàn)  數(shù)字顯示終端處理器選用LPC1758.LPC1758是一款基于ARM Cortex-M3 內(nèi)核的處理器, 集成了USB2.0 功能, 包括USB 主機、USB 從機和USBOTG, 擁有512 KB 的Flash 和64 KB 的SRAM.無線模塊選用的是ZICM2410P0-1 模塊。顯示模塊選用DMT32240T035_01WN 模塊。數(shù)據(jù)存儲模塊選用4 GB 的FLASH 存儲器, 也可升級為16 GB 的存儲空間。因處理器已集成OTG 功能, 所以由處理器和USB 收發(fā)器芯片ISP1302 共同組成數(shù)據(jù)傳輸結(jié)論。  導(dǎo)航鍵具有上下左右導(dǎo)航和選擇鍵。電源部分選用可通過USB 接口充電的蓄電池(5 V~500 mA), 電池容量最小為600 mA/h, 全功能模式供電24 h,休眠模式供電240 h.數(shù)字顯示終端的軟件部分是由μCOS-II 實現(xiàn)?! ?.1 數(shù)字顯示終端的硬件實現(xiàn)  數(shù)字顯示終端(見圖2) 由6 部分組成, 其中主要是無線模塊和數(shù)據(jù)傳輸接口的實現(xiàn)。  1) 無線模塊的實現(xiàn)。無線模塊是基于ZiGBee技術(shù)的, 該技術(shù)是一種在900 MHz 及2.4 GHz 頻段, 近距離、低復(fù)雜度、低功耗、低數(shù)據(jù)速率、低成本的雙向無線通信技術(shù)。它由ZICM2410P0-1 芯片和外圍電路組成(包括上電復(fù)位電路和工作指示電路)。  ZICM2410 芯片包括多個通用I/O 引腳、定時器、UART 和SPI 等, 而且還有硬件語音編解碼器,獨有的IIS/SPI/UART 音頻輸入輸出接口, 擴展出500 KB/s 或1 MB/s 的無線傳輸速率, 通過PCB 走線構(gòu)成天線, 103 dB 的射頻鏈路預(yù)算, 1.5 V 時RX靈敏度為-97 dB/m, 1.5 V 時射頻TX 功率為+6 dB/m.在外圍電路的設(shè)計中, 通過ZICM2410 的UART與LPC1758 處理器連接, 為了保證程序的穩(wěn)定性和射頻性能, 采用了復(fù)位芯片CAT809E, 無線模塊采用F 型天線拓?fù)浣Y(jié)構(gòu), 支持全向輻射模式。為了保證天線的性能發(fā)揮, 數(shù)字顯示終端的主板上要有足夠多的接地面, 并且不要在模塊的天線下方布線,確保PCB 走線和其他元件遠(yuǎn)離天線?! ?) 數(shù)據(jù)傳輸接口的實現(xiàn)。數(shù)據(jù)傳輸接口的電路主要是由處理器芯片LPC1758 和USB 收發(fā)器芯片ISP1302 組成, 接口插頭選用Mini-A 插頭。處理器LPC1758 集成了USB2.0 功能, 支持OT 模式, 數(shù)據(jù)傳輸接口電路?! PC1758在設(shè)計USB OTG接口電路, 需要外接1個USB收發(fā)器ISP1302,LPC1758和ISP1302通過I2C總線連接通信,LPC1758內(nèi)部的收發(fā)器負(fù)責(zé)控制USB信號切換, 而ISP1302 負(fù)責(zé)實現(xiàn)OTG 功能。此時,LPC1758內(nèi)部的收發(fā)器在VP/VM模式下工作?! ?) 其他部分的硬件實現(xiàn)。數(shù)字顯示終端其他部分還包括顯示模塊、數(shù)據(jù)存儲模塊、電源部分和用戶導(dǎo)航鍵。DMT32240T035_01WN 顯示模塊集成的功能非常齊全, 它通過RS232 直接和處理器LPC1758 連接, 但在電源的處理上要確保最終接到顯示模塊上的電壓不低于5 V.數(shù)據(jù)存儲模塊選用KFW4G16Q2M-DEB6 NAND FLASH.用戶導(dǎo)航鍵采用普通薄膜式按鍵。電源部分選型比較重要, 作為數(shù)字顯示終端的能量來源, 不僅要滿足顯示模塊的電壓5~6 V, 電流不低于130 mA, 而且能接受USB接口充電, 電池容量不低于600 mA/h.  2.2 數(shù)字顯示終端的軟件實現(xiàn)  數(shù)字顯示終端的操作系統(tǒng)選用μCOS-II 實時操作系統(tǒng)。它是一種簡單高效、源代碼公開的實時嵌入式操作系統(tǒng), 具有良好的擴展性和可移植性, 被廣泛應(yīng)用到各種嵌入式處理器上?! ˇ藽/OSII 的核心源代碼不用修改, 移植中需要修改的是涉及處理器的OS_CPU_C.C, OS_CPU_A.  ASM, OS_CPU.H 三個文件?! ?) OS_CPU.H 文件包含μC/OSII 所需要的常量、宏和自定義類型等?! S_CPU.H 定義的數(shù)據(jù)類型。在這次移植中μC/OSII 重新定義了數(shù)據(jù)類型?! ypedef unsigned char BOOLEAN;  typedef unsigned char INT8U;  typedef signed char INT8S;  typedef unsigned short INT16U;  typedef signed short INT16S;  typedef unsigned int INT32U;  typedef signed int INT32S;  typedef float FP32;  typedef double FP64;  typedef unsigned int OS_STK;  typedef unsigned int OS_CPU_SR.  不同處理器的堆棧增長方向是不一樣的,LPC1758 的堆棧是從高地址往低地址增長的,OS_STK_GROWTH設(shè)為1, 程序為:  #define OS_STK_GROWTH 1.  2) OS_CPU_C.C文件。在OS_CPU_C.C定義的C函數(shù)中,OSTaskStkInit()函數(shù)與處理器相關(guān),所以移植代碼需要修改該函數(shù)。其程序為(初始化任務(wù)時調(diào)用此函數(shù)初始化任務(wù)使用的堆棧)。  OS_STK * OSTaskStkInit (void (*task) (void  *p_arg),void *p_arg,OS_STK *ptos,INT16U opt)  {  OS_STK *stk;  (void) opt; //防止編譯警告  stk=ptos; //裝載棧頂指針, 即堆棧數(shù)組最后的地址模擬中斷發(fā)生的堆棧情況  *(stk)=(INT32U)0x01000000L; //xPSR  *(stk)=(INT32U)task; //PC, 任務(wù)入口  *(stk)=(INT32U)0xFFFFFFFEL; //R14(LR)  *(stk)=(INT32U)0x12121212L; //R12  *(stk)=(INT32U)0x03030303L; //R3  *(stk)=(INT32U)0x02020202L; //R2  *(stk)=(INT32U)0x01010101L; //R1  * (stk) =(INT32U)p_arg; //R0, 輸入?yún)?shù)p_arg 模擬任務(wù)進程, 保存其他寄存器到堆?! ?(stk)=(INT32U)0x11111111L; //R11  *(stk)=(INT32U)0x10101010L; //R10  *(stk)=(INT32U)0x09090909L; //R9  *(stk)=(INT32U)0x08080808L; //R8  *(stk)=(INT32U)0x07070707L; //R7  *(stk)=(INT32U)0x06060606L; //R6  *(stk)=(INT32U)0x05050505L; //R5  *(stk)=(INT32U)0x04040404L; /R4  return(stk);  }  3) OS_CPU_A.ASM 文件。μC/OSII 的移植需要編寫5 個簡單的匯編語言函數(shù)。  OS_ENTER _CRITICAL (): 關(guān)閉中斷源;  OS_EXIT_CRITICAL (): 重開中斷源;  OSStartHighRdy (): 運行當(dāng)前優(yōu)先級最高的任務(wù);  OSCtxSw (): 一個任務(wù)放棄CPU 使用權(quán)時調(diào)用;  OSIntCtxSw (): 在退出中斷服務(wù)函數(shù)OSIntExit() 中被調(diào)用, 實現(xiàn)中斷級任務(wù)切換?! PC1758使用OSPendSV()函數(shù)快捷地進行上下文切換。OSPendSV()的C語言表述程序為OSPendSV: 關(guān)中斷;  if (PSP ! =NULL)  {  //保存R4~R11 到任務(wù)堆棧SP_process;  OSTCBCur》OSTCBStkPtr = SP_process;  }  OSTaskSwHook ();  OSPrioCur = OSPrioHighRdy;  OSTCBCur = OSTCBHighRdy;  PSP = OSTCBHighRdy》OSTCBStkPtr;  //從新任務(wù)堆棧中恢復(fù)R4~R11;  /恢復(fù)中斷;  //異常返回;  完成上述工作后, 只要再根據(jù)目標(biāo)板的實際情況編寫Target 目錄中的3 個文件, μC/OSII 就可以運行在處理器上了?! ? 重點解決數(shù)字顯示模塊的組網(wǎng)問題  1) 角色介紹。ZigBee 標(biāo)準(zhǔn)網(wǎng)絡(luò)定義了3 種角色, 分別是協(xié)作員、路由和端節(jié)點?! f(xié)作員(coordinator) 負(fù)責(zé)啟動整個網(wǎng)絡(luò), 它是網(wǎng)絡(luò)的第一個設(shè)備, 協(xié)作員選擇一個信道和一個網(wǎng)絡(luò)ID, 隨后就可以啟動網(wǎng)絡(luò)。  路由(router) 的功能是允許其他設(shè)備加入網(wǎng)絡(luò), 協(xié)助網(wǎng)絡(luò)中其他終端設(shè)備通信?! 《斯?jié)點(end device) 沒有特定的維持網(wǎng)絡(luò)結(jié)構(gòu)的責(zé)任, 它可以選擇睡眠或喚醒兩種工作狀態(tài), 功耗小, 可使用電池供電?! ?) 網(wǎng)絡(luò)拓?fù)?。ZigBee 網(wǎng)絡(luò)有星型網(wǎng)、簇型網(wǎng)和網(wǎng)狀網(wǎng)3 種組網(wǎng)方式(見圖3)。如果直接使用IEEE 802.15.4 底層的還有點對點模式和點對多點模式兩種組網(wǎng)方式(見圖4)?! ?center>
  智能家居系統(tǒng)綜合運用了星型網(wǎng)和點對多點模式的組網(wǎng)方式。由塢站作為路由, 負(fù)責(zé)管理整個家居系統(tǒng)構(gòu)建的ZigBee 網(wǎng)絡(luò), 其他低功耗無線傳感器、無線控制設(shè)備和數(shù)字顯示終端作為端節(jié)點。其中低功耗無線傳感器、數(shù)字顯示終端與塢站采用星型網(wǎng)組網(wǎng)方式, 數(shù)字顯示終端和無線控制設(shè)備采用點對多模式(見圖5)?! ?center>
  4 結(jié)束語  數(shù)字顯示終端通過采用ZigBee 技術(shù)和USB OTG技術(shù), 實現(xiàn)了室內(nèi)低功耗無線設(shè)備的穩(wěn)定監(jiān)控和數(shù)據(jù)采集及存儲, 并以友好的用戶界面和便攜性能改進了智能家居系統(tǒng)和用戶的交流方式, 使用戶能更加方便地監(jiān)控到家用低功耗無線設(shè)備的工作狀態(tài)和查詢抄表數(shù)據(jù)。