|
了解如何使用手机、SIM900模块和Arduino开发板从世界上任何地方控制继电器!
在本篇文章中,我们将向您展示如何通过简单的短信(SMS)设置您的手机来控制继电器。手机发送一条短信,然后SIM900模块将接收到该短信。
SIM900模块适用于各种不同的应用,包括车辆跟踪、远程自动化,甚至是在您不在家时喂鱼等简单的事物。
SIM900模块通过串行通信与Arduino通信,Arduino将根据收到的消息打开或关闭继电器。
所需的组件 ● Arduino开发板 ● SIM900模块 ● 有效的SIM卡 ● 继电器模块 ● 电源适配器
SMS控制继电器的电路图 在进行连接之前,请在SIM900中插入SIM卡。您可以使用任何有效的SIM卡。 SIM卡插槽位于SIM900模块的背面。将SIM卡插入其中并锁定插槽。 现在根据下表中进行连接。
实物连接图
我们无法从Arduino为SIM900供电,因为Arduino无法提供足够高的电流。因此,我们必须使用外部电源。 SIM900的推荐功率是5V/2A,但我使用了5V/1500 mA适配器,它对我来说很好。 最后,使用USB电缆将Arduino连接到PC。
连接好所有设备后,按SIM900上的电源键。状态LED应亮起,NetLight LED应开始闪烁。
确认SIM900上的指示灯亮起后,通过从手机拨打该SIM卡的电话号码。如果通话成功,表明您已将SIM900与Arduino连接,现在可以通过手机发送短信来控制继电器模块。
代码说明 在文章结尾处列出了本文的完整代码。首先,我们需要添加软件串口库,这样我们就不必在上传代码时移除TX或RX引脚。 - #include <SoftwareSerial.h> // Library for using serial communication
- SoftwareSerial SIM900(7, 8); // Pins 7, 8 are used as used as software serial pins
复制代码
在setup()函数中,将SIM900的模式设置为SMS,并将模块设置为在串行监视器上显示接收的消息。 - // set SMS mode to text mode
- SIM900.print("AT+CMGF=1\r");
- delay(100);
-
- // set gsm module to tp show the output on serial out
- SIM900.print("AT+CNMI=2,2,0,0,0\r");
- delay(100);
复制代码
在loop()函数中,我们调用接收消息函数来检查是否收到短信。我们收到的任何短信都将存储在“incoming_data”字符串中。 - void receive_message()
- {
- if (SIM900.available() > 0)
- {
- incomingData = SIM900.readString(); // Get the data from the serial port.
- Serial.print(incomingData);
- delay(10);
- }
- }
复制代码现在设置接收的命令以相应地打开或关闭继电器,即“Led_on”和“Led_off”。 - // if received command is to turn on relay
- if(incomingData.indexOf("Led_on")>=0)
- {
- digitalWrite(relay_pin, LOW);
- message = "Led is turned ON";
- // Send a sms back to confirm that the relay is turned on
- send_message(message);
- }
-
- // if received command is to turn off relay
- if(incomingData.indexOf("Led_off")>=0)
复制代码设置继电器命令后,我们需要设置要发送到手机的短信代码,以便您了解继电器是打开还是关闭。 - void send_message(String message)
- {
- SIM900.println("AT+CMGF=1"); //Set the GSM Module in Text Mode
- delay(100);
- SIM900.println("AT+CMGS="+923030502311""); // Replace it with your mobile number
- delay(100);
- SIM900.println(message); // The SMS text you want to send
- delay(100);
- SIM900.println((char)26); // ASCII code of CTRL+Z
- delay(100);
- SIM900.println();
- delay(1000);
- }
复制代码确保将代码中的数字更改为您自己的电话号码,并使用此格式发送用于控制LED的文本消息:“Led_on”和“Led_off”。在进行更改后上传代码并测试它是否有效。
以上就是本文的全部内容!您可以制作一个新的Arduino项目,以便在世界任何地方都能控制。
本篇文章使用的完整代码:
main.rar
(878 Bytes, 下载次数: 140)
|