GSM模块(SIM800L)收发短信 串口调试

您所在的位置:网站首页 sim卡读取错误怎么办 GSM模块(SIM800L)收发短信 串口调试

GSM模块(SIM800L)收发短信 串口调试

2024-07-12 14:32| 来源: 网络整理| 查看: 265

其实我感觉应该不止用于SIM800L,其他GSM模块也大同小异,估计也差不多。 总结下我调试模块遇到的问题,与大家分享一下,同时也梳理一下自己的思路好移植到单片机上。

我也不打电话,所以模块的接线只用接4个脚,如下图(感觉不用说…) 实物图

电源问题

刚买来这个模块也没在意,也没接触过GSM模块,以为和其他普通模块一样,结果它是3.7~4.2V供电,这使我很茫然。亲测3.3V也可以使模块工作,但是貌似总是重启。 具体现象就是时不时地显示下面内容

Call Ready SMS Ready

这时就要考虑电源问题了。 看卖家和网上说可以用5V(大于等于500mA)电源加一个二极管和一个1000uF的电容就可以解决,以下是卖家的电路图:

电源电路

这样估计就不会一直重启了。。。好像是。。。

发送中文短信

推荐调试使用 SSCOM 它好用啊!可以存储AT指令,如图:在这里插入图片描述

英文的我发送不了,不知道为什么,但是可以通过信息中心发中文。。。

可能是没买天线,我这里向大家推荐,买这玩意儿一定要带个天线,我当初买的时候没注意2块钱加PCB天线,信号经常不好,这阵儿我还寻思定个天线呢,你说费劲不。。。下回我得做好功课了。。

首先,感谢论坛里大佬们的文章,我很懒,懒得康手册,直接来论坛搜索。。。参考了 嘘、小点声的 GSM短信发送与电话等 这篇博客,十分感谢。我就不再复述了,这位大佬写的很详细,大家先看完再回来(或者不用回来了,估计已经学会了 ( ̄▽ ̄)~*)

说下我都用了哪些AT指令吧。。

AT OK //------------------------------------------- AT+CPIN? //检测SIM卡 +CPIN: READY OK //------------------------------------------- AT+CSQ //检查网络信号强度和SIM卡情况 +CSQ: 22,0 //(这次运气好,原来经常0,0) OK //------------------------------------------- AT+CMGF=0 //=0 PDU =1 文本模式 OK //------------------------------------------- AT+CSCS="GSM" //选择字符集 OK //------------------------------------------- AT+CMGS=25 //不一定是25 我学习了 爱听评书 的大佬 > //具体是几 还是去上面分享的链接去康康 //------------------------------------------- 0891683108100005F011000D91683104011415F60008000A62117231542C8BC44E66 //这个码怎么来的 还是在上面的链接里...(做菜博客) 我在下面简单分析一下 //注意这个 “箭头” 这就是 0x1A 如果复制了 就不用单独发下面的0x1A了 //就这行 不要发送回车(0x0D 0x0A) //------------------------------------------------------------- //单独发送 0x1A 成功了就会如下 +CMGS: 27 OK //失败了就 ERROR 经常失败 多发几回 我估计是天线的问题, // 等我买了再试试,到时候评论

到这儿 中文短信就发送完了,祝君成功!

分析一下发送的一串带代表什么含义,和“AT+CMGS=25”中的25是怎么来的。 在这里插入图片描述 “AT+CMGS=25”中的25是 0891683108100005F011000D91683104011415F60008000A62117231542C8BC44E66 中的 11000D91683104011415F60008000A62117231542C8BC44E66 字节个数/2 50/2 = 25 后期移植的话需要修改短信内容就要修改:

短信内容短信内容前面的长度AT+CMGS=? 接收短信

这里我也不是很明白,但是可以接收,大家参考下就好。。。 (其实哪儿都不明白) 每个模块的指令或许有些不同,但是你可以查,比如说设置波特率指令 AT+IPR

AT+IPR?//询问当前波特率是多少 AT+IPR=?//中间加个等号,代表询问波特率能设置成啥,我的模块回复是: +IPR: (), (0,1200,2400,4800,9600,19200,38400,57600,115200,230400,460800) 代表参数得写括号里的参数,比如 AT+IPR=19200

再比如说 优先信息存储指令 AT+CPMS

AT+CPMS?//就是询问当前存储设置是什么 AT+CPMS=?//还是,加了个“=”号就是询问这个指令可以填啥,因此,如果你按照其他人的指令设置发现错误了,可以考虑下指令是否不兼容的问题,先查一下,我的模块对此回复的是: +CPMS: (“SM”,“ME”,“SM_P”,“ME_P”,“MT”), (“SM”,“ME”,“SM_P”,“ME_P”,“MT”), (“SM”,“ME”,“SM_P”,“ME_P”,“MT”) OK //因此我有5种载体可以选择(但我都不知道啥意思,我不管,就存SIM卡就完事儿了) AT+CPMS=“SM”,“SM”,“SM” //具体指令解释 自己Baidu 或者 这个链接 AT指令:AT+CPMS

“AT&W” 指令是保存模块参数设置,比如你把波特率调整为19200,如果保存了,下次开机就是19200,不用再次设置,其他参数也适用(或者大部分,反正挺多设置都保存了),因此,可以先在PC上调整好了,单片机就不用开机一系列调整了。

短信接收不到,可能是没调 新信息指示 用 AT+CNMI指令进行设置,具体指令各参数参见传送门:AT+CNMI指令详解 我查下我的模块此参数设置是

AT+CNMI? +CNMI: 2,1,0,1,1

设置过后,发送个短信给模块,会收到提示了(不知道用不用设置AT+CSCS="GSM"和AT+CMGF=0,好像得要AT+CMGF=0才能读中文,好像是啊,我不知道,懒得试。。。)

+CMTI: “SM”,6//6说明存储地址

这时可以用 AT+CMGL=0 指令或者用 AT+CMGR=6 指令来查短信内容

AT+CMGL=? //我的列表指令参数是数字,我看网上有的模块是字符串,如“REC UNREAD”、“REC READ”、“ALL”等,因此可以查下,然后再设置 +CMGL: (0,1,2,3,4) AT+CMGL=0 读取未读消息 AT+CMGL=1 读取已读消息 AT+CMGL=2 读取未发送消息 AT+CMGL=3 读取已发送消息 AT+CMGL=4 表示读取所有的短信

+CMTI: “SM”,6//6说明存储地址 AT+CMGR=6//上面提示我在6号地址,因此我读6 AT+CMGR 意思是: 读短信,信息从AT+CPMS(信息存储指令,上面有交代) 命令设定的存储器读取

助手调试截图OK,解码我还没研究,就先这样吧,感觉啥也没说。。。! 对了,最后我发的短信是 123Hello 祝大家成功! 参考传送门: AT指令(中文详解版)(一) AT指令(中文详解版)(二) AT指令(中文详解版)(三) GSM之AT操作命令详解20160615



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3