李春萍,陳新
(福州大學 物理與信息工程學院,福州 350108)
?
基于TinyOS與嵌入式技術的智能家居控制系統(tǒng)※
李春萍,陳新
(福州大學 物理與信息工程學院,福州 350108)
摘要:通過TinyOS組網(wǎng)技術構建無線傳感網(wǎng),分析智能家居控制系統(tǒng)的功能需求,確定基于Qt和Linux的軟件設計方案,實現(xiàn)小型的智能家居控制系統(tǒng);詳細介紹了硬件平臺的構建和匯聚節(jié)點程序、終端節(jié)點程序以及Qt用戶界面的軟件設計流程。
關鍵詞:TinyOS;Qt;智能家居
引言
社會發(fā)展使得人們對生活質量的要求越來越高,傳統(tǒng)家居模式已經(jīng)不能滿足人們對舒適生活的要求,智能家居系統(tǒng)應運而生。智能家居系統(tǒng)是指綜合使用通信、傳感器及控制技術實現(xiàn)家居系統(tǒng)的人性化、智能化的集成管理系統(tǒng),目的在于創(chuàng)造一個安全、便利、環(huán)保和舒適的生活環(huán)境,使得人們在工作壓力劇增的現(xiàn)代社會能享有更便捷舒適的生活方式[1]。
本文開發(fā)了以AM335X為核心的嵌入式智能家居控制平臺,采用繼電器板、亮度控制板、馬達控制板和智能電表等集成模塊,構建無線傳感網(wǎng)硬件平臺。用戶不僅能夠在嵌入式平臺上實時查看傳感器采集的相關溫濕度信息,進行環(huán)境監(jiān)控,還能通過平臺對電器進行無線控制,實現(xiàn)對電器的管理。
1硬件設計
智能家居控制系統(tǒng)硬件由無線傳感網(wǎng)模塊和嵌入式控制模塊組成。其中無線傳感網(wǎng)模塊由帶有CC2420的無線傳感器節(jié)點和相應的控制電路板智能電表、馬達控制板、亮度調(diào)節(jié)板、繼電器板等構成。硬件框架如圖1所示。

圖1 硬件框架圖
1.1節(jié)點設計

圖2 CC2420外圍電路圖
無線傳感器節(jié)點由傳感器、無線收發(fā)模塊、微處理器組成,其中無線收發(fā)模塊采用TI公司的CC2420芯片。節(jié)點的微處理器采用高性能、低功耗的AVR 8位微控制器ATmega128L,它基于RISC精簡指令結構,具有片內(nèi)128 KB的程序存儲器和4 KB的數(shù)據(jù)儲存器,可以滿足系統(tǒng)數(shù)據(jù)處理的要求[2]。CC2420外圍電路如圖2所示。

