0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

单片机与手机的硬软件接口设计的问题解决方案

电子设计 来源:单片机与嵌入式系统应用 作者:李艳华 , 陈慧明 2021-05-26 09:41 次阅读

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

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为转换后的十六进制数。如果a39H,则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编码之苦。实践证明,这是可行的。

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

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

责任编辑:gt

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    5997

    文章

    43947

    浏览量

    620538
  • 手机
    +关注

    关注

    34

    文章

    6679

    浏览量

    154876
收藏 人收藏

    评论

    相关推荐

    单片机下载程序电路原理分享

    下载。解决方案:在CH340的TXD引脚反向串联一个二极管(推荐肖特基二极管)、在CH340的RXD引脚串联一个约300欧姆的电阻。如此单片机可以彻底断电,问题解决!!(特别注意:此种情况不适
    发表于 11-26 16:11

    长虹等离子50638X50738X模组红点问题解决方案相关资料分享

    长虹等离子(50638X、50738X)模组红点问题解决方案文件下载
    发表于 06-03 06:54

    c语言单片机仿真keil,STM32单片机在Keil5下仿真的问题解决及GPIO口初始化、使用 精选资料推荐

    STM32单片机在Keil5下仿真的问题解决及GPIO口初始化、使用最近看了视频,里面有仿真,可以清楚看到GPIO口的数据变化,也想尝试下,DUG时却出现*** error 65: access
    发表于 07-15 07:19

    protues仿真常见问题解决方案分享

    protues仿真常见问题解决方案!来源:电子工程师成长日记
    发表于 01-17 08:52

    基于CPLD的单片机与PCI接口设计解决方案

    基于CPLD的单片机与PCI接口设计解决方案 8位单片机在嵌入式系统中应用广泛,然而让它直接与PCI总线设备打交道却有其固有缺陷。8位单片机
    发表于 09-26 17:41 831次阅读
    基于CPLD的<b class='flag-5'>单片机</b>与PCI<b class='flag-5'>接口</b>设计<b class='flag-5'>解决方案</b>

    SMT无铅制程工艺要求及问题解决方案

    SMT无铅制程工艺要求及问题解决方案   一、锡膏丝印工艺要求   1、解冻、搅拌   首先从冷藏库中取出锡膏解
    发表于 11-18 14:08 2901次阅读

    大众车系加倒车摄像头问题解决方案

    大众车系加倒车摄像头问题解决方案,感兴趣的小伙伴们可以看看。
    发表于 08-03 16:32 38次下载

    altium_designer_Summer09出现的问题解决方案

    altium-designer-Summer09出现的问题解决方案,感兴趣的小伙伴们可以瞧一瞧。
    发表于 09-18 16:12 0次下载

    手机快充的噪声问题解决方案资料下载

    电子发烧友网为你提供手机快充的噪声问题解决方案资料下载的电子资料下载,更有其他相关的电路图、源代码、课件教程、中文资料、英文资料、参考设计、用户指南、解决方案等资料,希望可以帮助到广大的电子工程师们。
    发表于 04-10 08:47 3次下载
    <b class='flag-5'>手机</b>快充的噪声<b class='flag-5'>问题解决方案</b>资料下载

    N76E003的EEPROM问题解决方案:使用Data Flash模拟EEPROM

    N76E003的EEPROM问题解决方案:使用Data Flash模拟EEPROM(嵌入式开发与应用专业开学要买电脑吗)-N76E003的EEPROM问题解决方案,官方文档,找了很久才找到。这份文件
    发表于 07-30 09:28 27次下载
    N76E003的EEPROM<b class='flag-5'>问题解决方案</b>:使用Data Flash模拟EEPROM

    protues仿真常见问题解决方案

    protues仿真常见问题解决方案!来源:电子工程师成长日记
    发表于 01-17 10:33 3次下载
    protues仿真常见<b class='flag-5'>问题解决方案</b>

    水泥设备自主维修之:球磨机问题解决方案图文案例汇总,这种修复技术值得推荐

    「修旧利废 成本管控 节能降耗」球磨机问题解决方案汇总
    的头像 发表于 06-22 15:48 600次阅读
    水泥设备自主维修之:球磨机<b class='flag-5'>问题解决方案</b>图文案例汇总,这种修复技术值得推荐

    芯片不断的复位问题解决方案-HK32F030M应用笔记(二十五)

    芯片不断的复位问题解决方案-HK32F030M应用笔记(二十五)
    的头像 发表于 09-18 10:56 754次阅读
    芯片不断的复位<b class='flag-5'>问题解决方案</b>-HK32F030M应用笔记(二十五)

    总结:30个单片机常见问题解决办法!

    总结:30个单片机常见问题解决办法!
    的头像 发表于 10-17 17:46 2363次阅读
    总结:30个<b class='flag-5'>单片机</b>常见<b class='flag-5'>问题解决</b>办法!

    单片机软件模拟SPI接口解决方案

    电子发烧友网站提供《单片机软件模拟SPI接口解决方案.pdf》资料免费下载
    发表于 10-13 11:31 2次下载
    <b class='flag-5'>单片机</b><b class='flag-5'>软件</b>模拟SPI<b class='flag-5'>接口</b>的<b class='flag-5'>解决方案</b>