fbpx
ArduinoMódulosNovidade

Sistema de segurança Laser – Enviando SMS usando SIM900 e Arduino

Constantemente, vemos em filmes sistemas de segurança de alta tecnologia, como lasers que protegem tesouros valiosos ou instalações secretas. Mas você sabia que é possível criar seu próprio sistema de segurança a laser com componentes eletrônicos simples? Neste tutorial, você aprenderá a criar um sistema de segurança a laser que enviará uma mensagem SMS para o seu telefone celular sempre que o feixe de luz for interrompido. Isso não é apenas coisa de filme, mas sim uma aplicação prática da tecnologia moderna que pode ser usada para proteger sua casa, escritório ou qualquer espaço que você queira manter seguro. Com nossas instruções passo a passo, você será capaz de construir um sistema de segurança personalizado e eficaz em pouco tempo. Então, vamos começar a construir seu sistema de segurança a laser agora!


MATERIAIS NECESSÁRIOS


ESQUEMÁTICO DE LIGAÇÃO

Abaixo temos o esquemático de ligação dos componentes desse projeto. Atente-se para os pinos dos módulos, pois pode acontecer da posição estar invertida devido a lotes ou empresas diferentes que fabricam o mesmo produto, como já foi notado com o caso do Módulo LDR. Já vimos casos em que o pino negativo () estar no lugar do pino S, portanto, se esse for o seu caso basta apenas entender que o pino está no GND do Arduino e o S está no A0 e prosseguir com a montagem.

Figura 1: Circuito para o projeto do sistema de segurança Laser com envio de mensagem SMS.

Ao montar o circuito preste atenção nos seguintes pontos:

  • Verifique todas as ligações elétricas, pois a ligação incorreta pode acarretar na queima dos componentes;
  • Utilize uma fonte de 5V com pelo menos 2A de corrente ou mais e que seja de qualidade e confiança de que ela tenha realmente 5V;
  • Neste circuito o Arduino é alimentado com 5V da Fonte através da porta 5V, que serve tanto como entrada, quanto saída de alimentação;
  • O feixe de luz do módulo laser deve ficar posicionado bem no centro do módulo LDR, conforme ilustrado na Figura 2.
Figura 2: Módulo LDR recebendo o feixe de Luz do Módulo Laser

Depois de ter a certeza de que o módulo laser está bem posicionado em relação ao LDR, vamos identificar se o Módulo SIM900 está conectado na Rede Móvel e, para isso, vamos analisar a frequência de piscadas do Led da placa. Na Figura 3 é mostrado um exemplo de como o Led deve piscar ao estar conectado na rede móvel:

Figura 3: LED piscando a cada 4 segundos = CONECTADO na Rede Móvel.

O Led está piscando a cada 1 segundo? Então não houve conexão com a rede móvel, veja alguns motivos que podem causar isso:

  • Chip mal encaixado: Se você estiver usando algum adaptador então certifique-se de que o chip está posicionado corretamente e dando contato com os terminais do módulo;
  • Fonte de Alimentação: Se a fonte não prover pelo menos 5V 2A o módulo pode não conseguir realizar a conexão, pois no momento de conectar à rede é que exige uma corrente maior;
  • Antena Folgada: Verifique se a antena do módulo está bem rosqueada ao módulo;
  • Operadora Bloqueando a Conexão: Pode acontecer da operadora identificar a utilização do chip no Módulo SIM900 e bloquear o chip ou impedir a conexão, então recomendamos que teste o chip de outra operadora;
  • IMEI Bloqueado: O IMEI é um número que vem identificando o módulo e ele é de uso único, mas pode acontecer da Anatel bloquear esse número e o módulo ficar inutilizável. Para verificar se o IMEI está bloqueado clique aqui, vá na opção “Consulte aqui a situação do seu aparelho celular” e digite o IMEI do módulo, se nada constar, então está tudo ok.
  • Firmware desatualizado: Pode acontecer de alguns módulos estarem com uma versão de firmware desatualizada, como no caso de alguns modelos de SIM900A. No caso desse modelo nós criamos um tutorial de como atualizar o firmware do SIM900A para o mesmo usado no SIM900, clique aqui para saber mais.

