对GSM模块

我们将使用的GSM模块SIM800L。紧凑和高效相比其他GSM模块。这种类型的模块使用的是当你想使用一个Arduino蜂窝网络。SIM800L支持quadband 850/900/1800/1900MH的频率。通过使用这个模块可以很容易地传输语音、发送短信和上网。
当你打开这个模块与3.8 - -4.2伏特的电源LED出现在董事会将开始闪烁。如果是闪烁的非常快,这意味着SIM没有注册任何网络。如果是慢慢地闪烁那么SIM已经成功地登录到网络。确保你的电源至少2这个模块消耗大量的电力。

SIM800L销图

SIM800L销图

SIM800L的特点

  • 输入电压:3.8 - -4.2 v
  • 当前操作:2
  • 操作温度:-40到85摄氏度
  • 四波段850/900/1800/1900MHz
  • GPRS类12:max。85.6 kbps(下行和上行)
  • 接口: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董事会之前,确保你有断开的RX和TX线GSM模块。后上传的代码Arduino UNO板连接RX和RX pf GSM模块连接到Arduino UNO董事会。

int appliance1 = 2;char gsmData;无效的设置(){/ /把你设置代码,运行一次:Serial.begin (115200);延迟(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模块。

无效的设置(){/ /把你设置代码,运行一次:Serial.begin (115200);延迟(25000);pinMode (appliance1、输出);

无效的设置(),第一套GSM的波特率为115200。然后给一个大的延迟,所以GSM模块成功地登录到网络。然后设置继电器作为输入的信号销Arduino将使用这个销继电器发出一个信号。

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

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

digitalWrite (appliance1、高);

把逻辑高信号继电器模块的销最初关掉它。

无效循环(){/ /把你的主要代码,重复运行:如果(Serial.available () > 0) {gsmData = Serial.read ();

无效循环(),首先检查是否可用的串行通信是通过使用可用的()命令。之后从GSM模块将数据存储到变量gsmData。

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

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

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

评论都关门了。