风筝
发表于: 2019-1-29 10:39:30 | 显示全部楼层

了解如何使用手机、SIM900模块和Arduino开发板从世界上任何地方控制继电器!


在本篇文章中,我们将向您展示如何通过简单的短信(SMS)设置您的手机来控制继电器。手机发送一条短信,然后SIM900模块将接收到该短信。


SIM900模块适用于各种不同的应用,包括车辆跟踪、远程自动化,甚至是在您不在家时喂鱼等简单的事物。


SIM900模块通过串行通信与Arduino通信,Arduino将根据收到的消息打开或关闭继电器。


所需的组件

●    Arduino开发板

●    SIM900模块

●    有效的SIM卡

●    继电器模块

●    电源适配器


SMS控制继电器的电路图

在进行连接之前,请在SIM900中插入SIM卡。您可以使用任何有效的SIM卡。 SIM卡插槽位于SIM900模块的背面。将SIM卡插入其中并锁定插槽。

现在根据下表中进行连接。

connections.jpeg

Circuit diagram.png

实物连接图


我们无法从Arduino为SIM900供电,因为Arduino无法提供足够高的电流。因此,我们必须使用外部电源。 SIM900的推荐功率是5V/2A,但我使用了5V/1500 mA适配器,它对我来说很好。

最后,使用USB电缆将Arduino连接到PC。


连接好所有设备后,按SIM900上的电源键。状态LED应亮起,NetLight LED应开始闪烁。

NetLight LED.jpeg


确认SIM900上的指示灯亮起后,通过从手机拨打该SIM卡的电话号码。如果通话成功,表明您已将SIM900与Arduino连接,现在可以通过手机发送短信来控制继电器模块。


代码说明

在文章结尾处列出了本文的完整代码。首先,我们需要添加软件串口库,这样我们就不必在上传代码时移除TX或RX引脚。

  1. #include <SoftwareSerial.h> // Library for using serial communication
  2. SoftwareSerial SIM900(7, 8); // Pins 7, 8 are used as used as software serial pins
复制代码

setup()函数中,将SIM900的模式设置为SMS,并将模块设置为在串行监视器上显示接收的消息。

  1. // set SMS mode to text mode
  2.   SIM900.print("AT+CMGF=1\r");  
  3.   delay(100);
  4.   
  5.   // set gsm module to tp show the output on serial out
  6.   SIM900.print("AT+CNMI=2,2,0,0,0\r");
  7.   delay(100);
复制代码

loop()函数中,我们调用接收消息函数来检查是否收到短信。我们收到的任何短信都将存储在“incoming_data”字符串中。

  1. void receive_message()
  2. {
  3.   if (SIM900.available() > 0)
  4.   {
  5.     incomingData = SIM900.readString(); // Get the data from the serial port.
  6.     Serial.print(incomingData);
  7.     delay(10);
  8.   }
  9. }
复制代码

现在设置接收的命令以相应地打开或关闭继电器,即“Led_on”和“Led_off”。

  1. // if received command is to turn on relay
  2.   if(incomingData.indexOf("Led_on")>=0)
  3.   {
  4.     digitalWrite(relay_pin, LOW);
  5.     message = "Led is turned ON";
  6.     // Send a sms back to confirm that the relay is turned on
  7.     send_message(message);
  8.   }
  9.   
  10.   // if received command is to turn off relay
  11.   if(incomingData.indexOf("Led_off")>=0)
复制代码

设置继电器命令后,我们需要设置要发送到手机的短信代码,以便您了解继电器是打开还是关闭。

  1. void send_message(String message)
  2. {
  3.   SIM900.println("AT+CMGF=1");    //Set the GSM Module in Text Mode
  4.   delay(100);  
  5.   SIM900.println("AT+CMGS="+923030502311""); // Replace it with your mobile number
  6.   delay(100);
  7.   SIM900.println(message);   // The SMS text you want to send
  8.   delay(100);
  9.   SIM900.println((char)26);  // ASCII code of CTRL+Z
  10.   delay(100);
  11.   SIM900.println();
  12.   delay(1000);  
  13. }
复制代码

确保将代码中的数字更改为您自己的电话号码,并使用此格式发送用于控制LED的文本消息:“Led_on”和“Led_off”。在进行更改后上传代码并测试它是否有效。


以上就是本文的全部内容!您可以制作一个新的Arduino项目,以便在世界任何地方都能控制。


本篇文章使用的完整代码: main.rar (878 Bytes, 下载次数: 130)

跳转到指定楼层
wanniu
发表于: 2019-8-6 14:26:17 | 显示全部楼层

楼主的压缩包内容看的不明白,可以加汉语备注吗
回复

使用道具 举报

LX_YSY
发表于: 2019-12-6 22:07:29 | 显示全部楼层

incomingData = SIM900.readString();  我用了,但是获取不到数据啊,输出incomingData为空,用了SIM900.read(),打印出来为-1,也为空
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 700 | 回复: 1480



手机版|

GMT+8, 2024-4-17 03:11 , Processed in 1.179460 second(s), 28 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表