金笛后花园

金笛工业手机官方博客

金笛只为您,一切全为您

基于GSM和AVR单片机的智能家居控制系统

基于GSMAVR单片机的智能家居控制系统

 

 

 

 

 

成员:武鹏飞  谢祎  刘善文  唐述杰

学院:   物理学院

指导老师:  李茂奎

 

 

 

 

2008年5月

 

基于GSMAVR单片机的智能家居控制系统

物理学院  武鹏飞谢祎刘善文唐述杰

摘要

建立一套基于GSM和AVR单片机的智能家居控制系统,实现管理员通过给GSM模块发送短信息指令以控制外围设备的目的,包括控制指定电器,开关电子门等多种功能。它的成本价并不高昂,适合于普通大众使用,有着广阔的市场前景。

其中GSM模块用于接受管理员的短信息,并传送到单片机控制系统。

单片机控制系统基于AVR单片机,处理来自GSM模块的信息,并根据预先设定的程序和短信命令来控制家居电器,以及控制GSM模块给管理员发送相关信息,使得管理员和系统可以进行交互。

独有的红外防盗报警系统,可以在家中出现可疑人时立刻通过短信向主人报告。

关键词:GSM   单片机    智能家居控制

AbstractWe design a intelligent control system which is on the basis of GSM and SCM and it will realize the book function of control of the home applications. The main process is that when the administrator sends a text message command to GSM module, the single chip will determine whether the message is from its master and then give command to the control equipment .

GSM module is used for accepting the text message and send to the MCU control system.

SCM control system is based on the AVR microcontroller, process the information from the GSM module, and in accordance with the procedures set in advance turned on or off the intelligent control system, and control through the GSM module to the manager to return to the implementation of the directive, enables the communication between administrators and the intelligent control Systems.

Keywords:   GSM  SCM  Intelligent control system 

 

前言

GSM(Global System for Mobile communication)系统是目前基于时分多址技术的移动通讯体制中比较成熟、完善、应用最广泛的一种系统。目前已建成的覆盖全国的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 所示。

  1. GSM模块的软件接口及控制技术

在我们设计的系统中,采用的是GSM通信模块为WAVECOM,该模块具备GSM无线通信的全部功能,并提供标准的UART串行接口,支持GSM 07.05所定义的AT命令集的指令。

根据GSM 07.05的定义,SMS短信息的发送和接收模式共有三种:Block模式、基于AT命令的Text模式和基于AT命令的PDU模式。

(1)PDU模式

发送和接收中文或中/英文混合的短信息必须采用PDU模式。根据GSM 07.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数据长度减去短信息服务中心地址长度,单位为字节;<CR><LF>为回车换行;pdu为PDU模式的数据包。

然后,要分析PDU数据包,根据PDU的数据格式将收到的中文信息和其它相关信息解析出来。

(2)  PDU数据包格式

PDU数据包由两部分构成,短信息服务中心地址(SMSC address)和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个字节长度的十六进制的数,代表一个中文编码。两个表的长度分别为14 890字节(2×7445)。UTF-8编码表按数据项值从小到大排序,而在GB-2312编码表中,与UTF-8相同位置处为相同汉字的GB-2312码字,如下图所示。
UTF-8、GB-2312编码表结构

②   软件解码过程为:每次从PDU模式SMS数据包的TP-UD中取出两个字节,采用二分法快速数据查找算法,在UTF-8编码表中找到其所在位置,然后在GB-2312表的相同位置处读取相对应的GB-2312编码。

③     二分法的最坏查找次数为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;我们只需要通过串口发送十六进制数码:0×41,0×54,0x2b,0×43,0x4d,0×47,0×52,0x3d,0×31,0x0d 即可。其中0×41是A对应的ASCII码,0×54是T对应的ASCII码,以此类推,只要将相应英文字母的ASCII码以十六进制的形式发送即可。

 

  1. 单片机控制系统

我们使用的是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接地。

  1. 外围控制系统

我们的外围控制系统包括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的作用是确保三极管的集电极电位在上电时为”0″电平,三极管截止,保证了加热电炉控制系统上电时不会误动作。

三极管集电极的负载继电器吸合线圈在三极管截止时会产生一个很高的反峰电压,在吸合线圈两端并接一个二极管D1,其用途是释放反峰电压,保护三极管和I/O口不会被反峰电压击穿,提高系统的可靠性。

