来源:中国一卡通网 作者:不详 发布时间:2014-03-28 10:50:17 字体:[大 中 小]
摘 要:本文提出了一种基于SMS和Atmega128的智能家居远程监控系统,只须对原有的电源、安防等系统的布线做很少的调整,便可通过手机实现遥控家电。该系统实用性强、操作简单、成本低、性价比高。还很容易推广到户外广告牌监控、水库水位监控、电梯安全运行监控等众多领域。
4.2 GSM短信息设计
4.2.1 短信收发模式选择
Saro 310 GSM Modem模块使用AT命令集控制短信的收发,它支持TEXT和PDU两种短信收发模式。
前者不支持非ASCII码字符,不能收发中文短信,而后者支持多种不同的编码格式,因此在本系统采用PDU模式来收发短信息。手机中文字显示使用国标码,在CPU中需要先将UCS2编码转换为国标码以便于输出。
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
}
短信命令以Unicode码的形式存储在数据缓冲区中。
4.2.3 短信命令解析
当系统接收到短信命令后,按顺序从传感器查询、基本命令、高级管理命令匹配扫描。扫描代码如下:
while( - - i &&! (mh =strstr(UART0 _RxBu f ,DefDetCmd[i])));
if( ! i ) //若非传感命令
while( - - j&&! (mh = strstr(UART 0 _RxBu f ,DefBasicCmd[j])));
if( ! j ) //若非基本命令
while( - - k&&! (mh = strstrs(UART 0 _RxBu f ,DefAdvanceCmd[k]));
其中, UARTO_RxBuf 指向接收数据缓冲区,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 实物测试
该系统的实物测试结果,通过授权手机向系统发送短信“打开电灯?”,系统完成短信命令的解析、打开电灯后,在LCD显示当前操作,并按要求回复一条短信。
6 结束语
本文所设计的智能家居远程监控系统只须对原有的电源、安防等系统的布线做很少的调整,便可通过手机实现遥控家电。该系统实用性强、操作简单、成本低、性价比高。还很容易推广到户外广告牌监控、水库水位监控、电梯安全运行监控等众多领域。
推荐文章
论坛热帖