基于SIM800LV2SMS控制器的制作

电子说

1.2w人已加入

描述

规格 SIM800L V2.0 GSM/GPRS模块

SIM800L V2.0 GSM/GPRS模块有多种规格,您可以在下面查看:

TTL串行接口兼容3.3V和5V微控制器,与arduino兼容。

此SIM800L模块有一组TTL电平串行接口,一组电源接口。

此外,还有一套天线接口。模块。

网络支持:四频850/900/1800/1900 MHz,可以低功耗传输语音,短信和数据信息

VDD TTL UART接口TTL UART串行接口,可以直接连接51MCU或ARM或MSP430等MCU。 VDD的引脚用于匹配TTL的电压。

型号:SIMCOM SIM800L

工作电压:3.7V至5V-尺寸:40mm x 28mm x 3mm

GPRS多插槽类12/10

GPRS移动台B类

符合GSM阶段2/2 +

4类(2 W) @ 850/900MHz)

1级(1 W @ 1800/1900MHz)

第1步:您需要的材料

您需要:

SIM800L V2.0 GSM/GPRS模块

Arduino Uno

4通道5伏继电器模块

跳线

步骤2:设置

连接每个组件后,创建一个程序,然后将其上传到您的arduino上。但首先,您必须安装可在此处下载的GPRS库文件。

步骤3:代码

一旦你‘已将SIM800L,4通道中继模块和ARduino插入您的计算机,运行以下代码即可完成。

#include

#include

#define TIMEOUT 5000

#define ACTIVE LOW

#define OFF HIGH

byte Relay [] = {A0,A1,A2, A3};

字节StatRelay [4];

char buffNumber [20];

char currentLine [500] =“”;

int currentLineIndex = 0;

bool nextLineIsMessage = false;

String replyNumber =“089510863958”;

GPRS gprs;

void setup(){

for(int i = 0; i 《4; i ++){

pinMode(Relay [i],OUTPUT);

digitalWrite(Relay [i],MATI);

StatRelay [i] = MATI;

}

Serial.begin(9600);

while(!Serial);

Serial.println(“激活SIM800L V2 》》》自动读取短信”);

gprs.preInit();

延迟(1000);

while(0!= gprs.init()){

延迟(1000);

Serial.print(“init errorrn”);

}

//管理消息到模式ASCII

if(0!= gprs.sendCmdAndWaitForResp(“AT + CMGF = 1rn”,“OK”,TIMEOUT)){

错误(“错误:CNMI”);

返回;

}

//读取传入短信

if(0!= gprs.sendCmdAndWaitForResp(“AT + CNMI = 1,2,0,0,0nn”,“OK”,TIMEOUT)){

ERROR(“ERROR:CNMI”) ;

return;

}

int pjg = replyNumber.length()+ 1;

buffNumber [pjg];

replyNumber.toCharArray(buffNumber,pjg);

Serial.print(“Send reply to number =》”);

Serial.println(buffNumber);

Serial.println(“Initialization Done”);

Serial.println(“====================== =======================================“);

}

void loop(){

//更改状态继电器ON/OFF

for(int i = 0;我《4; i ++){

digitalWrite(Relay [i],StatRelay [i]);

}

//如果有来自SIM800的输入数据

if(gprs.serialSIM800.available()){

char lastCharRead = gprs.serialSIM800.read();

//保存lastCharRead上的所有数据,如果有r或n,作为传入消息的最终信号

if(lastCharRead ==’r‘|| lastCharRead ==’n‘){

String lastLine = String( currentLine);

//如果最后一条消息+ CMT表示新消息到达

if(lastLine.startsWith(“+ CMT:”)){

Serial.println(lastLine);

nextLineIsMessage = true;

}否则if(lastLine.length()》 0){

if(nextLineIsMessage){

Serial.println(lastLine);

//============================================= =================== 》》继电器控制器的功能

//继电器1控制器

if(lastLine.indexOf( “Relay 1 ON”)》 = 0){

StatRelay [0] = AKTIF;

Serial.print(“Reply ==== 》》》》”);

Serial.println(“Relay 1 Status Active”);

gprs.sendSMS(buffNumber,“Relay 1 Status Active”);

}

else if(lastLine.indexOf(“Relay 1 OFF”)》 = 0){

StatRelay [0] = MATI;

Serial.print(“Reply =” === 》》》》“);

Serial.println(”Relay 1 Status Off“);

gprs.sendSMS(buffNumber,”Relay 1 Status Off“);

}

//中继2控制器

if(lastLine.indexOf(“Relay 2 ON”)》 = 0){

StatRelay [1] = AKTIF;

Serial.print(“Reply ==== 》》》》”);

Serial.println(“Relay 2 Status Active”) ;

gprs.sendSMS(buffNumber,“Relay 2 Status Active”);

}

否则if(lastLine.indexOf(“Relay 2 OFF”)) 》 = 0){

StatRelay [1] = MATI;

Serial.print(“回复==== 》》》》”);

Serial.pri ntln(“继电器2状态关闭”);

gprs.sendSMS(buffNumber,“继电器2状态关闭”);

}

//继电器3控制器

if(lastLine.indexOf(“Relay 3 ON”)》 = 0){

StatRelay [2] = AKTIF;

Serial.print( “回复==== 》》》》”);

Serial.println(“Relay 3 Status Active”);

gprs.sendSMS(buffNumber,“Relay 3 Status Active” “);

}

否则if(lastLine.indexOf(”Relay 3 OFF“)》 = 0){

StatRelay [2] = MATI;

Serial.print(“Reply ==== 》》》》”);

Serial.println(“Relay 3 Status Off”);

gprs.sendSMS(buffNumber,“Relay 3 Status Off”);

}

//Relay 4 Controller

if(lastLine.indexOf(“Relay 4”) ON“)》 = 0){

StatRelay [3] = AKTIF;

Serial.print(”回复==== 》》》》“);

Serial.println(“Relay 4 Status Active”);

gprs.sendSMS(buffNumber,“Relay 1 Status Active”);

}

else if(lastLine.indexOf(“Relay 4 OFF”)》 = 0){

StatRelay [3] = MATI;

Serial.print(“回复==== 》》》》“);

Serial.println(”Rela y 4状态关闭“);

gprs.sendSMS(buffNumber,”继电器4状态关闭“);

}

nextLineIsMessage = false;

}

//==================================== ============================== 》》

}

//清除用于下一行读取的char数组

for(int i = 0; i

currentLine [i] =(char)0;

}

currentLineIndex = 0;

}

else {

currentLine [currentLineIndex ++] = lastCharRead;

}

}

}

第4步:试一试!

此工具的工作原理是在SIM800L上发送带有某些关键字的短信。在此,要打开继电器1,请使用“继电器1接通”命令,并使用“继电器1关闭”命令将其关闭。对于其他几乎相同的继电器命令,只需根据受控继电器的序列号替换数字即可。在自动发送消息后,SIM800将以每张SIM的状态消息的形式发送回复。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分