24小(xiǎo)时联系電(diàn)话:18217114652、13661815404

中文(wén)

您当前的位置:
首页>
電(diàn)子资讯>
技术专题>
使用(yòng)手机和GSM模块随...

技术专题

使用(yòng)手机和GSM模块随时随地控制您的家用(yòng)電(diàn)器


使用(yòng)手机和GSM模块随时随地控制您的家用(yòng)電(diàn)器

关于GSM模块

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

SIM800L的引脚图

SIM800L的功能(néng)

输入電(diàn)压:3.8-4.2V

工作電(diàn)流:2A

工作温度:-4085摄氏度

四频850/900/1800 / 1900MHz

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

接口:使用(yòng)AT命令的UART

SIM卡类型:MicroSIM

该项目所需的组件

Arduino UNO

SIM800L模块

4.2V锂离子電(diàn)池

5V继電(diàn)器模块

器具

项目工作

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

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

框图

家庭自动化電(diàn)路图

重要说明:在将代码上传到Arduino UNO板上之前,请确保已断开GSM模块的RXTX線(xiàn)的连接。将代码上传到Arduino UNO板上后,将GSM模块的RXRX線(xiàn)连接到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;

创建一个名為(wèi)Appliance1的变量,以在您已连接继電(diàn)器信号引脚的位置存储引脚号。另外,创建另一个名為(wèi)gsmData的变量,以存储ArduinoGSM模块接收的数据。

void setup() {

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

Serial.begin(115200);

delay(25000);

pinMode(appliance1,OUTPUT);

void setup()中,首先将GSM的波特率设置為(wèi)115200。然后设置较大的延迟,以使GSM模块成功登录到网络。然后将继電(diàn)器的信号引脚设置為(wèi)输入,因為(wèi)Arduino将使用(yòng)该引脚向继電(diàn)器发送信号。

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

delay(100);

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

delay(100);

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

digitalWrite(appliance1,HIGH);

将逻辑高電(diàn)平发送到继電(diàn)器模块的信号引脚,以首先将其关闭。

void loop() {

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

 if(Serial.available()>0)

 {

  gsmData=Serial.read();

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

if(gsmData=='a')

  {

    digitalWrite(appliance1,LOW);

  }

  else if(gsmData=='b')

{

    digitalWrite(appliance1,HIGH);

  }

 }

使用(yòng)if else-if语句检查GSM数据。如果数据等于“ a”,则打开继電(diàn)器模块。如果数据等于“ b”,则关闭继電(diàn)器模块。

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

请输入搜索关键字

确定