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.
- 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
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!