yaboPP电子
项目

如何:用PIC16F628A和SIM900A发送短信

2016年3月3日,通过Jens Christoffersen

在本文中,我将向您展示一种使用PIC 16F628A和SIMCOM SIM900A模块发送SMS的方法。

在本文中,我将向您展示一种使用PIC 16F628A和SIMCOM SIM900A模块发送SMS的方法。

在一个以前的文章中提到,我对我的GSM模块进行了固件升级,这样它就可以注册到欧洲的服务提供商。在那篇文章中,我简要地介绍了AT命令和说明。

在本文中,我将更进一步。我会用我的PIC 16F628A发送短信。

完整的案板。

需求

为了充分利用这篇文章,你需要以下几点:

介绍

当SIM900A模块上电后,会发生很多事情。其中之一是模块试图注册到网络。当它成功注册到一个网络时,我们可以发送短信,接收短信,并获得服务提供商的名称。本文的主要目标是向预定义的号码发送SMS。获得服务提供者名称是一个额外的收获。

模块使用TTL或板载MAX232 IC与周围电路通信。我将使用MAX232接口。这意味着所有通信都是通过PICs UART完成的,来自PIC的所有命令都将通过printf发送到UART端口。

硬件

我像这样连接我的面包板:

点击图像全尺寸决议。

因为我使用MAX232,我可以使用它来查看和排除微控制器发送到GSM模块的故障。为此,我断开GSM模块,连接串口电缆,并打开GtkTerm。波特设置:9600 - 8 - n - 1。

连接到计算机进行故障排除。

这是微控制器发送给GSM模块的信息。前三行仅用于验证串行通信是否正常工作,并查看我正在发送的内容。最后两行是GSM模块的指令。

我没有收到GSM模块的回复,因为它没有连接。

Partlist

这是bom的截图。ulp EagleCAD。

软件

虽然这个软件已经被评论过了,但是我将在这里介绍它的一些部分。PIC上电后,会显示一条简短的欢迎信息。然后开始15秒倒计时。我用这个倒计时,有两个原因:

  1. 允许GSM模块注册。
  2. 一种视觉显示,向用户显示正在发生的事情,PIC正在工作。

当倒计时结束时,PIC发送命令:

在+ CPOL吗?\ r \ n

重要的是要添加回车—新行,即\r\n。这告诉模块执行已经到达模块缓冲区的文本字符串。

然后该模块返回字符串:

+CPOL: 1,0,“N网通”,1,0,1

这意味着该模块已注册到网通。网通是服务提供商的名称。我们想在LCD上显示的就是这个名字。现在我们需要从字符串中提取名称。我的方法是,将整个字符串读入一个数组。然后我会搜索“-符号”。找到“-符号”后,我将它们的位置存储在另一个数组中。这就是我所说的“开始和停止”。然后我使用“start and stop”中的值在LCD上显示它们之间的字符。也许这不是最好的方法,但很简单。

为了发送短信,我必须发送更多的AT命令。

首先,我发出命令:

在+ CMGF = 1 \ r \ n

这是选择短信格式。1告诉模块进入文本模式。

第二,我发出命令:

在+发生= \ r \ n“接收器”

“收件人”是我要发送信息的号码。

第三,我发出命令:

消息从PIC16F628A \ r \ n

这就是实际的信息。由于消息有多个字符(包括空格),因此有一种巧妙的方法告诉模块消息的结尾在哪里。我需要发送EOF符号,也就是CTRL-Z。

printf (" % c”,26岁);

这是普通ASCII表中的EOF字符。模块现在将发送消息。

使用这个链接查找有关SIM900A模块的文档。

下载

您可以从该链接下载c源代码。

jc_pic16f628a-gsm-sms.c.zip

结论

现在,您应该能够在欧洲网络上获取服务提供商名称,并使用SIM900A模块发送SMS。

图片和视频

自己尝试一下这个项目吧!BOM。

13个评论
  • G
    GrahamRounce 2016年3月11日,

    我们需要SIM卡吗?

    喜欢的。 回复
  • G
    GrahamRounce 2016年3月11日,

    我们需要SIM卡吗?

    喜欢的。 回复