草庐IT

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

大屁桃 2023-08-23 原文

目录

第一部分、关于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

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

  1. ruby-on-rails - 如何在 Ruby on Rails 中实现由 JSF 2.0 (Primefaces) 驱动的 UI 魔法 - 2

    按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。问题1)我想知道ruby​​onrails是否有功能类似于primefaces的gem。我问的原因是如果您使用primefaces(http://www.primefaces.org/showcase-labs/ui/home.jsf),开发人员无需担心javascript或jquery的东西。据我所知,JSF是一个规范,基于规范的各种可用实现,prim

  2. FOHEART H1数据手套驱动Optitrack光学动捕双手运动(Unity3D) - 2

    本教程将在Unity3D中混合Optitrack与数据手套的数据流,在人体运动的基础上,添加双手手指部分的运动。双手手背的角度仍由Optitrack提供,数据手套提供双手手指的角度。 01  客户端软件分别安装MotiveBody与MotionVenus并校准人体与数据手套。MotiveBodyMotionVenus数据手套使用、校准流程参照:https://gitee.com/foheart_1/foheart-h1-data-summary.git02  数据转发打开MotiveBody软件的Streaming,开始向Unity3D广播数据;MotionVenus中设置->选项选择Unit

  3. STM32读取串口传感器数据(颗粒物传感器,主动上传) - 2

    文章目录1.开发板选择*用到的资源2.串口通信(个人理解)3.代码分析(注释比较详细)1.主函数2.串口1配置3.串口2配置以及中断函数4.注意问题5.源码链接1.开发板选择我用的是STM32F103RCT6的板子,不过代码大概在F103系列的板子上都可以运行,我试过在野火103的霸道板上也可以,主要看一下串口对应的引脚一不一样就行了,不一样的就更改一下。*用到的资源keil5软件这里用到了两个串口资源,采集数据一个,串口通信一个,板子对应引脚如下:串口1,TX:PA9,RX:PA10串口2,TX:PA2,RX:PA32.串口通信(个人理解)我就从串口采集传感器数据这个过程说一下我自己的理解,

  4. ruby - 正则表达式将非英文字母匹配为非单词字符 - 2

    @raw_array[i]=~/[\W]/非常简单的正则表达式。当我用一些非拉丁字母(具体来说是俄语)尝试时,条件是错误的。我能用它做什么? 最佳答案 @raw_array[i]=~/[\p{L}]/使用西里尔字符进行测试。引用:http://www.regular-expressions.info/unicode.html#prop 关于ruby-正则表达式将非英文字母匹配为非单词字符,我们在StackOverflow上找到一个类似的问题: https://

  5. ruby - Hanami link_to 助手只呈现最后一个元素 - 2

    我是HanamiWorld的新人。我已经写了这段代码:moduleWeb::Views::HomeclassIndexincludeWeb::ViewincludeHanami::Helpers::HtmlHelperdeftitlehtml.headerdoh1'Testsearchengine',id:'title'hrdiv(id:'test')dolink_to('Home',"/",class:'mnu_orizontal')link_to('About',"/",class:'mnu_orizontal')endendendendend我在模板上调用了title方法。htm

  6. ruby-on-rails - 将 Rails 路由助手作为类方法添加到类中 - 2

    我如何将像“root_path”这样的Rails路由助手作为类方法添加到像my_model.rb这样的类中?所以我的课是这样的:ClassMyModeldefself.fooreturnself.root_pathendendMyModel.foo以上不起作用,因为ClassMyModel不响应root_path这是我所知道的:我可以使用includeRails.application.routes.url_helpers,但这只会将模块的方法添加为实例方法我试过扩展Rails.application.routes.url_helpers但它没用请随时给我上课:)

  7. ruby 私有(private)类方法助手 - 2

    您好,我正在尝试创建一个帮助程序,用于将ruby​​方法大量定义为私有(private)类方法。通常,可以通过使用private_class_method键工作将方法定义为私有(private)类方法。但我想创建一个以下样式的助手:classPersondefine_private_class_methodsdodefmethod_oneenddefmethod_twoendendend我计划通过以下方式动态定义它,但根本不起作用:classObjectdefself.define_private_class_methods&blockinstance_evaldoprivate&bl

  8. ruby-on-rails - RSpec 应用程序助手测试 : Undefined local variable or method `helper` - 2

    有一段时间这似乎是一个闪烁的错误,但现在它一直出现:当我在一个相当简单的ApplicationHelper规范上运行RSpec时,我得到以下错误:%rspec--backtrace1)ApplicationHelperrendersMarkdownfromplaintextFailure/Error:expect(helper.md(plaintext)).toeq("Header\n")NameError:undefinedlocalvariableormethod`helper'for##/Users/danielsh/.rvm/gems/ruby-2.1.1@project-st

  9. STM32的HAL和LL库区别和性能对比 - 2

    LL库和HAL库简介LL:Low-Layer,底层库HAL:HardwareAbstractionLayer,硬件抽象层库LL库和hal库对比,很精简,这实际上是一个精简的库。LL库的配置选择如下:在STM32CUBEMX中,点击菜单的“ProjectManager”–>“AdvancedSettings”,在下面的界面中选择“AdvancedSettings”,然后在每个模块后面选择使用的库总结:1、如果使用的MCU是小容量的,那么STM32CubeLL将是最佳选择;2、如果结合可移植性和优化,使用STM32CubeHAL并使用特定的优化实现替换一些调用,可保持最大的可移植性。另外HAL和L

  10. ruby - 运行测试时静音 Chrome 驱动程序控制台输出 - 2

    我使用的是最新版本的Chrome(32.0.1700.107)和Chrome驱动程序(V2.8)。但是当我在Ruby中使用以下代码运行示例测试时:require'selenium-webdriver'WAIT=Selenium::WebDriver::Wait.new(timeout:100)$driver=Selenium::WebDriver.for:chrome$driver.manage.window.maximize$driver.navigate.to'https://www.google.co.in'defapps_hoverele_hover=$driver.find_

随机推荐