引言
目前的家用電器遠(yuǎn)程控制系統(tǒng)一般是通過互聯(lián)網(wǎng)或公共交換網(wǎng)來實(shí)現(xiàn)遠(yuǎn)程控制的。然而,隨著手機(jī)日益普及,使得利用GSM短信息實(shí)現(xiàn)家居環(huán)境和家電的遠(yuǎn)程監(jiān)控成為可能。它相對(duì)于遠(yuǎn)程控制方式而言,擺脫了線對(duì)設(shè)備的束縛;相對(duì)于電腦遠(yuǎn)程控制而言,降低了設(shè)備和使用成本。
利用GSM網(wǎng)絡(luò)來實(shí)現(xiàn)家居安防、溫室、路燈、自動(dòng)售貨機(jī)等監(jiān)控的研究已很多,這些研究大都是通過使用GSM網(wǎng)絡(luò)遠(yuǎn)程控制繼電器而實(shí)現(xiàn)的。而本文設(shè)計(jì)的基于GSM的家用電器及家居環(huán)境監(jiān)控系統(tǒng)主要是針對(duì)目前許多帶有紅外遙控器的家用電器(如熱水器、空調(diào)、電視、機(jī)頂盒等),通過GSM網(wǎng)絡(luò)和對(duì)家用電器遙控器的復(fù)制來實(shí)現(xiàn)家用電器的控制。
1、系統(tǒng)工作原理
基于GSM的家用電器及家居環(huán)境監(jiān)控系統(tǒng),由作為上位機(jī)的能收發(fā)短信的GSM短信模塊、智能控制器(單片機(jī))、溫度傳感器和作為下位機(jī)的具有紅外遙控器的家用電器(如熱水器、空調(diào)、電視、機(jī)頂盒等)組成。
首先系統(tǒng)進(jìn)行初始化,單片機(jī)從鍵盤讀入用戶所設(shè)定的溫度上限值和發(fā)送報(bào)警短信的目標(biāo)號(hào)碼,并通過LCD顯示器顯示出來。當(dāng)單片機(jī)檢測(cè)到用戶按下紅外學(xué)習(xí)鍵,則進(jìn)入紅外線學(xué)習(xí)中斷服務(wù)程序,讀取外部家電遙控器發(fā)射的紅外信號(hào),并將該紅外信號(hào)解碼,重定義碼長(zhǎng),分組,保存,從而學(xué)習(xí)該遙控器初始化工作完成后,單片機(jī)循環(huán)讀取
溫度傳感器DS1820數(shù)值,并將用戶事先設(shè)定的溫度上限值與之比較,一旦發(fā)現(xiàn)當(dāng)前溫度超過溫度上限,則控制GSM模塊TC35i通過GSM網(wǎng)絡(luò)向用戶手機(jī)發(fā)送報(bào)警短信。
同時(shí),單片機(jī)循環(huán)查詢串口是否收到信息,如果收到就將信息讀入單片機(jī),解析出短信中的內(nèi)容是要求單片機(jī)向家用電器發(fā)送何種指令,并將代表該指令的紅外信號(hào)通過紅外發(fā)射管發(fā)射出去,從而控制家用電器。該系統(tǒng)框圖見圖1。
圖1系統(tǒng)方框圖
2、系統(tǒng)硬件設(shè)計(jì)
基于GSM的家用電器及家居環(huán)境監(jiān)控系統(tǒng)主要以AT89S52單片機(jī)為智能控制中心,4@4鍵盤和1602LCD顯示器作為人機(jī)交互設(shè)備,GSM通信模塊選用TC35i,DS1820溫度傳感器用于溫度采集;通過HS0038B紅外接收頭接收紅外信號(hào),完成紅外信號(hào)的解調(diào)與放大;同時(shí),利用AT89S52單片機(jī)P1.0口的方波發(fā)生器功能構(gòu)成了紅外信號(hào)的調(diào)制裝置,并使用紅外LED作為紅外發(fā)射裝置。
2.1GSM模塊與單片機(jī)的連接
GSM模塊TC35i是3.3VCMOS元器件,要求對(duì)電源的啟動(dòng)電流超過2A,啟動(dòng)電壓達(dá)到4.2V.因此,采用zui大能提供3A電流的電源芯片LM2596.TC35i的1~5腳接LM2596的電源輸出管腳,6~10腳接地,25~27腳與SIM卡相連接。為了能顯示TC35i的工作狀態(tài),在32腳接一個(gè)LED指示燈到地。
TC35i啟動(dòng)之后就可以通過單片機(jī)由串口發(fā)送數(shù)據(jù)和命令到TC35i,TC35i的波特率是自適應(yīng)的,這里采用9600的波特率,只要將TC35i的RXD和TXD分別和單片機(jī)的TXD和RXD相連接就可以了。電路圖見圖2.
圖2TC35i與單片機(jī)的連接
2.2紅外接收頭與單片機(jī)的連接
紅外接收頭HS0038B是一個(gè)集成解調(diào)、濾波、放大等功能的紅外接收芯片,它將調(diào)制在38kHz方波上的紅外信號(hào)解調(diào)出來,并通過OUT管腳將方波輸出。HS0038B平時(shí)輸出高電平,當(dāng)有遙控信號(hào)輸入時(shí),其輸出為高低電平脈沖,故接收時(shí)一個(gè)碼由一個(gè)低電平后跟一個(gè)高電平構(gòu)成。利用不同長(zhǎng)短高低電平的組合,可構(gòu)成不同的碼。在本系統(tǒng)中將使用中斷的方式讀取紅外信號(hào),因此將HS0038B的OUT管腳與單片機(jī)的外中斷0相連接。HS0038B與單片機(jī)的連接見圖3。
圖3紅外接收頭HS0038B與單片機(jī)的連接
3、系統(tǒng)軟件設(shè)計(jì)
TC35i可以發(fā)送中文短信或英文短信,本系統(tǒng)使用中文短信格式即PDU格式。先將短信的相關(guān)信息做到一個(gè)PDU數(shù)據(jù)包里,該包的開頭是短信中心號(hào)碼。其后的是目標(biāo),該號(hào)碼是將實(shí)際相鄰的奇數(shù)位與偶數(shù)位對(duì)調(diào)zui后加F得到。如原為12345678901,按上述方法得到2143658709F1。
然后是該號(hào)碼的長(zhǎng)度0D,中國(guó)國(guó)家接入碼91,譯碼方式00,編碼方式08,再往后是短信在信息中心保留時(shí)間,一般選擇保存10天,即A0.zui后分別是短信內(nèi)容長(zhǎng)度和短信內(nèi)容。如要發(fā)送/火警0,則短信長(zhǎng)度為4個(gè)16進(jìn)制為04,/火警0經(jīng)過unicode碼轉(zhuǎn)換程序轉(zhuǎn)換得到16進(jìn)制數(shù)據(jù)為706B8B66.
這樣整個(gè)PDU數(shù)據(jù)包的內(nèi)容就是:0011000D91682143658709F130008A004706B8B66.
單片機(jī)對(duì)TC35i所有的控制都是通過串口發(fā)送AT指令進(jìn)行的,TC35i的每一個(gè)動(dòng)作都對(duì)應(yīng)了一個(gè)AT指令,而且每一個(gè)指令之后都要有一個(gè)回車符以告訴TC35i該條命令已經(jīng)發(fā)完。一些常用的AT指令如表1。
表1常用AT指令表
當(dāng)UDP數(shù)據(jù)包打好后,要對(duì)TC35i進(jìn)行聯(lián)機(jī)并通過TC35i發(fā)送短信。首先通過串口發(fā)送代表聯(lián)機(jī)的指令A(yù)T,然后設(shè)定TC35i發(fā)送UDP格式的短信,其次將該P(yáng)DU數(shù)據(jù)包的長(zhǎng)度發(fā)給TC35i,接著將做好的PDU發(fā)送給TC35i,zui后在后面加上ctrl+z的ASC碼0x1A和回車的ASC碼0x0D.這樣一條中文短信就發(fā)送出去了,發(fā)送短信程序流程見圖4。
圖4發(fā)送短信流程圖
紅外線遙控器所發(fā)射的紅外信號(hào)的信息是以不同時(shí)長(zhǎng)的高低電平來表示的。以NEC編碼為例,從9ms高電平開始,以4.5ms低電平結(jié)束的是前導(dǎo)碼;從0.56ms高電平開始,以0.56ms低電平結(jié)束的是0碼;從0.56ms高電平開始,以1.69ms低電平結(jié)束的是1碼。而由于HS0038紅外接收頭接收紅外信號(hào)之后將把紅外信號(hào)取反,因此高低電平延遲時(shí)間正好相反。所以一旦紅外接收頭的輸出信號(hào)引發(fā)外中斷,延時(shí)9ms之后如果單片機(jī)從輸入腳讀到低電平則說明這是引導(dǎo)碼,系統(tǒng)需要啟動(dòng)紅外碼采集程序:先延時(shí)4.5ms放掉引導(dǎo)碼的低電平,再延時(shí)0.56ms,放掉*個(gè)碼的低電平部分,zui后延時(shí)0.8ms,讀輸入管腳的電壓,如果為低,則說明該信號(hào)為0碼,將其保存,并使累加器加一,如果為高,則說明該信號(hào)為1碼,將其保存,并把累加器加一。依次類推循環(huán)32次后就是整個(gè)紅外信號(hào)的編碼。
根據(jù)上述思路,開啟1中斷,并設(shè)置其為下降沿觸發(fā),同時(shí)開啟T0定時(shí)計(jì)數(shù)器,并設(shè)置其為16位重裝計(jì)時(shí)器。一旦紅外接收頭收到紅外信號(hào)就會(huì)引起單片機(jī)的1號(hào)中斷,隨即進(jìn)入中斷服務(wù)子程序,在中斷服務(wù)子程序中關(guān)閉計(jì)數(shù)器并將計(jì)數(shù)器中的數(shù)值記錄下來;然后,判斷該數(shù)值是否在0碼、1碼或前導(dǎo)碼的時(shí)間范圍內(nèi),如果是,則將該數(shù)值記入存儲(chǔ)區(qū)。以此類推,當(dāng)記錄完32個(gè)碼后,所有紅外信息已經(jīng)記錄完畢。程序流程圖見圖5。
圖5紅外解碼流程圖
紅外遙控信號(hào)的發(fā)射需要將代表紅外信號(hào)的高低電平調(diào)制在一個(gè)38kHz的方波上通過紅外LED發(fā)射出去,因此一方面通過編程單片機(jī)T2定時(shí)器的T2MOD和T2CON兩個(gè)寄存器,使T2工作在可編程方波發(fā)生器模式下,在P1.0口輸出38kHz的方波,另一方面依據(jù)NEC編碼的格式通過延時(shí)程序在P1.4口產(chǎn)生代表紅外信號(hào)的不同時(shí)長(zhǎng)的高低電平。兩個(gè)IO口輸出的信號(hào)在與門上相與就將紅外遙控信號(hào)調(diào)制在了38kHz的方波上。
4、結(jié)語
GSM作為公用陸地移動(dòng)通信網(wǎng),具有其他通信方式所不可比擬的*性,它通信范圍廣、傳輸數(shù)據(jù)可靠性高、短消息業(yè)務(wù)經(jīng)濟(jì)實(shí)惠,是遠(yuǎn)程無線數(shù)據(jù)傳輸系統(tǒng)比較好的一種數(shù)據(jù)傳輸方式?;贕SM的家用電器及家居環(huán)境監(jiān)控系統(tǒng),充分利用了現(xiàn)有的GSM網(wǎng)和相關(guān)的成熟技術(shù),由單片機(jī)、GSM模塊TC35i、紅外接收裝置和溫度傳感器等構(gòu)成的移動(dòng)終端,可以很好地完成短信息的收發(fā),適合遠(yuǎn)程控制帶有紅外遙控器的家用電器,并可及時(shí)報(bào)告家中的火警信息。實(shí)驗(yàn)證明,本系統(tǒng)可以成功地對(duì)華為C3100機(jī)頂盒、科龍KFR226GW/ND1空調(diào)、及長(zhǎng)虹CHD29300電視機(jī)進(jìn)行遠(yuǎn)程控制。隨著手機(jī)的普及,本系統(tǒng)具有較好的推廣前景和實(shí)用價(jià)值。