Depois de ter revisado os passos acima esperamos que o seu módulo esteja funcionando e conectado à Rede para prosseguir para a parte da programação. Abaixo você encontrará os códigos completos e comentado.


ELABORANDO CÓDIGO

Antes de mais nada, é necessário que façamos um teste para verificar qual é o número que o Arduino identifica enquanto o laser está mirando no sensor de luminosidade e qual número ele lê quando o laser é interrompido. Para isso vamos usar um código bem simples e analisar através do monitor serial do Arduino. Faça o upload do seguinte código e abra o monitor serial do Arduino para acompanhar o resultado:

/*
  -         Envio de SMS com Módulo SIM900        -
  =================================================
  === BLOG DA ROBOTICA - www.blogdarobotica.com ===
  =================================================
  Autor: Kleber Bastos
  E-mail: contato@blogdarobotica.com
  Facebook: facebook.com/blogdarobotica
  Instagram:@blogdarobotica
  YouTube: youtube.com/user/blogdarobotica
  =================================================
  === CASA DA ROBOTICA - www.casadarobotica.com ===
  =================================================
  Facebook: facebook.com/casadaroboticaoficial
  Instagram:@casadarobotica
  ==================================================
*/

// Declaração do pino do sensorLuminosida na porta Analógica A0
#define sensorLuminosidade A0


void setup() {
  //Setando velocidade de comunicação serial em 9600
  Serial.begin(9600);

  //Configurando o pino do sensor de luminosidade como entrada
  pinMode(sensorLuminosidade, INPUT);
}

void loop() {
  //Imprime no monitor Serial o valor analógico lido pelo sensor de luminosidade
  Serial.println(analogRead(sensorLuminosidade));
  delay(50);
}

Vídeo 1 – Resposta do Monitor Serial

No nosso teste percebemos que quando o laser incide sob o LDR os número ficam abaixo de 10 e quando interrompemos o feixe do laser os valores ficam acima de 100, então já percebemos a diferença e é importante salientar que esse número vai variar de teste para teste, ou seja, o nosso resultado não é igual ao que vai aparecer para vocês, por isso é importante fazer essa verificação com o laser já posicionado no local correto, com a distância adequada conforme a sua necessidade.

Qual a conclusão desse teste?

Para valores baixos (vamos considerar abaixo de 50 para ter uma boa margem de segurança) significa que o laser está incidindo sobre o sensor de luminosidade, ou seja, tudo tranquilo e o ambiente está seguro. Já para valores altos (acima de 50) o feixe de luz foi interrompido e aí significa que em algum momento alguém ou alguma coisa passou na frente do sensor e é nesse momento que a mensagem via SMS deverá ser enviada para nos alertar. Dependendo do tipo de módulo de luminosidade que você estiver usando essa lógica pode ser inversa, por isso é importante realizar o teste e entender o significado desses números… anote aí a lógica encontrada que nos comentários do próprio código explicaremos a função desse número 50.

Código Completo que envia a mensagem:

Em resumo o código abaixo funciona assim: Ao iniciar é aguardado um tempo de 20 segundos para que o módulo se conecte na Rede Móvel e depois disso o loop é executado comparando se o valor da luminosidade é maior do que o valor que estipulamos no código anterior (maior que 50). Se for, significa que em algum momento o laser foi interrompido e a mensagem é enviada para o celular e aguarda 2 Minutos (120000 milissegundos) até que o código volte para verificação inicial e possa mandar uma nova mensagem. Esse tempo é para evitar que seja enviada milhares de mensagens de vez e a operadora acabe bloqueando o chip ou que fiquemos sem crédito 🤣.

Se o valor da luminosidade NÃO for maior do que o valor que estipulamos então a verificação continua até que alguém interrompa o feixe de luz do laser.

