I lettori come te aiutano a sostenere MUO. Quando effettui un acquisto utilizzando i link sul nostro sito, potremmo guadagnare una commissione di affiliazione. Per saperne di più.

Se hai eseguito il tuo Raspberry Pi Pico W per molto tempo, è probabile che alla fine noterai che il tuo programma non è più in esecuzione.

Uno dei motivi per cui i programmi falliscono per un lungo periodo di tempo riguarda l'affidabilità del Wi-Fi. Se il tuo Wi-Fi diventa inaffidabile, il primo istinto del Pico W è quello di andare in crash.

Vediamo come possiamo rendere Pico W più resiliente in MicroPython.

Quali sono le cause dell'affidabilità Wi-Fi su Pico W?

Il tuo Wi-Fi si disconnette molte volte al giorno. È difficile percepirlo sul tuo telefono o PC perché i sistemi operativi e il software hanno rappresentato questo difetto garantito delle reti Wi-Fi.

Con Pico W, un semplice script che si collega e recupera i dati si blocca se il tuo Pico W perde la connessione. L'unica soluzione è resettarlo a fondo togliendo l'alimentazione.

instagram viewer

Se il tuo progetto richiede la registrazione dei dati per ore alla volta, non vuoi monitorare costantemente le interruzioni.

La gestione degli errori è la chiave per garantire che il tuo programma possa sopravvivere attraverso connessioni scadenti.

Migliorare la potenza del segnale Wi-Fi aiuterà?

Potresti considerare se dovresti usare una rete mesh per aumentare la potenza del segnale. Sì, aiuterà, ma non al punto da poter evitare scenari in cui si verifica un calo della connessione.

In un esperimento, abbiamo posizionato un Pico W in una posizione al secondo piano di una casa e un altro Pico W accanto al router Wi-Fi. La differenza nel risultato è che il dispositivo al secondo piano si è disconnesso prima del Pico W situato più vicino al router. Anche quest'ultimo alla fine ha avuto una connessione interrotta, come si evince dalle lacune nella raccolta dei dati.

Sfortunatamente, mentre migliorare la potenza del segnale riduce il problema, non lo risolve. Quindi diamo un'occhiata ad alcuni metodi per scrivere codice più resiliente.

Metodo software di connessione e disconnessione

Se il tuo progetto richiede solo una comunicazione unidirezionale, questo metodo sarebbe perfetto per questo. Alcuni esempi potrebbero essere i registratori di temperatura che devono essere eseguiti per un lungo periodo di tempo ma registrano i dati solo una volta ogni tanto.

Questo risolve il problema degli arresti anomali che si verificano quando il tuo Pico W pensa di essere connesso, ma quando tenta di inviare dati a un endpoint, si rende conto che è offline, quindi procede all'arresto anomalo.

La chiave di questo metodo prevede una procedura in cui il programma viene eseguito in un ciclo infinito. All'interno di questo ciclo è presente una funzione che verrà eseguita dopo che è trascorso un periodo di tempo specifico. Questa funzione collegherà il Pico W al Wi-Fi, farà il suo lavoro (ad esempio invierà dati a un server), quindi si disconnetterà.

Ripristino hardware del software

L'uso del codice di hard reset di MicroPython può aiutarti a garantire che il tuo Pico W funzioni anche se non intervieni. Vedi il nostro introduzione a MicroPython se hai bisogno di aiuto, esegui questo comando:

importare macchina
macchina.Ripristina()

Diciamo che perdi la connessione a mezzanotte mentre dormi. Se non si dispone di un hard reset del software, è necessario reimpostare manualmente il programma al mattino. Ciò potrebbe causare otto ore di perdita di registrazione dei dati.

Se hai un hard reset del software, che hai inserito nel tuo blocco di codice di gestione degli errori, il Pico W si ripristinerà da solo.

Lo svantaggio di questo è che in caso di hard reset, lo stato del tuo programma andrà perso e se il tuo programma si arresta in modo anomalo, l'hard reset del software non si attiverà.

Utilizza il timer watchdog integrato di Pico W

Un timer watchdog hardware è fondamentalmente un dispositivo che ripristinerebbe il tuo Pico W in caso di malfunzionamento. I timer watchdog sono timer per il conto alla rovescia. Se ricevono un segnale prima che il conto alla rovescia raggiunga lo zero, il conto alla rovescia viene azzerato. Tuttavia, se il conto alla rovescia raggiunge lo zero, il Pico W verrà ripristinato.

In MicroPython, il codice di base è come tale:

da macchina importare WDT
wdt = WDT(timeout=1000) #timeout è in ms
wdt.foraggio() #reimpostaconto alla rovescia

Puoi visitare Documentazione WDT di MicroPython per saperne di più e anche Documenti SDK ufficiali di Pico per indicazioni su C++.

Rendi la connessione del tuo Pico W a prova di bomba

Per dare al tuo Pico W la migliore possibilità di funzionare a tempo indeterminato su una connessione Wi-Fi, dovrai fare più cose.

Innanzitutto, assicurati che la connessione Wi-Fi sia ragionevolmente forte. Sebbene il codice possa mitigare alcune sfide con il Wi-Fi, a seconda del metodo utilizzato, a volte può causare la perdita dello stato del programma o la perdita di punti dati.

In secondo luogo, il programma deve disporre di un metodo per ripristinare le connessioni Wi-Fi interrotte in modo da poter ottenere un servizio continuo.

Con questi passaggi in atto, puoi essere sicuro di una connettività più affidabile dal tuo Pico W.