fbpx

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.

A Figura mostra, de maneira ilustrativa, um sistema de segurança, indicando que foi detectada a presença de movimento em um determinado local
Figura 1 – Sistema de segurança que detecta presença e envia mensagens SMS usando 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

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.

A figura mostra o circuito de funcionamento do sensor GSM sim 800l com o sensor pir, para envio de sms quando for detectado a presença de uma pessoa no ambiente.
Figura 2 – Circuito para o projeto do sistema de segurança com envio de mensagem SMS

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

Dúvidas? Deixe seu comentário

Jonas Souza

Graduando em Engenharia Elétrica. Atua no setor desenvolvimento de tutoriais para o Blog da Robótica.

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