对GSM模块

我们这里使用的GSM模块是SIM800L。与其他GSM模块相比,它体积小,效率高。当您想使用Arduino在蜂窝网络上工作时,可以使用这种类型的模块。SIM800L支持850/900/1800/1900MH四频带频率。通过使用该模块,您可以轻松地传输语音、发送短信和访问互联网。
当你用3.8-4.2伏的电源给这个模块供电时,板上的LED会开始闪烁。如果闪烁非常快,表示SIM卡没有注册到任何网络。慢闪表示SIM卡已成功登录网络。确保你的电源至少是2A,因为这个模块消耗大量的电力。

SIM800L引脚图

SIM800L销图

SIM800L的特点

  • 输入电压:3.8 - -4.2 v
  • 当前操作:2
  • 工作温度:-40至85摄氏度
  • 四波段850/900/1800/1900MHz
  • GPRS class 12: max。85.6 kbps(下行和上行)
  • 接口:使用AT命令的UART
  • SIM卡类型:MicroSIM

此项目所需的组件

  • Arduino UNO
  • SIM800L模块
  • 4.2 v锂离子电池
  • 5 v继电器模块
  • 设备

工作的项目

我们将使用我们的手机向GSM模块发送信息。这条信息只包含一个字母。假设您有一个设备,那么我们将有一个字母表来打开该设备,一个字母表来关闭该设备。让我们假设我们发送字母“a”来打开设备,发送字母“b”来关闭设备。您的设备通过继电器连接到Arduino板。Arduino将持续监控来自GSM模块的数据。如果GSM模块接收到包含字母“a”的信息,Arduino将通过向继电器模块发送信号来打开设备。如果GSM模块收到包含字母“b”的信息,Arduino将通过向继电器模块发送信号关闭设备。

框图

家庭自动化的框图

家庭自动化电路图

sim800l家庭自动化电路图

Arduino家庭自动化代码

重要提示:上传代码到Arduino UNO板前,请确认已断开GSM模块的RX和TX线。在Arduino UNO板上上传代码后,将GSM模块的RX和RX线连接到Arduino UNO板上。

int appliance1 = 2;char gsmData;void setup(){//把你的设置代码放在这里,运行一次:延迟(25000);pinMode (appliance1、输出);并同时在+ CMGF = 1 \ r);延迟(100);并“在+ CNMI = 2, 2, 0, 0, 0 \ r”);延迟(100);digitalWrite (appliance1、高); } void loop() { // put your main code here, to run repeatedly: if(Serial.available()>0) { gsmData=Serial.read(); if(gsmData=='a') { digitalWrite(appliance1,LOW); } else if(gsmData=='b') { digitalWrite(appliance1,HIGH); } } Serial.print("AT+CMGD=1,4"); }

工作的代码

int appliance1 = 2;char gsmData;

创建一个名为appliance1的变量来存储连接到继电器信号引脚的引脚号。另外,创建一个名为gsmData的变量来存储Arduino从GSM模块接收到的数据。

void setup(){//把你的设置代码放在这里,运行一次:延迟(25000);pinMode (appliance1、输出);

在void setup()中,首先设置GSM的波特率为115200。然后给予较大的延迟,使GSM模块成功登录网络。然后将继电器的信号引脚设置为输入,Arduino将使用这个引脚向继电器发送信号。

并同时在+ CMGF = 1 \ r);延迟(100);并“在+ CNMI = 2, 2, 0, 0, 0 \ r”);延迟(100);

使用AT+CMGF=1命令,在文本中设置短信模式。然后给出100毫秒的延迟。然后使用AT+CNMI=2,2,0,0,0命令,将短信内容发送到串口。

digitalWrite (appliance1、高);

将逻辑HIGH发送到继电器模块的信号引脚,使其初始关闭。

void loop(){//把你的主代码放在这里,重复运行:

在void loop()中,首先使用available()命令检查串行通信是否可用。然后将来自GSM模块的数据存储到变量gsmData中。

如果(gsmData = = a) {digitalWrite (appliance1、低);} else if(gsmData=='b') {digitalWrite(appliance1,HIGH);}}

使用if else-if语句检查GSM数据。如果数据等于“a”,打开继电器模块。如果数据等于“b”,关闭继电器模块。

并同时在+ CMGD = 1, 4);
作者

评论都关门了。