圖3 節(jié)點模塊邏輯框圖
傳感器節(jié)點集成了溫度、濕度、照度等多種傳感器,可以采集環(huán)境參數(shù),并通過設置環(huán)境參數(shù)來智能控制各種家電。電器控制部分以亮度控制板為例。亮度控制板利用三端雙向可控硅開關元件控制電流,電流的頻率為60 Hz,頻率分為“+”區(qū)和“-”區(qū),利用節(jié)點模塊獲得兩個區(qū)之間的交叉點,根據(jù)從交叉點開始經(jīng)過多長時間后驅動三端雙向交流開關來控制電流。如果檢測到交叉點就驅動三端雙向交流開關,則燈泡上將流過最大電流;如果不驅動,則不會有電流流過,控制信號由WSN傳感器節(jié)點的TinyOS程序產(chǎn)生。節(jié)點模塊邏輯框圖如圖3所示。
1.2控制器設計
系統(tǒng)控制器采用OK335xD開發(fā)板,其核心板為FET335xD。核心板基于TI公司Sitara系列的ARM處理器AM335X,在設計上采用高集成度的系統(tǒng)模塊形式,集成了容量為512 MB、頻率為800 MHz的DDR3內(nèi)存芯片、容量為256 MB的SLC NAND Flash存儲芯片和TI公司專為AM335X處理器匹配設計的電源管理芯片。另外核心板模塊上還添加了硬件看門狗,使系統(tǒng)運行更穩(wěn)定[3]。開發(fā)板具有豐富的外圍資源,包括3路UART、4路USB 2.0 HOST、1路千兆以太網(wǎng)等,同時還配置7寸TFT LCD,便于用戶交互。控制器系統(tǒng)框圖如圖4所示。匯聚節(jié)點將接收的數(shù)據(jù)通過UART發(fā)送給控制器進行數(shù)據(jù)處理和存儲。控制器將控制信息發(fā)送給匯聚節(jié)點,并轉發(fā)給智能電器模塊,進行家電控制。
2軟件設計
軟件設計包括匯聚節(jié)點程序設計、終端節(jié)點程序設計和控制器Qt界面設計。
2.1軟件開發(fā)平臺
2.1.1TinyOS技術
匯聚節(jié)點和終端節(jié)點采用TinyOS技術進行開發(fā),它是加州大學伯克利分校的David Culler領導的研究小組為無線傳感網(wǎng)絡量身定制的嵌入式操作系統(tǒng),基于NesC語言編程[4]。
TinyOS是基于組件的架構方式,能夠快速實現(xiàn)各種應用,并且采用模塊化設計,程序核心比較小,能夠突破傳感器存儲資源少的限制,使得TinyOS能夠有效地運行在無線傳感器網(wǎng)絡上并執(zhí)行相應的管理工作。其層次結構如同一個網(wǎng)絡協(xié)議,底層硬件負責接收和發(fā)送最原始的數(shù)據(jù)包,綜合硬件層組件負責數(shù)據(jù)編碼、解析和參數(shù)傳遞,上層軟件組件負責數(shù)據(jù)打包、路由選擇和數(shù)據(jù)傳遞[5],其中上層組件包括主組件和應用程序組件。
NesC語言支持組件化編程,它把組件化、模塊化的思想和基于事件驅動的執(zhí)行模型結合起來,通過組織、命名和連接組件形成一個嵌入式網(wǎng)絡系統(tǒng),可以很好地支持TinyOS的并發(fā)運行模式。

圖4 控制器系統(tǒng)框圖
2.1.2Qt庫
控制器設計采用三層體系結構。最底層為Linux操作系統(tǒng),為應用程序提供統(tǒng)一的系統(tǒng)調(diào)用接口來訪問硬件設備,并且提供內(nèi)存管理機制和多任務處理機制。中間層為API接口層,采用qt-extended-opensource-src-4.5.3作為GUI用戶界面設計庫[6]。Qt是一個完整的C++應用程序開發(fā)框架,具有豐富的API接口,而且所提供的API在所有的平臺上都是相同的,可以實現(xiàn)“一次編寫,隨處編譯”,有利于程序的開發(fā)調(diào)試和應用擴展。最上層為應用程序層,針對所需功能,采用Qt作為應用程序框架進行設計。
2.2匯聚節(jié)點程序設計
匯聚節(jié)點在系統(tǒng)中起到溝通終端節(jié)點和控制器的作用,與控制器進行串口通信,與終端節(jié)點進行RF無線通信。匯聚節(jié)點所用到的組件及其模塊關聯(lián)結構如圖5所示。其中SerialActiveMessageC為串行通信組件,具有數(shù)據(jù)發(fā)送相關的AMSend接口和數(shù)據(jù)接收相關的Receive接口等,而ActiveMessageC為RF無線通信組件,提供AMSend、Receive、Packet、AMPacket等大多數(shù)通信接口。

圖5 匯聚節(jié)點程序模塊關聯(lián)結構圖
在TinyOS中,通過串行通信向控制器傳送數(shù)據(jù)的數(shù)據(jù)包格式如下所示:

