程式設計師乾貨:用樹莓派加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能做什麼事之入門篇-收短信


分享到:


相關文章: