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.

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