摘 要:伴隨著社會(huì)經(jīng)濟(jì)水平的提高,人們對(duì)家居生活質(zhì)量的要求也越來(lái)越高。同時(shí)隨著嵌入式技術(shù)的不斷發(fā)展,以及移動(dòng)通訊設(shè)備的普及,遠(yuǎn)程控制普通家電的條件已經(jīng)逐步成熟。為了實(shí)現(xiàn)手機(jī)遠(yuǎn)程控制家電的目的,提出了一種基于ARM+linux 的嵌入式家庭網(wǎng)關(guān),以32 位的ARM9S3C2440 微處理器為核心,配有短信接收模塊、紅外遙控器自學(xué)習(xí)模塊、以及無(wú)線Zigbee 通訊模塊。實(shí)現(xiàn)了短信的接收,紅外遙控器信號(hào)的接收、存儲(chǔ)及發(fā)送。經(jīng)過(guò)測(cè)試與分析,達(dá)到了預(yù)期的效果,證明該方案確實(shí)可行。
在信息、通訊不斷發(fā)展的今天,隨著人類社會(huì)的進(jìn)步和科學(xué)技術(shù)的迅猛發(fā)展,及國(guó)內(nèi)消費(fèi)者生活水平的不斷提高,人們更加注重生活質(zhì)量,對(duì)生活的舒適度有了更高的要求。而家電的性能對(duì)人們生活的舒適度有著直接的影響。家電遠(yuǎn)程控制系統(tǒng)使人們可異地控制家庭內(nèi)部設(shè)備,拓展了人們的生活空間,為人們管理家庭設(shè)備提供了方便的手段。但由于很多普通家電卻不具備智能控制所需的條件,為了實(shí)現(xiàn)對(duì)普通家電的智能控制,需要設(shè)計(jì)一個(gè)中間設(shè)備--家庭網(wǎng)關(guān)。
本系統(tǒng)應(yīng)用現(xiàn)階段流行的ARM9 系列微處理器芯片和嵌入式Linux 操作系統(tǒng)進(jìn)行了家庭網(wǎng)關(guān)的軟硬件設(shè)計(jì),利用人們隨身攜帶的手機(jī)與家庭網(wǎng)關(guān)進(jìn)行短信通信,并在家庭網(wǎng)關(guān)的控制下,實(shí)現(xiàn)對(duì)家電的遠(yuǎn)程控制。
1 家庭網(wǎng)關(guān)整體結(jié)構(gòu)
遠(yuǎn)程家電控制系統(tǒng)一般可以劃分為外部網(wǎng),家庭網(wǎng)關(guān)和內(nèi)部網(wǎng)三個(gè)部分。而家庭網(wǎng)關(guān)是家庭內(nèi)部網(wǎng)與外部網(wǎng)的連接樞紐,也是整個(gè)系統(tǒng)的核心設(shè)備,整個(gè)系統(tǒng)構(gòu)成圖如圖 1 所示。用戶使用手機(jī)發(fā)送家電控制短信到家庭網(wǎng)關(guān),經(jīng)過(guò)家庭網(wǎng)關(guān)的處理將其轉(zhuǎn)換為遙控器紅外指令,發(fā)送給各個(gè)分控節(jié)點(diǎn)驅(qū)動(dòng)紅外發(fā)射器發(fā)送紅外指令對(duì)該設(shè)備進(jìn)行控制,從而實(shí)現(xiàn)手機(jī)遠(yuǎn)程控制家電的功能。
圖1 系統(tǒng)構(gòu)成圖
2 家庭網(wǎng)關(guān)的實(shí)現(xiàn)
家庭網(wǎng)關(guān)中央處理器的選擇有多種方案,但考慮到家庭網(wǎng)關(guān)的功能、成本以及以后的升級(jí),本課題決定采用三星公司的S3C2440A 處理器作為家庭網(wǎng)關(guān)的中央處理單元。S3C2440 主要面向手持設(shè)備以及高性價(jià)比、低功耗的應(yīng)用,S3C2440A 提供一組完整的系統(tǒng)外圍設(shè)備,從而大大減少了整個(gè)系統(tǒng)的成本,省去了為系統(tǒng)配置額外器件的開(kāi)銷,通過(guò)外擴(kuò)存儲(chǔ)器(SDRAM/Flash)、觸摸屏、短信接收模塊、遙控器自學(xué)習(xí)模塊、Zigbee 模塊來(lái)構(gòu)建家庭網(wǎng)關(guān)的硬件平臺(tái),其系統(tǒng)結(jié)構(gòu)如圖 2 所示。家庭網(wǎng)關(guān)所具有的功能包括:
遙控器紅外指令的對(duì)碼學(xué)習(xí)、短信的接收及處理、家庭內(nèi)部網(wǎng)的主節(jié)點(diǎn)。
圖2 家庭網(wǎng)關(guān)系統(tǒng)結(jié)構(gòu)圖
2.1 遙控器自學(xué)習(xí)模塊
家庭中的家電普遍采用紅外遙控設(shè)備,要控制家電就要知道所對(duì)應(yīng)的紅外遙控碼。遙控器紅外脈沖碼一般由引導(dǎo)碼、地址碼、數(shù)據(jù)碼、數(shù)據(jù)碼反碼和結(jié)果碼組成。由于各個(gè)公司生產(chǎn)的紅外編/解碼芯片采用的編/解碼方式和脈寬周期不同,導(dǎo)致了市場(chǎng)上的各類遙控器的功能互不兼容。為了能擁有各種遙控器的遙控功能,首先必須要正確地原樣接收并存儲(chǔ)遙控器的紅外脈沖碼,為此設(shè)計(jì)了紅外遙控接收模塊,接收遙控器的紅外指令并保存在SQlite 數(shù)據(jù)庫(kù)。
2.1.1 硬件設(shè)計(jì)
一般紅外遙控接收電路要包括紅外接收二極管(光敏二極管)、前置放大電路、濾波器、檢波解調(diào)電路等處理電路。但是隨著技術(shù)發(fā)展,紅外接收專用集成電路逐漸被紅外接收頭所代替,紅外接收頭是一種三端集成器件,它將紅外接收二極管、前置放大電路以及解調(diào)電路等集成在同一芯片上。本設(shè)計(jì)采用紅外一體化接收頭TL538,它具有寬電壓適應(yīng)、功耗低、成本低、高接收靈敏度以及優(yōu)良的抗干擾特性,是通用接收紅外信號(hào)并解調(diào)的元件,不需要任何外接元件,就可以完成從紅外線接收到輸出TTL 電平的數(shù)字信號(hào),目前廣泛的應(yīng)用于家用電器及玩具等各種紅外遙控和紅外接收裝置中。
紅外一體化接收頭接收到的紅外脈沖信號(hào)解調(diào)成合適電平的數(shù)字脈沖基帶信號(hào),直接送到S3C2440A 的GF2 引腳進(jìn)行采集,紅外接收電路原理圖如圖3 所示。
圖3 紅外信號(hào)接收電路原理圖
2.1.2 軟件實(shí)現(xiàn)
系統(tǒng)軟件實(shí)現(xiàn)紅外脈沖信號(hào)的接收和存儲(chǔ),GF2是個(gè)復(fù)用端口,要把它設(shè)置為外部中斷功能,中斷設(shè)置模式為雙沿中斷,實(shí)現(xiàn)紅外脈沖信號(hào)的接收。程序流程圖如圖 4 所示。
圖4 紅外接收程序流程圖
設(shè)計(jì)采用定時(shí)器對(duì)信號(hào)高低電平計(jì)時(shí)的方法來(lái)采集數(shù)據(jù),TL538 在無(wú)紅外信號(hào)時(shí)一直處于高電平,當(dāng)紅外信號(hào)到來(lái)時(shí),有一個(gè)下降沿,觸發(fā)外部中斷,系統(tǒng)啟動(dòng)內(nèi)部定時(shí)器,當(dāng)再次觸發(fā)外部中斷時(shí),讀取計(jì)數(shù)器的值,然后依次讀取計(jì)數(shù)器的值。由于一條紅外指令的長(zhǎng)度不會(huì)超過(guò)220ms,如果采集到編碼信號(hào)的長(zhǎng)度大于220ms,就認(rèn)為編碼采集已經(jīng)結(jié)束,觸發(fā)定時(shí)器溢出中斷,關(guān)閉定時(shí)器,計(jì)算計(jì)時(shí)器每?jī)蓚€(gè)計(jì)數(shù)的差值(紅外脈沖信號(hào)的脈寬值),這樣紅外脈沖信號(hào)就被原封不動(dòng)的全部記憶。
為了方便調(diào)用遙控器的紅外脈沖信號(hào),要將其接收到紅外碼保存,而保存數(shù)據(jù)就需要一個(gè)嵌入式的數(shù)據(jù)庫(kù),在目前Linux 下常用的數(shù)據(jù)庫(kù)產(chǎn)品中,Oracel、BIMDB 等功能強(qiáng)大,但系統(tǒng)寵大,需付費(fèi)使用,適用于大型商業(yè)型數(shù)據(jù)庫(kù)。而MysQL 在保持中等體積的情況下,提供了較為適用的功能己成為中小規(guī)模數(shù)據(jù)庫(kù)應(yīng)用的首選,但商業(yè)應(yīng)用也需付費(fèi),而且對(duì)于嵌入式系統(tǒng)來(lái)說(shuō)空間占用仍然太大。小型數(shù)據(jù)庫(kù)msQL 適用于嵌入式系統(tǒng),但只有30 天的使用期限,并非完全開(kāi)源。而在開(kāi)源的數(shù)據(jù)庫(kù)中,PostgreSQL 功能完善,但體積較大。而B(niǎo)erkeley DB 則是開(kāi)發(fā)難度比較大。
SQlite 則在體積與功能之間做到了較好的平衡,是“理想的嵌入式數(shù)據(jù)庫(kù)”。此系統(tǒng)創(chuàng)建文件名為dc_main.
db 的sqlite3 數(shù)據(jù)庫(kù)文件,并在以創(chuàng)建的dc_main.db中創(chuàng)建一張數(shù)據(jù)表study 用來(lái)存儲(chǔ)各個(gè)房間各遙控器的紅外指令,SQL 命令為:
create table study(
id integer primary key autoincrement,--id 號(hào),自動(dòng)產(chǎn)生
room varchar(10), --房間名稱
appliance varchar(10), --電器名稱
key varchar(10), --按鍵名稱
command varchar(500)); --紅外脈沖信號(hào)
為了用戶方便與系統(tǒng)進(jìn)行交互,采用QT4 設(shè)計(jì)遙控器自學(xué)習(xí)界面,Qt 是Trolltech 公司開(kāi)發(fā)的一個(gè)多平臺(tái)的C++圖形用戶界面應(yīng)用程序框架。包括直觀的API 和豐富C++ 類庫(kù)、用于GUI 開(kāi)發(fā)和國(guó)際化的集成工具,支持使用JavaTM 和C++ 語(yǔ)言進(jìn)行開(kāi)發(fā)。該圖形系統(tǒng)最大的優(yōu)點(diǎn)是采用面向?qū)ο笤O(shè)計(jì),移植性好,基于X Window 的Qt 桌面應(yīng)用程序可以非常方便的移植到嵌入式系統(tǒng)上。在對(duì)硬件和容量都有限制的嵌入式環(huán)境上,Qt 可以直接在Framebuffer 上顯示圖形。
Qt 的這種特性在一定程度上提高了嵌入式GUI 程序的執(zhí)行效率,這對(duì)硬件和容量都有限制的嵌入式環(huán)境非常重要。同時(shí)Qt4 為數(shù)據(jù)庫(kù)訪問(wèn)提供的QtSQL 模塊實(shí)現(xiàn)了數(shù)據(jù)庫(kù)與Qt 應(yīng)用程序的無(wú)縫集成。
此系統(tǒng)用Qt4 和SQLite3 技術(shù)實(shí)現(xiàn)了遙控器自學(xué)習(xí)系統(tǒng)的前臺(tái)界面及數(shù)據(jù)的存儲(chǔ),遙控器自學(xué)習(xí)界面如圖 5 所示。
圖 5 遙控器自學(xué)習(xí)界面
為了存儲(chǔ)時(shí)能將按鍵與其紅外指令對(duì)應(yīng),在遙控器自學(xué)習(xí)前臺(tái)界面要輸入房間、電器、按鍵的名稱,因此設(shè)計(jì)了鍵盤(pán)進(jìn)行內(nèi)容輸入,用戶在界面輸入房間、電器、按鍵,之后對(duì)著紅外一體化接收頭按下遙控器的對(duì)應(yīng)按鍵接收紅外指令,按確認(rèn)后,將房間、電器、按鍵信息以及所對(duì)應(yīng)的遙控器紅外指令存入sqlite3 數(shù)據(jù)庫(kù)。
2.2 短信接收模塊
短信接收模塊實(shí)現(xiàn)的功能包括接收短信,以及根據(jù)短信內(nèi)容調(diào)取數(shù)據(jù)庫(kù)中的紅外指令發(fā)送給Zigbee 模塊。
2.2.1 硬件設(shè)計(jì)
短信接收模塊采用GR64 模塊,通過(guò)串口連接到中央處理器,GR64 模塊是一款帶有GSM/GPRS 全套語(yǔ)音和數(shù)據(jù)功能的工業(yè)級(jí)無(wú)線調(diào)制解調(diào)模塊。集射頻電路和基帶處理器于一體,提供豐富的外設(shè)及接口,其硬件原理圖如圖 6 所示。
圖6 GR64 原理圖
2.2.2 軟件實(shí)現(xiàn)
短信接收軟件提供短信的接收以及處理,GR64模塊支持兩種模式收發(fā)短信:Text 模式、 PDU 模式。
Text 模式是純文本方式,不支持中文,可使用不同的字符集,主要用于歐美地區(qū);PDU 模式被所有手機(jī)及工業(yè)級(jí)模塊支持,可以使用任何字符集,目前最為常用。家庭網(wǎng)關(guān)采用PDU 模式接收數(shù)據(jù),以便能夠正確的顯示漢字。
用戶根據(jù)遙控器對(duì)碼學(xué)習(xí)的格式編寫(xiě)控制家電的短消息,其格式為:房間,電器,按鍵例如:客廳,空調(diào),打開(kāi)發(fā)送至家庭網(wǎng)關(guān),家庭網(wǎng)關(guān)使用AT 命令接收短消息,AT 命令集具有標(biāo)準(zhǔn)的硬件接口(串口)并且可以通過(guò)一組AT 命令完成對(duì)GR64 的配置和控制,接收短信用到的AT 命令為:
AT+CMGF=0 設(shè)置短信格式為PDU 格式
AT+CMGL=1 讀取未讀短消息
短信處理子程序流程圖如圖 7 所示。
圖7 短信處理子程序流程圖
家庭網(wǎng)關(guān)接收到的手機(jī)短信是unicode 碼值,要將其轉(zhuǎn)換為GB2312 編碼顯示為漢字,之后進(jìn)行身份驗(yàn)證(手機(jī)號(hào)碼驗(yàn)證),通過(guò)之后將短信內(nèi)容提取出來(lái)作為條件查詢數(shù)據(jù)庫(kù),調(diào)取數(shù)據(jù)庫(kù)中所對(duì)應(yīng)的遙控器紅外指令,發(fā)送至Zigbee 模塊。
2.3 Zigbee 模塊
Zigbee 模塊作為家庭內(nèi)部網(wǎng)的主節(jié)點(diǎn)能夠?qū)崿F(xiàn)的功能包括接收遙控器紅外指令,以及通過(guò)Zigbee 網(wǎng)絡(luò)將此紅外指令發(fā)送給各個(gè)分控節(jié)點(diǎn)。
2.3.1 硬件設(shè)計(jì)
硬件部分的設(shè)計(jì)如圖 8 所示。采用無(wú)線SoC 單片機(jī)CC2430 構(gòu)建Zigbee 模塊,具有超低功耗、高靈敏度、出眾的抗噪聲及抗干擾能力,并且包括的許多強(qiáng)大的外設(shè)資源。通過(guò)串口與中央處理器相連。
圖8 Zigbee 模塊原理圖
2.3.2 軟件實(shí)現(xiàn)
通過(guò)軟件實(shí)現(xiàn)紅外指令的接收及發(fā)送,程序流程圖如圖 9 所示。
圖9 Zigbee 模塊程序流程圖
Zigbee 模塊首先使用串口接收紅外指令,然后通過(guò)射頻通信,將紅外指令發(fā)送到各個(gè)分控節(jié)點(diǎn)。
3 結(jié)語(yǔ)
隨著Intemet 技術(shù)的發(fā)展以及32 位微處理器時(shí)代的來(lái)臨,信息家電、信息家庭的概念已開(kāi)始深入人心。
提出以ARM9 的32 位微處理器S3C2440A 作為家庭網(wǎng)關(guān)的中央處理器,軟件上以嵌入式Linux 為平臺(tái),實(shí)現(xiàn)了短信接收、遙控器自學(xué)習(xí)、紅外指令發(fā)送等功能。該家庭網(wǎng)關(guān)成本較低,易于升級(jí),便于推廣應(yīng)用。
評(píng)論
查看更多