`
yuanyu5237
  • 浏览: 162848 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

MSP430单片机控制GSM模块发短信(原理)

 
阅读更多
首先,GSM发短信,对英文和中文的处理是不一样的,请参考以下资料:

1 简述
使用GSM模块收发短信,主要有两个部分需要考虑,一个是AT指令,一个串口读写。Tc35i GSM模块在收发短信时,分为两种模式,一为text模式,一为pdu模式,如果只需要发送英文内容,则text模式足矣,但若要发送中文短信,则必须使用pdu模式。串口的读写在不同的系统里是有区别的,在windows下使用系统提供的win32 API可以实现串口操作,在linux下串口作为文件读写,在单片机上串口的读写是把一个个字符送入特定缓冲区即可,但无论在何种系统中,操作串口之前都需要对串口进行初始化操作。
2 AT指令
在使用AT指令发送短信的时候,可以使用串口调试助手(windows和linux下的串口调试助手不同,而且版本也有许多,但使用方法大致相同,都需要先找到串口的端口号,windows下可以到设备管理器中查看(注意安装好usb转串口驱动),linux下可以到/dev下查看,设置波特率9600,校验位None,数据位8,停止位1;windows下可以使用stc-isp带有的串口助手,在linux下可以使用minicom,)来帮助熟悉指令,以及了解短信发送的流程。
2.1 TEXT模式
先对模块SMS进行一些初始设置,AT+CMGF=1设置为Text模式,AT+CSMP=17,167,0,0设置Text模式参数,AT+CSCS=GSM设置GSM字符集,接下来发送一条短信,例如要往15948020629这个号码发送一条短信,输入命令AT+CMGS=15948020629 并回车,返回
>
接着输入短信内容,输入完毕后以->结尾,这个字符是ASCII码中的26(0x1A),一个控制字符,在这里作为结束标志,测试时可以在正常短信内容输入完毕后:先点发送,再以十六进制方式输入1A,1A也就是16进制的026,再点发送,这时接收区就会显示这个符号,以后再需要这个符号时可以直接粘贴使用。如果返回OK就说明短信发送成功。需要注意的是,虽然有短信息服务中心号码设置的命令,不过一般不需要我们设置的,可以使用AT+CSCA?来查询服务中心号码。
下面来往模块中发送一条短信,注意犹豫此时是Text模式,所以发送内容应为英文内容,包括数字,英文标点。发送短信前执行AT+CNMI=2,1
此命令的作用是当有新的短信时给予提醒并显示存储位置,同时还会将信息存储到默认的内存位置。例如发送信息的手机为15948020629,信息到达后接收区显示
+CMTI: "ME",22
我们可以使用AT+CMGR=22来将其读出,接收区显示
+CMGR: "REC UNREAD","15948020629",,"08/03/25,09:51:01+32"
ADG123456

OK
其中ADG123456为短信内容,REC UNREAD 表示这条短信未读,以后再读取这条短信时将变为REC READ,接收时间时间,短信号码等信息皆显示在第一行里。
2.2 PDU模式
假如我要发送下面的短信:
接收号码:+8613602433649
短信内容:工作愉快!
短信中心号码:+8613800200500
一、短信中心号码处理:用字符串 addr 表示
1、将短信息中心号码去掉+号,看看长度是否为偶数,如果不是,最后添加F
即 addr = "+8613800100500"
=> addr = "8613800100500F"
2、将奇数位和偶数位交换。
=> addr = "683108100005F0"
3、将短信息中心号码前面加上字符91,91是国际化的意思
=> addr = "91683108100005F0"
4、算出 addr 长度,结果除2,格式化成2位的16进制字符串,16 / 2 = 8 => "08"
=> addr = "0891683108100005F0"
二、手机号码处理:用字符串 phone
1、将手机号码去掉+号,看看长度是否为偶数,如果不是,最后添加F
即 phone = "+8613602433649"
=> phone = "8613602433649F"
2、将手机号码奇数位和偶数位交换。
=> phone = "683106423346F9"
三、短信息部分处理:用字符串 msg 表示
1、转字符串转换为Unicode代码,例如“工作愉快!”的unicode代码为 5DE54F5C61095FEBFF01,(5de54f5c61095febff01)
(转换函数见最后附录)
2、将 msg 长度除2,保留两位16进制数,即 5DE54F5C61095FEBFF01 = 20 / 2 => "0A",再加上 msg
=> msg = "0A5DE54F5C61095FEBFF01" 
四、组合
1、手机号码前加上字符串 11000D91(1100:固定,0D:手机号码的长度,不算+号,十六进制表示,91:发送到手机为91,发送到小灵通为81),
即 phone = "11000D91" + phone
=> 11000D91683106423346F9
2、手机号码后加上 000800 和刚才的短信息内容,000800也写死就可以了
即 phone = phone + "000800" + msg
即 11000D91683106423346F9 + 000800 + 0A5DE54F5C61095FEBFF01
=> phone = 11000D91683106423346F90008000A5DE54F5C61095FEBFF01
3、phone 长度除以2,格式化成2位的十进制数
即 11000D91683106423346F90008000A5DE54F5C61095FEBFF01 => 50位 / 2 => 25
五、所以要发送的内容为
AT+CMGF=0 <回车>
OK
AT+CMGS=25<回车>
> addr+phone <Ctrl+Z发送>  (_)
六、如果返回不是ERROR,恭喜你,发送成功了^_^
其详细过程参看下图:

2.3 常用AT指令
命令 作用
AT 测试连接是否正确
ATE0/ATE1 关闭回显/打开回显
AT+CGMI 得到厂商信息
AT+CGMR 得到手机版本号
AT+CGSN 得到手机序列号(IMEI)
AT+CIMI 得到手机IMSI号码
AT+CSCS 获取、设置手机当前字符集。可设置为 GSM 或 UCS2
AT+CCLK 获取设置手机时钟
AT+COPS 网络营运商
AT+CSCA 短信中心号码
AT+CPMS 选择短信储存地点。可选择 ME(SIM卡)和MT(机身)
AT+CMGL 列出短信,列出指定状态的短信息的PDU代码
AT+CMGR 读短信,列出指定序号的短信息PDU代码
AT+CMGS 发送短信
AT+CMGD 删除指定的短信
AT+CMGF 短信格式。分为Text模式和PDU模式
AT+CNMI 设置新短消息通知电脑端

3 串口通信
串口通信注意两点:一,在任何一个系统中,操作串口和操作其他设备的接口是一样的,都是系统提供的最基础的API,有打开,初始化,读写和关闭操作;二,如果不喜欢使用系统提供的API,网上有已经封装好了的串口通信类,使用这些串口通信类可以极大地减小出错的概率。
3.1 windows
3.1.1 win32 API

见源码
3.1.2  A communication class for serial port
见源码
windows下串口通信类的下载及使用方法请参见:
http://www.codeguru.com/cpp/i-n/network/serialcommunications/article.php/c2483
3.2 linux
3.2.1 File Operation
见源码
3.2.2 a qt class for serial communication
见源码
linux下(其实是基于qt扩展的,既可以用于linux下也可以用于windows下)串口通信类的下载及使用方法请参见:
http://code.google.com/p/qextserialport/

3.3 单片机
可以参看redmine系统中的单片机学习报告中关于串口通信的相信介绍。

4 附录
4.1 native2ascii工具
在使用GSM模块发送和接收短信的时候,如果是中文,必须转化为unicode编码,这里介绍一个小工具
在java的安装目录下,找到位于jdk目录下的bin目录下,有一个可执行文件: native2ascii.exe
双击这个.exe文件,弹出一个命令行控制台,直接输入中文,然后回车,返回的字符则是相应中文的unicode编码,其实这个工具用的很广泛,在做一些java的企业级应用,如果需要进行国际化,往往都会使用这个工具对资源文件进行编码控制。
其详细使用方法如下:
  1、只转换特定字符
  在控制台中可以输入汉字回车后,就可以看到转移后的字符了。
  Ctrl+C退出。
  2、转换properties文件
  native2ascii allMessages_zh_CN.input.properties allMessages_zh_CN.properties
  将文件allMessages_zh_CN.input.properties编码后输出为allMessages_zh_CN.properties。
  为了方便properties文件的管理,建议纯中文的配置文件用input命名。
  3、反向单一properties文件
  native2ascii -reverse allMessages_zh_CN.properties allMessages_zh_CN.txt
  注意-reverse参数
  4、批量反向所有的properties文件
  JDK自带的工具native2ascii可以将uncode编码的文件转换为本地编码的文件,但是不能批量转换文件。
4.2 更多相关资料,请参看以下链接:
GSM模块TC35i调试心得
http://hi.baidu.com/robo2046/blog/item/7a407a589560e4d39c8204e1.html
用MSP430串口中断服务程序将接受到的数据回发回去
http://zhidao.baidu.com/question/202687795.html
MSP430单片机的端口介绍
http://blog.csdn.net/chen_cheng_fly/article/details/4552402
MSP430单片机IO
http://www.cnblogs.com/MrYang/archive/2010/04/14/1711993.html
MSP430 多源中断 中断标志软件复位的问题
http://bbs.21ic.com/icview-188418-1-1.html
MSP430中断嵌套机制
http://www.jdzj.com/pic/Class346/Class362/20091207165253.html
MSP430源程序---P1.0口做外部中断
http://hi.baidu.com/liclny/blog/item/ed92b62f5cb8fd3f1e3089c2.html
引用 IAR+Proteus7.6仿真MSP430单片机PORT1外部中断功能
http://datouguaa.blog.163.com/blog/static/166069841201052811221152/
MSP430单片机学习(一)——Flash读写操作
http://hi.baidu.com/frfly2008/blog/item/3a17df16aafd591fc83d6d08.html
MSP430单片机入门例程-按键处理示例
http://www.cpu-led.com/forum.php?mod=viewthread&tid=1918&archiver=1
***********下一篇文章会放出源码,以下是上位机上的截图***************

  • 大小: 76.8 KB
  • 大小: 10.9 KB
  • 大小: 23.4 KB
分享到:
评论

相关推荐

    MSP430单片机控制GSM模块.rar

    在本文中,我们将深入探讨如何使用...提供的压缩包“MSP430单片机控制GSM模块”可能包含了相关的代码示例、原理图和说明文档,对于初学者来说是一个很好的学习资源。在实际应用中,应根据具体项目需求进行调整和优化。

    单片机控制GSM模块

    在现代通信技术中,单片机控制GSM模块是实现远程数据传输、语音通话和短信服务的重要手段。GSM(Global System for Mobile communications)作为全球范围内广泛使用的移动通信标准,其模块能够与各种单片机进行有效...

    MSP430F149控制GSM接收解读短信

    在本文中,我们将深入探讨如何使用MSP430F149单片机来控制GSM模块,实现接收和解读短信的功能。MSP430F149是一款低功耗、高性能的微控制器,由德州仪器(Texas Instruments)生产,广泛应用于各种嵌入式系统,包括...

    MSP430单片机 控制 TC35 模块 收发短信

    **MSP430单片机与TC35模块收发短信详解** MSP430系列单片机是德州仪器(Texas Instruments, TI)推出的一款超低功耗微控制器,广泛应用于各种嵌入式系统设计。在这个项目中,我们使用的是MSP430F5529型号的单片机,...

    基于MSP430单片机和GSM模块的电动车防盗器设计.pdf

    它负责接收传感器发送的信号,并基于这些信号来控制GSM模块。单片机还需要处理和存储车主的手机号码,并在确认手机号码无误后,通过GSM网络发送报警短信。 4. GSM模块的作用: GSM模块是电动车防盗器与外界通信的...

    GSM.rar_GSM_GSM MSP430_MSP430 at_msp430 gsm_msp430控制GSM

    在本文中,我们将深入探讨如何使用MSP430单片机来控制GSM模块,以便实现短信发送和电话拨打功能。MSP430是由德州仪器(TI)开发的一系列超低功耗微控制器,它以其高效能、低功耗和广泛的外设选项而闻名。GSM模块则是...

    基于MSP430单片机的智能风力检测与发电控制系统

    《基于MSP430单片机的智能风力检测与发电控制系统》 在现代可再生能源领域,风力发电作为一种清洁、可持续的能源利用方式,备受关注。而在这个过程中,有效的风力检测与发电控制系统的应用是提升风能利用率的关键。...

    GSM.rar_gsm TC35_msp430 gsm_msp430 tc35 gsm_msp430 程序_单片机

    TCP35模块具有AT命令集,这是一种标准的指令集,用于配置和控制GSM模块。通过发送AT命令到TC35,MSP430可以设置模块的工作模式、拨打电话、发送短信等。 **硬件接口** 在硬件层面,MSP430的UART端口需要与TC35的...

    基于MSP430单片机的GSM智能环境监控系统.pdf

    基于MSP430单片机的GSM智能环境监控系统是一款集成了多种技术的智能监控系统,其设计重点在于通过MSP430单片机实现对环境参数的实时监控,并通过GSM模块进行远程通信。以下是该系统相关的详细知识点: 1. MSP430...

    MSP430F149K开发板资源例程

    MSP430F149单片机控制LED全彩显示屏的某一行列数据传输控制显示程序.rar MSP430F149单片机模拟IIC和DS18B20通信进行测试温度代码.rar MSP430F149单片机的Flash程序.rar MSP430F149可以通过串口显示温度传感器的...

    基于单片机GSM控制&GPRS模块&短信远程控制&远程开锁设计资料(包含原理图&源程序&仿真&论文&实物图等)共五套资料

    3)基于51单片机的智能快递箱设计GSM模块(包含原理图源程序说明文件等) 4)基于MSP430F2132Z单片机的蓝牙及GSM的智能防盗系统设计资料 包含原理图pcb及源程序文件 5)SIM800C GSM GPRS模块 51单片机 STM32 ARDUINO...

    基于MSP430F2132Z单片机的蓝牙及GSM的智能防盗系统设计资料 包含原理图pcb及源程序文件

    主要由控制模块,GSM模块,蓝牙模块以及电源部分组成。使用时将该系统放入贵重物品中且其蓝牙与用户手机蓝牙配对,一旦系统离开用户一定的距离后用户手机会受到系统发来的信息或打过来的电话以达到防盗的效果。本...

    基于MSP430单片机的管道内检测器智能跟踪系统设计.pdf

    MSP430系列单片机是德州仪器(Texas Instruments)生产的一系列超低功耗微控制器。由于其在处理速度、低功耗以及高集成度方面的优势,非常适合用作智能跟踪系统中的主控制器。MSP430的高集成度能够简化设计,降低...

    GSM.rar_GSM模块 代码_GSM模块源代码_gsm c代码

    在GSM项目中,MSP430通过串行接口(如UART)与GSM模块连接,通过发送AT命令控制GSM模块执行各种任务。 在“MSP430单片机短息收发程序”中,可能包含以下关键知识点: 1. AT命令集:这是GSM模块通信的基础,它是一...

    基于MSP430单片机的电动车跷跷板的设计与实现.pdf

    在本设计中,TC35i GSM模块作为远程控制的核心组件,它的作用包括接收来自手机客户端的短信指令并进行解码,然后控制车位锁的执行机构进行相应的动作,如升、降等。 4. 硬件设计:硬件设计部分介绍了如何构建一个...

    MSP430例程

    8. **"MSP430F149 GSM基本控制,初始化接收短息,解读短信"**: 这个例子涉及到GSM(全球系统移动通信)模块的使用,演示了如何通过MSP430F149控制GSM模块进行短信收发和解析,这对于构建远程监控和控制系统的开发者来...

    stm32 51 msp430 的sim900a

    STM32、51单片机以及MSP430都是微控制器领域的主流产品,而SIM900A是一款常见的GSM/GPRS模块,常用于物联网应用中的数据传输。这个压缩包文件似乎包含了针对这三个微控制器平台的SIM900A开发程序和调试工具,以及...

    基于MSP430单片机的智能健康管理系统的设计.pdf

    MSP430单片机是德州仪器(Texas Instruments)生产的一系列16位超低功耗微控制器,广泛应用于各种电池供电的便携式仪器。本文利用了MSP430G2553型号,作为核心处理单元,配合各种传感器模块,实现了对心率、血压和...

    基于MSP430单片机的人体体质测量仪.pdf

    基于MSP430单片机的人体体质测量仪是一项结合了现代微电子技术和生物传感技术的创新项目,其核心是德州仪器(Texas Instruments,简称TI)公司生产的MSP430F5529超低功耗单片机。MSP430系列单片机以其高性能、低功耗...

    MSP430应用系统开发实例

    - 通过串口与GSM模块连接,利用MSP430实现短信的发送与接收。 - 适用于自动报警系统或其他需要短信交互的应用场景。 #### 四、MSP430系列分类 MSP430系列根据不同的特性和应用场景分为多个子系列: 1. **MSP430...

Global site tag (gtag.js) - Google Analytics