DIY faça você mesmo
Aulas de mestre, instruções, dicas úteis, receitas.
» » »Controlador de SMS baseado no SIM800L
Controlador de SMS baseado em SIM800L

O SIM800L V2.0 GSM / GPRS é um módulo GSM / GPRS de banda quádrupla compatível com Arduino. O módulo é usado para implementar as funções de GSM (chamadas e SMS) e GPRS. A vantagem deste módulo é a interface TTL com uma voltagem de 5V, que permite conectá-lo diretamente a um Arduino ou a qualquer outro sistema com uma fonte de alimentação de 5V. A maioria dos módulos GSM / GPRS no mercado requer conexões de reguladores ou conversão de nível, enquanto no SIM800L V.2 GSM / GPRS não é necessário um circuito de conversão de nível de interface adicional.

Aqui está um exemplo de projeto usando o SIM800L V.2 GSM / GPRS. O significado do projeto é controlar os comutadores usando o controlador SMS. Você pode ligar e desligar facilmente a maioria dos eletrodomésticos da casa, como lhama, ventilador e assim por diante.

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


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


Materiais Necessários


Controlador de SMS baseado em SIM800L


Você precisará de:


1. .
2. .
3. .
4. .
5. .
(Links ativos para a loja para compra)

Montagem e configuração


Controlador de SMS baseado em SIM800L


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

[28.02 Kb] (downloads: 481)


Código de programa para Arduino


Controlador de SMS baseado em SIM800L


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


#include
#include
#define TIMEOUT 5000
#define ACTIVE LOW
#define OFF HIGH

byte Relay [] = {A0, A1, A2, A3};
byte StatRelay [4];
char buffNumber [20];
char currentLine [500] = "";
int currentLineIndex = 0;
bool nextLineIsMessage = false;
String replyNumber = "089510863958";
GPRS GPRS;

configuração nula () {
for (int i = 0; i <4; i ++) {
pinMode (Relé [i], SAÍDA);
digitalWrite (relé [i], MATI);
StatRelay [i] = MATI;
}

Serial.begin (9600);
while (! Serial);
Serial.println ("Ativar SIM800L V2 >>> Ler automaticamente o SMS");
gprs.preInit ();
atraso (1000);
while (0! = gprs.init ()) {
atraso (1000);
Serial.print ("init errorrn");
}

// Gerenciar mensagem para o modo ASCII
if (0! = gprs.sendCmdAndWaitForResp ("AT + CMGF = 1rn", "OK", TIMEOUT)) {
ERRO ("ERRO: CNMI");
retornar
}
// Leia SMS recebidos
if (0! = gprs.sendCmdAndWaitForResp ("AT + CNMI = 1,2,0,0,0rn", "OK", TIMEOUT)) {
ERRO ("ERRO: CNMI");
retornar
}
int pjg = replyNumber.length () + 1;
buffNumber [pjg];
replyNumber.toCharArray (buffNumber, pjg);
Serial.print ("Enviar resposta ao número =>");
Serial.println (buffNumber);
Serial.println ("Inicialização concluída");
Serial.println ("=============================================== ================= ");
}

loop vazio () {
// Alterar status Relé ON / OFF
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 ();

// Salve todos os dados no lastCharRead e, se houver r ou n, como um sinal final da mensagem recebida
if (lastCharRead == 'r' || lastCharRead == 'n') {
String lastLine = String (currentLine);

// Se a última mensagem + CMT indicar a chegada de uma nova mensagem
if (lastLine.startsWith ("+ CMT:")) {
Serial.println (lastLine);
nextLineIsMessage = true;
} else if (lastLine.length ()> 0) {
if (nextLineIsMessage) {
Serial.println (lastLine);

// =================================================== ================== >> Função do controlador de relé

// Controlador do relé 1

if (lastLine.indexOf ("Relé 1 LIGADO")> = 0) {
StatRelay [0] = AKTIF;
Serial.print ("Responder ==== >>>>");
Serial.println ("Status do relé 1 ativo");
gprs.sendSMS (buffNumber, "Relay 1 Status Active");
}

caso contrário, if (lastLine.indexOf ("Relay 1 OFF")> = 0) {
StatRelay [0] = MATI;
Serial.print ("Responder ==== >>>>");
Serial.println ("Status do relé 1 desativado");
gprs.sendSMS (buffNumber, "Status do relé 1 desativado");
}

// 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");
}
caso contrário, if (lastLine.indexOf ("Relay 2 OFF")> = 0) {
StatRelay [1] = MATI;
Serial.print ("Responder ==== >>>>");
Serial.println ("Status do relé 2 desativado");
gprs.sendSMS (buffNumber, "Status do relé 2 desativado");
}

// 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");
}
caso contrário, if (lastLine.indexOf ("Relay 3 OFF")> = 0) {
StatRelay [2] = MATI;
Serial.print ("Responder ==== >>>>");
Serial.println ("Status do relé 3 desativado");
gprs.sendSMS (buffNumber, "Status do relé 3 desativado");
}

// 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, "Relay 1 Status Active");
}
caso contrário, if (lastLine.indexOf ("Relay 4 OFF")> = 0) {
StatRelay [3] = MATI;
Serial.print ("Responder ==== >>>>");
Serial.println ("Status do relé 4 desativado");
gprs.sendSMS (buffNumber, "Status do relé 4 desativado");
}
nextLineIsMessage = false;
}

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

}
// Limpar matriz de caracteres para a próxima linha de leitura
for (int i = 0; i 


Verificação de dispositivo


Controlador de SMS baseado em SIM800L


A ferramenta funciona enviando SMS para o SIM800L com uma sequência específica de caracteres. Por exemplo, para ativar o relé 1, use o comando “Relé 1 LIGADO” e, para desativá-lo, use o comando “Relé 1 DESLIGADO”. O restante dos relés possui quase os mesmos comandos, com exceção do número de série de cada relé em que você deseja atuar. Depois de enviar automaticamente uma mensagem, o SIM800 enviará uma resposta na forma de uma mensagem de status para cada cartão SIM.

Montagem de vídeo, configuração e verificação de dispositivo



Voltar
Comentários (4)
  1. qeeeq
    #1 qeeeq Convidados 26 de agosto de 2017 23:50
    0
    Uau! Como se costuma dizer, tudo engenhoso é simples. Eu nem precisei comprar nada, provavelmente em cada lixo desse tipo em casa a granel
  2. Alexey
    #2 Alexey Convidados 16 de dezembro de 2017 16:53
    0
    Não dá certo. Ao compilar, ele escreve "Arduino: 1.8.5 Compilação por hora 28/08/2017 06:33 (Windows 7), Placa:" 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. Andrey
    #4 Andrey Convidados 10 de fevereiro de 2019 11:54
    0
    Existem muitos erros no esboço. Não vai funcionar.