Quante reti Wi-Fi ci sono intorno a noi e che potenza di segnale hanno?

Questa utile e interessante applicazione consente di conoscere la potenza di segnale ed elencare le reti WiFi presenti intorno ad ESPertino ma, soprattutto, di apprendere quanto più possibile l'utilità di alcune funzioni adibite alla gestione completa del modulo wireless della nostra scheda. Questa pillola informativa è il punto di partenza per la realizzazione di applicazioni di monitoraggio e controllo dei collegamenti informatici in aria libera presenti intorno a noi.

Introduzione

Realizziamo, questa volta, una utile applicazione che sembra essere fatta apposta per ESPertino. Si tratta di un monitor di reti WiFi, ossia una sorta di sistema di visualizzazione dei collegamenti wireless che sono presenti, in un dato momento, attorno al nostro ESPertino. Uno sketch piccolo piccolo, appositamente creato per lo scopo, provvede a "raccogliere" tutti i segnali WiFi adiacenti, per poi visualizzarli sul monitor seriale dell'IDE di Arduino.

Nessun collegamento o cablaggio devono essere effettuati sulla scheda. Sarà lo stesso unico modulo WiFi dell'ESP-32 a sovrintendere a tutte le operazioni di monitoraggio.

Passiamo subito alla descrizione dello sketch, veramente molto corto e semplice, proposto qui sotto nella sua integrità:

 

//--------------------------------------------
//        Monitoraggio delle reti WiFI
//          by Giovanni Di Maria
//--------------------------------------------
#include <WiFi.h>
void setup() {
   Serial.begin(9600);
}
void loop() {
   byte numero_reti = WiFi.scanNetworks(); // Conta reti WiFi
   Serial.print("Le reti Intorno a te sono: ");
   Serial.println(numero_reti);
   Serial.println(); 
   for (int k = 0; k < numero_reti ; k++) {
       Serial.print(k);
       Serial.print(") "); 
       Serial.print(WiFi.SSID(k));   // Visualizza il nome della rete
       String cSpazi="                                   ";
       Serial.print(cSpazi.substring(1, 35-(WiFi.SSID(k).length())));  // Visualizza tutte le informazioni allineate, con una stringa di spazi variabile
       Serial.print("Segnale: ");
       Serial.print(WiFi.RSSI(k));   // Visualizza la potenza della rete
       Serial.println(" dBm");
   }
   Serial.println("=============================================================");       
   delay(10000);
}

 

Il listato inizia con l'importante inclusione del file "WiFi.h". Si procede, quindi, all'impostazione della velocità della porta seriale, usata qui solamente come mezzo di messaggistica rivolto all'utente finale, all'interno nella funzione setup(). La funzione loop(), molto più importante ed eseguita ciclicamente all'infinito, esegue i seguenti passi:

  • Assegna alla variabile "numero_reti" il numero delle reti WiFi rilevate dalla potente funzione WiFi.scanNetworks(). Tale informazione è visualizzata sul monitor seriale;
  • Tramite un ciclo iterativo, realizzato con la variabile "k" da 0 al numero di reti meno 1, sono visualizzati, sempre sul monitor seriale, gli elementi del vettore WiFi.SSID(k), che contiene i nomi delle reti WiFi trovate, e del vettore WiFi.RSSI(k), che contiene le relative forze del segnale ricevuto, espresse in dBm. Il lettore presti molta attenzione proprio su questo ciclo di loop.

La scansione "dell'etere" si ripete ogni 10 secondi, ma tale valore può essere modificato, secondo le proprie esigenze.

Il programma parte subito, dopo aver programmato ESPertino. Le informazioni visualizzate sul monitor seriale sono visibili in figura 1. Si noti il numero di reti WiFi trovate (posto in alto), l'elenco progressivo di tali reti (a sinistra) e l'elenco delle relative potenze del segnale (a destra). Si noti, altresì, che l'ordine dell'elenco è stabilito in base alla stazione più potente a quella meno potente. Il tutto in maniera automatica.

Figura 1: il sistema di monitoraggio reti WiFi durante il suo funzionamento

Figura 1: il sistema di monitoraggio reti WiFi durante il suo funzionamento

Idee di applicazioni

Con questo progetto minimale sorgono spontaneamente tanti utilizzi alternativi al fine della realizzazione di applicazioni più disparate, magari estremamente utili. Elenchiamo qualche spunto:

  • L'utente potrebbe realizzare un sistema per controllare quale rete WiFi sia la più presente e attiva in un certo intervallo di tempo. Per raggiungere lo scopo è sufficiente contare il numero di volte in cui essa sia presente nell'elenco;
  • Un'altra idea da realizzare potrebbe essere quella che visualizza, ad esempio nell'arco di una settimana, quale sia stata la rete WiFi più potente;
  • Ancora, si potrebbe costruire un prototipo che emetta un suono di allarme (collegato ad una porta di uscita digitale) qualora una determinata rete WiFi venisse rilevata da nostro ESPertino;
  • Si potrebbe registrare il numero più alto di reti WiFi della zona) nell'arco di un anno;
  • I dati raccolti nel monitor seriale si potrebbero collezionare in un grosso file di testo. Con un programma di Database, poi, si potrebbero "tirare fuori" le più disparate interrogazioni statistiche;
  • Con i dati raccolti si potrebbero disegnare diversi tipi di grafici su qualunque parametro che interessi, come mostrato in figura 2;
  • E altre infinite idee.
Figura 2: un grafico riportante la registrazione delle potenze medie di varie reti WiFi

Figura 2: un grafico riportante la registrazione delle potenze medie di varie reti WiFi

Conclusioni

Come si è notato all'interno dello sketch non è stato necessario collegare ESPertino al proprio Router WiFi di  casa propria, con delle credenziali, dal momento che non si devono effettuare transazioni di dati. L'oggetto WiFi, infatti, deve solo interrogare "l'etere" al fine di carpire e di "catturare" tutti i segnali in radio frequenza in zona.

Questo interessante progetto costituisce la base iniziale da cui partire per realizzare sistemi più complessi ed importanti, magari a corredo di altre realizzazioni con ESPertino.

Per concludere, tale programma mi è stato particolarmente utile per  posizionare al meglio il router WiFi di casa mia (visualizzato quasi sempre al primo posto, per via del potentissimo segnale) e la sua relativa antenna, al fine di poter ottenere la più elevata potenza di emissione e coprire una maggiore distanza, questo grazie alla possibilità di osservare, in tempo reale, la qualità del segnale.

 

Iscriviti e ricevi GRATIS
Speciale Pi

Fai subito il DOWNLOAD (valore 15€) GRATIS

2 Commenti

  1. Giovanni Di Maria Giovanni Di Maria 7 giugno 2017

Scrivi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Iscriviti e ricevi GRATIS
Speciale Pi

Fai subito il DOWNLOAD (valore 15€) GRATIS