摘要:闡述了基于M2M 技術(shù)的智能家居系統(tǒng)和數(shù)字顯示終端的設(shè)計(jì)原理與方案,介紹了數(shù)字顯示終端的硬件實(shí)現(xiàn)和軟件實(shí)現(xiàn),重點(diǎn)解決了數(shù)字顯示模塊的組網(wǎng)問題。
無線傳感器網(wǎng)絡(luò)、嵌入式處理技術(shù)、無線網(wǎng)絡(luò)技術(shù)和無線控制技術(shù)的發(fā)展, 給智能家居領(lǐng)域的發(fā)展帶來了實(shí)際可行的應(yīng)用成果。同時(shí), M2M 技術(shù)的應(yīng)用使智能家居系統(tǒng)的設(shè)計(jì)更加人性化。
目前, 國(guó)內(nèi)外很多公司的智能家居系統(tǒng)已經(jīng)實(shí)現(xiàn)穩(wěn)定可靠的室內(nèi)電氣設(shè)備的控制和各種計(jì)量設(shè)備(煤氣、水和電) 的無線抄表, 但許多公司的智能家居系統(tǒng)還缺乏一種可以迅捷地進(jìn)行室內(nèi)電氣設(shè)備工作狀態(tài)檢測(cè)和控制以及可供用戶隨時(shí)查詢、記錄抄表數(shù)據(jù)的手持智能顯示終端。筆者設(shè)計(jì)的智能家居系統(tǒng)數(shù)字顯示終端是一個(gè)基于ZigBee 技術(shù)和USB OTG 技術(shù)的用戶和智能家居系統(tǒng)互動(dòng)的媒介,可有效地幫助用戶實(shí)現(xiàn)對(duì)智能家居系統(tǒng)的監(jiān)測(cè)和抄表數(shù)據(jù)查詢。
1 數(shù)字顯示終端
數(shù)字顯示終端是基于M2M 技術(shù)的智能家居系統(tǒng)唯一最終面向用戶的部分。采用ZigBee 技術(shù)和USB OTG 技術(shù)完成對(duì)無線設(shè)備的監(jiān)控和抄表數(shù)據(jù)的查詢、記錄。
1.1 基于M2M 技術(shù)的智能家居系統(tǒng)
基于M2M 技術(shù)的智能家居系統(tǒng)主要通過Zig-Bee 技術(shù)與相關(guān)的無線設(shè)備組建無線局域網(wǎng), 采集無線傳感器的數(shù)據(jù)和輸出控制信號(hào), 并由塢站將采集到得數(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ù)器, 并主要使用在居家能源管理和居家自動(dòng)化兩個(gè)方面。
1) 居家能源管理。塢站將管理安裝在家庭中的幾個(gè)低功耗無線傳感器(煤氣、水和電)。所有塢站從無線傳感器采集到的信息在對(duì)接模式時(shí)被傳送給數(shù)字顯示終端。數(shù)字顯示終端將使用文字、圖形、圖標(biāo)和圖片把這些信息顯示出來。
2) 居家自動(dòng)化。這種情況類似于居家能源管理, 只是其使用的無線傳感器可以管理輸入輸出信號(hào)以控制室內(nèi)電氣設(shè)備, 如門窗、室內(nèi)照明等設(shè)備。
本套智能家居系統(tǒng)主要將M2M 技術(shù)融合在網(wǎng)關(guān), 而最終面向用戶的只是數(shù)字顯示終端(見圖1)。
1.2 數(shù)字顯示終端的設(shè)計(jì)原理與方案
數(shù)字顯示終端是智能家居系統(tǒng)與用戶互動(dòng)的關(guān)鍵部分, 通過ZigBee 技術(shù)與安裝在室內(nèi)的低功耗無線設(shè)備建立無線局域網(wǎng), 監(jiān)控?zé)o線設(shè)備的工作狀態(tài), 并通過USB OTG 高速數(shù)據(jù)傳輸接口與塢站連接, 將塢站采集到的抄表數(shù)據(jù)以圖、表或文字的形式顯示出來, 同時(shí)將檢測(cè)到的室內(nèi)低功耗無線設(shè)備的工作狀態(tài)發(fā)送到服務(wù)器, 供用戶遠(yuǎn)程登錄服務(wù)器監(jiān)測(cè)和控制低功耗無線設(shè)備。數(shù)字顯示終端工作在兩種模式下, 一種是對(duì)接模式進(jìn)行, 即通過USBOTG 高速數(shù)據(jù)傳輸接口和塢站連接進(jìn)行數(shù)據(jù)交換;另一種是移動(dòng)模式, 即不與塢站連接的工作狀態(tài),這時(shí)它只能檢測(cè)和控制相關(guān)低功耗無線設(shè)備。USBOTG 接口不僅可以傳輸數(shù)據(jù), 當(dāng)數(shù)字顯示終端與塢站對(duì)接時(shí), 可以通過USB OTG 接口給數(shù)字顯示終端的蓄電池充電。
數(shù)字顯示終端主要由無線模塊、顯示模塊、數(shù)據(jù)存儲(chǔ)模塊、數(shù)據(jù)傳輸接口、電源部分和用戶導(dǎo)航鍵6 部分組成(見圖2)。
2 數(shù)字顯示終端的實(shí)現(xiàn)
數(shù)字顯示終端處理器選用LPC1758.LPC1758是一款基于ARM Cortex-M3 內(nèi)核的處理器, 集成了USB2.0 功能, 包括USB 主機(jī)、USB 從機(jī)和USBOTG, 擁有512 KB 的Flash 和64 KB 的SRAM.無線模塊選用的是ZICM2410P0-1 模塊。顯示模塊選用DMT32240T035_01WN 模塊。數(shù)據(jù)存儲(chǔ)模塊選用4 GB 的FLASH 存儲(chǔ)器, 也可升級(jí)為16 GB 的存儲(chǔ)空間。因處理器已集成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 實(shí)現(xiàn)。
2.1 數(shù)字顯示終端的硬件實(shí)現(xiàn)
數(shù)字顯示終端(見圖2) 由6 部分組成, 其中主要是無線模塊和數(shù)據(jù)傳輸接口的實(shí)現(xiàn)。
1) 無線模塊的實(shí)現(xiàn)。無線模塊是基于ZiGBee技術(shù)的, 該技術(shù)是一種在900 MHz 及2.4 GHz 頻段, 近距離、低復(fù)雜度、低功耗、低數(shù)據(jù)速率、低成本的雙向無線通信技術(shù)。它由ZICM2410P0-1 芯片和外圍電路組成(包括上電復(fù)位電路和工作指示電路)。
ZICM2410 芯片包括多個(gè)通用I/O 引腳、定時(shí)器、UART 和SPI 等, 而且還有硬件語(yǔ)音編解碼器,獨(dú)有的IIS/SPI/UART 音頻輸入輸出接口, 擴(kuò)展出500 KB/s 或1 MB/s 的無線傳輸速率, 通過PCB 走線構(gòu)成天線, 103 dB 的射頻鏈路預(yù)算, 1.5 V 時(shí)RX靈敏度為-97 dB/m, 1.5 V 時(shí)射頻TX 功率為+6 dB/m.在外圍電路的設(shè)計(jì)中, 通過ZICM2410 的UART與LPC1758 處理器連接, 為了保證程序的穩(wěn)定性和射頻性能, 采用了復(fù)位芯片CAT809E, 無線模塊采用F 型天線拓?fù)浣Y(jié)構(gòu), 支持全向輻射模式。為了保證天線的性能發(fā)揮, 數(shù)字顯示終端的主板上要有足夠多的接地面, 并且不要在模塊的天線下方布線,確保PCB 走線和其他元件遠(yuǎn)離天線。
2) 數(shù)據(jù)傳輸接口的實(shí)現(xiàn)。數(shù)據(jù)傳輸接口的電路主要是由處理器芯片LPC1758 和USB 收發(fā)器芯片ISP1302 組成, 接口插頭選用Mini-A 插頭。處理器LPC1758 集成了USB2.0 功能, 支持OT 模式, 數(shù)據(jù)傳輸接口電路。
LPC1758在設(shè)計(jì)USB OTG接口電路, 需要外接1個(gè)USB收發(fā)器ISP1302,LPC1758和ISP1302通過I2C總線連接通信,LPC1758內(nèi)部的收發(fā)器負(fù)責(zé)控制USB信號(hào)切換, 而ISP1302 負(fù)責(zé)實(shí)現(xiàn)OTG 功能。此時(shí),LPC1758內(nèi)部的收發(fā)器在VP/VM模式下工作。
3) 其他部分的硬件實(shí)現(xiàn)。數(shù)字顯示終端其他部分還包括顯示模塊、數(shù)據(jù)存儲(chǔ)模塊、電源部分和用戶導(dǎo)航鍵。DMT32240T035_01WN 顯示模塊集成的功能非常齊全, 它通過RS232 直接和處理器LPC1758 連接, 但在電源的處理上要確保最終接到顯示模塊上的電壓不低于5 V.數(shù)據(jù)存儲(chǔ)模塊選用KFW4G16Q2M-DEB6 NAND FLASH.用戶導(dǎo)航鍵采用普通薄膜式按鍵。電源部分選型比較重要, 作為數(shù)字顯示終端的能量來源, 不僅要滿足顯示模塊的電壓5~6 V, 電流不低于130 mA, 而且能接受USB接口充電, 電池容量不低于600 mA/h.
2.2 數(shù)字顯示終端的軟件實(shí)現(xiàn)
數(shù)字顯示終端的操作系統(tǒng)選用μCOS-II 實(shí)時(shí)操作系統(tǒng)。它是一種簡(jiǎn)單高效、源代碼公開的實(shí)時(shí)嵌入式操作系統(tǒng), 具有良好的擴(kuò)展性和可移植性, 被廣泛應(yīng)用到各種嵌入式處理器上。
μC/OSII 的核心源代碼不用修改, 移植中需要修改的是涉及處理器的OS_CPU_C.C, OS_CPU_A.
ASM, OS_CPU.H 三個(gè)文件。
1) OS_CPU.H 文件包含μC/OSII 所需要的常量、宏和自定義類型等。
OS_CPU.H 定義的數(shù)據(jù)類型。在這次移植中μC/OSII 重新定義了數(shù)據(jù)類型。
typedef 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.
不同處理器的堆棧增長(zhǎng)方向是不一樣的,LPC1758 的堆棧是從高地址往低地址增長(zhǎng)的,OS_STK_GROWTH設(shè)為1, 程序?yàn)椋?/p>
#define OS_STK_GROWTH 1.
2) OS_CPU_C.C文件。在OS_CPU_C.C定義的C函數(shù)中,OSTaskStkInit()函數(shù)與處理器相關(guān),所以移植代碼需要修改該函數(shù)。其程序?yàn)椋ǔ跏蓟蝿?wù)時(shí)調(diào)用此函數(shù)初始化任務(wù)使用的堆棧)。
OS_STK * OSTaskStkInit (void (*task) (void
*p_arg),void *p_arg,OS_STK *ptos,INT16U opt)
{
OS_STK *stk;
?。╲oid) 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, 輸入參數(shù)p_arg 模擬任務(wù)進(jìn)程, 保存其他寄存器到堆棧
*(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 個(gè)簡(jiǎn)單的匯編語(yǔ)言函數(shù)。
OS_ENTER _CRITICAL (): 關(guān)閉中斷源;
OS_EXIT_CRITICAL (): 重開中斷源;
OSStartHighRdy (): 運(yùn)行當(dāng)前優(yōu)先級(jí)最高的任務(wù);
OSCtxSw (): 一個(gè)任務(wù)放棄CPU 使用權(quán)時(shí)調(diào)用;
OSIntCtxSw (): 在退出中斷服務(wù)函數(shù)OSIntExit() 中被調(diào)用, 實(shí)現(xiàn)中斷級(jí)任務(wù)切換。
LPC1758使用OSPendSV()函數(shù)快捷地進(jìn)行上下文切換。OSPendSV()的C語(yǔ)言表述程序?yàn)镺SPendSV: 關(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)板的實(shí)際情況編寫Target 目錄中的3 個(gè)文件, μC/OSII 就可以運(yùn)行在處理器上了。
3 重點(diǎn)解決數(shù)字顯示模塊的組網(wǎng)問題
1) 角色介紹。ZigBee 標(biāo)準(zhǔn)網(wǎng)絡(luò)定義了3 種角色, 分別是協(xié)作員、路由和端節(jié)點(diǎn)。
協(xié)作員(coordinator) 負(fù)責(zé)啟動(dòng)整個(gè)網(wǎng)絡(luò), 它是網(wǎng)絡(luò)的第一個(gè)設(shè)備, 協(xié)作員選擇一個(gè)信道和一個(gè)網(wǎng)絡(luò)ID, 隨后就可以啟動(dòng)網(wǎng)絡(luò)。
路由(router) 的功能是允許其他設(shè)備加入網(wǎng)絡(luò), 協(xié)助網(wǎng)絡(luò)中其他終端設(shè)備通信。
端節(jié)點(diǎn)(end device) 沒有特定的維持網(wǎng)絡(luò)結(jié)構(gòu)的責(zé)任, 它可以選擇睡眠或喚醒兩種工作狀態(tài), 功耗小, 可使用電池供電。
2) 網(wǎng)絡(luò)拓?fù)?。ZigBee 網(wǎng)絡(luò)有星型網(wǎng)、簇型網(wǎng)和網(wǎng)狀網(wǎng)3 種組網(wǎng)方式(見圖3)。如果直接使用IEEE 802.15.4 底層的還有點(diǎn)對(duì)點(diǎn)模式和點(diǎn)對(duì)多點(diǎn)模式兩種組網(wǎng)方式(見圖4)。
智能家居系統(tǒng)綜合運(yùn)用了星型網(wǎng)和點(diǎn)對(duì)多點(diǎn)模式的組網(wǎng)方式。由塢站作為路由, 負(fù)責(zé)管理整個(gè)家居系統(tǒng)構(gòu)建的ZigBee 網(wǎng)絡(luò), 其他低功耗無線傳感器、無線控制設(shè)備和數(shù)字顯示終端作為端節(jié)點(diǎn)。其中低功耗無線傳感器、數(shù)字顯示終端與塢站采用星型網(wǎng)組網(wǎng)方式, 數(shù)字顯示終端和無線控制設(shè)備采用點(diǎn)對(duì)多模式(見圖5)。
4 結(jié)束語(yǔ)
數(shù)字顯示終端通過采用ZigBee 技術(shù)和USB OTG技術(shù), 實(shí)現(xiàn)了室內(nèi)低功耗無線設(shè)備的穩(wěn)定監(jiān)控和數(shù)據(jù)采集及存儲(chǔ), 并以友好的用戶界面和便攜性能改進(jìn)了智能家居系統(tǒng)和用戶的交流方式, 使用戶能更加方便地監(jiān)控到家用低功耗無線設(shè)備的工作狀態(tài)和查詢抄表數(shù)據(jù)。
評(píng)論
查看更多