Controlador SMS baseado em SIM800L

Controlador SMS baseado em SIM800L

SIM800L V2.0 GSM/GPRS é um módulo GSM/GPRS de banda quádrupla compatível com Arduino. O módulo é utilizado para implementar funções GSM (chamadas e SMS) e GPRS. A vantagem deste módulo é a interface TTL, que possui tensão de 5V, o que permite conectá-lo diretamente ao Arduino ou qualquer outro sistema com tensão de alimentação de 5V. A maioria dos módulos GSM/GPRS no mercado requer conexões reguladoras ou conversão de nível, enquanto no SIM800L V.2 GSM/GPRS não requer circuitos adicionais de conversão de nível de interface.

Vamos dar um exemplo de projeto utilizando SIM800L V.2 GSM/GPRS. O objetivo do projeto é controlar interruptores usando um controlador SMS. Você pode ligar e desligar facilmente a maioria dos eletrodomésticos da casa, como uma lhama, um ventilador e assim por diante.

Características do módulo SIM800L V.2 GSM/GPRS


Abaixo estão todas as características técnicas do módulo SIM800L V.2 GSM/GPRS:
  • Interface serial TTL compatível com microcontroladores compatíveis com Arduino de 3,3 V e 5 V.
  • O módulo SIM800L possui uma interface serial TTL.
  • Plugue de conexão da antena.
  • Suporte de rede: quatro bandas 850/900/1800/1900 MHz, capazes de realizar chamadas, SMS e transferências de dados com consumo de bateria significativamente reduzido.
  • Interface VDD TTL UART, para que você possa conectar diretamente MCU como 51MCU, ARM ou MSP430.O plugue VDD é usado para corresponder à tensão TTL.
  • Modelo: SIMCOM SIM800L
  • Tensão de operação: de 3,7V a 5V;
  • dimensões: 40 mm x 28 mm x 3 mm
  • Classe multislot GPRS 12/10
  • Classe B de serviço de pacotes GPRS
  • Compatível com GSM fase 2/2+
  • Classe 4 (2 Watts a 850/900 MHz)
  • Classe 1 (1 Watt @ 1800/1900 MHz)


Materiais necessários


Controlador SMS baseado em SIM800L


Você precisará:


1. Módulo SIM800L V.2 GSM/GPRS.
2. Arduino Uno.
3. Módulo de relé de 4 canais 5V.
4. Fios - jumpers.
5. Fonte de alimentação 5V.
(Links ativos para a loja para compra)

Montagem e configuração


Controlador SMS baseado em SIM800L


Depois de conectar todos os componentes, crie um programa e carregue-o no seu Arduino. Mas primeiro você deve instalar a biblioteca GPRS, que pode ser baixada:

gprs.zip [28,02 Kb] (downloads: 887)


Código do programa para Arduino


Controlador SMS baseado em SIM800L


Depois de conectar seu SIM800L, módulo de relé de 4 canais e Arduino ao computador, insira o código abaixo e pronto.



#incluir 

#incluir

#define TEMPO LIMITE 5000

#define ATIVO BAIXO

#define FORA ALTA



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

byte StatRelay[4];

char númerobuff[20];

charLinhaAtual[500] = "";

int currentLineIndex = 0;

bool nextLineIsMessage = falso;

String respondNumber = "089510863958";

GPRS;



configuração vazia() {

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

pinMode(Relé[i], SAÍDA);

digitalWrite(Relé[i], MATI);

StatRelay[i] = MATI;

}



Serial.begin(9600);

enquanto(!Serial);

Serial.println("Ativar SIM800L V2 >>> Ler SMS automaticamente");

gprs.preInit();

atraso(1000);

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

atraso(1000);

Serial.print("erro de inicialização");

}



//Gerencia mensagem para modo ASCII

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

ERRO("ERRO:CNMI");

retornar;

}

// Ler SMS recebidos

if (0 != gprs.sendCmdAndWaitForResp("AT+CNMI=1,2,0,0,0rn", "OK", TIMEOUT)) {

ERRO("ERRO:CNMI");

retornar;

}

int pjg = respostaNumber.length() + 1;

númerobuff[pjg];

respondNumber.toCharArray(buffNumber,pjg);

Serial.print("Enviar resposta para número => ");

Serial.println(buffNumber);

Serial.println("Inicialização concluída");

Serial.println("============================================= =============== ================");

}



loop vazio() {

// Altera o status do Relé LIGADO/DESLIGADO

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

digitalWrite(Relé[i], StatRelay[i]);

}



// Se houver dados de entrada do SIM800

