基于avr单片机和gsm的短信网关

上传人:第*** 文档编号:30673724 上传时间:2018-01-31 格式:DOC 页数:12 大小:316.50KB
返回 下载 相关 举报
基于avr单片机和gsm的短信网关_第1页
第1页 / 共12页
基于avr单片机和gsm的短信网关_第2页
第2页 / 共12页
基于avr单片机和gsm的短信网关_第3页
第3页 / 共12页
基于avr单片机和gsm的短信网关_第4页
第4页 / 共12页
基于avr单片机和gsm的短信网关_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《基于avr单片机和gsm的短信网关》由会员分享,可在线阅读,更多相关《基于avr单片机和gsm的短信网关(12页珍藏版)》请在金锄头文库上搜索。

1、基于 AVR 单片机和 GSM 的短信网关摘要:本产品以 AVR 系列单片机 ATMEGA16 为控制核心,以 GSM 短信息发送与接收模块 wavecome 为辅助设备,来实现短信的发送与接收功能,进而实现远程的通信与控制。关键词:GSM ATMEGA16 单片机 设计背景:随着 3G 网络的出现,以及 3G 手机的普及,无线通讯技术已经发展到相当成熟的水平,而无线控制也在各种场合极大的发挥着作用。GSM 模块与单片机通信是 GSM 模块应用的一个核心技术。我们所设计的系统,利用单片机的串行口知识,来实现与 GSM 模块的通信,以对无线通讯和无线控制有一个更加清晰的认识。一、系统设计的目的、

2、用途及功能:目的:利用单片机的串口功能,实现与 GSM 模块的通讯,进而实现短信的发送功能。用途与功能:可实现远程的无线通讯,也可增加扩展实现远程控制功能。二、硬件设计思想与原理图1.单片机的接口我们使用的是 Atmel 公司的 AVR 高速 8 位微控制器 ATmega16 。ATmega16 芯片为 40 个引脚,内部集成了 1K 字节的 RAM、512 字节的 EEPROM、16K 字节的 Flash 以及 2 个 UART 串行接口等。由于采用了高性能的 MCU,省掉了大量的外围器件,如外扩RAM、ROM 存储器等,使硬件结构大大简化,提高了系统的可靠性。它与 51 单片机、PIC 单

3、片机相比具有一系列的优点:1:在相同的系统时钟下 AVR 运行速度最快;2: 芯片内部的 Flsah、EEPROM、SRAM 容量较大;3:所有型号的 Flash、EEPROM 都可以反复烧写、全部支持在线编程烧写 (ISP);4:多种频率的内部 RC 振荡器、上电自动复位、看门狗、启动延时等功能,零外围电路也可以工作;5:每个 IO 口都可以以推换驱动的方式输出高、低电平,驱动能力强;6:内部资源丰富,一般都集成 AD、DA 模数器、PWM、 SPI、USART 、TWI、 I2C 通信口、丰富的中断源等。基于 AVR 单片机和 GSM 的短信网关1目前支持 AVR 单片机编译器的语言主要有

4、汇编语言、C 语言、BASIC 语言等。其中 C 编译器主要有 CodeVisionAVR、AVRGCC、IAR、ICCAVR 等,C 语言编译器由于它具有功能强大、 运用灵活、代码小、运行速度快等先天性的优点,使得它在专业程序设计上具有不可代替的地位。ATmega16 芯片的引脚图如下:其中的 PD0 即为 RXD 引脚(RXD 是 USART 的数据接收引脚) ,PD1 即为 TXD 引脚(TXD 是 USART 的数据发送引脚) ,引脚 11 即为 GND 接地。2.Max232 电平转换芯片接口Max232 芯片是 Maxim 公司生产的包括 2 路接受器和驱动器,适用于各种EIA23

