|
当我们的项目需要远程访问时,GSM模块就会很有用。通过这些模块可以完成我们普通手机可以执行的所有操作,例如拨打/接听电话、发送/接收短信、使用GPRS连接到互联网等。您还可以将普通麦克风和扬声器连接到此模块,实现与您的手机进行通话。如果将其与微控制器连接,这将为许多创意项目打开大门。因此,在本篇文章中,我们将学习如何将GSM模块(SIM900A)与AVR微控制器ATmega16进行连接,并演示如何使用GSM模块发送和接收短信。
所需的材料 ● ATmega16控制器 ● GSM模块(SIM900) ● 液晶显示器 ● 按键 ● 10k电阻,电位器 ● 连接导线 ● 12V适配器 ● USBASP programmer
● 10针FRC电缆
使用的软件 我们将使用CodeVisionAVR软件编写代码,使用SinaProg软件和USBASP programmer将代码上传到Atmega16。 您可以从下面的链接下载这些软件:
● CodeVisionAVR:http://www.hpinfotech.ro/cvavr_download.html
● SinaProg:http://www.ablab.in/sinaprog-hex ... ler/#inline_content
在开始设计原理图和编写代码之前,我们将先了解GSM模块及其工作原理。
GSM模块
通过使用AT命令模式,即使没有连接任何微控制器,也可以使用GSM模块。如上图所示,GSM模块带有一个USART适配器,可通过MAX232模块直接连接到计算机,或者Tx和Rx引脚可用于将其连接到微控制器。您还可以注意到MIC +、MIC-、SP +、SP-等其他引脚,可以连接麦克风或扬声器。该模块可通过在普通DC插座插入12V适配器的方式供电。
将SIM卡插入模块的插槽并打开电源,您应该注意到电源LED指示灯亮。现在等待一分钟左右,您应该看到红色LED每3秒闪烁一次。这意味着您的模块能够与您的SIM卡建立连接。现在,您可以继续将模块与电话或任何微控制器连接。
使用AT命令与GSM模块通信 正如您猜到的那样,GSM模块可以通过串行通信进行通信,并且只能理解一种语言,即“AT命令”。无论您想告诉或询问GSM模块,它都应该只通过AT命令。例如,如果您想知道您的模块是否处于活动状态。你应该询问(发送)像“AT”这样的命令,你的模块将回复“OK”。
这些AT命令在其数据手册中有详细说明,可以在其官方数据手册中找到。这是一份271页的数据手册,您可能需要几天的时间来阅读它们。所以我给出了一些最重要的AT命令,以便您尽快了解这些指令。 | AT | 回复OK确认 | AT+CPIN?
| 检查信号质量 | | AT + COPS? | 查找服务提供商名称 | | ATD96XXXXXXXX; | 拨打特定号码,以分号结尾 | | AT + CNUM | 查找SIM卡的数量 | | ATA | 接听来电 | | ATH | 挂断当前的来电 | | AT + COLP | 显示来电号码 | AT + VTS =(数字)
| 发送DTMF号码。您可以在移动键盘上使用任意数字(数字) | | AT + CMGR | AT + CMGR = 1在第一个位置读取消息 | | AT + CMGD = 1 | 删除第一个位置的消息 | AT+CMGDA=”DEL ALL”
| 删除SIM中的所有消息 | | AT + CMGL =” ALL” | 阅读所有来自SIM的消息 | | AT + CMGF = 1 | 设置SMS配置。 “1”仅用于纯文本模式 | AT + CMGS =“+ 91 968837XXXX”
> TEXT<Ctrl + z> | 在这里发送短信到特定号码968837XXXX。当您看到“>”开始输入文本时。按Ctrl + Z发送文本。 | | AT + CGATT? | 检查SIM卡上的互联网连接 | | AT + CIPSHUT | 关闭TCP连接,意味着断开互联网连接 | | AT+CSTT = “APN”,”username”,”Pass” | 使用您的APN和密钥连接到GPRS。可以从Network Provider获得。 | | AT + CIICR | 检查SIM卡是否有数据包 | | AT + CIFSR | 获取SIM网络的IP | | AT + CIPSTART =“TCP”,“SERVER IP”,“PORT” | 用于设置TCP IP连接 | | AT + CIPSEND | 此命令用于将数据发送到服务器 |
本篇文章中,我们将使用AT + CMGF和AT + CMGS命令发送短信。
如果您同时使用了Arduino和GSM模块,在接收消息时可以使用+ CMT:命令查看串行监视器上的手机号码和短信。短信出现在第二行,如图所示。
我们将扫描此+ CMT:命令以检查是否有短信。
ATMega16与GSM模块的连接电路图
1. GSM模块的Tx和Rx分别连接到Atmega16的Rx(Pin14)和Tx(Pin15)。 2. 将按钮按到PD5(Pin19)和PD6(Pin20)。 3. LCD连接: ◼ RS - PA0 ◼ R / W - PA1 ◼ EN - PA2 ◼ D4 - PA4 ◼ D5 - PA5 ◼ D6 - PA6 ◼ D7 - PA7
使用CodeVision创建ATmega16项目 安装CodeVisionAVR和SinaProg软件后,按照以下步骤创建项目和编写代码:
第1步、 打开CodeVision,单击File -> New -> Project。将出现确认对话框。单击YES。
第2步、 将打开CodeWizard向导。单击第一个选项,即AT90,然后单击“OK”。
第3步、 - 选择你的微控制器芯片,这里我们将选择Atmega16L,如图所示。
第4步、 - 单击USART。在上面选择Receiver and Transmitter。如下所示:
步骤5: - 单击Alphanumeric LCD,并勾选Enable Alphanumeric LCD support。
第6步、 - 单击Program -> Generate, Save and Exit。现在,我们一多半的工作已经完成。
第7步: - 在桌面上创建一个新文件夹,以便我们的文件保留在文件夹中,否则我们将分散在整个桌面窗口中。根据需要命名您的文件夹,我建议使用相同的名称来保存程序文件。 我们将陆续有三个对话框来保存文件。
保存第一个后会出现的其他两个对话框也一样。
现在,您的工作区看起来像这样。
我们的大部分工作都是在向导的帮助下完成的。现在,我们需要为GSM模块编写代码。 |