在本文中,我將向您展示一種使用 PIC 16F628A 和 SIMCOM SIM900A 模塊發(fā)送 SMS 的方法。
在上一篇文章中,我對我的 GSM 模塊進行了固件升級,因此它會注冊到歐洲服務提供商。在那篇文章中,我簡要介紹了 AT 命令和指令。
在本文中,我將更進一步。我會用我的 PIC 16F628A 發(fā)送短信。
完整的面包板。
要求
要充分利用本文,您需要具備以下條件:
SIMCOM SIM900A 模塊,升級后可以注冊到歐洲服務提供商。
一臺運行MPLAB X和XC8編譯器的計算機。
一個 PIC 16F628A和一個 MAX232。
一種對您的 PIC 進行編程的方法,我使用的是PICkit 3。
面包板、跳線和液晶顯示器。
零件清單中的零件。
介紹
SIM900A模塊上電后,會發(fā)生很多事情。其中之一是模塊正在嘗試注冊到網(wǎng)絡。成功注冊到網(wǎng)絡后,我們可以發(fā)送短信、接收短信并獲取服務提供商名稱。本文的主要目標是將 SMS 發(fā)送到預定義的號碼。獲得服務提供商的名稱是一種獎勵。
該模塊通過 TTL 或板載 MAX232 IC 與周圍電路通信。我將使用 MAX232 接口。這意味著所有的通信都是通過 PIC 的 UART 完成的,我們來自 PIC 的所有命令都將通過 printf 發(fā)送到 UART 端口。
硬件
我已經(jīng)像這樣連接了我的面包板:
單擊圖像以獲得全尺寸分辨率。
由于我使用的是 MAX232,因此我可以使用它來查看微控制器正在發(fā)送到 GSM 模塊的內(nèi)容并對其進行故障排除。為此,我斷開 GSM 模塊,連接串行電纜,然后打開 GtkTerm。波特率設(shè)置:9600-8-N-1。
連接到計算機以進行故障排除。
這是微控制器發(fā)送到 GSM 模塊的內(nèi)容。前三行僅用于驗證串行通信是否正常并查看我正在發(fā)送的內(nèi)容。最后兩行是對 GSM 模塊的指令。
我沒有收到 GSM 模塊的回復,因為它沒有連接。
零件清單
這是來自 EagleCAD 的 bom.ulp 的屏幕截圖。
軟件
盡管該軟件已被注釋,但我將在這里介紹它的某些部分。當 PIC 通電時,會顯示一條簡短的歡迎消息。然后開始 15 秒倒計時。我把這個倒計時,有兩個原因:
允許 GSM 模塊注冊。
一個視覺顯示,向用戶顯示正在發(fā)生的事情并且 PIC 正在工作。
倒計時結(jié)束后,PIC 發(fā)送命令:
AT+CPOL?\r\n
重要的是添加回車 - 新行,\r\n。這告訴模塊執(zhí)行已到達模塊緩沖區(qū)的文本字符串。
然后模塊返回字符串:
+CPOL: 1,0,”N NetCom”,1,0,1
這意味著該模塊已注冊到 NetCom。NetCom 是服務提供商的名稱。這是我們要在 LCD 上顯示的名稱。現(xiàn)在我們需要從字符串中提取名稱。我這樣做的方法是將整個字符串讀入一個數(shù)組。然后我將搜索“-signs”。找到“-signs”后,我將它們的位置存儲在另一個數(shù)組中。這就是我所說的“開始和停止”。然后我使用“開始和停止”中的值在 LCD 上顯示中間的字符。也許不是最花哨的方法,但它很簡單。
要發(fā)送短信,我必須發(fā)送更多 AT 命令。
首先,我發(fā)送命令:
AT+CMGF=1\r\n
這是選擇 SMS 消息格式。1 告訴模塊進入文本模式。
其次,我發(fā)送命令:
AT+CMGS=”接收方”\r\n
“接收者”是我要發(fā)送消息的號碼。
第三,我發(fā)送命令:
來自 PIC16F628A 的消息\r\n
這是實際的消息。由于消息有多個字符,包括空格,所以有一種很好的方法可以告訴模塊消息的結(jié)尾在哪里。我必須發(fā)送 EOF 標志,恰好是 CTRL-Z。
printf(“%c”,26);
這是常規(guī) ASCII 表中的 EOF 字符。該模塊現(xiàn)在將發(fā)送消息。
使用此鏈接查找有關(guān) SIM900A 模塊的文檔。
您可以從鏈接下載 c 源代碼。
jc_pic16f628a-gsm-sms.c.zip
結(jié)論
您現(xiàn)在應該能夠獲取您的服務提供商名稱,并使用 SIM900A 模塊在歐洲網(wǎng)絡上發(fā)送 SMS。
圖片和視頻
-
SMS
+關(guān)注
關(guān)注
0文章
78瀏覽量
28578 -
PIC16F628A
+關(guān)注
關(guān)注
1文章
8瀏覽量
10062 -
SIM900A
+關(guān)注
關(guān)注
3文章
54瀏覽量
35262
發(fā)布評論請先 登錄
相關(guān)推薦
評論