基于Qt/Embedded觸摸屏的智能家居控制系統(tǒng)
摘 要: 設計了一個基于Qt/Embedded 觸摸屏的智能家居控制平臺,并通過zigbee 組網(wǎng)的方式,實現(xiàn)家居的智能化控制。首先,智能家居的界面用Qt/Embedded 設計,然后,界面被移植到以ARM9 為微處理器的控制平臺上,并實現(xiàn)界面的觸摸屏功能;最后,通過串口驅動將設計的具有觸摸屏功能的界面與zigbee 組網(wǎng)的協(xié)議連接起來,實現(xiàn)對智能家居控制的無線傳輸。
1 引言
隨著生活質量的提高,家居智能化已經(jīng)成為當今時代的一種主流。如何更好的設計智能家居的整體性控制就顯得越來越重要。由于ARM 和觸摸屏的迅速發(fā)展,采用更好的GUI,實現(xiàn)友好的界面控制成為了可能;同時由于zigbee 無限傳輸技術的廣泛應用,通過設計zigbee 的協(xié)議組網(wǎng),使ARM 能輕易的通過的串口驅動程序實現(xiàn)智能家居的控制;同時,通過ARM 對萬能遙控器的識別碼的學習,實現(xiàn)了ARM 在智能家居上的多功能應用和智能家居的一體化控制。
2 系統(tǒng)設計概述
基于嵌入式智能家居的設計結構框圖如圖1 所示。主要包括以下幾部分。Qt/E 及l(fā)inux 系統(tǒng)、ARM9微處理器、zigbee 模塊、語音模塊、GSM 模塊、串口和網(wǎng)絡模塊以及萬能遙控器。
圖1 智能家居設計結構框圖
ARM9 微處理器采用Samsung S3C2440 CPU開發(fā)板,系統(tǒng)選擇嵌入式linux 系統(tǒng),其內(nèi)核使用2.6.25.8 的內(nèi)核,nandflash 采用256M 的內(nèi)存。且由于arm 內(nèi)核集成了多種外設控制模塊的驅動程序,所以要對其進行必要的裁剪,串口用于連接zigbee模塊。
Zigbee 采用TI 公司的CC24430 無線射頻芯片,zigbee 有顯著的低成本、低消耗、網(wǎng)絡節(jié)點多等的無線傳輸功能,所以可以將一個zigbee 作為路由,通過一個zigbee 向多個zigbee 傳輸?shù)墓δ?,實現(xiàn)zigbee 的組網(wǎng)的,也有效的延長了zigbee 的傳輸距離。
網(wǎng)絡模塊采用CS8900A通過連接路由器,實現(xiàn)遠程登入。
3 系統(tǒng)軟件設計實現(xiàn)
系統(tǒng)采用linux 作為操作系統(tǒng), 首先基于Qt/Embedded 進行圖形界面的設計,再在宿主機上建立交叉編譯環(huán)境,并制作yaffs 操作系統(tǒng),最后將嵌入式linux 系統(tǒng)移植到ARM9 開發(fā)板上。系統(tǒng)通過設計GUI 界面,實現(xiàn)通過觸摸屏對智能家居的一體化控制[1].文章軟件部分包括嵌入式linux 操作系統(tǒng)的移植、系統(tǒng)界面設計、串口驅動和zigbee 組網(wǎng)設計。
在ARM9 和zigbee 的傳輸過程中,有一個智能家居的單元端接口設置。為了區(qū)別于不同家庭之間的傳輸,首先ARM9 會有一個各自家庭的主機ID 號設置。在一個家庭的智能化控制上,給路由功能的zigbee 設計八個端口,每個端口有一個ID 號,然后其余的連接路由的zigbee 通過接受各自ID 號的分別傳輸信息,最后,這些zigbee 又分別設置各自的設備號,這樣就去除了干擾,實現(xiàn)智能家居的單獨控制。
3.1 觸摸屏和Qt/Embedded 交叉編譯環(huán)境的建立
在建立交叉編譯環(huán)境之前先要進行l(wèi)inux 系統(tǒng)移植,Linux 系統(tǒng)的移植主要主要包括BootLoad 移植、內(nèi)核移植與裁剪以及文件系統(tǒng)移植等部分[2].文章選用u-boot 作為BooLload 引導程序。Linux 內(nèi)核由于其公開性,很容易實現(xiàn)其移植和裁剪。文件系統(tǒng)這采用yaffs 根文件系統(tǒng)。
觸摸屏和Qt/Embedded 的交叉編譯環(huán)境的建立是linux 系統(tǒng)移植的關鍵部分。其步驟如下。
第一步是進行觸摸屏校正,設計中采用tislib-1.4作為觸摸屏的校正。其分為兩步:(1)編譯tislib,產(chǎn)生校正文件。(2)是下載校正文件和庫文件到arm 板,實現(xiàn)五點校正。其編譯過程如下。
第二步是Qt/E 的交叉編譯。設計中Qt/E 采用qt-embedded-linux-opensource-src-4.5.0.同時為了方便程序開發(fā),需要安裝X86 版和ARM 版。
先在PC 上使用x86 版和qvfb 開發(fā),完成以后再使用ARM 交叉編譯放到開發(fā)版上運行。所以需要先解壓一次,然后重命名為qt-embedded-linux-opensource-src-4.5.0-x86;再解壓一次,并重命名為qt-embedded-linux-opensource-src-4.5.0-arm.Qt/E 的編譯過程如下。
[!--empirenews.page--]
最后,設置交叉編譯環(huán)境變量,進入系統(tǒng)控制平臺vi /etc/profile.寫入環(huán)境變量如下:
3.2 Qt/Embedded 編程
打開Qt Creator,進入Qt4 GUI Application,分別建立了pro、mai.cpp、dialog.cpp 和dialog.h 文件[3].智能家居的圖形用戶界面圖2,分為如圖2(a)和圖2(b)所示,下面先說明圖2(a)。quankai-全開按鈕主要是完成控制屋內(nèi)所有燈光的打開;quanguan-全關按鈕主要是完成控制屋內(nèi)所有燈光的關閉;woshi-臥室、chufang-廚房、keting-客廳、衛(wèi)生間-衛(wèi)生間主要是當按下按鈕時,會進入分別控制它們安裝的具體設備的窗口;tianjia-添加、shanchu-shanchu 按鈕是當添加新的設備和拆除設備時的控制功能。再介紹圖2(b)。下面設置了一些設備,如deng-燈、chuanglian-窗簾、menci-門磁、meiqifa-煤氣閥、kongti-空調,dianshi-電視、bingxiang-冰箱、xiyiji-洗衣機,當按下如圖b 的按鈕時,按鈕會通過槽輸出一個16 進制,這個16 進制將通過串口傳輸給zigbee,然后觸發(fā)zigbee 中的控制程序,實現(xiàn)控制設備的作用。
下面對幾個重要的連接進行說明。圖2(a)的說明如下:
圖2 智能家居界面效果圖。
(1) connect(PushButton. SIGNAL(clicked()),this, SLOT(open()))
當PushButton 按鈕按下時,zhinengjiaju 對話框接受信號,并執(zhí)行open()函數(shù),open()函數(shù)中寫如程序,讓其進入下一個對話框--zhinengjiaju1.下面是部分程序:
圖2(b)的說明如下:
?。?)connect(PushButton.SIGNAL(clicked()),this, SLOT(newslot()))
當按下按鈕PushButton 時,zhinengjiaju1 對話框接受一個信號,使newslot()函數(shù)發(fā)出一個16 進制。下面是部分程序:
[!--empirenews.page--]
3.3 串口傳輸驅動程序
ARM 和zigbee 主要是通過串口實現(xiàn)傳輸。界面設計完成后,通過觸摸觸發(fā)按鈕,使按鈕輸出出一個16 進制,zigbee 通過串口驅動接受到按鈕傳輸出的數(shù)據(jù),使zigbee 中的程序工作。下面是部分串口傳輸驅動程序源代碼。
3.4 zigbee 組網(wǎng)設計
Zigbee 的組網(wǎng)主要是由zigbee 的協(xié)調器和向zigbee 的節(jié)點相互傳輸組成的。主要是用一個zigbee 作為路由,向這個zigbee 下載協(xié)調器的程序;再向其余的zigbee 下載節(jié)點程序,從而實現(xiàn)一個zigbee 控制多個zigbee 的傳輸過程。以下是部分的智能家居所有編寫的的zigbee 的組網(wǎng)應用程序。
4 結語
在智能家居的設計中,一個友好的系統(tǒng)界面(GUI)是非常必要的,友好的GUI 界面更加方便用戶的使用,也促進了系統(tǒng)的推廣。通過ARM 和zigbee對智能家居的控制,很有效的實現(xiàn)無線傳輸控制功能,且由于ARM 可以對萬能遙控器識別碼的學習,可以很容易的設計出一種配合ARM 和zigbee 的遙控器,更家的完善了對智能家居的無線控制功能,更大的適應廣大用戶的需求。