GSM網(wǎng)絡技術在網(wǎng)絡家電中的應用
4.1 Modem初始化
4.1.1 將Modem給單片機的返回結(jié)果碼初始化為數(shù)字模式(用“ATV0”命令),可簡化程序。如在數(shù)字模式時鈴聲的返回為“2r”;而在參數(shù)V的默認設置時返回結(jié)果為字符模式,因此鈴聲的返回就變成“RINGr”。(r為回車符,下同)。
4.1.2 因需發(fā)送漢字,短信必須采用PDU(protocol description unit)模式(用“AT+CMGF=0r”命令)。PDU模式支持所有的手機。PDU串僅由數(shù)字或大寫字母的ASCII符組成。中文或中英文混合短信須用UCS2編碼方式,短信內(nèi)容需轉(zhuǎn)化成Unicode碼。
4.1.3 在收到新短信時要求Modem提示(用“AT+CNMI=1,1,0,0,1r”命令)以便及時處理。
4.1.4 單片機在收到規(guī)定次數(shù)的打鈴信號后,要求手工摘機(用“ATS0=0r”)
4.2 數(shù)據(jù)通訊
網(wǎng)關與空調(diào)之間,網(wǎng)關是主機空調(diào)是從機;PC與網(wǎng)關之間,PC是主機網(wǎng)關是從機。
PC用數(shù)據(jù)撥號方式(TC35分語間撥號和數(shù)據(jù)撥號,見參考資料4)和網(wǎng)關建立連接后,必須先驗證通訊密碼,如密碼不對,系統(tǒng)將掛機。密碼通過后,用戶可對本網(wǎng)絡所轄空調(diào)進行開停、設置、查詢等操作;PC會每隔一定時間發(fā)一個命令給網(wǎng)關以表明系統(tǒng)連接正常,如在規(guī)定時間內(nèi)網(wǎng)關沒有收到任何數(shù)據(jù),則網(wǎng)關認為PC出現(xiàn)故障(如PC突然斷電),網(wǎng)關將掛機;PC還可設置網(wǎng)關報警電話號碼、通訊密碼、短信密碼、信息服務中心碼等。
網(wǎng)關收到PC命令后,先判斷該命令是給空調(diào)的還是給網(wǎng)關本身的,如是給空調(diào)的,則轉(zhuǎn)發(fā)給空調(diào),待空調(diào)返回后最終將返回結(jié)果發(fā)給PC。在轉(zhuǎn)發(fā)PC命令給空調(diào)時,須等待正在進行的網(wǎng)關掃描空調(diào)的命令發(fā)送完畢且已返回或延時一段時間才能執(zhí)行,否則將降低通訊成功率。
PC與網(wǎng)關之間采用UART口通訊,波特率為9600(TC35的波特率是自適應的)。當收到PC一幀正確數(shù)據(jù)后,對數(shù)據(jù)的處理我們將其視為一個任務。
程序采用任務堆棧結(jié)構,最大任務數(shù)10個,超出的部分自動丟棄(一般任務數(shù)不會超過3個)。每增加一個新任務,任務壓棧:任務數(shù)加1,并記下該任務的命令、地址。程序檢查目前有無待處理的任務,如有,則依次彈棧處理,每處理1個,任務數(shù)減1,直到任務都處理完畢。這些任務包括處理PC命令,轉(zhuǎn)發(fā)PC命令給空調(diào),處理空調(diào)返回數(shù)據(jù),回應PC命令,網(wǎng)關掃描空調(diào),容錯處理等。
網(wǎng)關處理完所有任務后(任務數(shù)為0),才對已登陸的空調(diào)狀態(tài)進行輪詢掃描,同時,每隔一定時間查詢一次是否有新空調(diào)加入網(wǎng)關,如有,則由網(wǎng)關自動分配空調(diào)地址(低位)使其登陸,登錄是以信息碼區(qū)分的,所以不會出現(xiàn)不同空調(diào)具有相同地址的情況。
由于既要與PC通訊又要與空調(diào)通訊,因此我們將與空調(diào)的通訊采用I/O口模擬,波特率為1200??照{(diào)數(shù)量越多,網(wǎng)關輪詢一遍所需時間越長,按照我們的協(xié)議100臺空調(diào)輪詢一遍的時間約在550ms*100即1min左右,但這已能滿足空調(diào)等家電實時性要求不高的場合。網(wǎng)關將輪詢時得到的空調(diào)狀態(tài)保存在外擴RAM中,當PC要求刷新所有空調(diào)狀態(tài)時,網(wǎng)關將這些數(shù)據(jù)按每15臺一組整體打包發(fā)給PC,這樣既提高了PC的查詢速度,又保證了空調(diào)狀態(tài)的實時性。
通過PC設定報警電話(如PCModem模塊的SIM卡號)后,在網(wǎng)關查詢到某臺空調(diào)發(fā)生故障且網(wǎng)關Modem處于不忙狀態(tài)時,網(wǎng)關會主動向該電話撥號,連接成功后可由PC自動查詢到空調(diào)故障。也可以短信形式向用戶報警。
4.3 短信處理
4.3.1讀短信
收到PC或用戶發(fā)來的新短信時,TC35模塊會告知網(wǎng)關該短息的index,如index=0x31(ASCII符),則通過“AT+CMGR=1r”命令可讀到該信息的內(nèi)容。如SMSC的號碼是13800765500(順德地區(qū)信息服務中心碼),發(fā)送方手機號碼為13690673365,信息內(nèi)容為“123空調(diào)10開”(123為密碼,10為空調(diào)低位地址),則網(wǎng)關收到的短信PDU串可以為:08 91683108705605F0 840D 91683196603763F5 0008 4060915135930010 0031003200337A7A8C03003100305F00
單片機讀到上述短信后,需要進行以下幾項工作:
?。?)記錄發(fā)送方手機號碼(上表第6、7部分),以便回復短信;
?。?)根據(jù)短信編碼方式(第8部分),對短信內(nèi)容進行解析。因編碼方式有7位、8位和16位(USC2),解碼程序也就不一樣(程序略);
?。?)進行密碼校驗,如密碼不正確,則直接將其刪除;
?。?)進行密碼校驗通過,且短信內(nèi)容符合相關約定,則將短信命令以特定協(xié)議格式轉(zhuǎn)發(fā)給相應空調(diào),并將該短信刪除。因此,網(wǎng)關收到上面短信后,就將開機命令發(fā)給10號空調(diào);
?。?)在規(guī)定時間內(nèi),空調(diào)未返回執(zhí)行結(jié)果,網(wǎng)關將重發(fā)。如重發(fā)3次仍沒返回,則識系統(tǒng)通訊故障。
4.3.2寫短信
仍以上述短信為例??照{(diào)收到網(wǎng)關的開機命令后執(zhí)行開機操作,并將執(zhí)行結(jié)果返回給網(wǎng)關。如網(wǎng)關判斷該返回是回應短信的,則網(wǎng)關以中文短信形式將結(jié)果發(fā)到PC或用戶手機上(此例中號碼為13690673365),從而方便而又廉價地實現(xiàn)了對空調(diào)的雙向短信控制。發(fā)觸的PDU串為:08 91683108705605F0 1100 0091 6831966037635F 00 0801 107A7A8C03003100305F00
發(fā)送短信的格式如表1
經(jīng)測試(小靈通手機除外),回復短信時,為簡化程序,上述第1、2、4、5、6、7、9、10、11部分可用表中的固定字段。
由于網(wǎng)關是用單片機控制來實現(xiàn)短信收發(fā)的,因此在對信息內(nèi)容編碼時,需用到GB2312到Uni-code編碼的轉(zhuǎn)換表,即對每個GB2312字符,根據(jù)它是中文字符還是英文字符分別進行查表轉(zhuǎn)換,這樣也就要求單片機的ROM容量要在60k以上。我們使用的單片機才32k ROM,沒有外擴,因此程序中的漢字列表只能根據(jù)實際使用需要選擇2000個左右的常用漢字,這已能滿足絕大多數(shù)家電控制的要求。
5 結(jié)束語
由GSM模塊TC35及單片機構成GSM網(wǎng)關,可以很好的完成短消息收發(fā)和數(shù)據(jù)通信,由此構成的GSM網(wǎng)絡空調(diào)控制系統(tǒng)是其應用的一個實例,其它網(wǎng)絡家電,嵌入相應協(xié)議后就可使用。通過較長時間的可靠性試驗和用戶試用,目前系統(tǒng)運行穩(wěn)定,用戶反映良好。
評論