5、2C 和 v.28/v.24 的通信接口。Max232 芯片内部有一个电源电压变换器,可以把输入的+5 伏电源电压变换成 RS232C 输出电平所需的正负 10v 电压。此芯片工作电压为+5V。 基于 AVR 单片机和 GSM 的短信网关23.GSM 模块与单片机的硬件接口连接我们所用的 GSM 模块具有数据引出与接收口,而且支持与 GSM 短信息相关的 AT 控制指令 (GSM-SMS-AT 指令) ,GSM 模块通过数据口以串行方式接收指令并向外输出数据。硬件连接相当简单,在数据口中找出 RXD、TXD 和 GND 引脚与单片机的串口对应连接即完成了硬件接口。注: GSM 模块数据线是专为

6、连接 PC 机 9 针串口而设计的,其信号电平为标准的RS232 电平,而单片机的信号电平为 TTL 电平, 因此只要经过电平转换,就可很方便的与模块相接。这里可以用开发板上的电平转换部分,也可以用 Max232 电平转换芯片。连接电路如图 1 所示。4.系统总体电路连接图三、软件设计系统1.GSM 模块的软件接口及控制技术在我们设计的系统中,采用的是 GSM 通信模块为 WAVECOM,该模块具备 GSM无线通信的全部功能,并提供标准的 USART 串行接口,支持 GSM 07.05 所定义的 AT 命令集的指令。模块的通讯全部采用 AT+XXXX 完成。基本的 AT 指令如下所述: 短消息

7、格式 AT+CMGF 选择短消息支持格式(TEXT or PDU)显示 TEXT 参数 AT+CSDH 显示当前 TEXT 模式下结果代码新消息提示 AT+CNMI 选择当有新的短消息来时系统提示方式读短消息 AT+CMGR 读取短消息列短消息 AT+CMGL 将存储的短消息列表发送短消息 AT+CMGS 发送短消息设置 TEXT 参数 AT+CSMP 设置在 TEXT 模式下条件参数删除短消息 AT+CMGD 删除保存的短消息根据 GSM 07.05 的定义,SMS 短信息的发送和接收模式共有三种:Block 模式、基于AT 命令的 Text 模式和基于 AT 命令的 PDU 模式。其中发送

8、和接收中文或中/英文混合的短信息必须采用 PDU 模式,Text 模式只支持传送英文及数字信息。由于 Block 模式的相关资料较少,PDU 模式的编解码过程复杂,基于 AVR 单片机和 GSM 的短信网关3我们选择 Text 模式作为我们系统的通讯模式。2. TEXT 模式简介Text 模式只支持传送英文及数字信息,但它的编码要比 PDU 模式简单很多。 在 Text Mode 下,发送及接收到的数据均以 ASCII 码的形式来表示。 TEXT 模式在信息传送时通过串口传递的是十六进制 ASCII 码。其 USART 通讯默认使用 9600 比特率,8 位数据信基于 AVR 单片机和 GSM

9、 的短信网关4息,无奇偶校验,有一位开始位和一位结束位。例如,我们要发送指令来读取第一条短信,使用命令:AT+CMGR=1;我们只需要通过串口发送十六进制数码:0x41,0x54,0x2b,0x43,0x4d,0x47,0x52,0x3d,0x31,0x0d 即可。其中 0x41 是 A 对应的 ASCII 码,0x54 是 T 对应的 ASCII 码,以此类推,只要将相应英文字母的 ASCII 码以十六进制的形式发送即可。3.GSM 通讯模式说明(在实验中得出的一些结论)鉴于TEXT 模式在运行中的易操作性,我们最终选择了这种模式作为我们GSM模块与单片机之间的通信方式。我们首先编写了一个串

