Sistema de segurança com envio de mensagem SMS usando sensor de presença, módulo SIM800L e Arduino
O módulo GSM GPRS SIM800L é capaz de enviar mensagens SMS, fazer chamadas telefônicas e, até mesmo, conectar-se à Internet. Por conta disto, este dispositivo é amplamente utilizado em projetos de automação residencial e Internet das Coisas.
Neste tutorial, vamos utilizar o módulo GSM GPRS SIM800L para criar um sistema de segurança que envia mensagens SMS quando alguma presença for detectada em um local. Para tal, usaremos o sensor de presença / movimento HC-SR501 PIR e Arduino.
Vale lembrar que neste tutorial focaremos na utilização do módulo GSM GPRS SIM800L e do sensor de presença / movimento HC-SR501 PIR em conjunto. Caso você necessite de maiores informações sobre estes dispositivos acesse os seguintes tutoriais:
Como utilizar o sensor de presença/movimento HC-SR501 PIR com Arduino
Como enviar mensagem SMS utilizando o módulo GSM GPRS SIM800L e Arduino
MATERIAIS NECESSÁRIOS
- 1x Módulo GSM GPRS SIM800L;
- 1x Sensor de presença/ movimento módulo HC-SR501 PIR;
- 1x Placa Uno SMD R3 atmega328;
- 1x Cabo USB compatível com Arduino;
- 1x Regulador de tensão step down LM2596;
- 1x Protoboard;
- 3 x Resistor 10k;
- Jumpers macho-macho;
- Jumpers macho-fêmea.
ESQUEMÁTICO DE LIGAÇÃO
Antes de iniciar a montagem, certifique-se que a sua placa UNO esteja desligada. Monte atentamente o circuito da Figura 2, utilizando o módulo GSM GPRS SIM800L, o sensor de presença / movimento HC-SR501 PIR, o regulador de tensão e o Arduino.
Ao montar o circuito preste atenção nos seguintes pontos:
- O módulo GSM GPRS SIM800L deve ser alimentado por uma tensão de 3.3V a 4.4V. Portanto, o módulo nunca deve ser conectado diretamente ao Arduino;
- A alimentação do regulador de tensão deve ser feita por uma fonte externa;
- Ajuste a tensão de saída do regulador de tensão entre 3.4V e 4.4V. Para se certificar, use um multímetro;
- Alimente o módulo com a saída do regulador de tensão;
- Não podemos conectar o pino Rx do módulo diretamente ao pino digital do Arduino. Desta forma, faça um divisor de tensão. Conecte um resistor de 10kΩ entre o Rx do módulo e o pino D2 do Arduino e outros dois resistores de 10kΩ em série entre o Rx e o GND do módulo;
- O pino Tx do módulo deve ser conectado diretamente ao pino TXD do Arduino;
- O pino 1 do sensor de presença deve ser ligado a alimentação de 5V da placa UNO, o pino 2 deve ser conectado à porta digital 7 e o pino 3 deve ser conectado ao GND.
ELABORANDO CÓDIGO:
Com o circuito montado, vamos a programação do Sketch. A proposta deste projeto é criar um sistema de segurança que envie mensagens SMS quando detectar presença em um local. Acompanhe a lógica de programação deste projeto por meio dos seguintes pontos:
1.Incluir a biblioteca “SoftwareSerial.h”
Esta biblioteca permite a comunicação serial em outros pinos digitais do Arduino, utilizando um software para replicar a funcionalidade.
2.Declarar as variáveis
A variável “sensorPin” será utilizada para representar o pino digital 7 em que o sensor de presença / movimento está conectado;
A variável “leitura” será criada para armazenar o valor digital lido do sensor de presença. Declararemos também a variável “estadoSensor” do tipo bool, que armazena dois valores true ou false (verdadeiro ou falso), para armazenar o estado do sensor – Movimento detectado (true) ou sem movimento (false);
3.Criar objeto Software Serial para comunicação com o SIM800L
Será necessário criar um objeto do tipo software serial para comunicação do módulo SIM800L passando como parâmetro as portas digitais 3 e 2 do Arduino.
4. Inicializar a comunicação serial e realizar as configurações iniciais
Na função setup() inicializamos a comunicação serial por meio do comando “Serial.Begin(9600)” e a comunicação entre o Arduino e módulo SIM800L através do comando “MySerial.begin(9600)”.
Logo em seguida, definimos a variável “sensorPin” como entrada (INPUT).
5. Realizar leitura do sensor e enviar SMS
Iniciamos a função void loop() realizando a leitura do sensor de presença / movimento PIR e guardando o resultado na variável “leitura”. Lembrando que o sensor retorna nível lógico alto (HIGH) quando detecta movimento.
Em seguida, usamos a estrutura condicional if-else para verificar se o sensor detectou presença / movimento. Se a condição (leitura == HIGH) for verdadeira, uma mensagem SMS deve ser enviada. Para tal, chamamos a função enviarsms();
6. Criar função enviarsms()
Em seguida, criamos a função enviarsms, responsável por enviar o SMS quando o sensor detectar presença / movimento.
Nesta função, usamos os comandos AT para realizar a comunicação serial com o módulo GSM GPRS SIM800L.
O comando “mySerial.println(“AT”);” testa a comunicação e retorna a mensagem OK se tudo estiver funcionando bem.
Logo em seguida, configuramos o SMS que será enviado. O comando “mySerial.println(“AT+CMGF=1”)” define o módulo no modo SMS Text.
O comando mySerial.println(“AT+CMGS=\”+ZZXXXXXXXXXXX\””)” será usado para configurar o número de telefone ao qual queremos enviar que a mensagem, vale lembrar que “ZZ” corresponde ao código telefônico do país e “XXXXXXXXXXX” corresponde ao número de telefone com o DDD.
Por fim, basta escrever a mensagem que será enviada por meio do comando “mySerial.print(“ATENCAO!\n\nPRESENCA DETECTADA”)”. A mensagem deve estar entre parênteses.
Além disso, chamamos a função “updateSerial()” .
7. Criar função updateSerial()
A função updateSerial() será responsável por verificar se a comunicação serial está disponível e realizar a leitura dos dados seriais de entrada do Arduino.
/* - SISTEMA DE SEGURANÇA COM ENVIO DE MENSAGEM SMS USANDO SENSOR DE PRESENÇA E MÓDULO SIM800L - ================================================= === BLOG DA ROBOTICA - www.blogdarobotica.com === ================================================= Autor: Jonas Souza 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 ================================================== */ #include <SoftwareSerial.h> //Adiciona da biblioteca SoftwareSerial.h int sensorPin = 7; //Pino do Arduino conectado ao sensor de presença int leitura = 0; //Variável para armazenar a leitura do sensor SoftwareSerial mySerial(3, 2); //Cria objeto mySerial passando como parâmetro as portas digitais 3 e 2 void setup() { Serial.begin(9600); //Inicializa a comunicação serial mySerial.begin(9600); //Inicializa comunicação entre o SIM800L e o Arduino pinMode(sensorPin, INPUT); //Define sensorPin como entrada } void loop() { leitura = digitalRead(sensorPin); //Realiza a leitura do sensor de presença Serial.println(leitura); delay(2000); if (leitura == HIGH){ //Se leitura for igual a HIGH, o movimento foi detectado enviarsms(); //Chamada da função que será responsável por enviar o SMS delay(5000); //Tempo de espera entre as mensagens de detecção } } void enviarsms() { Serial.println("Inicializando..."); //Escreve mensagem no monitor serial delay(1000); //Intervalo de 1 segundo mySerial.println("AT"); //Inicializa comunicação entre o SIM800L e o Arduino updateSerial(); //Chamada da função updateSerial() mySerial.println("AT+CMGF=1"); //Configuração do modo SMS text updateSerial(); //Chamada da função updateSerial() mySerial.println("AT+CMGS=\"+5577998077522\""); //Número de telefone que irá receber a mensagem, “ZZ” corresponde ao código telefônico do pais e “XXXXXXXXXXX” corresponde ao número de telefone com o DDD updateSerial(); //Chamada da função updateSerial() mySerial.print("ATENÇÃO! PRESENCA DETECTADA"); //Texto que será enviado no SMS updateSerial(); //Chamada da função updateSerial() mySerial.write(26); //confirmação das configurações e envio dos dados para comunicação serial. } void updateSerial() { while (mySerial.available()) //Verifica se a comunicação serial está disponível { Serial.write(mySerial.read()); //Realiza leitura serial dos dados de entrada Arduino } delay(500); //Intervalo de 0,5 segundos }
Com o código pronto, faça o upload do código para o Arduino. Quando o sensor de presença / movimento PIR detectar presença / movimento uma mensagem SMS será enviada para o número definido no código.
Espero ter ajudado,
Obrigado a todos e em caso de dúvidas deixe seu comentário abaixo!
Att. Jonas Souza
Graduando em Engenharia Elétrica.