设计与开发

单片机和gsm 单片机与GSM手机技术及应用

小编 2024-10-12 设计与开发 23 0

单片机与GSM手机技术及应用

单片机控制GSM手机的技术及应用

随着科技的飞速发展和人民生活水平的不断提高,手机的普及率越来越高,更新也越来越快,价格也越来越便宜。因为手机工作的无线网络覆盖范围广,在信息传递方面性能稳定、可靠,所以把手机作为信息传递的载体,与单片机结合起来构成应用系统有着强大的生命力和广阔的应用空间,特别是在远程数据传输、远程监控等领域更是受到电子设计应用工程师的关注。一些专业刊物也介绍了一些有关这方面的文章,然而由于手机的控制指令复杂,数据格式繁琐,工程技术人员在进行单片机与手机的硬软件接口设计时经常会遇到很多困难,有时还无资料可查。笔者在完成一个项目的开发过程中,针对几种手机进行了大量的测试和实验,在此基础上归纳出一些带规律性的结论,对此结论,工程设计人员可拿来即用,大大缩短研发周期,现在把它公布出来,愿与广大电子设计人员共享。

  1 硬件接口技术方面

目前市场上流行的大部分手机几乎都具有数据引出口,并基本上都支持与GsM短信息相关的AT控制指令(GSM-SMS-AT指令),手机通过数据口以串行方式接收指令并向外输出数据。理论上讲,在数据口中找出RxD、TxD和GND引脚与单片机的串口对应连接即完成了硬件接口。然而,实际上由于不同品牌,不同型号手机的RxD、TxD和GND引脚并非一致,找查这三根线有时也非易事;况且手机数据口的电平既不是RS232电平,也不是TTL电平,与由5V供电的单片机串口还不能直接连接。

最简单可靠的方法是使用手机的数据线建立单片机与手机的硬件连接。手机数据线是专为连接PC机9针串口而设计的,信号电平为标准的RS232电平,只要单片机的串口也转换为Rs 2 3 2电平,就可方便连接。9针串口引脚定义是固定的,即2脚为TxD(手机发送),3脚为RxD(手机接收)、5脚为GND。这样,无论什么型号的手机与单片机的连接就成了固定连接,不需要知道手机数据口信号的具体定义,二者通过数据线的连接电路如图1所示。

需要注意的是:不同手机数据线内部电平转换芯片的供电方式是不同的,有的是通过手机直接供电;有的是通过窃取PC机串口某些引脚(通常为4、6、7、8引脚)的电流经内部整流滤波稳压后提供。判断的方法是将数据线一端插到手机数据口,测量另一端2脚与5脚之间的电压,如果有一7V左右的电压,则为前者,如果测不出电压,则为后者,对于后者则需要单片机为4、6、7、8引脚任意一引脚提供+5V电压即可,如图1中虚线所示。

  2 软件接口技术及控制原理

单片机与手机的软件接口其实就是单片机通过与GSM短信息有关的AT指令控制手机的控制技术,如读取手机的短消息内容,删除短消息内容,列出手机中还未读的短消息等。关于AT指令的功能描述见参考文献[1,2]的文章内容,此处不再赘述。然而,执行一条指令,也并非某些资料中介绍得那么简单。事实上,指令的执行过程需要单片机与手机交互应答完成,每一次发送或接收的字节数有严格的规定,二者必须依据这些规定实现数据交换,否则,通信就是失败的。笔者经过对几种手机反复测试,总结出来一些规律,如表1所列。

对几个问题说明如下。

①所有AT指令的指令符号、常数、PDu数据包等都是以ASCII编码形式传送的,比如“A”的ASCII编码为41H,“T”的AscII编码为54H,数字“0,,的AsCⅡ编码为30H等。

②单片机控制手机工作,必须把手机的短信息工作模式设置为PDu格式,即通过指令AT+cMGF=O完成。

③单片机向手机发送每一条指令后,必须以回车符作为该条指令的结束,回车的ASCII编码为0DH。例如,单片机向手机发送“AT+CMGF=0”这条指令,其ASCII编码序列为“41H、54H、2BH、42H、4DH、47H、46H、3DH、30H、0DH”,最后一个字节0DH就是回车符,表示该条指令结束,如果没有这个回车符,手机将不识别这条指令。 ④当手机接收到一条完整的AT指令后,手机并不立即执行这条指令,而是先把刚才接收到的AT指令的全部ASCII编码序列全部反发送出来(含0DH),然后发送一个回车符和换行符的ASCII编码,即0DH和0AH,最后执行该条指令。

