28 setembro 2017

Alarme por SMS com o SIM800L e Arduino

Com o módulo GSM GPRS SIM800L você pode efetuar ligações, enviar SMS e até mesmo conectar-se à internet. Neste post, vamos usar o SIM800L para montar um sistema de alarme juntamente com um sensor magnético reed switch.

Circuito alarme por SMS com o SIM800L e Arduino Uno


O projeto que vamos mostrar efetua a leitura contínua do estado de um sensor magnético conectado ao Arduino. Caso o sensor seja acionado, um SMS é enviado para o número de celular cadastrado na memória do microcontrolador.

Material para o projeto


Para montar esse projeto você vai precisar do seguinte material:


Aqui no Arduino e Cia postamos recentemente um tutorial mostrando como você pode controlar o Arduino atráves do recebimento de mensagens SMS usando o SIM800L (clique aqui para ler).

Já o sensor magnético reed switch é um componente que funciona como uma chave magnética: aproxime um ímã do sensor e os contatos são fechados, permitindo a passagem da corrente elétrica.

Sensor magnético Reed-Switch

A fonte para protoboard é um item importante (eu diria até indispensável neste caso), pois vai fornecer corrente suficiente para o correto funcionamento do módulo SIM800L. Sem ele, você pode enfrentar desde travamentos do módulo até um reset inesperado.

Circuito com Arduino Uno


O circuito abaixo mostra o sensor magnético ligado na porta analógica A1 do Arduino. Junto ao sensor temos um resistor de 330ohms servindo como pull-down. O módulo SIM800L está conectado nas portas 10 e 11, que funcionarão como uma porta serial graças à biblioteca SoftwareSerial.

Circuito Arduino Uno e SIM800L


No plug P4 da fonte da protoboard eu liguei uma fonte de alimentação 9V/2A. No nosso circuito ela vai servir exclusivamente para alimentação do SIM800L. Na fonte da protoboard, não esqueça de selecionar a tensão de 5V por meio dos jumpers.

Programa alarme por SMS com reed switch e SIM800L


O programa abaixo usa a biblioteca SIM800L (download). Descompacte a biblioteca e coloque-a na pasta LIBRARIES da IDE do Arduino. Vamos usar também a biblioteca SoftwareSerial, que já está embutida na IDE.

Coloque no slot do módulo um cartão SIM válido, desbloqueado e com créditos suficientes para realizar chamadas e enviar SMS.

No programa, configure na linha 8 o texto que será enviado via SMS quando o sensor magnético reed-switch for acionado. Na linha 9, coloque o número do celular que receberá a mensagem de texto, enviada na linha 29 pelo comando Sim800l.sendSms().

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
//Programa: Envio de SMS com SIM800L
//Autor: Arduino e Cia

#include <Sim800l.h>
#include <SoftwareSerial.h>
Sim800l Sim800l;

char* texto = "Sensor acionado!";
char* numero = "04111987654321";

#define pino_sensor A1

int valor;

void setup()
{
  Serial.begin(9600);
  pinMode(pino_sensor, INPUT);
  Sim800l.begin(); // initializate the library.
  Serial.println("Aguardando acionamento do sensor...");
}

void loop()
{
  valor = digitalRead(pino_sensor);
  if (valor != 0)
  {
    Serial.println("Sensor acionado! Enviando SMS...");
    Sim800l.sendSms(numero, texto);
    Serial.println("SMS Enviado...");
    while (digitalRead(pino_sensor) != 0)
    {
      delay(100);
    }
    Serial.println("Aguardando novo acionamento");
  }
}

Aproxime um ímã do sensor magnético reed switch e aguarde o recebimento do SMS no seu telefone celular/smartphone. Verifique o funcionamento do programa por meio do serial monitor:

Envio de SMS com SIM800L - Serial Monitor

Você pode adaptar facilmente este circuito para utilização com outros sensores como sensores ultrassônicos, infravermelho, indutivo e sensor de presença, entre outros.

12 comentários:

  1. muito legal isso! parabéns aos que disponibilizaram esse tutorial! nota dez!

    ResponderExcluir
  2. Fiz um desse mas para alarme de carro! Qdo abria o vidro ou a porta enviava o sms! Só o módulo gprs usei um Shield! Saudades do curso de eletrônica.

    ResponderExcluir
  3. Olá.. Tenho que fazer uma maquete de esteira transportadora( isso tranquilo),só que ela tem que executar a medição da peça transportada, sei que terei que aprender programação arduino e tudo mais, mas gostaria de saber se tu me indica qual sensor melhor realizaria essa medida?
    Grata

    ResponderExcluir
    Respostas
    1. Oi Milena,

      Tudo bem? Olha, vai depender do tipo de medição que vc vai fazer. É de tamanho, peso ou alguma outra coisa?

      Abraço!

      Adilson

      Excluir
    2. Oi Milena,

      Pode ser com sensor infravermelho, ou com sensor ultrasonico... ou até mesmo com chaves de fim de curso, dependendo de como essa peça vai na esteira.

      Abraço!

      Adilson

      Excluir
  4. Parabéns pelo projeto, ficou excepcional. Tenho uma dúvida com respeito ao módulo GSM, pelo que pesquisei ele aceita redes 2G, porém as operadoras só estão fornecendo chips para redes 4G, você saberia me dizer se for colocado um chip 4G ele vai aceitar e funcionar corretamente? Obrigado

    ResponderExcluir
    Respostas
    1. Boa tarde,

      Muito obrigado. Sim, eu utilizei um chip 4G da TIM para fazer os testes. Não cheguei a testar a conexão de internet ainda, mas já mexi com outros módulos que funcionaram sem problemas, mesmo sendo 2G, então creio que não terá problemas.

      Abraço!

      Adilson

      Excluir
  5. Parabéns pelo post, muito sucinto e didático.
    Estou Fazendo meu projeto integrador para finalizar o curso Técnico em Eletrônica aqui no IFSP de Tupã, e através de seu post que pude encontrar a solução dos meus problemas, porém ao invés de usar um sensor magnético reed switch, estarei usando um Sensor de Movimento Presença PIR , pois preciso detectar a presença de pessoas, porém a lógica é a mesma, mais uma vez parabéns pelo post, assim que finalizar o projeto eu posto os resultados.

    ResponderExcluir
    Respostas
    1. Oi Paulo!

      Obrigado e parabéns pela iniciativa. Depois compartilhe os resultados aqui com a gente. ;)

      Abraço!

      Adilson

      Excluir