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
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!
Comments
Comentários