基于GSM的智能家居控制系统Word文档下载推荐.docx
- 文档编号:1568507
- 上传时间:2023-05-01
- 格式:DOCX
- 页数:16
- 大小:406.41KB
基于GSM的智能家居控制系统Word文档下载推荐.docx
《基于GSM的智能家居控制系统Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《基于GSM的智能家居控制系统Word文档下载推荐.docx(16页珍藏版)》请在冰点文库上搜索。
前言:
GSM(GlobalSystemforMobilecommunication)系统是目前基于时分多址技术的移动通讯体制中比较成熟、完善、使用最广泛的一种系统。
目前已建成的覆盖全国的GSM数字蜂窝移动通信网,是我国公众移动通信网的主要方式。
基于GSM的短信息服务,是一种在移动网络上传送简短信息的无线使用,是一种信息在移动网络上储存和转寄的过程。
由于GSM网络在全国范围内实现了联网和漫游,具有网络能力强的特点,用户无需另外组网,在极大提高网络覆盖范围的同时为客户节省了昂贵建网费用和维护费用。
同时,它对用户的数量也没有限制,克服了传统的专网通信系统投资成本大,维护费用高,且网络监控的覆盖范围和用户数量有限的缺陷。
比起传统的集群系统在无线网络覆盖上具有无法比拟的优势,加上GSM的SMS本身具备的数据传送功能,都使得这些使用得到迅速的普及。
利用GSM短信息系统进行无线通信还具有双向数据传输功能,性能稳定,为远程数据传送和监控设备的通信提供了一个强大的支持平台。
我们开发的基于GSM和AVR单片机的智能家居控制系统正是利用了GSM短信息系统的通信平台。
系统介绍:
一.方案论证
系统分为三个部分:
GSM模块,单片机控制模块,外围控制系统。
1.GSM模块和单片机的硬件接口技术方面
目前市场上流行的大部分GSM模块几乎都具有数据引出口,并基本上都支持和GSM短信息相关的AT控制指令(GSM-SMS-AT指令),GSM模块通过数据口以串行方式接收指令并向外输出数据。
理论上讲,在数据口中找出RXD、TXD和GND引脚和单片机的串口对应连接即完成了硬件接口。
GSM模块数据线是专为连接PC机9针串口而设计的,信号电平为标准的RS232电平,只要单片机的串口也转换为RS232电平,就可方便连接。
9针串口引脚定义是固定的,即2脚为TXD(GSM模块发送),3脚为RXD(GSM模块接收)、5脚为GND。
这样,无论什么型号的GSM模块和单片机的连接就成了固定连接,不需要知道GSM模块数据口信号的具体定义,二者通过数据线的
连接电路如图1所示。
2.GSM模块的软件接口及控制技术
在我们设计的系统中,采用的是GSM通信模块为WAVECOM,该模块具备GSM无线通信的全部功能,并提供标准的UART串行接口,支持GSM07.05所定义的AT命令集的指令。
根据GSM07.05的定义,SMS短信息的发送和接收模式共有三种:
Block模式、基于AT命令的Text模式和基于AT命令的PDU模式。
(1)PDU模式
发送和接收中文或中/英文混合的短信息必须采用PDU模式。
根据GSM07.05的定义,只要控制器通过UART接口向GSM模块下发AT命令,就可以直接读取收到的PDU模式的短信息:
"
AT+CMGF=0"
‘设置为PDU模式
AT+CMGR=1"
‘读取接收的一条短信息
在PDU模式下,GSM通信模块的回答格式为:
+CMGR:
<
stat>
,<
length>
<
CR>
LF>
pdu>
其中:
stat表示该条短信息的状态,通常为0(未读过,新的短信息)或1(已读过);
Length为十进制数,表示pdu数据长度减去短信息服务中心地址长度,单位为字节;
为回车换行;
pdu为PDU模式的数据包。
然后,要分析PDU数据包,根据PDU的数据格式将收到的中文信息和其它相关信息分析出来。
(2)
PDU数据包格式
PDU数据包由两部分构成,短信息服务中心地址(SMSCaddress)和TPDU,表2为PDU数据包的格式,其中一个数据单元为一个字节。
表2
PDU数据包格式(接受MSM):
(3)
PDU模式的纯英文短信息解码
PDU模式的纯英文短信息编码使用GSM字符集的7位编码,此时TP-DCS的值为00。
如短信息内容为英文字符“Hi”,首先将各个字符转换为7位的标准二进制ASCII码,然后要将后面字符的低位逐位调整到前面,补齐前面的差别。
例如:
“H”的二进制ASCII码为1001000,“i”二进制ASCII码为1101001;
显然H的二进制编码不足八位,那么就将后面字符i的最后一位补足到H的前面,就成了11001000(C8),i剩下六位110100,前面再补两个0,变成00110100(34),于是“Hi”就变成了两个八进制数C834。
由于PDU模式的纯英文短信息采用7位编码,解码不方便,因此对于只需发送和接收纯英文字符和数字符号的使用,最好采用Text模式发送和接收短信息。
(4)中文短信息的解码
由于中文字的编码是采用2个字节的编码,因此发送和接收中文或中英文混合的短信息只能采用PDU模式。
但在GSM标准中,中文编码采用UTF-8的编码,不是目前国内常用的GB-2312编码,故还需要进行中文编码的转换,才能和采用GB-2313汉字库相配合显示汉字字型。
由于UTF-8和GB-2312编码之间不存在一一对应的线性关系,因此只能采用查表的方式进行转换。
下面给出一个由UTF-8到GB-2312编码转换的算法。
①
建立UTF-8和GB-2312两个中文编码表,表中数据项为2个字节长度的十六进制的数,代表一个中文编码。
两个表的长度分别为14890字节(2×
7445)。
UTF-8编码表按数据项值从小到大排序,而在GB-2312编码表中,和UTF-8相同位置处为相同汉字的GB-2312码字,如下图所示。
UTF-8、GB-2312编码表结构
②
软件解码过程为:
每次从PDU模式SMS数据包的TP-UD中取出两个字节,采用二分法快速数据查找算法,在UTF-8编码表中找到其所在位置,然后在GB-2312表的相同位置处读取相对应的GB-2312编码。
3二分法的最坏查找次数为lg2(n+1),UTF-8表的长度n为7445,固最坏查找次数为13次,就是说一个中文编码由UTF-8到GB-2312的转换最多经过13次比较查找就可完成。
这比采用简单的顺序查表要快的多,大大减少了查表所花费的时间,非常适合在一般的嵌入式系统中使用。
(5)TEXT模式
Text模式只支持传送英文及数字信息,但它的编码要比PDU模式简单很多,因此我们在我们的智能控制系统中采用了Text模式。
TEXT模式在信息传送时通过串口传递的是十六进制ASCII码。
其USART通讯默认使用9600比特率,8位数据信息,无奇偶校验,有一位开始位和一位结束位。
例如,我们要发送指令来读取第一条短信,使用命令:
AT+CMGR=1;
我们只需要通过串口发送十六进制数码:
0x41,0x54,0x2b,0x43,0x4d,0x47,0x52,0x3d,0x31,0x0d即可。
其中0x41是A对应的ASCII码,0x54是T对应的ASCII码,以此类推,只要将相应英文字母的ASCII码以十六进制的形式发送即可。
3.单片机控制系统
我们使用的是Atmel公司的AVR高速8位微控制器ATmega16。
ATmega16芯片为40个引脚,内部集成了1K字节的RAM、512字节的EEPROM、16K字节的Flash以及2个UART串行接口等。
由于采用了高性能的MCU,省掉了大量的外围器件,如外扩RAM、ROM存储器等,使硬件结构大大简化,提高了系统的可靠性。
ATmega16芯片的引脚图如下:
其中的PD0即为RXD引脚(RXD是USART的数据接收引脚),PD1即为TXD引脚(TXD是USART的数据发送引脚),引脚11即为GND接地。
4.外围控制系统
我们的外围控制系统包括D型锁存器74LS174、220V继电器、220V电路输入输出接口系统。
(1)继电器的选择及控制方案。
我们使用的是12V驱动的微型电磁继电器,型号是JQC-3F,12VDC,10A,250VAC。
我们的电路图如下
其中我们使用的继电器功率是0.36W,按12V电压供电计算,额定电流是30mA,8050的放大倍数为300倍,故基极的输入电流应为0.1mA。
AVR单片机IO端口的输出电压为5V,按8050的导通压降为0.7V计算,我们设定的基极电阻为5K1。
由于AVR在上电时,DDRx和PORTx的值均初始化为"
0"
I/O引脚呈高阻输入方式,因此电阻R2的作用是确保三极管的集电极电位在上电时为"
电平,三极管截止,保证了加热电炉控制系统上电时不会误动作。
三极管集电极的负载继电器吸合线圈在三极管截止时会产生一个很高的反峰电压,在吸合线圈两端并接一个二极管D1,其用途是释放反峰电压,保护三极管和I/O口不会被反峰电压击穿,提高系统的可靠性。
(2)D型锁存器74LS174.
之所以在I/O引脚和上图的COM1口之间连接一个74LS174D型锁存器是为了防止单片机在运行过程中意外RESET时引发不必要的动作电位。
74LS174的真值表如下:
很显然,只有当clock引脚在上升沿时才会将D引脚上的信号打入,从而有效的保证了继电器不被其他干扰和意外信号所干扰,保证了220V用电器运行的稳定性和安全性。
(3)220V电路的输入输出接口:
为了保证本系统的通用性,我们设计了通用插座作为整个系统220V电压的输入输出接口。
使用时只要用普通双头电源线插入普通220V电源插座,再将想要控制的电器插在输出插座上即可,安装简单方便。
如下图所示:
5.红外探测报警系统
我们选用了反射红外探测器。
红外探测器实为红外光电开关,采用9V电源供电,其特性为当光电开关发出的光线在探测距离内未被反射时,OUT输出9V高电平;
当光电开关发出的光线在探测距离内被反射时,OUT输出0V低电平。
根据这一电平特性,采用下图分压电路,该分压电路采用串联分压,两电阻R6、R7阻值相等,使红外探测器高电平时有4.5伏输入MAGE16,从而达到输入电平的变化。
我们在信号处理上选择了使用mega16的INT0外部中断。
当有人从探头的前面经过时,就会产生一个低电平信号,进而触发单片机向主人发送报警的短信程序。
二.系统总体方案
三.实际系统及电路设计
1.GSM通讯模式的选择及结论
鉴于TEXT模式在运行中的易操作性,我们最终选择了这种模式作为我们GSM模块和单片机之间的通信方式。
但执行一条令,也并非某些资料中介绍得那么简单。
事实上,指的执行过程需要单片机和手机交互应答完成,每一次送或接收的字节数有严格的规定,二者必须依据这些定实现数据交换,否则,通信就是失败的。
我们经过反复测试,总结出来如下一些规律:
①所有AT指令的指令符号、常数、TEXT数据包等都是以ASCII编码形式传送的,比如“A”的ASCII编码为41H,“T”的ASCII编码为54H,数字“0”的ASCII编码为30H等。
②单片机控制GSM模块工作,必须把GSM模块的短信息工作模式设置为TEXT(只发英文和数字)格式,即通过指令AT+CMGF=1完成。
③单片机向GSM模块发送每一条指令后,必须以回车符作为该条指令的结束,回车的ASCII编码为0DH。
例如,单片机向GSM模块发送“AT+CMGF=0”这条指令,其ASCII编码序列为“41H、54H、2BH、42H、4DH、47H、46H、3DH、30H、0DH”,最后一个字节0DH就是回车符,表示该条指令结束,如果没有这个回车符,GSM模块将不识别这条指令。
④当GSM模块接收到一条完整的AT指令后,GSM模块并不立即执行这条指令,而是先把刚才接收到的AT指令的全部ASCII编码序列全部反发送出来(含0DH),然后发送一个回车符和换行符的ASCII编码,即0DH和0AH,最后执行该条指令。
⑤GSM模块向单片机传送短信息内容时,其TEXT数据包的内容是以十六进制表示的数据,但并不是直接向单片机传递十六进制数据,而仍然是把每一位十六进制数以ASCII编码来发送。
这样,二个字节的十六进制数就变成4字节的ASCII码。
但是,TEXT数据包中的数据字节长度部分仍然是实际字节长度,而不是变成ASCII码的字节长度。
2.根据上述规则编写该控制系统的软件
软件主要设计思想:
(1)测单片机和GSM模块通讯是否正常,即发送AT,收到OK即成功。
voidtransmit(charda)
{while(!
(UCSRA&
(1<
UDRE)));
//发送指令的函数
UDR=da;
}
Voidmain()
{init_devices();
for(num=0;
num<
3;
num++)
transmit(zlqueren[num]);
//发送AT确认指令,验证通讯是否正常
delay1();
(2)机接收GSM发送过来的指令和预设指令对比,对符合的指令执行相应控制程序。
关键程序段:
for(a=0;
a<
4;
a++)
{if(!
(tmp[a]==neirong3[a]))a=30;
if(a==3)w=1;
//短信内容检测,验证密码和指令
aa=0;
//关闭AA
i=0;
pf=&
test1[0];
//清空临时数组1,准被接受新命令
if(dd)
{
if(test3[6]==0x4b){ppp=3;
PORTA|=0x01;
delay2();
PORTA|=1<
}//发出接通电源命令
if(test3[6]==0x47){ppp=2;
PORTA&
=~0x01;
}//发出关闭电源命令
10;
{transmit(zlshan[num]);
}//删除短信,防止SIM卡溢出
3.系统和电路
整个控制系统和外围测量系统的电路图如上,主要包括Mega16芯片,继电器控制单元、红外探测器单元、通讯指示单元。
继电器单元由74LS174芯片、三极管放大电路和继电器组成。
具体的原理已在前面阐述。
红外探测单元,主要由红外探测器和分压电路组成。
详细工作原理请见第二部分红外报警系统的论证。
通讯指示单元用于指示单片机同GSMModem之间的通讯是否正常,如果通讯正常,指示灯就会亮起。
四.成果测试
(1)短信控制家用电器
本项目拟实现通过手机给系统发送手机短信(内容为密码和动作指令),单片机模块和GSM模块通讯,单片机通过控制继电器来控制220V家用电器(我们这里演示用的是普通台灯)。
在GSM模块中插入一张普通的手机卡,连接好整个电路并上电。
用另外任何一部手机向插入卡发送短信指令。
我们指定的短信指令为V123456KD(或V123456GD),V为密码标识符,123456为系统密码,KD和MD为动作指令。
当发送V123456KD时,单片机判断正确后,通过控制继电器的动作接通220V强电,使电灯点亮;
发送V123456GD时,单片机通过控制继电器断开220V强电,使电灯熄灭。
我们所做的只是一个通过手机控制台灯的简易系统。
由此,我们可以通过手机控制任何一个220V的家用电器,制作出一整套智能家居:
(a)亲戚远道而来,但碰巧自己不在家,可是不能让别人老在门口等着。
因此,可以做一个基于GSM和单片机的电子锁,一条短信便可为亲戚开启方便之门。
(b)夏天下班后回到家炎热难耐,此时再打开空调也难解炎热之恨。
因此,可以通过本系统控制空调,在回到家前20分钟开启空调,回到家后便可享受空调的凉爽。
(c)下班回家回家后是又饿又累,因此可以通过此系统控制电饭煲,在回家前半小时便开始煮饭,回到家便可饱餐一顿。
(2)修改短信指令的密码
我们系统的初始密码是123456,为了用户方便,用户可根据自己的需求更改密码。
更改密码的方法是:
发送短信:
VXXXXXX@XXXXXX至控制系统即可。
其中V后面跟的是原来的密码,@是密码修改标志符,@后面跟的是新的密码。
根据我们系统的设计,密码由6位组成,可以使用除V以外的0-9以及a-Z共61种字符,但不可以使用预定义的标志符V和@,其余字符可供用户自由使用。
(3)防盗检测
我们的系统包含了一个红外探测装置,当你把它放在一个合适的位置,并在出门时打开红外探测的开关,那么当有不速之客进入你家时,只要被我们的红外探头探测到,控制系统将会向GSMmodem发出指令,向主人报告情况。
此时,主人将受到来自控制系统的短信,内容为:
Someonehasbrokenintoyourhouse.(有人闯入你家了)
这时你就可以及时报警或回家查看情况。
从而达到防盗的功能。
五.参考文献
[1]李艳华 陈慧明——单片机控制GSM手机的技术及使用
[2]王骐何嘉斌——单片机控制GSM模块实现短信收发的软件设计
[3]WAVECOM——ATcommonds
[4]《AVR单片机嵌入式系统原理和使用实践》(马潮)
[5]AVR323数据手册
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 GSM 智能家居 控制系统