在本文中,我将向您展示一种使用 PIC 16F628A 和 SIMCOM SIM900A 模块发送 SMS 的方法。
在上一篇文章中,我对我的 GSM 模块进行了固件升级,因此它会注册到欧洲服务提供商。在那篇文章中,我简要介绍了 AT 命令和指令。
在本文中,我将更进一步。我会用我的 PIC 16F628A 发送短信。
完整的面包板。
要求
要充分利用本文,您需要具备以下条件:
SIMCOM SIM900A 模块,升级后可以注册到欧洲服务提供商。
一台运行MPLAB X和XC8编译器的计算机。
一个 PIC 16F628A和一个 MAX232。
一种对您的 PIC 进行编程的方法,我使用的是PICkit 3。
面包板、跳线和液晶显示器。
零件清单中的零件。
介绍
SIM900A模块上电后,会发生很多事情。其中之一是模块正在尝试注册到网络。成功注册到网络后,我们可以发送短信、接收短信并获取服务提供商名称。本文的主要目标是将 SMS 发送到预定义的号码。获得服务提供商的名称是一种奖励。
该模块通过 TTL 或板载 MAX232 IC 与周围电路通信。我将使用 MAX232 接口。这意味着所有的通信都是通过 PIC 的 UART 完成的,我们来自 PIC 的所有命令都将通过 printf 发送到 UART 端口。
硬件
我已经像这样连接了我的面包板:
单击图像以获得全尺寸分辨率。
由于我使用的是 MAX232,因此我可以使用它来查看微控制器正在发送到 GSM 模块的内容并对其进行故障排除。为此,我断开 GSM 模块,连接串行电缆,然后打开 GtkTerm。波特率设置:9600-8-N-1。
连接到计算机以进行故障排除。
这是微控制器发送到 GSM 模块的内容。前三行仅用于验证串行通信是否正常并查看我正在发送的内容。最后两行是对 GSM 模块的指令。
我没有收到 GSM 模块的回复,因为它没有连接。
零件清单
这是来自 EagleCAD 的 bom.ulp 的屏幕截图。
软件
尽管该软件已被注释,但我将在这里介绍它的某些部分。当 PIC 通电时,会显示一条简短的欢迎消息。然后开始 15 秒倒计时。我把这个倒计时,有两个原因:
允许 GSM 模块注册。
一个视觉显示,向用户显示正在发生的事情并且 PIC 正在工作。
倒计时结束后,PIC 发送命令:
AT+CPOL?\r\n
重要的是添加回车 - 新行,\r\n。这告诉模块执行已到达模块缓冲区的文本字符串。
然后模块返回字符串:
+CPOL: 1,0,”N NetCom”,1,0,1
这意味着该模块已注册到 NetCom。NetCom 是服务提供商的名称。这是我们要在 LCD 上显示的名称。现在我们需要从字符串中提取名称。我这样做的方法是将整个字符串读入一个数组。然后我将搜索“-signs”。找到“-signs”后,我将它们的位置存储在另一个数组中。这就是我所说的“开始和停止”。然后我使用“开始和停止”中的值在 LCD 上显示中间的字符。也许不是最花哨的方法,但它很简单。
要发送短信,我必须发送更多 AT 命令。
首先,我发送命令:
AT+CMGF=1\r\n
这是选择 SMS 消息格式。1 告诉模块进入文本模式。
其次,我发送命令:
AT+CMGS=”接收方”\r\n
“接收者”是我要发送消息的号码。
第三,我发送命令:
来自 PIC16F628A 的消息\r\n
这是实际的消息。由于消息有多个字符,包括空格,所以有一种很好的方法可以告诉模块消息的结尾在哪里。我必须发送 EOF 标志,恰好是 CTRL-Z。
printf(“%c”,26);
这是常规 ASCII 表中的 EOF 字符。该模块现在将发送消息。
使用此链接查找有关 SIM900A 模块的文档。
您可以从链接下载 c 源代码。
jc_pic16f628a-gsm-sms.c.zip
结论
您现在应该能够获取您的服务提供商名称,并使用 SIM900A 模块在欧洲网络上发送 SMS。
图片和视频
-
SMS
+关注
关注
0文章
78浏览量
28599 -
PIC16F628A
+关注
关注
1文章
8浏览量
10065 -
SIM900A
+关注
关注
3文章
54浏览量
35273
发布评论请先 登录
相关推荐
评论