【STM32训练—SIM900A模块】第一篇、电脑的串口助手驱动SIM900A发送中文和英文短信

news/2024/11/15 1:49:16/

目录

第一部分、关于SIM900A的基本知识

1、SIM900A的通信方式

2、SIM900A的供电方式

3、常用指令的含义

第二部分、利用电脑串口助手实现SIM900A发送英文和中文短信

一、发送英文短信    

1、发送SIM卡检测指令和信号质量检测指令

2、发送英文短信指令

 3、我手机上面显示的短信内容

二、发送中文短信(重点)

1、错误的例子

2、发送成功的例子

第四部分、总结

1、演示视频链接 

2、资料链接       


第一部分、关于SIM900A的基本知识

1、SIM900A的通信方式

        SIM900A 模块采用串口(UART)通信,每个SIM900A 开发板都含有TTL 接口,其中主要用到的是5VR(RXD)和5VT(TXD),3VR和3VT一般用很少用。

2、SIM900A的供电方式

        说明书上是这么说的:常见供电电压为 5V(特殊版本除外),电流为 1A或以上(推荐 2A 或以上)。对于电源适配器提供的电流至少为 1A,考虑到参数虚标,我们推荐 5V 2A 的电源。当然 5V 3A 或 3A 以上的电源会更好的,这样的电源不会损害模块。

        我强烈建议直接外部供电,虽然有些 USB—TTL 设备会提供一个 5V 电源,但是多数这样的 5V 电源并不能达到要求。当然也不是不可以,我第一次就是用的USB—TTL的供电的,也没问题,下面是两种供电方式的接线图:

下图为外部供电方式接线图:图中的电源模块自行去淘宝搜“电源转换模块5V”,一搜一大把。

 下图为USB—TTL直接供电的接线图:

3、常用指令的含义

        相关的AT主要有:这里我只放了和发送短信相关的,以及常见的。(更详细的指令资料我放在下方链接中,无需积分,有需求的可以下载)

AT+CPMS                       // 查询SIM卡内短消息使用状态
AT+CNMI                       // 新消息指示设置
AT+CMGF                       // 选择短消息格式 
AT+CSCS                       // 编码设置
AT+CSCA                       // 查询、设置SMS服务中心号码
AT+CSMP                       // 设置短消息文本模式参数
AT+CMGS                      // 发送短消息
AT+CMGR                      // 读取短消息
AT+CMGD                      // 删除短消息
AT+CMGDA                     // 删除所有短消息
AT&F                         // 恢复出厂设置
AT+CSQ                       // 信号质量

第二部分、利用电脑串口助手实现SIM900A发送英文和中文短信

一、发送英文短信    

1、发送SIM卡检测指令和信号质量检测指令

        注意:信号质量值在 0—31 之间,越大代表信号越强。0 代表无信号,一般此数要达到 10 以上,模块才能正确执行发短信等功能。

AT+CPIN?                 // 查询是否检测到SIM卡
+CPIN: READY
OK
AT+CSQ                    // 查询信号质量
+CSQ: 18,0
OK

2、发送英文短信指令

AT+CSCS="GSM"
AT+CMGF=1
AT+CMGS="132******63"  //手机号码
>okokok                //信息内容
1A(勾选串口助手的16进制发送)

 注意:发送新行

发送十六进制0x1A其含义是告诉SIM900A确认发送,然后等待几秒,出现OK表示发送成功。

 3、我手机上面显示的短信内容

