Faça Você Mesmo
Life hacks, master classes, dicas úteis, receitas.
lar » Eletrônicos » Eletrônicos da China » 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.

Chave de soquete faça você mesmo

Salgando banha aromática em casa

Bolo de Páscoa | Faça Você Mesmo

Um método para aprender a soldar sem consumir eletrodos com as próprias mãos

«Faça você mesmo - com suas próprias mãos» - um site de produtos caseiros interessantes feitos com sucata e itens de casa. Master classes passo a passo com fotos e descrições, tecnologias, hacks de vida - tudo o que um verdadeiro mestre ou apenas um artesão precisa para bordar. Artesanato de qualquer complexidade, uma grande variedade de orientações e ideias para criatividade.

Recomendamos a leitura

Códigos de erro da máquina de lavar