使用 GSM SIM900 Shield 发送和接收短信 (SMS)
组件和用品
![]() |
| × | 1 | |||
| × | 1 |
应用和在线服务
![]() |
| |||
![]() |
|
关于这个项目

构建 IoT 的基本要素之一 项目是连接设备的能力。 Wi-Fi 和蓝牙是不错的低成本选择,但它们只能在近距离或热点区域工作。当设备需要位于远程位置时 GSM 是一个很好且易于设置的选项。
在本教程中,我将向您展示发送和接收短信是多么容易 GSM 上的消息 使用 Arduino .
在以下教程中,我还将向您展示如何通过 GSM 进行连接 到 Internet 和访问服务器,以及如何处理语音呼叫。
第 1 步:组件


- 一个 Arduino Mega (可以使用其他板卡,但最好使用有2个以上串口的板卡。工程可以修改为使用Software Serial,但建议使用硬件串口)
- 一个 基于 SIM900 的 GSM Shield 或已安装 SIM 卡的兼容屏蔽或模块(图片 2 )(我使用了 Seeed Studio 的 1.0 版 GSM/GPRS Shield)
- 2 女-男 跳线
第 2 步:将 GSM Shield 连接到 Arduino





- 删除 跳线帽 来自 GSM 盾 的 RX 和 TX 选择跳线 (图一 )
- 插入 GSM Shield 在 Arduino Mega 的顶部
- 连接男性端 男-女 跳线(橙线 ) 到 RX1 Arduino Mega 的引脚 (图 2 和图 3 )
- 连接男性端 男-女 跳线(棕线 ) 到 TX1 Arduino Mega 的引脚 (图 2 和图 3 )
- 连接 RX1 的母端 电线(橙线 ) 到中心销 RX 选择跳线 GSM 屏蔽 (图 4 )
- 连接 TX1 的母端 线(棕线 ) 到中心销 TX 选择跳线 GSM 屏蔽 (图 4 )
- 图 5 显示已安装并连接的 GSM Shield
第三步:启动Visuino,选择Arduino Board类型


要开始对 Arduino 进行编程,您需要拥有 Arduino IDE 从这里安装:http://www.arduino.cc/。
请确保安装 1.6.7 更高版本,否则本教程将无法运行!
Visuino :https://www.visuino.com 也需要安装。
- 启动 Visuino 如第一张图
- 点击“工具 " Arduino 组件上的按钮(图片 1 ) 在 Visuino 中
- 出现对话框时,选择“Arduino Mega 2560 " 如图 2 所示
第 4 步:在 Visuino 中:将 Serial 1 通道的速度设置为 19200



GSM Shield 默认配置为 19200 串行端口速度。我们需要为这个速度配置串口1:
- 在对象检查器中,展开“Serial " 属性,然后是 "Item[ 1 ] " 子属性,然后选择其 "Speed " 子属性(图片 1 )
- 在对象检查器中,单击“向下箭头 “速度”值旁边的“按钮 " 子属性(图片 1 )
- 从下拉菜单 列表选择“19200 " (图 2 ), 更改属性值 (图 3 )
第五步:在Visuino中:添加并连接GSM/GPRS串口组件




我们需要添加组件来控制 GSM 模块。 Module是通过Serial通道控制的,所以我们需要连接它。 数字引脚 9 用于为开/关供电 模块:
- 输入“gsm "在组件工具箱的过滤器框中,然后选择"GSM/GPRS 串行 " 组件(图 1 ),并将其放在设计区域中(图片 2 )
- 连接“输出 " GSM1 的输出引脚 组件到“In "Serial[1] 的输入引脚 "Arduino 的频道 组件(图 2 )
- 连接“电源 " GSM1 的输出引脚 组件到“数字 "Digital[9] 的输入引脚 "Arduino 的频道 组件(图 3 )。此引脚将开/关 GSM模块的力量
第 6 步:在 Visuino 中:添加、设置和连接文本值组件




GMS 模块初始化需要一些时间。如果我们有一些迹象表明模块已准备就绪,那就太好了。为此,当模块准备好时,我们将向串行端口发送“GSM Ready”文本:
- 输入“文本值 "在组件工具箱的过滤器框中,然后选择"文本值 " 组件(图 1 ),并将其放在设计区域中(图片 2 )
- 在对象检查器中设置“Value”的值 " 属性为 "GSM 就绪 " (图 2 )
- 连接“就绪 " GSM1 的输出引脚 组件到“In " TextValue1 的输入引脚 组件(图 3 )
- 连接“输出 " TextValue1 的输出引脚 组件到“In "Serial[0] 的输入引脚 "Arduino 的频道 组件(图 4 )
第七步:在Visuino中:在GSM组件中添加Short Message元素,然后向元素发送消息功能




