10 de outubro de 2022

Teste de rede com PING no ESP32

Realizando testes de conexão com o comando Ping no ESP32.

Para monitorarmos a comunicação com outros equipamentos e realizarmos a verificação se a conexão com a internet e/ou rede interna estão ativas.

Segue exemplo de uso:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
/*------------------------------------------------------------------
  Programa : PING NO ESP32 - EXEMPLO DE USO COM BIBLIOTECA ESP32PING
  Autor    : Fellipe Couto [ http://www.efeitonerd.com.br ]
  Data     : 10/10/2022
  ------------------------------------------------------------------*/
#include <WiFi.h>       //Conexão na rede Wifi
#include <ESP32Ping.h>  //https://github.com/marian-craciunescu/ESP32Ping

#define LED_WIFI 2           //Pino led sinalizador do WiFi
#define WIFI_SSID "REDE"     //Nome da rede WiFi
#define WIFI_PWD "PASSWORD"  //Password da rede WiFi

char* remoteHost = "www.google.com";  //IP ou endereço web para realizar o ping

void setup() {
  //Inicia a comunicação serial
  Serial.begin(115200);

  //Configuração do pino
  pinMode(LED_WIFI, OUTPUT);

  //Efetua a conexão com o wifi
  wifiConnect(WIFI_SSID, WIFI_PWD);
}

void loop() {
  Serial.println("\nPing em " + String(remoteHost) + "...");

  //Ping no remoteHost
  if (Ping.ping(remoteHost, 3)) {      //Parâmetros: (remoteHost, quantidade_pings (default=5))
    Serial.print(Ping.averageTime());  //Retorna o tempo médio dos pings
    Serial.println(" ms");
  } else {
    Serial.println("Erro.");
  }

  delay(3000);
}

/*--- EFETUA A CONEXÃO COM O WIFI ---*/
void wifiConnect(char ssid[], char password[]) {
  Serial.print("Connecting to WiFi...");
  //WiFi.config(LOCAL_IP, GATEWAY, SUBNET); //Config IP fixo. Parâmetros tipo IPAddress. IP separado por vírgulas: (XXX, XXX, XXX, XXX)
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    digitalWrite(LED_WIFI, !digitalRead(LED_WIFI));  //Pisca o led para sinalizar wifi ainda não conectado
    Serial.print(".");
    delay(100);
  }
  digitalWrite(LED_WIFI, HIGH);  //Acende o led sinalizando wifi conectado
  Serial.println("\nWiFi Connected!");
  Serial.print("SSID: ");
  Serial.println(ssid);
  Serial.print("IP: ");
  Serial.println(WiFi.localIP());
  Serial.print("Gateway: ");
  Serial.println(WiFi.gatewayIP());
  Serial.print("SubnetMask: ");
  Serial.println(WiFi.subnetMask());
  Serial.print("MacAddress: ");
  Serial.println(WiFi.macAddress());
}

Nenhum comentário:

Postar um comentário