Monitoriamo la rete wi-fi con Wio dev board RP2040

Python RP2040 Wio

Impariamo come utilizzare il microcontroller Wio dev board RP2040 distribuito da Seeed Studio per attività di monitoraggio della rete wireless.

Abbiamo recentemente presentato la scheda Wio Dev Board RP2040 distribuita da Seeed Studio, un microcontrollore ad alte prestazioni basato su processore ARM Cortex M0+ dual core. Oggi impareremo a programmarne le attivbità attraverso il linguaggio Python.

Il progetto che presenteremo consentirà di mantenere sotto controllo le caratteristiche di trasmissione della nostra rete wireless.

Il programma base

Per prima cosa occorre definire un programma in grado di acquisire le informazioni attraverso l’antenna wifi del microcontrollore.

Apriamo il nostro fido Thonny, e dopo aver installato l’ultima versione del firmware della scheda, scriviamo quanto segue:

Dopo aver importato le librerie micropython necessarie alla connessione, creiamo la connessione N1 come WLAN_SPI, ed attiviamola. Quindi richiediamo la lista delle reti presenti nelle vicinanze (N1.scan) e stampiamo il risultato. Infine,se la connessione funziona, stampiamo la configurazione della scheda.

Il risultato è il seguente:

wio rp2040

Interessante… ma come può tornarci utile?

Python is your friend

Il metodo isconnected() restituisce una lista di oggetti. Possiamo accedere a ciascuno di essi attraverso una notazione posizionale in questo modo:

Allo stesso modo possiamo eseguiire la scansione di lis, che contiene i valori della scansione (come indicato a riga 13-15 del precedente listato). Ciascun elemento della lista è una stringa, quindi è possibile estrarre i parametri necessari attraverso le funzioni di Python. Poniamo di voler gestire un piccolo db contenente nome della rete e potenza del segnale in dB: sarà sufficiente creare una semplice funzione per acquisire i valori attraverso il metodo .split() e salvare i parametri posti in posizzione 1 e 2.

A questo punto non ci resta che salvare i dati acquisiti in un database per gestirne in seguito la serie temporale.

Ma siamo su un microcontrollore, e la memoria a disposizione potrebbe non essere sufficiente… come fare?

Socket programming

L’idea è quella di utilizzare un sistema client-server basato su socket programming, in cui il client è rappresentato dal mistro Wio RP2040 ed il server da un PC in rete.

Il sorgente del client verrà modificato in questo modo:

Stavolta il client, anziché stampare la lista di dati a terminale, provvederà a formattarli ed inserirli nelle liste reti e potenza.

A riga 28 verrà effettuata la connessione al socket server, mentre il loop alle righe 30-33 provvederà a creare le stringhe di informazioni da inviare.

L’ultimo comando chiude la connessione.

Lato server, la situazione è ancora più semplice:

Il codice definisce le impostazioni di ascolto del server (righe 13-16), quindi, se tutto è andato bene, si appresta a ricevere l’indirizzo del client per stampare un messaggio di avvenuta connessione.

Quindi si pone in configurazione di ascolto (ricevi_comandi(), riga 3), ricevendo le stringhe trasmesse dal client, decodificandone il contenuto e stampando a video il risultato.

Note di implementazione:

Il sistema è nato per valutare le caratteristiche della scheda Wio RP2040 di SeeedStudio (reperibile sul loro sito). I programmi presentati sono stati scritti cercando di valutare se, con l’ultima release del firmware, il prodotto fosse “compliant” con le librerie di programmazione di MicroPython. I test che abbiamo effettuato mostrano che il sistema client server funziona come previsto, anche se l’implementazione dei sorgenti non è a prova di errore.

Un possibile sviluppo successivo potrebbe essere rappresentato da una modifica al server: a riga 7, anziché limitarci a stampare una stringa, potremmo inviare le informazioni verso un database. Magari dopo aver estratto i componenti come abbiamo visto sul client. Utilizzando il modulo RTC presente sulla scheda, potremmo temporizzare gli invii ogni tot minuti, ed avere sul database l’insieme dei valori di copertura della rete nel medio periodo. Oppure lanciare un allarme in caso di calo della potenza del segnale. Con un po’ di fantasia è facile rendertsi conto delle infinite possibilità di applicazionie della scheda.

Considerazioni finali

Dopo un nutrito scambio di informazioni e messaggi con Seeed Studio, siamo riusciti a mettere le mani su un firmware della scheda sufficientemente stabile, che rende la board perfettamente utilizzabile. Abbiamo tenuto la scheda in funzione per diverse ore, senza riscontrare alcun surriscaldamento o blocco del funzionamento. Riteniamo pertanto di poter concludere i test con un voto più che sufficiente: anche se limitata a 2.4G, la scheda RP2040 in accoppiata con il sistema WiFi risulta vincente in tutte quelle situazioni in cui abbiamo un sistema di controllo distribuito, basato su sensori e pilotato da una MCU, ma desideriamo centralizzarne le informazioni.

Iscrivetevi ai nostri gruppi Telegram…

… e non dimenticate di farlo anche sui social!

 

Definire ciò che si è non risulta mai semplice o intuitivo, in specie quando nella vita si cerca costantemente di migliorarsi, di crescere tanto professionalmente quanto emotivamente. Lavoro per contribuire al mutamento dei settori cardine della computer science e per offrire sintesi ragionate e consulenza ad aziende e pubblicazioni ICT, ma anche perche’ ciò che riesco a portare a termine mi dà soddisfazione, piacere. Così come mi piace suonare (sax, tastiere, chitarra), cantare, scrivere (ho pubblicato 350 articoli scientfici e 3 libri sinora, ma non ho concluso ciò che ho da dire), leggere, Adoro la matematica, la logica, la filosofia, la scienza e la tecnologia, ed inseguo quel concetto di homo novus rinascimentale, cercando di completare quelle sezioni della mia vita che ancora appaiono poco ricche.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.