GSM 组件由执行不同任务的许多模块组成。由于我们只会使用短信,所以只需要添加“短信”模块,然后再添加一个“发送短信”功能:
- 在设计区域中,选择 GSM1 组件(图 1 )
- 在对象检查器中,单击“... “模块的值旁边的”按钮 "GSM1 的属性 组件(图 1 )
- 在模块编辑器中选择“短消息 ”,然后点击“”按钮(图片2 ) 添加一个 (图片 3 )
- 在对象检查器中,单击“... “功能”的值旁边的“按钮 "短消息的"属性 " 模块(图 3 )
- 在功能编辑器中选择“发送短信 ”,然后点击“”按钮(图片2 ) 添加一个
第八步:在Visuino中:配置Send SMS功能,将Received Message Info连接到串口




- 在对象检查器中,设置“地址”的值 "发送短信的属性 " 元素添加到电话号码 你想发送消息的地方(在我的例子中,为了测试我输入了我的 SIM 卡的号码,这样模块就会接收并打印它发送的消息)(图片 1 - 显示一个编造的数字)
- 在对象检查器中,选择“文本 " 属性(图 2 )
- 点击“图钉 “Text 前面的”按钮 " 属性(图 2 )
- 从下拉菜单 列表中,选择“String SinkPin " (图 3 )。这将添加新的“文本 " 固定到 "发送短信 " 函数(图 4 )
- 关闭元素编辑器对话框(图片 4 )
- 连接“输出 "MessageInfo 的输出引脚 GSM1 的块 组件到“In "Serial[0] 的输入引脚 "Arduino 的频道 组件(图 4 )
第 9 步:在 Visuino 中:添加并连接 Char To Text 组件



串行端口一次接收一个字符。要发送 SMS 消息,我们需要从一行中获取所有字符,从中创建一个文本,然后将其发送到 GSM 模块:
- 输入“字符 "在组件工具箱的过滤器框中,然后选择"Char to Text " 组件(图 1 ),并将其放在设计区域中(图片 2 )
- 连接“输出 "Serial[0] 的输出引脚 "Arduino 的频道 组件到“In " CharToText1 的输入引脚 组件(图 2 )
- 连接“输出 " CharToText1 的输出引脚 组件到“文本 "发送短信的输入引脚 " GSM1 的元素 组件(图 3 )
第 10 步:在 Visuino 中:添加、设置和连接延迟组件




我们需要确保在文本正确更新后发送短信。为此,我们可以使用具有短延迟的 Delay 组件:
- 输入“延迟 "在组件工具箱的过滤器框中,然后选择"延迟 " 组件(图 1 ),并将其放在设计区域中(图片 2 )
- 在对象检查器中,设置“Interval”的值 " 属性为 "100 " (图 2 )
- 连接“输出 " CharToText1 的输出引脚 组件到“In " Delay1 的输入引脚 组件(图 3 )
- 连接“输出 " Delay1 的输出引脚 组件到“时钟 "发送短信的输入引脚 " GSM1 的元素 组件(图 4 )
第 11 步:生成、编译和上传 Arduino 代码


- 在 Visuino 中 , 按 F9 或点击图片1上显示的按钮 生成 Arduino 代码,并打开 Arduino IDE
- 在 Arduino IDE 中 ,点击上传 按钮,编译和上传代码(图片2 )
第 12 步:然后玩……





恭喜! 您已完成该项目。
图一 显示连接并通电的项目。在图片2 你可以看到完整的Visuino 图表。如果您将串行终端连接到 Arduino,大约 30 秒后您将看到“GSM Ready " 消息出现(图 3 )
消息出现后,如果您键入一些文本,然后单击“发送 " (图 4 ),文本将作为短信发送。如果您在步骤 8 中选择了电话号码 到Shield上SIM卡的手机,过一会你会收到消息,它会显示在串口终端上(图5 )。如果您在步骤 8 中设置了不同设备的号码 ,消息将发送到该设备。
您可以从其他手机和设备向该电话号码发送短信,也会在串口终端显示。
还附上了 Visuino 我为本教程创建的项目。您可以在 Visuino 中下载并打开它 :https://www.visuino.com
F1FP7L0IQS4L35B.zip
制造工艺
- 使用 Arduino 和 RFID 和 Python 的考勤系统
- 带 LED 和压电扬声器的 DHT11 传感器
- Arduino 温度。使用 3.2 显示的监视器和实时时钟
- 使用 Arduino 和 Android 设备控制 Roomba 机器人
- DIY 电压表与 Arduino 和诺基亚 5110 显示器
- 使用 Arduino 和 MPU6050 控制伺服电机
- 森林火灾监测和探测系统(带短信警报)
- u-blox LEA-6H 02 GPS 模块,带有 Arduino 和 Python
- 如何使用 DHT11 在 Blynk 上读取温度和湿度
- 使用 Arduino 进行语音识别和合成
- 4x4x4 LED 立方体,带有 Arduino Uno 和 1sheeld
- 带 GPS 和 TFT 显示屏蔽的 GPS 位置显示