24小时联系电话:18217114652、13661815404

中文

您当前的位置:
首页>
电子资讯>
技术专题>
使用手机和GSM模块随...

技术专题

使用手机和GSM模块随时随地控制您的家用电器


使用手机和GSM模块随时随地控制您的家用电器

关于GSM模块

我们将在这里使用的GSM模块是SIM800L。与其他GSM模块相比,它紧凑且高效。当您想使用Arduino在蜂窝网络上工作时,可以使用这种类型的模块。SIM800L支持850/900/1800 / 1900MH四频。通过使用此模块,您可以轻松地传输语音,发送SMS以及访问Internet
当您使用3.8-4.2伏电源为模块供电时,板上的LED将开始闪烁。如果闪烁速度非常快,则表示SIM卡未注册到任何网络。如果指示灯缓慢闪烁,则表明SIM已成功登录到网络。请确保您的电源至少为2A,因为此模块会消耗大量功率。 

SIM800L的引脚图

SIM800L的功能

输入电压:3.8-4.2V

工作电流:2A

工作温度:-4085摄氏度

四频850/900/1800 / 1900MHz

GPRS类别12:最大 85.6 kbps(下行/上行)

接口:使用AT命令的UART

SIM卡类型:MicroSIM

该项目所需的组件

Arduino UNO

SIM800L模块

4.2V锂离子电池

5V继电器模块

器具

项目工作

我们将使用手机向GSM模块发送消息。该消息将包含一个字母。假设您有一台设备,那么我们将有一个字母来打开设备,并有一个字母来关闭设备。让我们假设我们正在发送一个字母“ a”来打开设备,并发送一个字母“ b”来关闭设备。您的设备通过继电器连接到Arduino板。Arduino

将持续监控来自GSM模块的数据。如果GSM模块接收到包含字母“ a”的消息,那么Arduino将通过向中继模块发送信号来打开设备的电源。如果GSM模块接收到包含字母“ b”的消息,那么Arduino将通过向中继模块发送信号来关闭设备。

框图

家庭自动化电路图

重要说明:在将代码上传到Arduino UNO板上之前,请确保已断开GSM模块的RXTX线的连接。将代码上传到Arduino UNO板上后,将GSM模块的RXRX线连接到Arduino UNO板上。

int appliance1=2;

char gsmData;

void setup() {

  // put your setup code here, to run once:

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() {

  // 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的变量,以存储ArduinoGSM模块接收的数据。

void setup() {

  // put your setup code here, to run once:

Serial.begin(115200);

delay(25000);

pinMode(appliance1,OUTPUT);

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

Serial.print("AT+CMGF=1\r");

delay(100);

Serial.print("AT+CNMI=2,2,0,0,0\r");

delay(100);

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

digitalWrite(appliance1,HIGH);

将逻辑高电平发送到继电器模块的信号引脚,以首先将其关闭。

void loop() {

  // put your main code here, to run repeatedly:

 if(Serial.available()>0)

 {

  gsmData=Serial.read();

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

if(gsmData=='a')

  {

    digitalWrite(appliance1,LOW);

  }

  else if(gsmData=='b')

{

    digitalWrite(appliance1,HIGH);

  }

 }

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

Serial.print("AT+CMGD=1,4");

请输入搜索关键字

确定