程序员干货:用树莓派加SIM868能做什么事之入门篇-收短信

概述

想用树莓派的“麻雀虽小五脏俱全”特点做些好玩有趣的东西,欢迎大家一起来探讨,如有好建议更是欢迎关注私信指正。我会用一个系列文章写写用树莓派实现跟手机有关系的功能,如自动收发短信、接电话、打电话等。接下来分篇进行这些功能的试验和进阶, 希望在文章和大家一起学习和进步。

程序员干货:用树莓派加SIM868能做什么事之入门篇-收短信

上一篇文章《 》中我们已经能利用控制台输入,来进行AT指令输入并获取SIM868响应结果。在此基础上, 我们来做一些自动化的改良, 并让程序一直运行下去,以获得程序自动工作帮忙接收短信的工作。想深入理解的话就千万不要做佛系读者咯~

程序员干货:用树莓派加SIM868能做什么事之入门篇-收短信

一、本篇能学到什么

- 如何进入监听短信模式

- 如何发送短信

程序员干货:用树莓派加SIM868能做什么事之入门篇-收短信

二、需要的基础知识

- 知道怎么烧录和配置树莓派初始环境(官方的ROM),有需要的可以找我要资料

- 具备Java知识,本文以Java为例进行开发

- 需要源码的话要会一点Git(相关文章请查阅《 》)

- 需要阅读过《 》

程序员干货:用树莓派加SIM868能做什么事之入门篇-收短信

三、实现过程

1.关键知识点

(1) 增加功能菜单

在上一篇的基础上, 我们添加一个前置功能菜单,让用户可以选择是继续使用“指令交互模式”, 还是进入“短信监听模式”

程序员干货:用树莓派加SIM868能做什么事之入门篇-收短信

然后运行试试效果

输入AT指令回车,能看到OK说明SIM868模块工作正常,并且能响应指令

输入AT+CSQ查看信号强度也成功。

程序员干货:用树莓派加SIM868能做什么事之入门篇-收短信

(2)利用while+Thread.sleep()模拟监听效果

为了防止程序按顺序运行一次就结束,我们需要借用while来让它不停地运行;

同时需要防止死循环带来CPU100%负荷运行,所以加一个睡眠指令,让CPU稍微休息一下

程序员干货:用树莓派加SIM868能做什么事之入门篇-收短信

(3)初始化模块使之进入工作状态

添加初始化SIM868模块使之准备进入工作的代码(详细实现代码在文末的Github有下载地址

程序员干货:用树莓派加SIM868能做什么事之入门篇-收短信

试试效果,Good,一切正常。

程序员干货:用树莓派加SIM868能做什么事之入门篇-收短信

(4)解析监听到的指令反馈,获取短信内容并及时清理缓存

这块重点要了解当有短信来时,SIM868会输出像下面这样的内容

+CMTI: "SM",7

这个内容重点在于要解析出"SM"后面的数字7, 它代表了刚收到的短信在SIM卡的什么索引位置上

程序员干货:用树莓派加SIM868能做什么事之入门篇-收短信

根据上面获得的索引位置,就可以调用相应的读短信AT指令来读取真正的短信内容

读短信指令:AT+CMGR=[index]

读取成功后获得反馈,以"+CMGR"带头的字符串,分析它可以得到最终我们需要的东西,代码参考如下

程序员干货:用树莓派加SIM868能做什么事之入门篇-收短信


来个完整的演示过程:

我们先在手机上发送短信"first test msg"

程序员干货:用树莓派加SIM868能做什么事之入门篇-收短信

然后在树莓派上运行的短信监听程序上看到结果

程序员干货:用树莓派加SIM868能做什么事之入门篇-收短信

很成功

(5)发送短信模式

在此模式下,可以输入手机号+短信内容,然后程序把短信发送出去

程序员干货:用树莓派加SIM868能做什么事之入门篇-收短信

程序运行起来,输入手机号和内容试一试

程序员干货:用树莓派加SIM868能做什么事之入门篇-收短信

看看目标手机上是否收到刚发出来的短信

程序员干货:用树莓派加SIM868能做什么事之入门篇-收短信

收到短信了,Good job

成功!

2. 发布你的代码

把写好的代码编译成class, 并把相关的依赖都放上树莓派的link目录中

附上源码地址: [email protected]:visionsl/raspi_mysms.git

3. 运行编译好的程序

cd /hompe/pi/link

java -classpath .:classes:/opt/pi4j/lib/* com.main.Main

程序员干货:用树莓派加SIM868能做什么事之入门篇-收短信

四、小结与预告

如果你的代码运行起来了, 恭喜你!

如果碰到问题,比如发短信失败,或接收不到短信,有可能是模块接触不好,你可以试试用ATD拨打电话的指令来检查模块是否能正常工作

如果模块反馈是[NO CARRIER],那么你要检查一下SIM卡是否没接触好,或是调教一下天线位置看是否无信号引起,最后重新上电再重试

程序员干货:用树莓派加SIM868能做什么事之入门篇-收短信

程序员干货:用树莓派加SIM868能做什么事之入门篇-收短信

五、下篇预告

下一篇我们要进阶学习, 看怎么把收到的短信转发到指定的服务器上。

程序员干货:用树莓派加SIM868能做什么事之入门篇-收短信


分享到:


相關文章: