GSM網(wǎng)絡(luò)在網(wǎng)絡(luò)家電中的應(yīng)用
1 前言
本文引用地址:http://www.ex-cimer.com/article/260268.htm隨著經(jīng)濟(jì)的迅猛發(fā)展及生活質(zhì)量的不斷提高,人們對(duì)居住環(huán)境的舒適度、安全性以及操作的便捷性等要求也越來(lái)越高。比如在炎熱的酷暑,希望一上班就能享受到空調(diào)帶來(lái)的涼爽;人們旅游在外時(shí),希望能將家中的燈、電視機(jī)打開(kāi)一段時(shí)間再關(guān)閉以造成有人在家的假象,提高家居的安全性;當(dāng)小偷破壞車(chē)主的汽車(chē)防盜報(bào)警系統(tǒng)時(shí),能觸發(fā)另一系統(tǒng)自動(dòng)給正在外地辦事的車(chē)主手機(jī)或當(dāng)?shù)鼐靾?bào)警;還有半小時(shí)就下班了,現(xiàn)在就將家中電熱器打開(kāi)燒水等等。再比如,現(xiàn)在很多商用空調(diào)(如電信基站用的空調(diào))安裝在遙遠(yuǎn)、偏僻、荒蕪人煙的場(chǎng)合,這些地方的氣候條件非常惡劣,且終年無(wú)人職守,要確保里面的設(shè)備能正常穩(wěn)定運(yùn)行,就必須時(shí)刻監(jiān)控機(jī)房中的環(huán)境溫度、濕度、空調(diào)運(yùn)行狀況,當(dāng)遇到空調(diào)發(fā)生故障時(shí)應(yīng)能及時(shí)、自動(dòng)向控制中心或值班人員手機(jī)報(bào)警等?! ?/p>
在這些應(yīng)用中,通過(guò)有線網(wǎng)絡(luò)(如有線Internet網(wǎng)絡(luò)和PSTN網(wǎng)絡(luò))需要專(zhuān)用網(wǎng)線,實(shí)現(xiàn)起來(lái)不經(jīng)濟(jì)也不方便。由于GSM網(wǎng)絡(luò)覆蓋范圍廣,用戶(hù)無(wú)需另外組網(wǎng),且用戶(hù)數(shù)量無(wú)限制,因此比起傳統(tǒng)的有線集群系統(tǒng)具有無(wú)法比擬的優(yōu)勢(shì),加上GSM的SMS功能不受時(shí)間、地點(diǎn)的局限,使得利用GSM網(wǎng)絡(luò)構(gòu)筑的網(wǎng)絡(luò)家電的應(yīng)用前景越來(lái)越廣。為此,公司于2004年立項(xiàng)并成功開(kāi)發(fā)出基于GSM網(wǎng)絡(luò)的網(wǎng)絡(luò)家電 - GSM網(wǎng)絡(luò)空調(diào)系統(tǒng)?! ?/p>
2 系統(tǒng)簡(jiǎn)介
系統(tǒng)示意如圖1。
圖1 GSM系統(tǒng)示意圖
圖中系統(tǒng)可分為4部分;(1) PC(包括一個(gè)通過(guò)串口連接的無(wú)線調(diào)制調(diào)解器)或手機(jī),通過(guò)GSM網(wǎng)絡(luò)發(fā)送或接收數(shù)據(jù);(2)GSM網(wǎng)絡(luò);(3) GSM網(wǎng)關(guān),是PC和家電通訊的橋梁;(4) 網(wǎng)絡(luò)家電,可以是網(wǎng)絡(luò)空調(diào)、冰箱、電熱器具、電動(dòng)窗簾等(下以空調(diào)為例)?! ?/p>
在該系統(tǒng)中,1臺(tái)PC可帶任意多個(gè)網(wǎng)關(guān),通訊時(shí)根據(jù)網(wǎng)關(guān)的電話號(hào)碼(SIM卡號(hào))來(lái)識(shí)別;1個(gè)網(wǎng)關(guān)可帶128臺(tái)(受485總線限制)網(wǎng)絡(luò)家電,根據(jù)網(wǎng)絡(luò)家電的地址來(lái)識(shí)別。網(wǎng)絡(luò)家電的高位地址表示家電的類(lèi)別,如空調(diào)為1、熱水器為2等,而低位地址是由網(wǎng)關(guān)根據(jù)各類(lèi)家電已登陸注冊(cè)的臺(tái)數(shù)按順序自動(dòng)分配的?! ?/p>
網(wǎng)關(guān)是整個(gè)系統(tǒng)的技術(shù)關(guān)鍵,因此下面介紹GSM網(wǎng)關(guān)的設(shè)計(jì)。
3 GSM網(wǎng)關(guān)硬件設(shè)計(jì)
圖2是GSM網(wǎng)關(guān)原理圖。其中D101為89C58單片機(jī);D106、D107一起組成外擴(kuò)RAM,主要用于存貯網(wǎng)關(guān)下所有空調(diào)的即時(shí)狀態(tài)信息;GP101的型號(hào)為TC35模塊,與單片機(jī)通過(guò)RS232(D102)連接。該模塊是西門(mén)子為嵌入式設(shè)備設(shè)計(jì)的GSM雙頻通訊核心模塊,支持語(yǔ)音通訊、數(shù)據(jù)通訊和短信功能,具有GSM07.05定義的標(biāo)準(zhǔn)AT命令接口;D105為EEPROM,用于存儲(chǔ)通訊密碼、電話號(hào)碼、空調(diào)信息碼等,同時(shí)起到外部Watchdog作用;X102通過(guò)485總線(D101)接網(wǎng)絡(luò)空調(diào)。
圖2 GSM網(wǎng)關(guān)原理圖
由于GSM模塊在撥號(hào)及收發(fā)短信時(shí)有較強(qiáng)的射頻干擾,因此在設(shè)計(jì)PCB時(shí)應(yīng)注意抗干擾問(wèn)題?! ?/p>
4 GSM網(wǎng)關(guān)軟件設(shè)計(jì)
4.1 Modem初始化
4.1.1 將Modem給單片機(jī)的返回結(jié)果碼初始化為數(shù)字模式(用“ATV0”命令),可簡(jiǎn)化程序。如在數(shù)字模式時(shí)鈴聲的返回為“2r”;而在參數(shù)V的默認(rèn)設(shè)置時(shí)返回結(jié)果為字符模式,因此鈴聲的返回就變成“RINGr”。(r為回車(chē)符,下同)。
4.1.2 因需發(fā)送漢字,短信必須采用PDU(protocol descriptiON unit)模式(用“AT+CMGF=0r”命令)。PDU模式支持所有的手機(jī)。PDU串僅由數(shù)字或大寫(xiě)字母的ASCII符組成。中文或中英文混合短信須用UCS2編碼方式,短信內(nèi)容需轉(zhuǎn)化成Unicode碼?! ?/p>
4.1.3 在收到新短信時(shí)要求Modem提示(用“AT+CNMI=1,1,0,0,1r”命令)以便及時(shí)處理?! ?/p>
4.1.4 單片機(jī)在收到規(guī)定次數(shù)的打鈴信號(hào)后,要求手工摘機(jī)(用“ATS0=0r”)
4.2 數(shù)據(jù)通訊
網(wǎng)關(guān)與空調(diào)之間,網(wǎng)關(guān)是主機(jī)空調(diào)是從機(jī);PC與網(wǎng)關(guān)之間,PC是主機(jī)網(wǎng)關(guān)是從機(jī)?! ?/p>
PC用數(shù)據(jù)撥號(hào)方式(TC35分語(yǔ)間撥號(hào)和數(shù)據(jù)撥號(hào))和網(wǎng)關(guān)建立連接后,必須先驗(yàn)證通訊密碼,如密碼不對(duì),系統(tǒng)將掛機(jī)。密碼通過(guò)后,用戶(hù)可對(duì)本網(wǎng)絡(luò)所轄空調(diào)進(jìn)行開(kāi)停、設(shè)置、查詢(xún)等操作;PC會(huì)每隔一定時(shí)間發(fā)一個(gè)命令給網(wǎng)關(guān)以表明系統(tǒng)連接正常,如在規(guī)定時(shí)間內(nèi)網(wǎng)關(guān)沒(méi)有收到任何數(shù)據(jù),則網(wǎng)關(guān)認(rèn)為PC出現(xiàn)故障(如PC突然斷電),網(wǎng)關(guān)將掛機(jī);PC還可設(shè)置網(wǎng)關(guān)報(bào)警電話號(hào)碼、通訊密碼、短信密碼、信息服務(wù)中心碼等?! ?/p>
網(wǎng)關(guān)收到PC命令后,先判斷該命令是給空調(diào)的還是給網(wǎng)關(guān)本身的,如是給空調(diào)的,則轉(zhuǎn)發(fā)給空調(diào),待空調(diào)返回后最終將返回結(jié)果發(fā)給PC。在轉(zhuǎn)發(fā)PC命令給空調(diào)時(shí),須等待正在進(jìn)行的網(wǎng)關(guān)掃描空調(diào)的命令發(fā)送完畢且已返回或延時(shí)一段時(shí)間才能執(zhí)行,否則將降低通訊成功率?! ?/p>
PC與網(wǎng)關(guān)之間采用UART口通訊,波特率為9600(TC35的波特率是自適應(yīng)的)。當(dāng)收到PC一幀正確數(shù)據(jù)后,對(duì)數(shù)據(jù)的處理我們將其視為一個(gè)任務(wù)?! ?/p>
程序采用任務(wù)堆棧結(jié)構(gòu),最大任務(wù)數(shù)10個(gè),超出的部分自動(dòng)丟棄(一般任務(wù)數(shù)不會(huì)超過(guò)3個(gè))。每增加一個(gè)新任務(wù),任務(wù)壓棧:任務(wù)數(shù)加1,并記下該任務(wù)的命令、地址。程序檢查目前有無(wú)待處理的任務(wù),如有,則依次彈棧處理,每處理1個(gè),任務(wù)數(shù)減1,直到任務(wù)都處理完畢。這些任務(wù)包括處理PC命令,轉(zhuǎn)發(fā)PC命令給空調(diào),處理空調(diào)返回?cái)?shù)據(jù),回應(yīng)PC命令,網(wǎng)關(guān)掃描空調(diào),容錯(cuò)處理等?! ?/p>
網(wǎng)關(guān)處理完所有任務(wù)后(任務(wù)數(shù)為0),才對(duì)已登陸的空調(diào)狀態(tài)進(jìn)行輪詢(xún)掃描,同時(shí),每隔一定時(shí)間查詢(xún)一次是否有新空調(diào)加入網(wǎng)關(guān),如有,則由網(wǎng)關(guān)自動(dòng)分配空調(diào)地址(低位)使其登陸,登錄是以信息碼區(qū)分的,所以不會(huì)出現(xiàn)不同空調(diào)具有相同地址的情況?! ?/p>
由于既要與PC通訊又要與空調(diào)通訊,因此我們將與空調(diào)的通訊采用I/O口模擬,波特率為1200??照{(diào)數(shù)量越多,網(wǎng)關(guān)輪詢(xún)一遍所需時(shí)間越長(zhǎng),按照我們的協(xié)議100臺(tái)空調(diào)輪詢(xún)一遍的時(shí)間約在550ms*100即1min左右,但這已能滿(mǎn)足空調(diào)等家電實(shí)時(shí)性要求不高的場(chǎng)合。網(wǎng)關(guān)將輪詢(xún)時(shí)得到的空調(diào)狀態(tài)保存在外擴(kuò)RAM中,當(dāng)PC要求刷新所有空調(diào)狀態(tài)時(shí),網(wǎng)關(guān)將這些數(shù)據(jù)按每15臺(tái)一組整體打包發(fā)給PC,這樣既提高了PC的查詢(xún)速度,又保證了空調(diào)狀態(tài)的實(shí)時(shí)性?! ?/p>
通過(guò)PC設(shè)定報(bào)警電話(如PCModem模塊的SIM卡號(hào))后,在網(wǎng)關(guān)查詢(xún)到某臺(tái)空調(diào)發(fā)生故障且網(wǎng)關(guān)Modem處于不忙狀態(tài)時(shí),網(wǎng)關(guān)會(huì)主動(dòng)向該電話撥號(hào),連接成功后可由PC自動(dòng)查詢(xún)到空調(diào)故障。也可以短信形式向用戶(hù)報(bào)警。
4.3 短信處理
4.3.1讀短信
收到PC或用戶(hù)發(fā)來(lái)的新短信時(shí),TC35模塊會(huì)告知網(wǎng)關(guān)該短息的index,如index=0x31(ASCII符),則通過(guò)“AT+CMGR=1r”命令可讀到該信息的內(nèi)容。如SMSC的號(hào)碼是13800765500(順德地區(qū)信息服務(wù)中心碼),發(fā)送方手機(jī)號(hào)碼為13690673365,信息內(nèi)容為“123空調(diào)10開(kāi)”(123為密碼,10為空調(diào)低位地址),則網(wǎng)關(guān)收到的短信PDU串可以為:08 91683108705605F0 840D 91683196603763F5 0008 4060915135930010 0031003200337A7A8C03003100305F00單片機(jī)讀到上述短信后,需要進(jìn)行以下幾項(xiàng)工作:
(1)記錄發(fā)送方手機(jī)號(hào)碼(上表第6、7部分),以便回復(fù)短信;(2)根據(jù)短信編碼方式(第8部分),對(duì)短信內(nèi)容進(jìn)行解析。因編碼方式有7位、8位和16位(USC2),解碼程序也就不一樣(程序略);(3)進(jìn)行密碼校驗(yàn),如密碼不正確,則直接將其刪除;(4)進(jìn)行密碼校驗(yàn)通過(guò),且短信內(nèi)容符合相關(guān)約定,則將短信命令以特定協(xié)議格式轉(zhuǎn)發(fā)給相應(yīng)空調(diào),并將該短信刪除。因此,網(wǎng)關(guān)收到上面短信后,就將開(kāi)機(jī)命令發(fā)給10號(hào)空調(diào);(5)在規(guī)定時(shí)間內(nèi),空調(diào)未返回執(zhí)行結(jié)果,網(wǎng)關(guān)將重發(fā)。如重發(fā)3次仍沒(méi)返回,則識(shí)系統(tǒng)通訊故障?! ?/p>
4.3.2寫(xiě)短信
仍以上述短信為例??照{(diào)收到網(wǎng)關(guān)的開(kāi)機(jī)命令后執(zhí)行開(kāi)機(jī)操作,并將執(zhí)行結(jié)果返回給網(wǎng)關(guān)。如網(wǎng)關(guān)判斷該返回是回應(yīng)短信的,則網(wǎng)關(guān)以中文短信形式將結(jié)果發(fā)到PC或用戶(hù)手機(jī)上(此例中號(hào)碼為13690673365),從而方便而又廉價(jià)地實(shí)現(xiàn)了對(duì)空調(diào)的雙向短信控制。發(fā)觸的PDU串為:08 91683108705605F0 1100 0091 6831966037635F 00 0801 107A7A8C03003100305F00
表1 發(fā)送短信的格式
經(jīng)測(cè)試(小靈通手機(jī)除外),回復(fù)短信時(shí),為簡(jiǎn)化程序,上述第1、2、4、5、6、7、9、10、11部分可用表中的固定字段。
由于網(wǎng)關(guān)是用單片機(jī)控制來(lái)實(shí)現(xiàn)短信收發(fā)的,因此在對(duì)信息內(nèi)容編碼時(shí),需用到GB2312到Uni-code編碼的轉(zhuǎn)換表,即對(duì)每個(gè)GB2312字符,根據(jù)它是中文字符還是英文字符分別進(jìn)行查表轉(zhuǎn)換,這樣也就要求單片機(jī)的ROM容量要在60k以上。我們使用的單片機(jī)才32k ROM,沒(méi)有外擴(kuò),因此程序中的漢字列表只能根據(jù)實(shí)際使用需要選擇2000個(gè)左右的常用漢字,這已能滿(mǎn)足絕大多數(shù)家電控制的要求?! ?/p>
5 結(jié)束語(yǔ)
由GSM模塊TC35及單片機(jī)構(gòu)成GSM網(wǎng)關(guān),可以很好的完成短消息收發(fā)和數(shù)據(jù)通信,由此構(gòu)成的GSM網(wǎng)絡(luò)空調(diào)控制系統(tǒng)是其應(yīng)用的一個(gè)實(shí)例,其它網(wǎng)絡(luò)家電,嵌入相應(yīng)協(xié)議后就可使用。通過(guò)較長(zhǎng)時(shí)間的可靠性試驗(yàn)和用戶(hù)試用,目前系統(tǒng)運(yùn)行穩(wěn)定,用戶(hù)反映良好。
評(píng)論