Nei precedenti articoli abbiamo visto che cos'è Raspberry Pi Pico e come sfruttare Micropython. In questo nuovo articolo scopriremo come sfruttare la memoria flash di Raspberry Pi Pico ed effettuare il salvataggio dati.
Raspberry Pi Pico l'abbiamo capito: è una scheda a microcontrollore molto interessante, soprattutto se accompagnata all'uso di Micropython. Abbiamo scoperto assieme che si può programmare non solo tramite riga di comando, ma anche tramite Thonny oppure per chi lo desidera tramite Visual Studio Code.
Non solo!
Come esposto nel primo articolo, ma anche nel primo video su Raspberry Pi Pico, esso supporta memorie flash fino a 16 MB! Questo significa che, oltre al codice in Micropython, possiamo sfruttarla per salvare in maniera persistente dei dati.
Ma prima di cominciare, permettimi di presentarmi: sono Lorenzo Neri: chief education officer di Elettronica Open Source, mi occupo di realizzare contenuti educativi per aiutare persone come te a comprendere meglio questo mondo!
Il codice
Come esempio utilizzeremo la lettura delle temperature. Raspberry Pi Pico monta un sensore di temperature "built-in". Questo significa che non abbiamo bisogno di hardware esterno per effettuare la rilevazione della temperatura. Come abbiamo visto nell'articolo in cui viene introdotto l'uso di Visual Studio Code, utilizzeremo due librerie fatte apposta da casa Raspberry per rilevare la temperatura e temporizzare il ciclo con cui ripetere la rilevazione.
Manca un pezzo: il salvataggio dei dati.
Per questo, ci è sufficiente usare la libreria Python dei file e crearne uno di tipo "txt".
Il codice da usare è il seguente:
# librerie necessarie import machine import utime # usiamo l'ADC della scheda per prendere la temperatura sensor_temp = machine.ADC(4) # fattore di conversione necessario conversion_factor = 3.3 / (65535) # cicliamo all'infinito while True: # leggiamo la temperatura lettura = sensor_temp.read_u16() * conversion_factor # correggiamo assieme al fattore di conversione temperatura = 27 - (lettura - 0.706)/0.001721 # stampiamo a video print(temperatura) # apriamo il nostro file in modalità "append" file_dati = open("temperature.txt","a") # scriviamo nel file file_dati.write(str(temperatura)+" - ") # chiudiamo il file in modalità "flush" file_dati.flush() # attendiamo due secondi utime.sleep(2)
Siccome Python, lo abbiamo visto, è puntiglioso con l'indentazione, lascio un link per scaricare il codice: Clicca qui per scaricare il codice.
Esecuzione
Per far avvenire l'esecuzione è sufficiente collegare la scheda a una sorgente di alimentazione: il ciclo è "infinito" poiché stiamo usando la condizione "True" per farlo. Il codice si occuperà sia di rilevare una temperatura ogni due secondi, sia di aprire il file. Il file viene aperto in modalità "append": questo significa che la prima volta il file verrà creato, dalla seconda in poi i nuovi contenuti vengono aggiunti in coda a quelli esistenti. Viene usato, per leggere meglio le temperature, il carattere separatore "-": per questo viene aggiunto all'interno della stringa da salvare sul file.
Oltre a ciò, viene mostrata sulla console la temperatura letta ad ogni ciclata del ciclo:
Lettura del file
Il file non è lì solo per essere riempito. Al contrario.
Per farlo, è sufficiente scollegare e collegare nuovamente la scheda alla porta USB.
Tramite l'utilizzo della CLI, o tramite i terminali messi a disposizione da Thonny o Visual Studio Code, una volta stabilita la connessione con Raspberry Pi Pico, ci salviamo in una variabile il file:
fileDaLeggere = open("temperature.txt")
In questo caso non impostiamo il secondo argomento nella funzione "open": questo perché non dobbiamo scrivere ma leggere soltanto:
Arrivati a questo punto, usiamo il metodo "read()" per leggere il contenuto del file: