Internet de les coses amb ESP32 i ESP8266

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

Analitzem quines connexions de xarxa hi ha disponibles

El programa que hi ha a continuació mira quines xarxes Wi-Fi hi ha disponibles i, per a cada una, ens indica la qualitat del senyal i el mètode de xifratge.

// 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
byte MAC[6];    // Per guardar l'adreça MAC
byte MAC_bssid[6];
int numXarxes;    // Nombre de xarxes trobades
void setup() {    // Inicialització
    Serial.begin(9600);
    while (!Serial) {
        ;    // Espera que hi hagi la connexió sèrie oberta
    }
    // Comprova si hi ha el mòdul Wi-Fi disponible:
    if (WiFi.status() == WL_NO_MODULE) {
        Serial.println("No s'ha trobat el mòdul Wi-Fi");
        while (true);    // Es bloqueja aquí
    }
    String firmware = WiFi.firmwareVersion();
    if (firmware < "1.0.0") {
        Serial.println("Cal actualitzar el firmware");
    }
    // print your MAC address:
    WiFi.macAddress(MAC);    // Mira l'adreça MAC de la placa
    Serial.print("Adreça MAC: ");
    mostraMAC(MAC);
}
void loop() {    // Programa que es repeteix indefinidament
    Serial.println("-----------------------------");
    Serial.println("Cercant xarxes disponibles...");
    numXarxes = WiFi.scanNetworks();    // Mirem quantes xarxes hi ha disponibles
    if (numXarxes == -1) {
        Serial.println("No s'ha trobat cap xarxa Wi-Fi");
    } else {
        Serial.print("S'han trobat ");
        Serial.print(numXarxes);
        Serial.println(" xarxes");
        for (int k = 0; k < numXarxes; k++) {
            Serial.print(k);
            Serial.print("-\t");    // Posa un guió seguit d'un tabulador
            Serial.print(WiFi.SSID(k));
            Serial.print("\tCanal: ");
            Serial.print(WiFi.channel(k));
            Serial.print("\tQualitat: ");
            Serial.print(WiFi.RSSI(k));
            Serial.print(" dBm");
            Serial.print("\tMAC: ");
            WiFi.BSSID(k, MAC_bssid);
            mostraMAC(MAC_bssid);
            Serial.print("\tXifratge: ");
            Xif(WiFi.encryptionType(k));
        }
        delay(10000);
    }
}
void Xif(int tipus) {
    switch (tipus) {
	    case ENC_TYPE_WEP:
            Serial.println("WEP");
            break;
        case ENC_TYPE_TKIP:
            Serial.println("WPA");
            break;
        case ENC_TYPE_CCMP:
            Serial.println("WPA2");
            break;
        case ENC_TYPE_NONE:
            Serial.println("Sense xifratge");
            break;
        case ENC_TYPE_AUTO:
            Serial.println("Automàtic");
            break;
        case ENC_TYPE_UNKNOWN:
        default:
            Serial.println("Desconegut");
            break;
    }
}
void mostraMAC(byte mac[]) {
    for (int i = 5; i >= 0; i--) {
        if (mac[i] < 16) {
            Serial.print("0");
        }
        Serial.print(mac[i], HEX);
        if (i > 0) {
            Serial.print(":");
        }
    }
    Serial.println();
}

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
    }

A continuació tenim una mostra de la resposta obtinguda:

Adreça MAC: 84:0D:8E:34:06:8C
-----------------------------
Cercant xarxes disponibles...
S'han trobat 4 xarxes
0-	eduroam		Canal: 13	Qualitat: -64 dBm	MAC: 00:27:E3:9D:57:00	Xifratge: Desconegut
1-	UPCguest	Canal: 13	Qualitat: -64 dBm	MAC: 00:27:E3:9D:57:02	Xifratge: Sense xifratge
2-	UPCguest	Canal: 1	Qualitat: -79 dBm	MAC: 64:F6:9D:CE:D1:E2	Xifratge: Sense xifratge
3-	eduroam		Canal: 1	Qualitat: -80 dBm	MAC: 64:F6:9D:CE:D1:E0	Xifratge: Desconegut
-----------------------------
Cercant xarxes disponibles...

El nivell de senyal és excel·lent en les dues primeres xarxes i molt bo a les altres dues.

 

 

 

 

 

 

 

 

 

 

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