二、发送中文短信(重点

1、错误的例子

        我相信很多人看了淘宝客服给的数据手册和PPT,都能成功发送英文短信但是却不能成功发送中文短信,我也踩了这个坑,按照客服资料PPT内所给的例程,没有成功发送中文短信,会报ERROR错误!!!

如下:这是我从客服给的资料中截图的例程,其代码如下

AT+CMGF=1
AT+CSCS="UCS2"
AT+CSMP=17,167,0,24
AT+CMGS="00310033003200320035003500360037003200360033"  //手机号码的Unicode编码
> 4F60597D          //短信内容(你好)Unicode编码
ox1a                //表示发送

        说实话这里挺坑的,我搞了一下午,开始以为是放在SIM900A上的卡欠费了,我交了钱没用,然后我搜遍了整个CSDN社区,发现很多老铁遇到了和我一样的问题,然后无意间看到了这位老哥的博客,Text模式下发送中文短信问题(Sim900A R11.0)_boliu218的博客-CSDN博客,发现有一行代码配置和例程中不一样,如下:

AT+CSMP=17,167,0,8          //表示普通文本模式

         这里的区别就是第四位参数,然后我找了指令手册关于这条指令的详细解释,其中最需要注意的是第四个参数0则表示英文模式,为8表示中文普通文本模式。

2、发送成功的例子

注意:这里需要用到中文转Unicode编码的软件,我放在下方的链接(无需积分)代码如下:

AT+CMGF=1
AT+CSCS="UCS2"
AT+CSMP=17,167,0,8 //普通文本模式
AT+CMGS="00310033003200320035003500360037003200360033"  //手机号码的Unicode编码
> 4F60597D          //短信内容(你好)Unicode编码
ox1a                //表示发送

发送十六进制的1A,等待反馈

手机这边收到的消息

第四部分、总结

        SIM900A这个模块利用电脑串口助手调试,发送英文短信很简单,但是由于发送中文短信的例程有错误,所以卡了一下午,但是最后成功解决了还是挺开心的。最后关于如何用STM32驱动SIM900A发送中英文短信我将会写在下一篇,本来准备写在一起的,但是这篇文章已经够长了,我怕你们看不下去,我就新写一篇。

1、演示视频链接 

        视频放在B站:电脑串口助手驱动SIM900A发送中文和英文短信_哔哩哔哩_bilibili     

2、资料链接       

        这个资料链接是我调试过程中用的Unicoded编码软件和我觉得有用的PPT,免费下载,放心!!!🐂🐂🐂

博主这篇文章所用的资料:【STM32训练—项目1】第一篇、电脑的串口助手驱动SIM900A发送中文和英文短信-其它文档类资源-CSDN文库https://download.csdn.net/download/Learning1232/78156748


http://www.ppmy.cn/news/813380.html

相关文章

7-2 九牛一毛

7-2 九牛一毛 分数 5 全屏浏览题目 切换布局 作者 陈越 单位 浙江大学 这是一道脑筋急转弯题:猪肉一斤 15 元,鸡肉一斤 20 元,那么一毛钱能买多少头牛? 答案是:9 —— 因为“九牛一毛”。 本题就请你按照这个逻辑…

excel里有文字的数字怎么从小到大排序,而不是首数字排序

试验软件:WPS表格 不能按照数字大小排序,原因有: 一、不是数字格式 二、其实还是不是数字的原因,如果数据来源是公式的话,也会造成排序的这个问题 把内容改成数字格式,即可解决问题

Excel批量随机生成姓名

A1:姓 A2:男名 B1:赵钱孙李周吴郑王冯陈褚卫蒋沈韩杨朱秦尤许何吕施张孔曹严华金魏陶姜戚谢邹喻柏水窦章云苏潘葛奚范彭郎鲁韦昌马苗凤花方俞任袁柳酆鲍史唐费廉岑薛雷贺倪汤滕殷罗毕郝邬安常乐于时傅皮卞齐康伍余元卜顾孟平黄和穆萧尹姚邵湛汪祁毛禹狄米贝明臧计伏成戴谈宋茅…

Excel对同时包含字母和数字的文本进行排序

如果表格中既有字母也有数字,现在需要对该表格区域进行排序,用户可以先按数字排序,再按字母排序,达到最终排序的效果。具体操作步骤如下:选择D列任一单元格,在【数据】选项卡的【排序和筛选】组中&#xff…

Excel中按照数字和汉字列对所有列排序

今天学医的一个同学发消息说他那大量的Excel的数据想按照数字和汉字那一列数据进行排序,但是不知道怎么操作,于是我就自己给他制作了了比较粗糙的操作教程,希望能够帮助到需要帮助的人吧。也欢迎有较好的方法的留言说明。 我准备了一些用于举…

Excel第10享:考试成绩按姓名排序

方法一: 1选中所有需排序区域,如下图所示 2选择“排序和筛选”功能,下拉选项中有“自定义排序”选项卡,如下图所示。 3点击“自定义排序”之后弹出相应对话框,需取消“列表包含标题”的复选框,如下图所示 …

Excel名称管理器重名和无法数字开头

一、需求 根据小区,楼栋,单元,楼层,四级构建Excel下拉,并实现联动 二、实现 导出使用的easyPOI导出表头,下拉使用数据有效性和名称管理器实现,但是实现过程中发现以下问题。 问题&#xff1…

姓名按照首字母排序

姓名按照首字母排序 private List<UserInfo> userInfoSort new ArrayList<>();//记录排好序的数据private void nickNameSort(List<UserInfo> userInfo) {// 实例化对象&#xff0c;当前环境设置为CHINA 中文Comparator comparator Collator.getInstance(L…