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