其实我感觉应该不止用于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+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