Como construir um sistema de segurança residencial com notificação do WhatsApp

Como construir um sistema de segurança residencial com notificação do WhatsApp

Um alarme de segurança detecta entrada não autorizada em uma casa ou edifício. No passado, estes dispositivos de segurança simplesmente acionavam uma sirene alta quando uma intrusão era detectada. À medida que a tecnologia avançava, os sistemas foram equipados com modems GSM para enviar um alerta por SMS ao proprietário da casa ou do edifício sempre que fosse detectada uma intrusão.

Uma desvantagem do sistema de alarme baseado em GSM é que não há garantia de que a mensagem foi entregue ou recebida. Por exemplo, o modem GSM pode não conseguir se conectar a uma rede celular e enviar o alerta. Portanto, os usuários podem não ser notificados de que o sistema de alarme de sua casa ou prédio está ativado.

Felizmente, as redes WiFi tornaram-se mais difundidas e confiáveis. É mais do que provável que um microcontrolador doméstico ou de escritório possa acessar a Internet e os serviços da Web para enviar corretamente uma mensagem de alerta de segurança via SMS, e-mail, WhatsApp, Telegram ou outro aplicativo de comunicação.

Neste projeto, projetaremos um alarme de segurança baseado em ESP32 que enviará notificações para um número do WhatsApp após a detecção de uma intrusão. O sistema não requer hardware adicional para fazer isso. Em vez disso, ele usa a API Whatabot para enviar mensagens de alerta para o número do Whatsapp.

Como uma sofisticada placa de desenvolvimento WiFi, o ESP32 se conecta facilmente a uma rede WiFi. O circuito deste projeto é tão compacto que pode ser instalado como um alarme secreto, escondido em qualquer lugar de uma casa ou prédio de escritórios. Ou, se não for usado secretamente, pode ser integrado a uma sirene para ativar um alarme ao detectar uma intrusão.

Componentes necessários

1. ESP32 x1
2. Sensor pir x1
3. LEDx1
4. Resistor 330Ω
5. Conectando fios/fios de jumper

Conexões de circuito
É necessária a interface de um sensor PIR com ESP32 para construir este sistema de segurança. O sensor PIR possui três terminais: VDD, saída e terra.

  • Conecte os terminais VDD e GND do sensor PIR aos pinos Vin e GND do ESP32, respectivamente.
  • Conecte o terminal de saída do sensor PIR ao pino D13 do ESP32.
  • Conecte um LED ao pino D14 do ESP32 para indicar visualmente o acionamento do alarme. Ou, em vez do LED, o pino ESP32 também pode ser conectado a uma sirene eletrônica.

API Whatabot
Usaremos a API Whatabot para enviar uma mensagem de segurança para o WhatsApp a partir do ESP32 (saiba como fazer isso aqui). Antes de prosseguir, você deve ter uma conta ativada pela API Whatabot, um número de celular registrado no serviço da web e uma chave API para a conta.

Esboço do Arduino
Assim que as conexões do circuito estiverem concluídas, conecte o ESP32 ao seu computador e abra o Arduino IDE. você deve ter o complemento ESP32 instalado no Arduino IDE ou ele não reconhecerá a placa ESP32. (Para saber como instalar o complemento ESP32, aqui).

Depois que o ESP32 for detectado com sucesso no Arduino IDE, selecione a porta à qual o ESP32 está conectado em seu computador. Copie e cole o esboço abaixo no editor de código. Salve o código com um nome de arquivo adequado.

Lembre-se, você deve substituir o SSID e NETWORK_KEY pelo SSID e chave de rede do seu Rede WiFi no código. Da mesma forma, você precisará substituir MOBILE_NUMBER e API_KEY pelo seu número de celular registrado no Whatabot e chave API no código.

Por último, compile e carregue o código no ESP32.

Como funciona
O sensor PIR faz interface com o ESP32 para detectar movimento em uma área definida. Caso seja detectado movimento não autorizado, o ESP32 sinaliza um alarme. Ele também se conecta a um servidor NTP para obter o carimbo de data/hora atual.

Em seguida, ele envia uma mensagem WhatsApp para o número de celular cadastrado usando a API Whatabot. O alerta do WhatsApp contém o carimbo de data/hora da invasão. Uma vez entregue a mensagem, o sistema de alarme descansa por cinco minutos, para que notificações contínuas não sejam enviadas para o número cadastrado.

O código
O esboço começa importando as bibliotecas WiFi.h, HTTPClient.h, UrlEncode.h e time.h. O WiFi.h se conecta à rede WiFi. A biblioteca HTTPClient faz a chamada da API por meio de uma solicitação HTTP. A biblioteca UrlEncode codifica o link para a chamada da API. A biblioteca de horário processa o carimbo de data/hora recuperado do servidor NTP.

As variáveis ​​são declaradas para armazenar a URL do servidor NTP, GMT (deslocamento em segundos), horário de verão (deslocamento em segundos) e a data atual (incluindo hora, hora, minutos e segundos).

As variáveis ​​são então declaradas para armazenar o SSID e a chave de rede da rede WiFi. Em seguida, as variáveis ​​são declaradas para armazenar o número do celular registrado e a chave API do serviço web Whatabot. As variáveis ​​são declaradas para o sensor PIR e as atribuições dos pinos do LED.

A função definida pelo usuário, sendWhatsappMessage , é definida para entregar uma mensagem de texto que é passada como argumento para o número de celular registrado. Esta função armazena o URL da API como uma variável.

Um objeto da classe HTTPClient é instanciado. O objeto HTTPClient faz a chamada da API usando o URL da API. A função http.addheader é chamada para adicionar um cabeçalho à solicitação HTTP.

O código de resposta é monitorado chamando o método http.GET . Se a chamada da API for bem-sucedida, a mensagem do WhatsApp será entregue no número de celular cadastrado. Se a chamada não for bem-sucedida, mensagens de erro serão impressas no console (ou seja, no monitor serial do Arduino). A solicitação HTTP é encerrada chamando o método http.end .

A função definida pelo usuário, currentLocalTime , é definida para recuperar o carimbo de data/hora atual do servidor NTP. Esta função instancia uma estrutura de carimbo de data/hora, recuperando o carimbo de data/hora chamando o método getLocalTime . Os membros da estrutura timestamp são acessados ​​e agregados em uma string formatada. A função atualiza a variável current_time com a string formatada contendo o carimbo de data/hora atual.

Na função setup , a taxa de transmissão para comunicação serial é definida como 115200 bps para registrar as mensagens do console. O pino conectado ao terminal de saída do sensor PIR é definido como entrada digital. O pino conectado ao LED é definido como saída digital zn e é colocado em nível BAIXO por padrão.

A conexão de rede WiFi é iniciada chamando o método WiFi.begin . As configurações de hora local com o servidor NTP são definidas chamando a função configTime .

Na função loop , o estado do pino de saída do sensor PIR é pesquisado. Se a saída do sensor PIR for HIGH, o alarme é ativado pressionando o pino do LED para HIGH.

O carimbo de data/hora atual é recuperado do servidor NTP chamando a função currentLocalTime definida pelo usuário. Uma mensagem do WhatsApp é enviada para o número de celular cadastrado, sinalizando uma intrusão (com carimbo de data e hora) chamando a função de envio WhatsappMessage definida pelo usuário. Caso contrário, o alarme ficará silencioso.

Resultados

contenido relacionado

Regresar al blog

Deja un comentario

Ten en cuenta que los comentarios deben aprobarse antes de que se publiquen.