Internet de les coses amb ESP32 i ESP8266

Exemples Referència Plaques   Recursos CITCEA
Projectes Programació Perifèrics   Inici

Mirem si un equip de la xarxa està disponible

El programa que hi ha a continuació fa un ping per saber si un dispositiu de la xarxa està disponible.

// Aquest programa està parcialment basat en els exemples de la pàgina
// https://www.arduino.cc/en/Tutorial/LibraryExamples#wifi1010
#include <SPI.h>    // Carreguem la biblioteca SPI
#include <WiFiNINA.h>    // Carreguem la biblioteca WiFiNINA
const char idXarxa[] = "xarxa-wifi";    // Nom del punt d'accés 
const char contrasenya[] = "contrasenya-wifi";    // Contrasenya de connexió 
int status = WL_IDLE_STATUS;
String nomHost = "recursos.citcea.upc.edu";
int resultat;
void setup() {    // Inicialització
    Serial.begin(9600);    // Monitor sèrie
    while (!Serial) {
        ;    // Esperem que l'usuari s'hagi connectat amb el monitor sèrie
    }
    if (WiFi.status() == WL_NO_MODULE) {
        Serial.println("No s'ha trobat el dispositiu Wi-Fi");
        while (true);    // Bloquegem el programa
    }
    String versio = WiFi.firmwareVersion();
    if (versio < "1.0.0") {
        Serial.println("Convindria actualitzar el firmware");
    }
    while (status != WL_CONNECTED) {
        Serial.print("Connectant a la xarxa ");
        Serial.println(idXarxa);
        status = WiFi.begin(idXarxa, contrasenya);
        delay(10000);    // Ho tornarem a intentar passats 10 s
    }
    Serial.print("Connectat a "); 
    Serial.println(WiFi.SSID());
    Serial.print("Estat de la connexió: ");
    Serial.println(WiFi.status()); 
    Serial.print("Adreça IP del dispositiu: ");
    Serial.println(WiFi.localIP()); 
    Serial.print("Intensitat del senyal: ");
    Serial.print(WiFi.RSSI()); 
    Serial.println(" dBm");
    Serial.println(); 
}
void loop() {
    Serial.print("Fent un ping a ");
    Serial.print(nomHost);
    Serial.print(": ");
    resultat = WiFi.ping(nomHost);
    if (resultat >= 0) {
        Serial.print("Correcte! RTT = ");
        Serial.print(resultat);
        Serial.println(" ms");
    } else {
        Serial.print("Fallada! Codi d'error: ");
        Serial.println(resultat);
    }
    delay(5000);
}

En aquest programa hi ha la condició que el monitor sèrie estigui obert per a que el programa comenci a funcionar. Això ens permet seguir tot el procés encara que triguem a obrir el monitor sèrie. Quan el microcontrolador hagi de funcionar de manera independent de l'ordinador caldrà eliminar les línies següents per evitar aquest bloqueig.

    while (!Serial) {
        ;    // Esperem que l'usuari obri el monitor sèrie
    }

El resultat obtingut al monitor sèrie podria ser:

Fent un ping a recursos.citcea.upc.edu: Correcte! RTT = 20 ms

Si volem fer el ping a una adreça IP hauríem de canviar les tres instruccions marcades en groc per les següents (cada una al seu lloc).

IPAddress ipPing(147, 83, 2, 75);
    Serial.print(ipPing);
    resultat = WiFi.ping(ipPing);

El resultat obtingut al monitor sèrie podria ser:

Fent un ping a 147.83.2.75: Correcte! RTT = 10 ms

Fent un ping a 192.168.1.41: Fallada! Codi d'error: -1

 

 

 

 

 

 

 

 

 

 

Llicència de Creative Commons
Aquesta obra d'Oriol Boix està llicenciada sota una llicència no importada Reconeixement-NoComercial-SenseObraDerivada 3.0.