10、口通信程序,使数据能从单片机的接口发送出来(利用串口调试助手观察)。下一步定义各种要用的AT指令及短信内容,将这些指令通过串口传给GSM模块,经由模块识别来发送短信内容。我们经过反复测试,总结出来如下一些规律: 所有AT 指令的指令符号、常数、 TEXT 数据包等都是以 ASCII 编码形式传送的, 比如 “A ” 的ASCII 编码为41H ,“T ”的ASCII 编码为54H,数字“0”的 ASCII编码为30H 等。 单片机控制GSM模块工作,必须把GSM模块的短信息工作模式设置为TEXT(只发英文和数字)格式,即通过指令 AT+CMGF=1 完成。指令可以写在程序里,也可通过电脑进行一

11、次设置。以后使用时不需再次设置。 单片机向 GSM 模块发送每一条指令后,必须以回车符作为该条指令的结束,回车的ASCII 编码为 0DH。例如,单片机向 GSM 模块发送“AT+CMGF=0” 这条指令,其ASCII 编码序列为“41H、54H 、2BH、42H、4DH、47H、46H、3DH、3 0 H、0 D H”,最后一个字节 0DH 就是回车符,表示该条指令结束,如果没有这个回车符, GSM 模块将不识别这条指令。指令在程序中的定义方式为 char a=ATrn;GSM 模块向单片机传送短信息内容时,其 TEXT 数据包的内容是以十六进制表示的数据,但并不是直接向单片机传递十六进制数

12、据,而仍然是把每一位十六进制数以 A S C I I 编码来发送。这样二个字节的十六进制数就变成 4 字节的 ASCII 码。但是 TEXT 数据包中的数据字节长度部分仍然是实际字节长度,而不是变成 ASCII 码的字节长度。GSM 模块执行指令的过程中,需要将短信内容凑够一定的字符数才往外发送,而且中间有一定时间的延时。基于 AVR 单片机和 GSM 的短信网关54.软件设计思想与流程图本系统旨在完成对 SMS 短信的发送功能。软件流程图如下:YY软件代码:/ICC-AVR application builder : 2009-5-20 11:21:23/ Target : M16/ Cry

13、stal: 7.3728Mhz#include #include char a=ATrn; /定义 AT 联机指令char b=AT+CMGS=15866695679rn; /设置接受手机号码char c=someone has broken into your house.someone has broken into your house.someone has broken into your house.someone has broken into your house.someone has broken into your house.rn; /定义短信内容void delay2

14、50(unsigned int k) /*延时函数*/unsigned int j,i;for (i=0;iAT+CMGS=13307496548回车(目的地址)模块回应:AT+CMGS=13307496548 2: 输入短信息的内容( 只能是英文):Test 回车下图为用 PC 机控制 GSM 的过程(通过串口调试助手)3. 将 PC 机输出的控制命令转化成单片机输出的指令1.先定义 AT 指令字符串。基于 AVR 单片机和 GSM 的短信网关10char a=ATrn;char b=AT+CMGS=15866695679rn;char c=someone has broken into y

15、our house.。someone has broken into your house.。someone has broken into your house.。someone has broken into your house.。someone has broken into your house.rn;2.串口通信程序void USART_TRANSMIT(char data) /发送数据函数while(!(UCSRAUDR=data;3.主函数void main()int n,u,m;init_devices();for(n=0;n4;n+)USART_TRANSMIT(an);d

16、elay250(2000);for(u=0;u21;u+)USART_TRANSMIT(bu);delay250(2000);for(m=0;m180;m+)USART_TRANSMIT(cm);3测试方法我们按照如下的思路完成作品,因为单片机就是一个“微型化的计算机” ,它将计算机的主要功能集成在一块芯片上,成为一个控制器。因此,我们先用计算机代替单片机,最后再将计算机的操作功能写进单片机,完成系统设计。首先是计算机与 GSM 模块的通讯。此部分功能的实现需要用到“串口调试助手”这块软件(这里强烈推荐一下这款软件,若要用到串口功能,这款软件是必不可少的) ,这可以很直观的看到到底从串口传出了什么数据。其中这一部分内容要用到 AT 指令,具体用法与格式参看论文,这里不详述。其次是单片机与计算

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 工程造价

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号