⑤手机向单片机传送短信息内容时,其PDu数据包的内容是以十六进制表示的数据,但并不是直接向单片机传递十六进制数据,而仍然是把每一位十六进制数以AscII编码 来发送。这样,二个字节的十六进制数就变成4字节的ASCII码。但是,PDU数据包中的数据字节长度部分仍然是实际字节长度,而不是变成AscII码的字节长度,这在编程时应特别注意,否则,接收的数据就不完整。

单片机接收到PDU数据包数据后,必须将其恢复成十六进制数据,其算法如下:设a为接收的ASCII码,b为转换后的十六进制数。如果a<39H,则b=a-30H;如果a>39H,则b=a-30H-07H,最后把前后两个数合并为一个字节。 ⑥手机向单片机应答PDU数据包的字节数不包括前9字节数据(短信服务中心地址),但向单片机传送PDU数据包时,包括这9个字节的数据。例如,如果手机应答的PDU数据长度为50,而实际向单片机传送的十六进制数据为59字节,ASCII码为2×59字节,所以,单片机必须按2×59字节接收PDU数据。  

 3 应用实例

笔者利用上述原理和接口技术开发了一个项目:高速公路显示导引系统。安装在高速公路上的LED显示屏实时显示前方路段车辆通行态势和天气气候情况,提醒并引导驾驶人员,正确驾驶。该系统的使用一定程度上消除了许多交通事故隐患,从而保障了道路的畅通和人民生命财产的安全。该系统由控制中心和若干个显示屏组成。控制中心实时将最新信息发送到各显示屏。构建控制中心与显示终端的通信链路,传统的方法要么铺设光缆用有线方式实现,要么构建专用无线网用无线方式实现。因为高速公路的特殊性,控制中心与显示终端之间的距离通常很远,两种方案都必须投入大量资金和巨大的施工工作量。如果采用GSM公众无线传输网络,控制中心以短信息的形式把显示信息发送到显示终端的技术方案,则具有投资小,施工方便,工作可靠,运行费用低等诸多优点。

在控制中心,微机编辑好短信息后通过手机这个载体发送出去。在显示终端,单片机通过读取手机的短信息把它显示到LED显示屏上。项目的核心技术是单片机与手机的接口和PDU数据包中的汉字信息编码。因为短信息中的汉字仅仅是一个编码,单片机应用系统将编码变为汉字点阵数据,必须配置汉字字库。按GSM07.05协议规定,短信息中的汉字编码为Unicode编码,如果构建一个Unicode编码的汉字字库,确实是一件繁琐的工作,因此,在设计单片机应用系统时,采用如下两点技术措施。

①单片机系统配置的字库为GB-2312编码的汉字库,即区位码汉字库,该汉字库在网上可免费下载,固化到Flash存储芯片中即可。当然这样做的前提是PDU数据包中的汉字编码必须为汉字内码而非Unicode编码。

②控制中心编辑PDU数据包数据时,采用自定义数据方式,其中,代表汉字的数据,直接取用汉字的机内码即可,免去了把机内码再转换为Unicode编码之苦。实践证明,这是可行的。

采用以上技术措施的优点,一是省去了两种编码的相互转换;二是保证了数据的保密性,非系统内用户无法接收,即使接收也无法显示。

该项目研制成功投入使用后,因显示终端只接收不发送,几乎没有运行成本。发送端(控制中心)可采用月租方式,也能把运行费用降低到最低限度。因此该项目得到用户满意的评价。

单片机学习:教你如何使用单片机控制手机通信

今天突然有个同学问我单片机如何和手机通信,我们在用单片机做产品的时候,难免会用到单片机和手机通信,所以今天我们就来学习下如何用单片机控制手机通信。

中国联通数字移动电话(GSM)网是向社会公众提供通信服务的公用通信网,它是目前基于时多址技术的移动通信体制中,比较成熟完善,且应用最广泛的一种系统,是我国公众移动通信网的主要方式,基于GSM的短信信息服务,是一种在移动网络上传送简短信息的无线应用,是一种信息在移动网络上存储和转寄的过程,由于公众GSM网络在全球范围内实现了联网和漫游,上述系统不需在组建专用通信网络,所以具有实时传输数据功能呢的短信应用将得到迅速普及。

这个系统由数据采集部分、数据接收和发送部分、终端处理部分三个模组组成。

系统中,三个模块相互独立,彼此又相互依赖,共同完成数据的传输。数据收发模块在系统中起着承上启下的作用,是系统的核心模块。该模块以双单片机为核心,以RS232通信接口,在物理层上实现与GSM模块的连接。

【工作原理】

一、串口控制SMS的工作原理

单片机与GSM模块一般采用串行异步通信接口,通信速度可设定,通常为19200bps。采用这种RSM232电缆方式进行连接时,数据传输的可靠性较好。RS232接口方式连接,通过串行接口集成电路和电平转换电路与GSM模块连接,电路比较简单,所涉及的芯片包括单片机89C51和电平转换芯片MAX232,是非常常见的接口电路。需要说明的是,该接口通过IIC总线(之前的文章中提到,不明白的朋友可自行翻阅)扩展了一个EEPROM存储器,主要作用是存储数据,而且断电信息也不会丢失,这些特性正式存储数据所必须的。

