一種基于GSM的智能家居遠(yuǎn)程監(jiān)控系統(tǒng)
4 軟件系統(tǒng)設(shè)計(jì)
Atmega 128 芯片集成的指令功能豐富,內(nèi)存等資源也都比較豐富, 為了提高編程效率、代碼的可讀性、可移植性和可維護(hù)性,本系統(tǒng)使用C 語(yǔ)言開(kāi)發(fā)系統(tǒng)軟件。
4.1 主程序流程
系統(tǒng)上電后, 首先初始化各底層硬件(包括LCD 設(shè)備、串口參數(shù)等)和系統(tǒng)I /O, 然后并通過(guò)RS- 2 3 2 端口向短信模塊發(fā)送AT E 命令查詢(xún)短信模塊是否正常工作? 若收到應(yīng)答后, 則順序發(fā)送"A T + CMG F "、"A T + C NM I "、"AT+CSCA"等AT 命令(可參考AT 命令集),設(shè)置或獲取相關(guān)參數(shù),完成短信預(yù)處理。然后進(jìn)入循環(huán)等待狀態(tài),定時(shí)查詢(xún)短信模塊是否收到新短信,檢測(cè)各個(gè)傳感器的信號(hào)輸入以及鍵盤(pán)操作等。若查詢(xún)到有新短信,則判斷它是否來(lái)自授權(quán)手機(jī)? 若是, 核查該手機(jī)號(hào)碼的權(quán)限后, 對(duì)該短信進(jìn)行分析, 根據(jù)具體命令(見(jiàn)表1-3)作出響應(yīng)。一旦檢測(cè)到煙感、CO 傳感等傳感器有異常,則立即切斷主要電器的電源,輸出報(bào)警信號(hào)并向指定手機(jī)發(fā)送短信。
4.2 GSM 短信息設(shè)計(jì)
4.2.1 短信收發(fā)模式選擇
Saro 310 GSM Modem 模塊使用AT 命令集控制短信的收發(fā),它支持TEXT 和PDU 兩種短信收發(fā)模式。
前者不支持非ASCII 碼字符,不能收發(fā)中文短信,而后者支持多種不同的編碼格式, 因此在本系統(tǒng)采用PDU 模式來(lái)收發(fā)短信息。手機(jī)中文字顯示使用國(guó)標(biāo)碼,在CPU中需要先將U C S 2 編碼轉(zhuǎn)換為國(guó)標(biāo)碼以便于輸出。
UCS2 編碼與國(guó)標(biāo)碼之間轉(zhuǎn)換不能依靠算法完成,只能通過(guò)查表來(lái)實(shí)現(xiàn)轉(zhuǎn)換。
4.2.2 短信命令格式(控制協(xié)議)
短信命令分為傳感器查詢(xún)命令、基本控制命令、高級(jí)管理命令。各種命令格式和說(shuō)明分別如表1、表2 和表3 所示。
表1 傳感器查詢(xún)命令
表2 基本控制命令
表3 高級(jí)管理命令
例如, 執(zhí)行打開(kāi)電燈的命令:
uint8 ExecuteSMS Cmd(void) // 執(zhí)行命令
{ case SMS_DD :RELAY_PORT|=BIT(RELAY_DD
) ; / / 打開(kāi)電燈
DvcSt t|=0x02; break; / / 電燈的命令代碼為0000 0010B
}
短信命令以U n i c o d e 碼的形式存儲(chǔ)在數(shù)據(jù)緩沖區(qū)中。
4.2.3 短信命令解析
當(dāng)系統(tǒng)接收到短信命令后, 按順序從傳感器查詢(xún)、基本命令、高級(jí)管理命令匹配掃描。掃描代碼如下:
wh i l e ( - - i ! (mh = s t r s t r (UART0 _RxBu f ,DefDetCmd[i])));
i f( ! i ) / / 若非傳感命令
wh i l e ( - - j! (mh = s t r s t r (UART 0 _RxBu f ,DefBasicCmd[j])));
i f( ! j ) / / 若非基本命令
wh i l e ( - - k! (mh = s t r s t r (UART 0 _RxBu f ,DefAdvanceCmd[k]));
其中, U A R T 0 _ R x B u f 指向接收數(shù)據(jù)緩沖區(qū),DefDetCmd 是系統(tǒng)中預(yù)定義的傳感器命令,DefBasicCmd是基本控制命令,DefAdvanceCmd 是高級(jí)管理命令。掃描完成后,對(duì)不同類(lèi)型命令進(jìn)一步細(xì)化處理,返回對(duì)應(yīng)的命令編號(hào)。系統(tǒng)根據(jù)不同的命令編號(hào)完成不同的操作。
4.2.4 發(fā)送短信
當(dāng)系統(tǒng)接收到帶有"?"的短信命令時(shí), 完成相應(yīng)操作后,將給該授權(quán)號(hào)碼發(fā)送報(bào)告短信。短信息格式定義如下:
typedef struct Shor tMessage // 短信息結(jié)構(gòu)
{uint8 CSCA[19]; / / 短信中心號(hào)碼
uint8 FirstOctet[3];
uint8 TP_MR[3]; / / 消息參考值
uint8 RecvPhoneNo[19]; / / 對(duì)方號(hào)碼字段
ui n t8 TP_PID[3] ; / / 協(xié)議標(biāo)識(shí)
ui nt8 TP_DCS[3] ; / / 編碼方式
uin t8 TP_VP[3]; / / 有效期
uint8 TP_UDL[3]; / / 用戶(hù)數(shù)據(jù)長(zhǎng)度
uint8 TP_UD[255]; / / 消息內(nèi)容
}SHORTMESSAGE;
系統(tǒng)上電時(shí),先執(zhí)行短信息預(yù)處理,將信息結(jié)構(gòu)中的常量賦值并存入Flash 中,要發(fā)送短信時(shí)再將信息結(jié)構(gòu)補(bǔ)充完整。發(fā)送過(guò)程是(: 1)向短信模塊發(fā)送"AT+CMGS"命令(; 2)短信模塊回應(yīng)后,發(fā)送短信息結(jié)構(gòu)串(; 3)等待發(fā)送完成。
4.2.5 短信安全設(shè)計(jì)
為了提高系統(tǒng)的安全性,本系統(tǒng)設(shè)置了授權(quán)號(hào)碼庫(kù),只有在授權(quán)號(hào)碼庫(kù)中的授權(quán)手機(jī)對(duì)系統(tǒng)發(fā)送的命令才是有效的。當(dāng)系統(tǒng)接收到一條新短信時(shí),先判斷號(hào)碼是否包含在授權(quán)號(hào)碼庫(kù)中,如短信來(lái)自非授權(quán)手機(jī)則將此信息刪除。執(zhí)行完授權(quán)號(hào)碼發(fā)送的命令后,系統(tǒng)再通過(guò)短信模塊向用戶(hù)發(fā)送命令執(zhí)行情況的信息。授權(quán)號(hào)碼庫(kù)是可以修改的,管理號(hào)碼的手機(jī)可以發(fā)送短信命令將陌生號(hào)碼加入到授權(quán)號(hào)碼庫(kù)中或刪除授權(quán)號(hào)碼,也可以通過(guò)鍵盤(pán)添加、刪除授權(quán)號(hào)碼。
5 實(shí)物測(cè)試
該系統(tǒng)的實(shí)物測(cè)試結(jié)果如圖4 所示, 通過(guò)授權(quán)手機(jī)向系統(tǒng)發(fā)送短信"打開(kāi)電燈?",系統(tǒng)完成短信命令的解析、打開(kāi)電燈后,在LCD 顯示當(dāng)前操作,并按要求回復(fù)一條短信。
6 結(jié)束語(yǔ)
本文所設(shè)計(jì)的智能家居遠(yuǎn)程監(jiān)控系統(tǒng)只須對(duì)原有的電源、安防等系統(tǒng)的布線(xiàn)做很少的調(diào)整,便可通過(guò)手機(jī)實(shí)現(xiàn)遙控家電。該系統(tǒng)實(shí)用性強(qiáng)、操作簡(jiǎn)單、成本低、性?xún)r(jià)比高。還很容易推廣到戶(hù)外廣告牌監(jiān)控、水庫(kù)水位監(jiān)控、電梯安全運(yùn)行監(jiān)控等眾多領(lǐng)域。
萬(wàn)能遙控器相關(guān)文章:萬(wàn)能遙控器代碼
蜂鳴器相關(guān)文章:蜂鳴器原理 燃?xì)鈭?bào)警器相關(guān)文章:燃?xì)鈭?bào)警器原理
評(píng)論