/*
  -         Envio de SMS com Módulo SIM900        -
  =================================================
  === BLOG DA ROBOTICA - www.blogdarobotica.com ===
  =================================================
  Autor: Kleber Bastos
  E-mail: contato@blogdarobotica.com
  Facebook: facebook.com/blogdarobotica
  Instagram:@blogdarobotica
  YouTube: youtube.com/user/blogdarobotica
  =================================================
  === CASA DA ROBOTICA - www.casadarobotica.com ===
  =================================================
  Facebook: facebook.com/casadaroboticaoficial
  Instagram:@casadarobotica
  ==================================================
*/

//Inclusão da biblioteca SoftwareSerial que já é nativa da IDE do Arduino, ou seja, não precisa baixar
#include <SoftwareSerial.h>

// Declaração do pino do sensorLuminosida na porta Analógica A0
#define sensorLuminosidade A0

//Configurando novas portas de comunicação Serial, sendo RX a porta 7 e TX a porta 8
SoftwareSerial SIM900A(7, 8);

void setup() {
  //Setando velocidade de comunicação serial em 9600
  Serial.begin(9600);

  //Configurando o pino do sensor de luminosidade como entrada
  pinMode(sensorLuminosidade, INPUT);

  // O Arduino se comunica com o SIM900 a uma taxa de transmissão de 9600
  SIM900A.begin(9600);

  //Tempo de 20 seg para que o SIM900 se conecte na rede móvel
  Serial.println("Aguarde 20seg");
  delay(20000);
  Serial.println("Sistema Iniciado!");
}

void loop() {
  //Imprime no monitor Serial o valor analógico lido pelo sensor de luminosidade
  Serial.println(analogRead(sensorLuminosidade));
  delay(50);

  //Verifica se o valor lido pelo sensor é maior que 50, ou seja, se houve alguma interrupção do feixe de luz no sensor de luminosidade. 
  //No teste realizado percebemos que para números maiores que 50 o sensor tinha sido interrompido e é por isso que chamamos a função que envia a mensagem quando analogRead(sensorLuminosidade) > 50. Altere esse 50 e o símbolo de > para < conforme o cenário identificado no teste realizado no código anterior.
  if (analogRead(sensorLuminosidade) > 50) {
    //Caso seja > 50 (sensor de luz foi interrompido em algum momento) chama a função enviarMensagem();
    enviarMensagem();
  }

}

//Função responsável por enviar a mensagem SMS
void enviarMensagem() {
  Serial.println ("Sending Message");
  SIM900A.println("AT+CMGF=1");    //Configura o Módulo GSM para modo Texto
  delay(1000);
  Serial.println ("Set SMS Number");
  SIM900A.println("AT+CMGS=\"+55XXXXXXXXXXX\"\r"); //Substitua os XXXXXXXXXXX pelo DDD e número que receberá a Mensagem SMS. Mantenha o +55 que é o código do país Brasil
  delay(1000);
  Serial.println ("Set SMS Content");
  SIM900A.println("CUIDADO CASA INVADIDA!");//Conteúdo da mensagem
  delay(100);
  Serial.println ("Finish");
  SIM900A.println((char)26);// Código ASCII CTRL+Z para indicar o fim da mensagem
  delay(1000);
  Serial.println ("Mensagem enviada com Sucesso!");

  if (SIM900A.available() > 0) {
    Serial.write(SIM900A.read());
  }
  delay(120000); //Espera 2 Minutos (120000 milissegundos) para ficar pronto para enviar uma segunda mensagem (Recomendamos até aumentar esse tempo para um período maior). Esse intervalo pode ser configurado, mas não é recomendado ficar enviando SMS em períodos curtos, pois o chip pode ser bloqueado.
}

Leiam todos comentários contidos no código para que consigam entender a execução do mesmo. Espero que consigam replicar nosso tutorial e que obtenham um resultado satisfatório. Qualquer dúvida estamos à disposição!

Atenciosamente, Kleber Bastos.

Dúvidas? Deixe seu comentário

Kleber Bastos

Bacharel em Engenharia de Computação. Um dos criadores do Blog da Robótica. Faz parte da equipe Casa da Robótica desde 2017. Apaixonado por tecnologias e pelas “loucuras” que é possível criar usando microcontroladores e impressoras 3D. Ex-BBB, mas isso é uma longa história... que poderá ser contada posteriormente.

Deixe uma pergunta

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.