GSM的短信息业务SMS利用信令信道传输,这是GSM通信网所特定的。它不用拨号建立连接,把要发的信息加上目的数据发送到短信息服务中心,经短信息服务中心完成存储后在发送给最终的信诉。所以当目的GSM终端没开机时信息不会丢失,每个短信的信息量限制为160字节。

现在市场上大多说手机均支持GSM7.05规定的AT指令集。该指令集是ETSI(欧洲通信技术委员会)发布的,其中包含了对SMS的控制。利用GSM手机的串行接口,单片机向手机收发一系列的AT命令,就能达到控制GSM模块收发SMS的目的。必须注意的是,用单片机实现时,编程必须注意它发送指令与接收到的响应都是字符的ASCII码,用单片机控制GSM模块收发短信息所涉及的AT指令如图。

二、软件实现

【上位机模块和下位机模块半双工通信协议的实现】

【应答和重发】

上位机模块和下位机模块的通信双方遵照半双工通信方式进行,即数据传送是双向的,但是,任何时刻只能由其中一方发送数据,另一方接收数据,因为EEPROM的读出和写入不能同时进行。为了避免一方在发送信息帧时(这里的信息帧指的是下位机模块发送的数据帧和下位机模块发送的命令帧,下同),另一方也会发送数据,必须把信道变成半双工方式。虽然这样效率可能不如全双工方式,但是可以稳定模块工作性能。双方采取的顺序是:发——收到应答后——再发。

按照整个系统的设计思路,上位机模块发送的帧包括命令帧、确认帧和非确认帧;下位机模块发送的帧包括数据帧、确认帧和非确认帧。其中确认帧和非确认帧是发送数据后等待对方发送的应答帧,一次作为继续发送下一帧和重新发送上一帧的依据。命令帧和数据帧时信息帧,当一方先发送完信息帧,如果收方接收到对方的信息帧,而又没有信息帧需要发送,那么情况就比较简单,收方将根据信息帧的正确与否决定发送确认帧还是非确认帧,以使对方决定是继续发送还是重新发送;如果此刻收方也有信息帧的应答帧,那么收方将不立即发送应答帧,而是立即发送本方的信息帧给对方,在收到对方的应答帧后,收方将依据应答帧的内容(即确认帧或非确认帧)决定是继续发送下一信息帧,还是重新发送原来的信息帧。

【延时重发】

在双方通信过程中,有两个时间T1和T2,分别表示重新发送信息帧的最大延时。T2表示一方发送信息帧收到对方应答帧的时间,如果等待应答帧的时间超过了T1,则发方会重新发送原来的信息帧,当收方接收到对方发送的信息帧,如果对方此时有需要发送的信息帧,则收方此时不发送应答帧,而是发送信息帧给对方。也就是说,利用对方等待收方应答帧的时间在T1内,收方插入发送本文的信息帧,同样本方的发送也存在一个延时重发的问题。在规定的时间内,如果没有收到对方应答帧,收方也同样需要重发原来的信息帧,这个规定的时间就是T2。显然由于收方是利用间隙时间发送本方信息帧,所以T1>T2。

【帧格式】

GSM模块通过异步通信接口实现SMS的控制共有三种接入协议:BLOCK MODE、基于AT指令的TEXT MODE、基于AT指令PDU MODE。本系统发送和接收数据都是基于数字的温度数据和命令字,为了保证系统的适用性,SMS的手法采用TEXT模式。TEXT模式是基于字符的,更具体的说是基于ASCII码的一种结构模式。在该结构模式下,模块发送和接受的信息帧格式如下:

信息帧包括数据帧和命令帧。

帧头表示数据帧的标记由固定的字符“WQ”构成。

帧序号表示数据帧的序号,由两个字节组成,帧序号表示下位机模块发送的递增数据帧序号和上位机模块发送的命令帧序号。为了简化帧结构,命令帧的序号统一为OOH。

数据字段的长度为154字节,最多发送77个字符(采用TEXT模式,不能发送汉字)。

检验子为数据字段所有字节累加和的初码(原码取反加1),由一个字节组成。、

除了信息帧外,双向传递的还有应答帧,它包括确认帧和非确认帧。确认帧是双方反馈给发方的应答帧,表示双方已经正确接收到了发方发送的信息帧。确认帧格式仅包括两个字段,且两个字段的内容都是固定的,即帧头“WQ”和数据字段“ACK”,确认帧格式如下。