if (gprs.serialSIM800.available()) {

char lastCharRead = gprs.serialSIM800.read();



// Salva todos os dados em lastCharRead, então se houver r ou n, como sinal final de mensagem recebida

if (lastCharRead == 'r' || lastCharRead == 'n') {

String últimaLinha = String(LinhaAtual);



//Se a última mensagem +CMT indica chegada de nova mensagem

if (lastLine.startsWith("+CMT:")) {

Serial.println(últimaLinha);

nextLineIsMessage = true;

} else if (lastLine.length() > 0) {

if (nextLineIsMessage) {

Serial.println(últimaLinha);



// ============================================== ==== ================>> Função do Controlador de Relé



//Relé 1 Controlador



if (lastLine.indexOf("Relé 1 LIGADO") >= 0) {

StatRelay[0] = AKTIF;

Serial.print("Responder====>>>> ");

Serial.println("Status do Relé 1 Ativo");

gprs.sendSMS(buffNumber, "Status do Relé 1 Ativo");

}



senão if (lastLine.indexOf("Relé 1 DESLIGADO") >= 0) {

StatRelay[0] = MATI;

Serial.print("Responder====>>>> ");

Serial.println("Status do Relé 1 desligado");

gprs.sendSMS(buffNumber, "Status do Relé 1 desligado");

}



//Controlador do Relé 2



if (lastLine.indexOf("Relé 2 LIGADO") >= 0) {

StatRelay[1] = AKTIF;

Serial.print("Responder====>>>> ");

Serial.println("Status do Relé 2 Ativo");

gprs.sendSMS(buffNumber, "Status do Relé 2 Ativo");

}

senão if (lastLine.indexOf("Relé 2 DESLIGADO") >= 0) {

StatRelay[1] = MATI;

Serial.print("Responder====>>>> ");

Serial.println("Status do Relé 2 desligado");

gprs.sendSMS(buffNumber, "Status do Relé 2 desligado");

}



//Controlador do Relé 3

if (lastLine.indexOf("Relé 3 LIGADO") >= 0) {

StatRelay[2] = AKTIF;

Serial.print("Responder====>>>> ");

Serial.println("Status do Relé 3 Ativo");

gprs.sendSMS(buffNumber, "Status do Relé 3 Ativo");

}

senão if (lastLine.indexOf("Relé 3 DESLIGADO") >= 0) {

StatRelay[2] = MATI;

Serial.print("Responder====>>>> ");

Serial.println("Status do Relé 3 desligado");

gprs.sendSMS(buffNumber, "Status do Relé 3 desligado");

}



//Controlador do Relé 4

if (lastLine.indexOf("Relé 4 LIGADO") >= 0) {

StatRelay[3] = AKTIF;

Serial.print("Responder====>>>> ");

Serial.println("Status do Relé 4 Ativo");

gprs.sendSMS(buffNumber, "Status do Relé 1 Ativo");

}

senão if (lastLine.indexOf("Relé 4 DESLIGADO") >= 0) {

StatRelay[3] = MATI;

Serial.print("Responder====>>>> ");

Serial.println("Status do Relé 4 desligado");

gprs.sendSMS(buffNumber, "Status do Relé 4 desligado");

}

nextLineIsMessage = falso;

}



// ============================================== ==== ===================>>



}

//Limpa o array char para a próxima linha de leitura

for (int i = 0; i < sizeof(LinhaAtual); ++i ) {

LinhaAtual[i] = (char)0;

}

currentLineIndex = 0;

}

outro {

currentLine[currentLineIndex++] = lastCharRead;

}

}

}



Verificação do dispositivo


Controlador SMS baseado em SIM800L


A ferramenta funciona enviando um SMS para o SIM800L com uma sequência específica de caracteres. Por exemplo, para ligar o relé 1, use o comando “Relé 1 ON”, e para desligá-lo, use o comando “Relé 1 OFF”. Para os restantes relés, os comandos são quase os mesmos, exceto pelo número de sequência de cada relé que se deseja influenciar. Após o envio automático da mensagem, o SIM800 enviará uma resposta em forma de mensagem sobre o status de cada cartão SIM.

Vídeo de montagem, configuração e teste do dispositivo



Artigo original em inglês
voltar
Comente
  • gravata borboletasorrisorindocorarrisonhorelaxado relaxadosorriso pretensioso
    olhos do coraçãobeijando_coraçãobeijando de olhos fechadoscoradoaliviadosatisfeitosorriso
    piscarpreso_para fora_língua_piscando_olholíngua para fora olhos fechadossorrindose beijandolíngua presa_para foradormindo
    preocupadocarrancudoangustiadoboca abertafazendo caretaconfusocalado
    inexpressivosem graçasuor_sorrisosuordecepcionado_aliviadocansadopassiva
    decepcionadoconfusocom medosuor frioperseverarchorarsoluço
    alegriaatônitogritarcara_cansadanervosoraivatriunfo
    com sonohummmmascararoculos de solrosto_tontocriança levadasorrindo_imp
    rosto_neutrosem_bocainocente
3+três=
Comentários (4)
  1. qeeq
    #1 qeeq Convidados 26 de agosto de 2017 23h50
    0
    Uau! Como se costuma dizer, tudo que é engenhoso é simples. Nem precisei comprar nada, provavelmente todo mundo tem um monte desse lixo em casa
  2. Alexei
    #2 Alexei Convidados 16 de dezembro de 2017 16:53
    0
    Não funciona. Ao compilar, aparece "Arduino: 1.8.5 Hourly Build 2017/08/28 06:33 (Windows 7), Board:"Arduino/Genuino Uno"
    1. Denis
      #3 Denis Convidados 17 de dezembro de 2017 08:11
      0
      Você precisa usar um caminho sem letras russas para o projeto.
  3. Andrei
    #4 Andrei Convidados 10 de fevereiro de 2019 11h54
    2
    Existem muitos erros no esboço. Não vai funcionar.