关于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
  • 工作电流:2A
  • 工作温度:-40至85摄氏度
  • 四波段850/900/1800/1900MHz
  • GPRS第12类:最大。85.6 kbps(下行和上行)
  • 接口:使用AT命令的UART
  • SIM类型:MicroSIM

此项目所需的组件

  • 阿杜伊诺·乌诺
  • 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(){//将设置代码放在这里,运行一次:Serial.begin(115200);delay(25000);pinMode(appliance1,OUTPUT);Serial.print(“AT+CMGF=1\r”);delay(100);Serial.print(“AT+CNMI=2,2,0,0,0\r”);delay(100);digitalWrite(appliance1,HIGH);}void loop(){//将主代码放在这里,重复运行:if(Serial.available()>0){gsmData=Serial.read();if(gsmData='a'){digitalWrite(appliance1,低);}else if(gsmData='b'){digitalWrite(appliance1,高);}}Serial.print(“AT+CMGD=1,4”);}

工作的代码

int appliance1=2;char-gsmData;

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

void setup(){//把你的安装代码放在这里,运行一次:Serial.begin(115200);延迟(25000);pinMode (appliance1、输出);

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

串行打印(“AT+CMGF=1\r”);延迟(100);串行打印(“AT+CNMI=2,2,0,0,0\r”);延迟(100);

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

数字写入(appliance1,高);

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

if(Serial.available()>0) {gsmData=Serial.read();

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

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

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

串行打印(“AT+CMGD=1,4”);

评论已关闭。

Baidu