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