基于单片机和GSM的智能报警系统
成员:黄琪、楚现涛、高庆学、袁伟浩
学院: 物理学院
指导老师:李茂奎
2011年6月5日
摘要:...2
前言:...3
硬件篇...4
一、单片机...4
二、GSM模块:...5
1.GSM模块与单片机的硬件接口技术方面...5
2.GSM模块的软件接口及控制技术...6
三、硬件逻辑:...7
软件篇...8
一、软件思路...8
二、单片机程序...8
三、系统测试过程以及测试数据...15
1.测试仪器...15
2、串口调试:...16
测试结果总结...20
资源使用:...21
参考文献...21
摘要:
建立一套基于GSM和AVR单片机的智能报警系统,实现如有异常信号,则可通过单片机控制GSM模块发送短信息以通知管理员的目的。通过一定的改造可适用于各种场合,如防盗门、防盗锁、甚至煤气泄漏报警等多种功能。它的成本价并不高昂,适合于普通大众使用,有着广阔的市场前景。
其中,红外开关或者传感器一类的东西,检测到异常,则可触发单片机进而控制GSM模块发短信报警。单片机控制系统基于AVR单片机,处理来自传感器的信息,并根据预先设定的程序来控制GSM模块给管理员发送相关信息。
关键字 GSM技术,AVR单片机,智能报警
前言:
GSM(Global System for Mobilecommunication)系统是目前基于时分多址技术的移动通讯体制中比较成熟、完善、应用最广泛的一种系统。目前已建成的覆盖全国的GSM数字蜂窝移动通信网,是我国公众移动通信网的主要方式。基于GSM的短信息服务,是一种在移动网络上传送简短信息的无线应用,是一种信息在移动网络上储存和转寄的过程。由于GSM网络在全国范围内实现了联网和漫游,具有网络能力强的特点,用户无需另外组网,在极大提高网络覆盖范围的同时为客户节省了昂贵建网费用和维护费用。同时,它对用户的数量也没有限制,克服了传统的专网通信系统投资成本大,维护费用高,且网络监控的覆盖范围和用户数量有限的缺陷。比起传统的集群系统在无线网络覆盖上具有无法比拟的优势,加上GSM的SMS本身具备的数据传送功能,都使得这些应用得到迅速的普及。利用GSM短信息系统进行无线通信还具有双向数据传输功能,性能稳定,为远程数据传送和监控设备的通信提供了一个强大的支持平台。我们开发的基于GSM和AVR单片机的智能报警系统正是利用了GSM短信息系统的通信平台。
硬件篇
一、单片机
我们使用的是Atmel公司的AVR高速8位微控制器ATmega16 。ATmega16芯片为40个引脚,内部集成了1K字节的RAM、512字节的EEPROM、16K字节的Flash以及2个UART串行接口等。由于采用了高性能的MCU,省掉了大量的外围器件,如外扩RAM、ROM存储器等,使硬件结构大大简化,提高了系统的可靠性。
它与51单片机、PIC单片机相比具有一系列的优点:
1:在相同的系统时钟下AVR运行速度最快;
2:芯片内部的Flsah、EEPROM、SRAM容量较大;
3:所有型号的Flash、EEPROM都可以反复烧写、全部支持在线编程烧写(ISP);
4:多种频率的内部RC振荡器、上电自动复位、看门狗、启动延时等功能,零外围电路也可以工作;
5:每个IO口都可以以推换驱动的方式输出高、低电平,驱动能力强;
6:内部资源丰富,一般都集成AD、DA模数器、PWM、SPI、USART、TWI、I2C通信口、丰富的中断源等。
目前支持AVR单片机编译器的语言主要有汇编语言、C语言、BASIC语言等。其中C编译器主要有CodeVisionAVR、AVRGCC、IAR、ICCAVR等,C语言编译器由于它具有功能强大、运用灵活、代码小、运行速度快等先天性的优点,使得它在专业程序设计上具有不可代替的地位。
以单片机位核心的外围电路主要包括供电部分、输出部分和输入部分。要点如下:
1.供电部分为开发板自带的电源线。
2.串口部分采用了MAX232芯片。注意串口的连接要严格按照图中的设置才能保证公头与母头的TXD、RXD和GND相连。
图2
3.我们使用了ATmega16的内部4MHz晶振。
二、GSM模块:
1.GSM模块与单片机的硬件接口技术方面
GSM模块通过数据口以串行方式接收指令并向外输出数据。理论上讲,在数据口中找出RXD、TXD 和 GND 引脚与单片机的串口对应连接即完成了硬件接口。GSM模块数据线是专为连接PC 机9 针串口而设计的,信号电平为标准的RS232 电平,只要单片机的串口也转换为RS232 电平,就可方便连接。9 针串口引脚定义是固定的,即2 脚为TXD(GSM模块发送),3 脚为RXD(GSM模块接收)、5 脚为GND。这样,无论什么型号的GSM模块与单片机的连接就成了固定连接,不需要知道GSM模块数据口信号的具体定义,二者通过数据线的。
连接电路如图 1 所示。
2.GSM模块的软件接口及控制技术
我们使用的是西门子公司的TC35模块,用户操作系统接入GSM网络的终端适配器,支持AT指令集,支持语音通话、短信、传真等业务,支持USART串行通信。
由于TC35模块的外围电路太过复杂,我们直接购买了已经具备外围电路的模块开发板。开发板上还有一个LED信号灯,在模块与网络进行通信的时候会闪烁以指示通信状态。模块通过串口与单片机相连。
TC35支持PDU和TEXT模式的短信息,由于PDU模式比较复杂,需要解码等,在我们的智能报警系统中选择相对简单的TEXT模式。TEXT模式在信息传送时通过串口传递的是十六进制ASCII码。其USART通讯默认使用9600比特率,8位数据信息,无奇偶校验,有一位开始位和一位结束位。
三、硬件逻辑:
我们硬件要实现的目的为单片机通过检测外界信号,控制GSM给管理员发送短信。GSM则通过USART串口与单片机相连,实现通信。
AVR mega16 |
GSM |
外部信号 |
USART串口转换 |
管理员手机 |
软件篇
一、软件思路
我们编写的软件大体思路是单片机通过检测外界电压信号的变化,控制GSM模块发送短信息。
二、单片机程序
1.语言:C。
2.编译环境:CVAVR。
3.下载软件:AVR Studio。
4.功能概述:单片机控制GSM发送短信
5.算法结构:我们用下面的示意图来简单表示本程序的算法结构(如图3,非流程图)。
初始化:对I/O口、USART、模拟比较器和GSM模块进行初始化,对全局变量赋值。
等待状态:初始化后顺利进入等待状态。USART不断地采用轮询的方式发送函数。一旦接收到模拟比较器传来的信号,USART即可通过串口向GSM发送指令。
初始化 |
等待状态 |
检测到信号 |
发送短信 |
图3
程序:
PORTB.2=1;
DDRB.2=1;
PORTD=0x03;
DDRD=0x02;
UCSRA=0x00;
UCSRB=(1<<RXCIE)|(1<<RXEN)|(1<<TXEN);//使能RXC中断,接收允许,发送允许
UCSRC=(1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);//8位数据位、1位停止位、无奇偶位
UBRRH=BAUD_H;//设置波特率
UBRRL=BAUD_L;
#asm("sei")
}
for(i=0;t[i]!=' ';i++) USART_Transmit(t[i]);
delay_ms(1222);
for(i=0;p[i]!=' ';i++) USART_Transmit(p[i]);//传递短信中心号码
delay_ms(1222);
for(i=0;q[i]!=' ';i++) USART_Transmit(q[i]);//传递短信模式
delay_ms(1222);
}
void ana_comp_isr(void)
{
ACSR=0x40;//模拟比较器初始化
//analog comparator compare event
//硬件自动清除ACI标志位
if((ACSR&(1<<ACO))==0)//检测ACO
{PORTB.2 =1;//如果AIN0>AIN1(ACO=0),LED亮
for(i=0;r[i]!=' ';i++) USART_Transmit(r[i]);//传递接受手机号码
delay_ms(1222);
for(i=0;s[i]!=' ';i++) USART_Transmit(s[i]);//传递短信内容
USART_Transmit(0x1A);
USART_Transmit('r');
USART_Transmit('n');
delay_ms(1222);
}//Bit 5 ACO: 模拟比较器输出 模拟比较器的输出经过同步后直接连到ACO。
else
PORTB.2=0;//LED灭
}
void main(void)
{
init();
while(1)
{
ana_comp_isr();
}
}
注:程序中使用了大量的宏定义
三、系统测试过程以及测试数据
1.测试仪器
CVAVR,AVR STUDIO 4.0,JTAG,串口调试助手,ATMEGA16单片机、GSM模块等
任何一个模块首次使用时,必须要测试其工作是否正常,由于其自带RS232接口,所以我们选择了的串口调试软件v2.2版进行调试。
2、串口调试:
首先,我们对GSM进行了调试。
GSM的AT指令集比较难以掌握,并没有很全面的资料。AT指令是纯ASCII码指令。如果AT指令执行成功,“OK”字符串返回;如果AT 指令语法错误或AT 指令执行失败,“ERROR”字符串返回。必有返回。几乎所有的成功执行都有OK的返回。所有指令都要以回车符结尾。
我们在实验中,切实用到的和调试过的指令有:
AT——测试连接响应——OK——连接正常
A/——重复刚才的命令重复刚才执行过的命令,A/命令本身不能重复
3)AT+CREG?——查询网络注册情况
响应——+CREG:0,1或+CREG:0,5证明SIM卡已经注册可以使用。
0没有注册
1注册本地网络
2没有注册,但正在搜索
3网络注册失败,限制服务
4 未知
5已注册,漫游
4)AT+CMGF?——查询接收格式
响应——+CMGF:0——PUD格式
响应——+CMGF:1——TEXT格式
AT+CMGF=0——设置为PUD格式
AT+CMGF=1——设置为TEXT格式
AT+IPR=XXXX——设置波特率为XXXX
AT+CSCA=”+8613800531500”——设置短信服务中心地址
AT+CMGS= 42+8615216403058 42rn设置接收手机号码 等,如图4。
图4
然后,我们编写了一个简单的测试程序,来检测单片机的USART串口通信是否正常,测试程序如下:
#include<mega16.h>
#include<stdio.h>
#include<delay.h>
void main(void)
{
inti;
PORTD=0x03;
DDRD=0x02;
while (1)
{
for (i=0;i<10;i++)
{
putchar(i);
delay_ms(1000);
}
};
}
结果如图5所示
图5
经测试,GSM和单片机的串口通信均正常,这样就可以排除硬件问题了,专心软件设计了。
将程序写进单片机后,将单片机的串口与计算机的串口相连,点击运行,就可以从串口调试助手中看到从单片机中是否串出数据,以及正确与否,测试结果如图6所示。
图6
最后,将单片机与GSM模块直接相连,通过串出指令控制模块发送短信,模块的响应时间以及指令的格式问题需要在程序中调节优化。
测试结果总结
经实验验证,实现了通过单片机控制GSM Modem进行短信息的发送。当然,我们的系统还存在一些不足:在发送过程中,有时会出现响应过慢的或发送内容不全以及发送与接收之间的延迟等情况,后经修改程序中的延时函数,以及对GSM 模块初始化后,问题基本解决,系统工作情况良好。
资源使用:
AVRmega16开发板、TC35模块等
参考文献
《单片机控制GSM模块实现短信收发的软件设计》王骐 何嘉斌
《AVR单片机嵌入式系统原理与应用实践》马潮
《单片机原理及接口技术》 李茂奎 等
GSM ——ATcommonds
AVRmega16数据手册