我正在使用带有德州仪器 Launchpad的SIM800L 模块和 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以及数据编码方案部分,以了解如何在合适/相关的 AT 命令 (AT+CSMP) 中处理文本编码。
各种论坛,包括非常普遍使用 SIM800L 模块的 arduino 论坛。
Stackoverflow 上的相关文章:
- 在 Raspberry Pi 2 上使用 AT 命令和 Python 接收空白 SMS SIM800
- 如何使用 GSM 模块 SIM800 和 Arduino Uno 发送短信?
- 使用 SIM800L 模块在 SMS 中发送 GSM 字符集
第一个答案似乎对他有用,但对我不起作用。
我尝试了什么:
我已将相同的模块与 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(阅读胖手册)问题。