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