使用树莓派3B与A6 GSM模块发送短信

本文基于官方Raspbian的2018-03-13版。

之前买过一个A6 GSM模块,最近尝试装在树莓派3B下使用,折腾的够呛。网上资料有些是过时的,因此我决定抛砖引玉,供有兴趣的朋友们讨论。

由于一直搞不定这个模块接上USB转TTL后的使用(能识别出/dev/ttyUSB0,但是然后就没有然后。minicom调试根本没法进行。但在Windows + 各类串口调试工具都没问题),所以决定直接连接树莓派的IO。

之前了解到GSM模块可能在工作时消耗较大的功率导致树莓派重启,因此首先找了个某牛叉国产品牌手机的5V3A充电头以便向树莓派供电。然后将GSM模块的VCC接树莓派5V,GND接树莓派GND,u_RX、u_TX接树莓派TX、RX(PIN8、PIN10)。

然后树莓派3B的串口就是一个坑。网上查了一圈得知,3B有两个串口,一个稳定的硬件串口和一个相对不那么稳定的软件串口。下文提到的串口特指硬件串口。硬件串口有几种工作模式,并且只能选一。一种是默认的,分配给蓝牙使用;一种是用于在PC上通过串口进行console配置(类似在PC上用console线配置交换机等设备。这里树莓派相就当于交换机的地位),另一种就是本文关心的场景,与其它串口设备通信。

为了达到这个目的,需要做以下几个步骤:

1、运行命令行版的raspi-config:sudo raspi-config。选择Interfacing Options,然后选Serial。这时候它会问你要不要作为login shell,选“No”,然后继续问要不要作为一个硬件串口,选“Yes”。本质上,这步操作在/boot/config.txt里添加了一行 enable_uart=1,并且去掉 /boot/cmdline.txt中console0的配置。重启。

2、事情还不算完。我们用ls -l /dev/serial* 查看,会发现serial0给了ttyS0,serial1给了ttyAMA0。而我们的目标是要将serial0对应给ttyAMA0。为了达到这个目的,/boot/config.txt里还要加一句:dtoverlay=pi3-disable-bt。副作用就是彻底禁用蓝牙。重启。



3、彻底禁用串口的console登录功能。执行:

sudo systemctl stop serial-getty@ttyAMA0.service

sudo systemctl disable serial-getty@ttyAMA0.service

再次重启。起来后再次ls -l /dev/serial*,确认serial0已经给了ttyAMA0。


我选用了gammu作为短信发送工具。当然首先安装它:sudo apt-get install gammu

4、接下来的步骤有点意思,姑且称之为A6 GSM模块的开光仪式。

stty -F /dev/ttyAMA0 115200 (是的不需要sudo。如果报没有权限,很可能是console功能没关闭。请检查/boot/cmdline.txt、执行步骤3)

echo -e "at\n" > /dev/ttyAMA0  (不懂,必须要手动激活下模块才行?)

sudo gammu-config,端口写ttyAMA0,波特率选择at115200,其余默认。最后save一下。

sudo gammu --identify。应该返回GSM模块的信息。如果第一次执行报错没发现硬件,可以再来一次试试看。


5、开光仪式圆满完成后就可以发送短信了:
sudo gammu sendsms TEXT 对方手机号码 -text "英文内容"

如果需要中文支持,在手机号码后加一个参数:-unicode。


至此初步测试完成。但这样有一个严重问题:reboot没问题,直接运行发送短信的命令即可,但是如果halt再上电(即冷启动)之后,必须重新开光!哪怕gammu-config什么都不改,也得运行下。(突然想到,usb转ttl是否也需要开光的?找机会试一下。【确实如此】)

不管怎样,至少有了一种稳定的可持续的使用模式。回头把A6 GSM模块的电源独立出来再试试(应该需要共地)。

=============【确实如此】的分割线=============

相对来说GSM模块配上USB转TTL模块就简单多了。无需折腾串口设置,插上树莓派的USB口后用lsusb验证下转换硬件是否是被正确识别,以及ls /dev/ttyUSB*看看是否已被正确映射。然后开个光就能使用了。


  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ki1381

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值