非确认帧时收方给发方的应答帧,表示收方收到的是无效的信息帧,其格式与确认帧格式类似,帧格式如下:

【EEPROM空间的分配】

采用8KB的EEPROM,按照每77个字节为一个块进行划分,工106块,如图所示。

第00、01块留作系统使用,第02~第105块是数据块,用作存放数据。

【程序设计】

【主函数的设计思路】

开机上电后,程序在主函数中运行,单片机和GSM模块分别进行初始化。单片机的初始化包括设置串口工作方式、波特率,并初始化变量和标志位,GSM模块初始化包括重新启动、关闭回显、设置在TXET模式下的返回值中不显示详细的头信息、选择短息格式为TEXT模式、开发串口中断准备接受数据。

【GSM返回函数的处理——SHELL函数】

SHELL是进入时钟中断程序时被调用时,该函数是对GSM模块返回参数进行处理的函数,根据系统设计的要求,需要对GSM模块进行下列操作:呼叫对方模块号码、发送数据、阅读短信、删除短信。基于以上操作指令,如果操作成功GSM模块会分别返回不同的参数:>、+CMGS、+CMGR、OK。根据收到的不用参数,下位机模块将转向不同的操作步骤,判断并改变标志位的值。

【短信数据的处理——EXECDATA函数】

进入时钟中断调用SHELL函数时,如果接收到了返回的参数+CMTI,表明上位机模块向下位机模块发送了短信数据,可能是命令帧,也可能是确认帧或者非确认帧。在这种情况下,SHELL函数需要对短信内容进行分析,并根据短信的内容进行不同的处理,负责完成以上功能的就是EXECDATA函数,它是被SHELL函数调用的,用来分析并处理短信数据。

鼎酷IOT部落(dkiot888)是由鼎易鸿基&万酷电子联合出品,专注于为大家提供物联网精髓的新媒体平台。我们关注物联网行业最新动态,专注做您的物联网口袋知识库,旨在搭建共同学习的知识平台,让您学得方便,聊得畅快;鼎酷IOT部落用心做大家的“良仆”。各项内容鼎酷IOT 部落微信公众号同步。物联网行业顶尖产品咨询也欢迎留言。

相关问答

单片机 GSM 之间信息是怎么传递啊?

先解决好单片机与GSM模块的线路连接问题,然后,单片机可通过GSM模块给你手机发信息也能收到手机向GSM模块发送的信息;那么手机向单片机发指令的方式,比如采用...

怎样利用 GSM 通过 单片机 发送图片至手机?

根据问题,我们首先要设计项目方案。考虑到图片容量大小,方便随时可更换,同时可以放置其他的如字库扩展内容,我们选用外扩SD卡,使用SDIO接口或者Spi接口,...

单片机 串口用程序为什么要初始化?

单片机串口通信需要定义一些基本配置参才能使用,这就是初始化。初始化的主要内容包括:1、波特率发生器配给,就是当前串口使用哪个定时器产生波特率。2、波...

51 单片机 烟雾报警器工作原理?

由单片机和GSM短信模块组成,借助最可靠、最成熟的GSM移动网络,以最直观的中文短消息或电话形式,直接把报警地点的情况反映到您的手机屏幕上。(1)该设计包...

高科技追踪器介绍?

跟踪器是通过跟踪器主机接收太空的GPS信号,将GPS信号分析后计算出自己的大地坐标,再通过GSM/CDMA等无线网络将自己的位置报告的监控中心的一种定位设备。GSM...

电子信息科学技术和计算机科学技术有什么不同啊-ZOL问答

这么说吧,电子信息工程你的模电数电单片机得学好,计算机你的C语言、C++得学好。计算机基本不用懂电路。呵呵,我本科是电子信息工程专业,研究生是...

手机改远程遥控开关有哪些方法?- 一起装修网

[回答]远程电话遥控开关,采用现代高新技术GSM网络,电话或*都可以控制,密码识别权限,全程语音*,将电话信号转换成控制信号输出,实现了远程控制任何家用电器...

pim芯片是啥意思?

PIM芯片是(PersonalIdentityModel个人识别模块)的缩写,是小灵通手机使用的用户卡。它是具有8-16bitCPU的小型单片机,物理规范基础是根据国际智能卡统一...

哪位知道车载GPS价位多少?教期待大神解答

[回答]1)硬件设备:GPS模块、GSM模块、备用电池、单片机及各类元器件等;2)通信软件系统:SIM卡资费、服务器费用,日常维护费用等;3)其他费用:硬件研发、软件...

智能手机与普通手机有什么区别? - 口味独特的口袋菌 的回答 -...

智能手机是相对普通通信手机而言的,简单的一个比喻,我们可以把普通手机当成是一个单片机,而智能手机就相当于一台多媒体电脑,但智能手机又不同于PDA...

猜你喜欢