使用Raspberry Pi与GSM2 Click接收SMS时终端出现乱码问题
GSM2 Click接收短信前置乱码问题排查与解决
以下是针对该问题的具体排查方向和修复方案:
1. 修正硬件流控配置
GSM2 Click默认可能开启了RTS/CTS硬件流控,但树莓派串口若未对应配置,会导致数据传输异常:
- 发送AT指令禁用硬件流控:
AT&K0,发送后用AT&V确认配置已保存。 - 树莓派端调整串口设置:编辑
/boot/config.txt,确保enable_uart=1,同时注释掉console=serial0,115200(避免系统串口占用干扰),重启树莓派生效。
2. 锁定模块波特率
即使终端设为115200,模块可能因自动波特率检测出现同步偏差:
- 发送
AT+IPR=115200强制锁定波特率,随后发送AT+CFUN=1,1重启模块使配置生效。 - 重启后用
AT指令测试响应,确保无延迟或乱码后再接收短信。
3. 调整字符集与编码参数
当前字符集和CSMP参数可能存在编码转换冲突:
- 尝试切换字符集为
"IRA"(国际参考字母表,兼容性更强):AT+CSCS="IRA"。 - 修改CSMP参数为标准文本模式配置:
AT+CSMP=17,168,0,0,该参数组合适配多数GSM模块的文本短信编码。
4. 优化CNMI与缓存清理
模块缓存的旧数据或CNMI上报机制可能导致前置乱码:
- 先清理所有已读短信缓存:
AT+CMGD=,4。 - 调整CNMI参数为
AT+CNMI=2,2,让模块直接上报短信内容而非索引,观察乱码是否消失;若仍存在,改回AT+CNMI=2,1并重启模块。
5. 排查物理连接与供电
信号干扰或供电不足也会引发乱码:
- 使用短款屏蔽杜邦线连接树莓派与GSM2 Click,避开HDMI线、电源线等干扰源。
- 确保树莓派供电功率充足(建议5V/2.5A以上),若GSM模块频繁出现供电不足,可单独给模块外接5V电源。
内容的提问来源于stack exchange,提问作者djanse
相关产品推荐
相关产品推荐

