李春萍,陳新
(福州大學(xué) 物理與信息工程學(xué)院,福州 350108)
?
基于TinyOS與嵌入式技術(shù)的智能家居控制系統(tǒng)※
李春萍,陳新
(福州大學(xué) 物理與信息工程學(xué)院,福州 350108)
摘要:通過TinyOS組網(wǎng)技術(shù)構(gòu)建無(wú)線傳感網(wǎng),分析智能家居控制系統(tǒng)的功能需求,確定基于Qt和Linux的軟件設(shè)計(jì)方案,實(shí)現(xiàn)小型的智能家居控制系統(tǒng);詳細(xì)介紹了硬件平臺(tái)的構(gòu)建和匯聚節(jié)點(diǎn)程序、終端節(jié)點(diǎn)程序以及Qt用戶界面的軟件設(shè)計(jì)流程。
關(guān)鍵詞:TinyOS;Qt;智能家居
引言
社會(huì)發(fā)展使得人們對(duì)生活質(zhì)量的要求越來越高,傳統(tǒng)家居模式已經(jīng)不能滿足人們對(duì)舒適生活的要求,智能家居系統(tǒng)應(yīng)運(yùn)而生。智能家居系統(tǒng)是指綜合使用通信、傳感器及控制技術(shù)實(shí)現(xiàn)家居系統(tǒng)的人性化、智能化的集成管理系統(tǒng),目的在于創(chuàng)造一個(gè)安全、便利、環(huán)保和舒適的生活環(huán)境,使得人們?cè)诠ぷ鲏毫≡龅默F(xiàn)代社會(huì)能享有更便捷舒適的生活方式[1]。
本文開發(fā)了以AM335X為核心的嵌入式智能家居控制平臺(tái),采用繼電器板、亮度控制板、馬達(dá)控制板和智能電表等集成模塊,構(gòu)建無(wú)線傳感網(wǎng)硬件平臺(tái)。用戶不僅能夠在嵌入式平臺(tái)上實(shí)時(shí)查看傳感器采集的相關(guān)溫濕度信息,進(jìn)行環(huán)境監(jiān)控,還能通過平臺(tái)對(duì)電器進(jìn)行無(wú)線控制,實(shí)現(xiàn)對(duì)電器的管理。
1硬件設(shè)計(jì)
智能家居控制系統(tǒng)硬件由無(wú)線傳感網(wǎng)模塊和嵌入式控制模塊組成。其中無(wú)線傳感網(wǎng)模塊由帶有CC2420的無(wú)線傳感器節(jié)點(diǎn)和相應(yīng)的控制電路板智能電表、馬達(dá)控制板、亮度調(diào)節(jié)板、繼電器板等構(gòu)成。硬件框架如圖1所示。
圖1 硬件框架圖
1.1節(jié)點(diǎn)設(shè)計(jì)
圖2 CC2420外圍電路圖
無(wú)線傳感器節(jié)點(diǎn)由傳感器、無(wú)線收發(fā)模塊、微處理器組成,其中無(wú)線收發(fā)模塊采用TI公司的CC2420芯片。節(jié)點(diǎn)的微處理器采用高性能、低功耗的AVR 8位微控制器ATmega128L,它基于RISC精簡(jiǎn)指令結(jié)構(gòu),具有片內(nèi)128 KB的程序存儲(chǔ)器和4 KB的數(shù)據(jù)儲(chǔ)存器,可以滿足系統(tǒng)數(shù)據(jù)處理的要求[2]。CC2420外圍電路如圖2所示。
圖3 節(jié)點(diǎn)模塊邏輯框圖
傳感器節(jié)點(diǎn)集成了溫度、濕度、照度等多種傳感器,可以采集環(huán)境參數(shù),并通過設(shè)置環(huán)境參數(shù)來智能控制各種家電。電器控制部分以亮度控制板為例。亮度控制板利用三端雙向可控硅開關(guān)元件控制電流,電流的頻率為60 Hz,頻率分為“+”區(qū)和“-”區(qū),利用節(jié)點(diǎn)模塊獲得兩個(gè)區(qū)之間的交叉點(diǎn),根據(jù)從交叉點(diǎn)開始經(jīng)過多長(zhǎng)時(shí)間后驅(qū)動(dòng)三端雙向交流開關(guān)來控制電流。如果檢測(cè)到交叉點(diǎn)就驅(qū)動(dòng)三端雙向交流開關(guān),則燈泡上將流過最大電流;如果不驅(qū)動(dòng),則不會(huì)有電流流過,控制信號(hào)由WSN傳感器節(jié)點(diǎn)的TinyOS程序產(chǎn)生。節(jié)點(diǎn)模塊邏輯框圖如圖3所示。
1.2控制器設(shè)計(jì)
系統(tǒng)控制器采用OK335xD開發(fā)板,其核心板為FET335xD。核心板基于TI公司Sitara系列的ARM處理器AM335X,在設(shè)計(jì)上采用高集成度的系統(tǒng)模塊形式,集成了容量為512 MB、頻率為800 MHz的DDR3內(nèi)存芯片、容量為256 MB的SLC NAND Flash存儲(chǔ)芯片和TI公司專為AM335X處理器匹配設(shè)計(jì)的電源管理芯片。另外核心板模塊上還添加了硬件看門狗,使系統(tǒng)運(yùn)行更穩(wěn)定[3]。開發(fā)板具有豐富的外圍資源,包括3路UART、4路USB 2.0 HOST、1路千兆以太網(wǎng)等,同時(shí)還配置7寸TFT LCD,便于用戶交互。控制器系統(tǒng)框圖如圖4所示。匯聚節(jié)點(diǎn)將接收的數(shù)據(jù)通過UART發(fā)送給控制器進(jìn)行數(shù)據(jù)處理和存儲(chǔ)??刂破鲗⒖刂菩畔l(fā)送給匯聚節(jié)點(diǎn),并轉(zhuǎn)發(fā)給智能電器模塊,進(jìn)行家電控制。
2軟件設(shè)計(jì)
軟件設(shè)計(jì)包括匯聚節(jié)點(diǎn)程序設(shè)計(jì)、終端節(jié)點(diǎn)程序設(shè)計(jì)和控制器Qt界面設(shè)計(jì)。
2.1軟件開發(fā)平臺(tái)
2.1.1TinyOS技術(shù)
匯聚節(jié)點(diǎn)和終端節(jié)點(diǎn)采用TinyOS技術(shù)進(jìn)行開發(fā),它是加州大學(xué)伯克利分校的David Culler領(lǐng)導(dǎo)的研究小組為無(wú)線傳感網(wǎng)絡(luò)量身定制的嵌入式操作系統(tǒng),基于NesC語(yǔ)言編程[4]。
TinyOS是基于組件的架構(gòu)方式,能夠快速實(shí)現(xiàn)各種應(yīng)用,并且采用模塊化設(shè)計(jì),程序核心比較小,能夠突破傳感器存儲(chǔ)資源少的限制,使得TinyOS能夠有效地運(yùn)行在無(wú)線傳感器網(wǎng)絡(luò)上并執(zhí)行相應(yīng)的管理工作。其層次結(jié)構(gòu)如同一個(gè)網(wǎng)絡(luò)協(xié)議,底層硬件負(fù)責(zé)接收和發(fā)送最原始的數(shù)據(jù)包,綜合硬件層組件負(fù)責(zé)數(shù)據(jù)編碼、解析和參數(shù)傳遞,上層軟件組件負(fù)責(zé)數(shù)據(jù)打包、路由選擇和數(shù)據(jù)傳遞[5],其中上層組件包括主組件和應(yīng)用程序組件。
NesC語(yǔ)言支持組件化編程,它把組件化、模塊化的思想和基于事件驅(qū)動(dòng)的執(zhí)行模型結(jié)合起來,通過組織、命名和連接組件形成一個(gè)嵌入式網(wǎng)絡(luò)系統(tǒng),可以很好地支持TinyOS的并發(fā)運(yùn)行模式。
圖4 控制器系統(tǒng)框圖
2.1.2Qt庫(kù)
控制器設(shè)計(jì)采用三層體系結(jié)構(gòu)。最底層為L(zhǎng)inux操作系統(tǒng),為應(yīng)用程序提供統(tǒng)一的系統(tǒng)調(diào)用接口來訪問硬件設(shè)備,并且提供內(nèi)存管理機(jī)制和多任務(wù)處理機(jī)制。中間層為API接口層,采用qt-extended-opensource-src-4.5.3作為GUI用戶界面設(shè)計(jì)庫(kù)[6]。Qt是一個(gè)完整的C++應(yīng)用程序開發(fā)框架,具有豐富的API接口,而且所提供的API在所有的平臺(tái)上都是相同的,可以實(shí)現(xiàn)“一次編寫,隨處編譯”,有利于程序的開發(fā)調(diào)試和應(yīng)用擴(kuò)展。最上層為應(yīng)用程序?qū)?,針?duì)所需功能,采用Qt作為應(yīng)用程序框架進(jìn)行設(shè)計(jì)。
2.2匯聚節(jié)點(diǎn)程序設(shè)計(jì)
匯聚節(jié)點(diǎn)在系統(tǒng)中起到溝通終端節(jié)點(diǎn)和控制器的作用,與控制器進(jìn)行串口通信,與終端節(jié)點(diǎn)進(jìn)行RF無(wú)線通信。匯聚節(jié)點(diǎn)所用到的組件及其模塊關(guān)聯(lián)結(jié)構(gòu)如圖5所示。其中SerialActiveMessageC為串行通信組件,具有數(shù)據(jù)發(fā)送相關(guān)的AMSend接口和數(shù)據(jù)接收相關(guān)的Receive接口等,而ActiveMessageC為RF無(wú)線通信組件,提供AMSend、Receive、Packet、AMPacket等大多數(shù)通信接口。
圖5 匯聚節(jié)點(diǎn)程序模塊關(guān)聯(lián)結(jié)構(gòu)圖
在TinyOS中,通過串行通信向控制器傳送數(shù)據(jù)的數(shù)據(jù)包格式如下所示:
其中0x7E控制字表示串行通信的開始和結(jié)束,0x45表示其后沒有ACK的數(shù)據(jù)類型(如果為0x44則表示要求回應(yīng)),Payload為有效負(fù)載,有效數(shù)據(jù)之后為CRC校驗(yàn)字段。
控制器向TinyOS傳送數(shù)據(jù)的格式需要變更串行通信格式,插入第3個(gè)字節(jié)表示數(shù)據(jù)包在傳送Sequence的編號(hào),新數(shù)據(jù)包取0。
2.3終端節(jié)點(diǎn)程序設(shè)計(jì)
終端節(jié)點(diǎn)負(fù)責(zé)采集環(huán)境信息,并控制智能電器。終端節(jié)點(diǎn)的程序流程如圖6所示。
圖6 繼電器終端節(jié)點(diǎn)程序流程圖
首先進(jìn)行射頻協(xié)議棧初始化主要是對(duì)射頻相關(guān)寄存器進(jìn)行設(shè)置。初始化步驟為:先復(fù)位CC2420,打開晶振振蕩器,穩(wěn)定之后寫入寄存器的值和地址識(shí)別碼。部分代碼如下:
CC2420Reset();//復(fù)位CC2420
CC2420ExternalOscillator();//開啟晶體振蕩器
CC2420SetShortaddr(TOS_NODE_ID);//設(shè)置短地址
CC2420ControlSet();
//設(shè)置控制寄存器
其中設(shè)置的控制寄存器包括MDMCTRL0L和MDMCTRL0H,打開自動(dòng)應(yīng)答和地址識(shí)別,IOCFG0=0x7E時(shí)設(shè)置FIFOP門限至最大值127。
然后采集溫濕度等傳感器信息,緊接著對(duì)接收到的TinyOS數(shù)據(jù)包進(jìn)行解包,分析控制信息,進(jìn)行電器控制,并對(duì)傳感器信息封裝轉(zhuǎn)發(fā)。
以繼電器板為例,分析有效數(shù)據(jù)包字段信息。
終端節(jié)點(diǎn)接收控制信息數(shù)據(jù)包,經(jīng)過拆包,核心數(shù)據(jù)為4個(gè)字段,如下所示:
typedef struct _user_header{
uint8_t id;
uint8_t cmd;
uint8_t sub;
uint8_t length;
}user_header_t;
將ID字段和終端節(jié)點(diǎn)的TOS_NODE_ID進(jìn)行比較,來判別該終端節(jié)點(diǎn)是否應(yīng)該響應(yīng)控制信息。Cmd字段為1,表示請(qǐng)求接收數(shù)據(jù);為2,表示控制電器,這時(shí)檢查sub字段,根據(jù)各種sub字段進(jìn)行電器控制,其中Length字段為設(shè)置的定時(shí)字段長(zhǎng)度。
終端節(jié)點(diǎn)向控制器反饋的傳感器信息如下:
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;
控制器接收到反饋信息,進(jìn)行處理并顯示。
2.4Qt軟件設(shè)計(jì)
2.4.1交互界面設(shè)計(jì)
Qt GUI的基類有3種,QWidget、QDialog、QMain Window,本文采用QMain Window作為基類設(shè)計(jì)登陸界面。QMain Window類提供具有菜單條、錨接窗口和狀態(tài)條的主應(yīng)用程序窗口,采用菜單欄的按鈕切換智能家居控制窗口,智能家居控制窗口以QDialog為基類進(jìn)行設(shè)計(jì),應(yīng)用到的控件包括Lable控件、PushButton控件、TextBrowser控件等。
2.4.2信號(hào)-槽機(jī)制
信號(hào)-槽機(jī)制是Qt的核心機(jī)制,通過connect()進(jìn)行關(guān)聯(lián),應(yīng)用于對(duì)象之間的通信。當(dāng)對(duì)象改變其狀態(tài)時(shí)就發(fā)射信號(hào),無(wú)需理會(huì)誰(shuí)將接收該信號(hào)。而槽用于接收信號(hào),但其為普通的對(duì)象成員函數(shù),這就實(shí)現(xiàn)了真正意義上的信息封裝,確保對(duì)象被當(dāng)做真正的軟件組件來使用。
2.4.3串口數(shù)據(jù)通信編程
系統(tǒng)通過串口連接匯聚節(jié)點(diǎn)并控制,因此Qt設(shè)計(jì)涉及串口通信機(jī)制。在Qt類庫(kù)中并沒有特定串口基礎(chǔ)類,設(shè)計(jì)中采用第三方的QextSerialPort類,它是一個(gè)跨平臺(tái)的串口類,可以很方便地在Qt中對(duì)串口進(jìn)行讀寫操作。在Linux平臺(tái)下,使用QextSerialPort類時(shí)需要添加qextserialbase.h、qextserialbase.cpp、posix_qextserialport.h和posix_qextserialport.cpp四個(gè)文件,讀取串口數(shù)據(jù)時(shí)采用輪詢的方式,在打開串口設(shè)備的過程中需要進(jìn)行相關(guān)配置。配置程序略——編者注。
通過輸入文本控件手動(dòng)配置參數(shù),打開串口之后便可以通過readALL()和write()函數(shù)進(jìn)行讀/寫數(shù)據(jù)操作。
3測(cè)試結(jié)果
首先在OK335xD上移植Linux操作系統(tǒng),并掛載
NFS根文件系統(tǒng),然后移植Qt庫(kù),并安裝交叉編譯環(huán)境,將編譯成功的Qt程序燒寫到開發(fā)板上,最后連接好硬件,啟動(dòng)應(yīng)用程序,進(jìn)行測(cè)試。在控制界面中,用鼠標(biāo)按下按鍵,就可以打開智能電器并獲取當(dāng)前的環(huán)境參數(shù)。測(cè)試結(jié)果略——編者注。
結(jié)語(yǔ)
在實(shí)驗(yàn)室環(huán)境下,通過對(duì)人們生活需求的研究,應(yīng)用TinyOS技術(shù)和Qt編程技術(shù)實(shí)現(xiàn)了一個(gè)小型的智能家居控制系統(tǒng)。利用傳感器實(shí)時(shí)采集環(huán)境信息,通過匯聚節(jié)點(diǎn)轉(zhuǎn)發(fā)給控制器進(jìn)行家電控制,應(yīng)用Qt編程技術(shù)進(jìn)行用戶界面開發(fā),具有優(yōu)良的跨平臺(tái)特性和豐富的API接口,可以實(shí)現(xiàn)美觀、人性化的交互界面設(shè)計(jì)。
參考文獻(xiàn)
[1] 李菲.智能家居技術(shù)淺談[J] .科技致富向?qū)?2015(5):180.
[2] 代忠,樊曉光,萬(wàn)明,等.基于射頻芯片CC2420的ZigBee無(wú)線通信節(jié)點(diǎn)設(shè)計(jì)[J] .傳感器世界,2006(5):41-44.
[3] 梁永恩,萬(wàn)世明.基于S3C6410的智能家居控制系統(tǒng)的設(shè)計(jì)[J] .計(jì)算機(jī)與數(shù)字工程,2014(6):1104-1107.
[4] 王亞平,張寶華,董麗榮.基于WSN與TinyOS技術(shù)的智能溫室監(jiān)控系統(tǒng)設(shè)計(jì)[J] .江蘇農(nóng)業(yè)科學(xué),2014(8):408-410,418.
[5] 劉爽,吳蒙.基于IEEE 802.15.4c TinyOS平臺(tái)的移植研究[J] .計(jì)算機(jī)技術(shù)與發(fā)展,2014(11):114-117.
[6] 楊晶,黃俊,吳福海.基于Qt的智能家居管理軟件設(shè)計(jì)與實(shí)現(xiàn)[J] .電視技術(shù),2015(4):101-104.
李春萍(碩士研究生),主要研究方向?yàn)榍度胧綉?yīng)用、通信工程;陳新(教授),主要研究方向?yàn)樾盘?hào)與信息處理、圖像處理、模式識(shí)別、生物醫(yī)學(xué)工程。
陳君毅、林欽堅(jiān)、賓顯文(硬件研發(fā)工程師),主要從事嵌入式硬件平臺(tái)研發(fā);陳偉(中級(jí)工程師),研究方向?yàn)榍度胧较到y(tǒng)硬件電路設(shè)計(jì)、嵌入式系統(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
收稿日期:(責(zé)任編輯:薛士然2015-07-09) (責(zé)任編輯:薛士然2015-08-06)
中圖分類號(hào):TP27
文獻(xiàn)標(biāo)識(shí)碼:A
單片機(jī)與嵌入式系統(tǒng)應(yīng)用2016年1期