其中0x7E控制字表示串行通信的開始和結束,0x45表示其后沒有ACK的數(shù)據(jù)類型(如果為0x44則表示要求回應),Payload為有效負載,有效數(shù)據(jù)之后為CRC校驗字段。
控制器向TinyOS傳送數(shù)據(jù)的格式需要變更串行通信格式,插入第3個字節(jié)表示數(shù)據(jù)包在傳送Sequence的編號,新數(shù)據(jù)包取0。
2.3終端節(jié)點程序設計
終端節(jié)點負責采集環(huán)境信息,并控制智能電器。終端節(jié)點的程序流程如圖6所示。

圖6 繼電器終端節(jié)點程序流程圖
首先進行射頻協(xié)議棧初始化主要是對射頻相關寄存器進行設置。初始化步驟為:先復位CC2420,打開晶振振蕩器,穩(wěn)定之后寫入寄存器的值和地址識別碼。部分代碼如下:
CC2420Reset();//復位CC2420
CC2420ExternalOscillator();//開啟晶體振蕩器
CC2420SetShortaddr(TOS_NODE_ID);//設置短地址
CC2420ControlSet();
//設置控制寄存器
其中設置的控制寄存器包括MDMCTRL0L和MDMCTRL0H,打開自動應答和地址識別,IOCFG0=0x7E時設置FIFOP門限至最大值127。
然后采集溫濕度等傳感器信息,緊接著對接收到的TinyOS數(shù)據(jù)包進行解包,分析控制信息,進行電器控制,并對傳感器信息封裝轉發(fā)。
以繼電器板為例,分析有效數(shù)據(jù)包字段信息。
終端節(jié)點接收控制信息數(shù)據(jù)包,經(jīng)過拆包,核心數(shù)據(jù)為4個字段,如下所示:
typedef struct _user_header{
uint8_t id;
uint8_t cmd;
uint8_t sub;
uint8_t length;
}user_header_t;
將ID字段和終端節(jié)點的TOS_NODE_ID進行比較,來判別該終端節(jié)點是否應該響應控制信息。Cmd字段為1,表示請求接收數(shù)據(jù);為2,表示控制電器,這時檢查sub字段,根據(jù)各種sub字段進行電器控制,其中Length字段為設置的定時字段長度。
終端節(jié)點向控制器反饋的傳感器信息如下:
typedef struct _sensor_packet{
user_header_t uh;
sens_data_t sd;
ch0_data_t ch0;
ch1_data_t ch1;
}sensor_packet_t;
其中傳感器數(shù)據(jù)為:
typedef struct _sens_data{
uint16_t photo;//照度
uint16_t temp;//溫度
uint16_t humi;//濕度
uint16_t infrared;//紅外線
uint16_t battery;//電池
}sens_data_t;
控制器接收到反饋信息,進行處理并顯示。
2.4Qt軟件設計
2.4.1交互界面設計
Qt GUI的基類有3種,QWidget、QDialog、QMain Window,本文采用QMain Window作為基類設計登陸界面。QMain Window類提供具有菜單條、錨接窗口和狀態(tài)條的主應用程序窗口,采用菜單欄的按鈕切換智能家居控制窗口,智能家居控制窗口以QDialog為基類進行設計,應用到的控件包括Lable控件、PushButton控件、TextBrowser控件等。
2.4.2信號-槽機制
信號-槽機制是Qt的核心機制,通過connect()進行關聯(lián),應用于對象之間的通信。當對象改變其狀態(tài)時就發(fā)射信號,無需理會誰將接收該信號。而槽用于接收信號,但其為普通的對象成員函數(shù),這就實現(xiàn)了真正意義上的信息封裝,確保對象被當做真正的軟件組件來使用。
2.4.3串口數(shù)據(jù)通信編程
系統(tǒng)通過串口連接匯聚節(jié)點并控制,因此Qt設計涉及串口通信機制。在Qt類庫中并沒有特定串口基礎類,設計中采用第三方的QextSerialPort類,它是一個跨平臺的串口類,可以很方便地在Qt中對串口進行讀寫操作。在Linux平臺下,使用QextSerialPort類時需要添加qextserialbase.h、qextserialbase.cpp、posix_qextserialport.h和posix_qextserialport.cpp四個文件,讀取串口數(shù)據(jù)時采用輪詢的方式,在打開串口設備的過程中需要進行相關配置。配置程序略——編者注。
通過輸入文本控件手動配置參數(shù),打開串口之后便可以通過readALL()和write()函數(shù)進行讀/寫數(shù)據(jù)操作。
3測試結果
首先在OK335xD上移植Linux操作系統(tǒng),并掛載
NFS根文件系統(tǒng),然后移植Qt庫,并安裝交叉編譯環(huán)境,將編譯成功的Qt程序燒寫到開發(fā)板上,最后連接好硬件,啟動應用程序,進行測試。在控制界面中,用鼠標按下按鍵,就可以打開智能電器并獲取當前的環(huán)境參數(shù)。測試結果略——編者注。
結語
在實驗室環(huán)境下,通過對人們生活需求的研究,應用TinyOS技術和Qt編程技術實現(xiàn)了一個小型的智能家居控制系統(tǒng)。利用傳感器實時采集環(huán)境信息,通過匯聚節(jié)點轉發(fā)給控制器進行家電控制,應用Qt編程技術進行用戶界面開發(fā),具有優(yōu)良的跨平臺特性和豐富的API接口,可以實現(xiàn)美觀、人性化的交互界面設計。

