基于STM32的GSM模块综合应用

时间:2022-07-25 01:00:14

基于STM32的GSM模块综合应用

摘要:GSM模块短信收发系统广泛应用于实时性要求不高的远程监控和测控系统当中。介绍一种GSM模块短信收发采集控制系统,特别是对STM32微处理器的端口配置和GSM模块短信收发系统的实现进行了详细讨论。

关键词:STM32;GSM;SMS;双串口

中图分类号:TP311文献标识码:A文章编号:1009-3044(2012)18-4536-02

Comprehensive Application of STM32 Based on GSM module

SONG Wei, CUI Xiao-kun

(Guangdong Institute of Science And Technology, Guangzhou 510640,China)

Abstract:GSM module SMS sending and receiving system applied to remote monitoring and control system where real time performance is not highly required. This paper puts emphasis on a data acquisition and control system which send and receive text messages.And particu? larly, the realization of STM32 microprocessor port configuration and GSM module SMS sending and receiving mechanism were discussed. Key words:STM32;GSM;SMS;Dual serial communication

GSM模块短信收发系统广泛应用于实时性要求不高的远程监控和测控系统当中。移动通信技术和各种无线局域网络技术的发展,给计算机远程数据采集和控制系统提供了更丰富、更合理的数据传输手段,这些手段也逐步渗入到各类系统当中形成各种跨视界跨地域的无线远程采集和控制系统。计算机监控系统的信息传输、远程抄表、电力和油田监测,往往由于环境条件恶劣、距离遥远,不适合进行数据的有线传输。GSM(全球移动通信系统)作为现代无线远程通讯技术的代表已经发展得十分成熟完善,采用GSM网络传输信息价格便宜,技术可行[1]。基于GSM的无线远程采集和控制系统比传统有线控制系统具有如下优点:通讯范围广泛、系统经济性较好、总体结构简单等,作为一种廉价、便捷的数据采集和控制方案受到人们的青睐[2]。

该文讨论一种GSM模块短信收发采集控制系统,重点探讨微处理器的端口配置和GSM模块短信收发系统的实现。该系统采用基于Cortex M3内核的stm32作为现场监测和控制核心,利用Siemens公司的TC35i模块,通过短消息来实现数据传输。STM32作为32位微处理器,具有主频高,速度快,功耗低等特点,由于价格低廉,代替8位单片机是大势所趋,而且接口丰富,具有良好的通用性和针对各种控制和监测系统的可扩展性。

gsm模块短信收发采集控制系统是一个可以由用户通过手机短信来进行远程控制的终端模块。用户可以通过中文和英文短信来控制开关量的接通与断开、或查询开关量(I/O口)的开关状态,及其它复杂控制,也可以外接AD口或数字传感器采集系统完成测量、数据采集。操作者可以通过短信指令,按照事先定义好的内容对设备进行控制,也可由现场设备返回监控状态,或发出各类告警信息。除此之外,还可以经过串口连接上位机,通过配套的上位机软件实时监测GSM模块短信收发采集控制系统的状态。

系统由TC35i模块和以STM32为核心的短信收发系统监控单元两部分组成。TC35i模块是由Siemens公司生产的GSM模块,符合ETSI标准GSM0707和GSM0705[3]。TC35i有40个引脚,通过一个ZIF连接器引出。这40个引脚按功能可以划分为5类,即电源、数据传输接口、SIM卡接口、音频接口和控制信号部分。用户通过RS232接口,用AT指令对其进行控制[4]。

AT指令是主要移动电话生产商共同为GSM研制的一整套指令,其中包括对SMS的控制[5]。AT指令是以"AT"为前缀,以回车符< CR >为后缀(即ASCII字符\r\n,对某些模块的操作序列可以只\r为后缀)的ASCII指令序列,用于和GSM模块通讯。

TC35i负责短信的收发。以STM32为核心的短信收发系统则用来读取TC35i收到的短信,并执行相应的测量、数据采集、控制、无线通信功能。两者之间通过RS232串口实现数据交换。GSM无线通信控制终端通过GSM网络和监控中心进行双向的信息传输。系统硬件结构如图1所示。

TC35i集成了标准的RS232接口,通过MAX232芯片做电平转换,TC35i即可通过串行口与STM32芯片进行通信。需要注意的是TC35i模块作为数据通信设备(DCE)连接,RxDO引脚为输出脚,TxDO为输入脚。系统与GPRS模块采用串口连接。模块要正常

STM32通过串口收发AT指令和获取PDU协议单元字段来完成与GSM模块交互。GSM模块负责短信与服务中心间的收发。

如果AT被正确执行,则GSM模块返回以OK结尾的字符串,如果未被正确执行,返回以ERROR结尾的字符串。程序中根据这点来判断GSM模块有无正确返回。除此之外,还有第三种情况,即GSM模块无响应,这时没有任何返回值,对于这种情况可以通过设置超时来进行重发处理。这要求以上的串口初始化过程后,同时也要初始化定时器或RTC实时时钟,以便产生一个定时的基准。

用于短信收发和相关程序设计的常用AT指令有:

AT+IPR? ;用于查询模块与主控MPU通讯的波特率,同样该指令也可完成波特率的设定。

AT+CMGF=[] ;用于设置短信的模式:< mode >为1,短信为文本模式;< mode >为0,短信为PDU模式。文本模式用来发送英文和数字,PDU模式则还可以用来发送中文。本系统收发的是中文短信,因此采用PDU模式。

AT+CMGR=;读取短信,< seiral >为短信的位置序号。

AT+CMGD=< seiral >;删除短信,< seiral >为短信的位置序号。

AT+CMGS=;采用PDU模式时发送中文内容短信[7]。

系统对于中文短信的发送是通过AT+CMGS指令完成的。在发送之前先要按照PDU编码的格式构造中文短信。由于STM32编译器本身对中文处理为gb2312代码,而PDU协议编码对中文是采用UTF-8的编码,因此中文短信要通过GSM网络传输,传输之前应该将GB2312转换为unicode编码。这可以通过查表方式完成,即设置一个gb2312编码和相应UTF-8编码的结构体数组,形成汉字编码表。结构体的第一个元素为汉字的gb2312编码,这样可以用二分法快速数据查找算法查找到该汉字在gb2312编码表数组中的位置,该位置对应的结构体第二个元素就是对应的unicode编码。如果要将PDU编码中的汉字读出,则需要另外一个UTF-8到gb2312的编码表,同样可以通过二分法快速得到GSM短信内容的gb2312编码。

基于STM32的GSM模块短信收发采集控制系统,适用范围广,适合在野外不方便到达的地方或车间等不易操作的地方使用;维护费用极低;可靠性好。它的双串口功能使特定时段用户通过PC上位机调试和监控操作变得更加直观、方便。不足的地方是它对用户的短信指令响应时间确定性不高,不适用于高实时性的场合。

上一篇:摄像机防逆光处理在长途客运中心的应用 下一篇:DX-600中波发射机远程监控设计