【发布时间】:2019-03-25 18:07:00
【问题描述】:
我将SIM800L module 与德州仪器启动板、MSP430G2553 微控制器一起使用,而不是使用 SIM800L 的外部库。
问题陈述: 发送一条简单的短信(带文本模式的短信),手机上接收为空白短信。
SIM 卡详情:
1. SIM 1:位置:印度。运营商:AirTel,兼容 4G 的 SIM 卡。
2. SIM 2:位置:印度。运营商:Tata Docomo,兼容 3G 的 SIM 卡。
我已经知道的:
- 固件中的 UART 驱动程序已经过测试并且可以正常工作、非轮询、中断驱动。
- 没有添加阻塞时间延迟来替代读取 AT 命令的响应。我阅读了响应并仅在收到肯定的确认后才继续,
<CR><LF>OK<CR><LF>对于大多数命令。 - 我已经通过示波器确认了在 Tx-Rx 引脚上发送和接收的数据位。一切似乎都符合预期,包括电压水平。
我读过的内容:
通过非官方来源(当然是论坛)推测 SIM800L 仅兼容 2G。
(来自维基百科的浅读)我已经阅读了 GSM 3.38 和 GSM 3.40 以及 Data Coding Scheme section,以了解如何在合适/相关的 AT 命令 (AT+CSMP) 中处理文本编码。
各种论坛,包括非常普遍使用 SIM800L 模块的 arduino 论坛。
Stackoverflow 上的相关帖子:
- Recieving Blank SMS SIM800 using AT Commands and Python on Raspberry Pi 2
- How to send SMS with GSM module SIM800 and Arduino Uno?
- Sending GSM Character Set in SMS with SIM800L Module
第一个答案似乎对他有用,但对我没有用。
我尝试了什么:
我已将同一模块与 Docklight 串行终端实例一起使用。我的手机收到了从 Docklight 发送的短信,并按预期显示,而不是空白。
在第 0 天,在将模块与 Launchpad 硬件集成之前,我使用 SIM800L 的预期响应的精确副本测试了整个固件状态机。
-
两张 SIM 卡的结果是相同的,除了一些初始配置,但我在启动任何 SMS 相关任务之前都加载了一组典型的配置。
李>
我使用的典型值是:
- 回声关闭
- CSMP: 17, 167, 0, 0(我试过 17, 167, 0, 0,但没有运气)。 SIM 1 的默认值为 17,11,0,246,SIM 2 的默认值为 17,255,0,0。
- CSCS:“爱尔兰共和军”
串口组合失败:(SIM 1 和 SIM 2)
- CSMP:17、11、0、246 | CSCS:“IRA” - 发送空白短信
- CSMP:17、11、0、246 | CSCS:“GSM” - 发送空白短信
- CSMP:17、11、0、246 | CSCS:“HEX” - 发送空白短信
串口组合成功:(SIM 1 和 SIM 2)
- CSMP:17、167、0、0 | CSCS:“爱尔兰共和军”
- CSMP:17、167、0、8 | CSCS:“爱尔兰共和军”
- CSMP:17、11、0、0 | CSCS:“GSM”
- CSMP:17、167、0、0 | CSCS:“GSM”
- CSMP:17、167、0、8 | CSCS:“GSM”
老实说,在我研究了哪些字段反映了这些组合的变化(SIM800L 用户指南中没有详细记录)之前,我对这些组合有预感。
知道我在这里可能缺少什么吗?我愿意认为这更像是一个 RTFM(阅读胖手册)问题。
【问题讨论】:
标签: character-encoding embedded sms at-command sim800