參考文獻
[1] 李菲.智能家居技術淺談[J] .科技致富向導,2015(5):180.
[2] 代忠,樊曉光,萬明,等.基于射頻芯片CC2420的ZigBee無線通信節(jié)點設計[J] .傳感器世界,2006(5):41-44.
[3] 梁永恩,萬世明.基于S3C6410的智能家居控制系統(tǒng)的設計[J] .計算機與數(shù)字工程,2014(6):1104-1107.
[4] 王亞平,張寶華,董麗榮.基于WSN與TinyOS技術的智能溫室監(jiān)控系統(tǒng)設計[J] .江蘇農(nóng)業(yè)科學,2014(8):408-410,418.
[5] 劉爽,吳蒙.基于IEEE 802.15.4c TinyOS平臺的移植研究[J] .計算機技術與發(fā)展,2014(11):114-117.
[6] 楊晶,黃俊,吳福海.基于Qt的智能家居管理軟件設計與實現(xiàn)[J] .電視技術,2015(4):101-104.
李春萍(碩士研究生),主要研究方向為嵌入式應用、通信工程;陳新(教授),主要研究方向為信號與信息處理、圖像處理、模式識別、生物醫(yī)學工程。
陳君毅、林欽堅、賓顯文(硬件研發(fā)工程師),主要從事嵌入式硬件平臺研發(fā);陳偉(中級工程師),研究方向為嵌入式系統(tǒng)硬件電路設計、嵌入式系統(tǒng)解決方案等。
Intelligent Home Control System Based on TinyOS and Embedded Technology※
Li Chunping,Chen Xin
(College of Physics and Information Engineering,Fuzhou University,Fuzhou 350108,China)
Abstract:In the paper,TinyOS network technology is used to construct wireless sensor network,and the need of intelligent home control systems is analyzed.Then a small intelligent home control system is designed using the software scheme based on Qt and Linux.The construction of hardware platform,the programs of sink node and terminal node,and the software design process of Qt user interface are introduced.
Key words:TinyOS;Qt;intelligent home
收稿日期:(責任編輯:薛士然2015-07-09) (責任編輯:薛士然2015-08-06)
中圖分類號:TP27
文獻標識碼:A