(2)D型锁存器74LS174.

之所以在I/O引脚和上图的COM1口之间连接一个74LS174D型锁存器是为了防止单片机在运行过程中意外RESET时引发不必要的动作电位。74LS174的真值表如下:

很显然,只有当clock引脚在上升沿时才会将D引脚上的信号打入,从而有效的保证了继电器不被其他干扰和意外信号所干扰,保证了220V用电器运行的稳定性和安全性。

(3)220V电路的输入输出接口:

为了保证本系统的通用性,我们设计了通用插座作为整个系统220V电压的输入输出接口。使用时只要用普通双头电源线插入普通220V电源插座,再将想要控制的电器插在输出插座上即可,安装简单方便。如下图所示:

 

  1. 红外探测报警系统

我们选用了反射红外探测器。红外探测器实为红外光电开关,采用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(只发英文和数字)格式,即通过指令A T + C M G F = 1 完成。

③单片机向GSM模块发送每一条指令后,必须以回车符作为该条指令的结束,回车的ASCII 编码为0DH。例如,单片机向GSM模块发送“AT+CMGF=0”这条指令,其ASCII编码序列为“41H、54H、2BH、42H、4DH、47H、46H、3DH、3 0 H、0 D H”,最后一个字节0DH 就是回车符,表示该条指令结束,如果没有这个回车符, GSM模块将不识别这条指令。

④当GSM模块接收到一条完整的A T 指令后, GSM模块并不立即执行这条指令,而是先把刚才接收到的A T 指令的全部ASCII 编码序列全部反发送出来(含0DH),然后发送一个回车符和换行符的ASCII 编码,即0DH 和0AH ,最后执行该条指令。

⑤ GSM模块向单片机传送短信息内容时,其TEXT数据包的内容是以十六进制表示的数据,但并不是直接向单片机传递十六进制数据,而仍然是把每一位十六进制数以A S C I I 编码来发送。这样,二个字节的十六进制数就变成4 字节的ASCII 码。但是,TEXT 数据包中的数据字节长度部分仍然是实际字节长度,而不是变成A S C I I 码的字节长度。

2.根据上述规则编写该控制系统的软件

软件主要设计思想:

(1)测单片机与GSM模块通讯是否正常,即发送AT,收到OK即成功。

void transmit(char da)

{while(!(UCSRA&(1<<UDRE)));  //发送指令的函数

UDR=da;}

Void main()

{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|=0×01;delay2();PORTA|=1<<3;}  //发出接通电源命令

if(test3[6]==0×47)  {ppp=2;PORTA&=~0×01;delay2();PORTA|=1<<3;}//发出关闭电源命令

}

for(num=0;num<10;num++)

{transmit(zlshan[num]);}   //删除短信,防止SIM卡溢出

3.系统与电路

整个控制系统和外围测量系统的电路图如上,主要包括Mega16芯片,继电器控制单元、红外探测器单元、通讯指示单元。

继电器单元由74LS174芯片、三极管放大电路和继电器组成。具体的原理已在前面阐述。

红外探测单元,主要由红外探测器和分压电路组成。详细工作原理请见第二部分红外报警系统的论证。

通讯指示单元用于指示单片机同GSM Modem之间的通讯是否正常,如果通讯正常,指示灯就会亮起。

四.成果测试

(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)防盗检测

我们的系统包含了一个红外探测装置,当你把它放在一个合适的位置,并在出门时打开红外探测的开关,那么当有不速之客进入你家时,只要被我们的红外探头探测到,控制系统将会向GSM modem发出指令,向主人报告情况。此时,主人将受到来自控制系统的短信,内容为:

Someone has broken into your house.(有人闯入你家了)

这时你就可以及时报警或回家查看情况。从而达到防盗的功能。

 

五.参考文献

[ 1 ] 李艳华 陈慧明——单片机控制GSM手机的技术及应用

[ 2 ] 王骐  何嘉斌——单片机控制GSM模块实现短信收发的软件设计

[ 3 ]  WAVECOM——AT commonds

[ 4 ]  《AVR单片机嵌入式系统原理与应用实践》(马潮)

[ 5 ]  AVR323数据手册

 

 

 

 

 

www.sendsms.cn

9 + 6 =

回到顶部