QUER SABER QUANDO ALGUÉM DA FAMILIA CHEGA A CASA? SENSOR DE PRESENÇA COM ESP32

Vídeo deste Projeto no nosso canal do YouTube:

Após 2 vídeos demonstrativos dos nossos dois mini sites: o nosso mini site de domótica e o nosso mini site de kits educativos; vamos voltar aos nossos tão desejados projetos, e em grande! Neste artigo, vamos explorar uma função bastante utilizada pelos nossos routers, essencial para o seu funcionamento, mas utilizando-a a nosso favor, o tão conhecido “ping”. Vamos descobrir o que essa palavra, o que faz, e para que pode ser útil.

 

  • O que é um Comando Ping?

O comando ping é uma função que recorre ao protocolo ICMP para verificar a presença de dispositivos. Disponível em quase todos os sistemas operacionais, o comando envia uma pequena quantidade de dados pela internet para o dispositivo-alvo, ao que este deve responder ao comando. A resposta mostrada no equipamento que solicitou o ping deverá conter, entre outros dados, o tamanho dos dados recebidos, bem como o tempo de espera pela resposta. Desta forma, e como indiciado no início, o nosso router envia vários destes requests aos nossos dispositivos da rede local, para perceber se ainda estão ligados a ele ou não.
Esta função pode ser útil para pais cujos filhos retornem a casa, depois de um dia de escola, de transportes públicos, ou por um ATL. Assim que o telemóvel da criança se conecte ao router de casa, pode enviar um SMS para o smartphone dos pais a confirmar a sua chegada.

Diagrama de uma Rede Local

 

  • Material Necessário

Vamos experimentar esta função, utilizando uma placa ESP32. Para isso, precisamos dos seguintes componentes:


Imagem Produto Comprar
Placa ESP32-DEVKITC V4 WIFI

2 Breadboards de 830 Pinos

2 Resistências de 220 Ohms

LED Vermelho 5MM

LED Verde 5MM

  • Montagem do Circuito

Vamos interligar todos os componentes anteriormente mencionados, conectando  as resistências em série com os LED’s,, uma para cada LED, e, dos dois conjuntos, ligamos o verde ao pino 4 e o vermelho ao pino 0 da nossa ESP32.

 

  • Arduino IDE

Biblioteca ESP32 Ping

Após selecionar a respetiva placa microcontroladora a utilizar, basta compilar e carregar o seguinte código.

Código

/*Código para o Projeto: Sensor de Presença (Comando Ping) com ESP32
  - Material necessário:
    -> Placa ESP32
    -> 2 Breadboards
    -> 2 Resistência 220 Ohms
    -> 1 LED Vermelho
    -> 1 LED Verde
    -> (OPCIONAL) Jumper Macho-Macho
  Todo o material pode ser adquirido a partir do artigo do nosso blog deste projeto!
  *****************************************************LIGAÇÕES******************************************************
  Vamos ligar o conjunto LED vermelho + resistência ao pino 0 da placa ESP32 e o conjunto do LED verde ao pino 4
  *******************************************************************************************************************
  Para mais informações sobre o projeto:
  www.electrofun.pt/blog/sensor-de-presenca-com-esp32
  Electrofun@2022 ----> www.electrofun.pt
*/

#include <WiFi.h>
#include <ESP32Ping.h>

#define pinoLEDVermelho 0
#define pinoLEDVerde 4

const char* ssid = "SSID"; //Substituir por SSID da sua Rede Local
const char* password =  "PASSWORD"; //Substituir pela Password da sua Rede Local
bool successIP1, successIP2;

void setup() {
  pinMode(pinoLEDVermelho, OUTPUT);
  pinMode(pinoLEDVerde, OUTPUT);
  Serial.begin(115200);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    digitalWrite(pinoLEDVermelho, HIGH);
    digitalWrite(pinoLEDVerde, LOW);
    Serial.println("A conectar ao WiFi...");
    delay(500);
    digitalWrite(pinoLEDVermelho, LOW);
    digitalWrite(pinoLEDVerde, HIGH);
    delay(500);
  }
  digitalWrite(pinoLEDVermelho, HIGH);
  digitalWrite(pinoLEDVerde, HIGH);
  delay(5000);
  digitalWrite(pinoLEDVermelho, LOW);
  digitalWrite(pinoLEDVerde, LOW);
}

void loop() {
  successIP1 = Ping.ping("IP1");
  //successIP2 = Ping.ping("IP2"); //Caso ao dispositivo seja possível atribuir mais do que um IP (por exemplo, o router possuir as duas frequências: 2.4GHz e 5GHz), pode adicionar os dois aqui
  Serial.println("Pinging");
  if (successIP1 == true /*|| successIP2 == true*/) {
    digitalWrite(pinoLEDVerde, HIGH);
    digitalWrite(pinoLEDVermelho, LOW);
    Serial.println("Sucesso!");
  } else {
    digitalWrite(pinoLEDVerde, LOW);
    digitalWrite(pinoLEDVermelho, HIGH);
    Serial.println("FALHA!");
  }
}

Não se esqueçam de ver o nosso vídeo sobre este artigo no nosso canal do YouTube:


Para mais projetos, percorram o nosso blog, onde podem encontrar vários artigos interessantes relacionados com eletrónica, robótica e muito mais! Visitem também o nosso site, onde encontram tudo para eletrónica e robótica!