Alvik : guida all’aggiornamento del firmware

In questo articolo vedremo alcune cose interessanti per fare in modo che il nostro Alvik sia sempre aggiornato: incominceremo ad installare l’editor che ci permetterà di eseguire i nostri programmi scritti in Micropython, vedremo come aggiornare il firmware a bordo dell’STM32 che si trova sulla Alvik Carrier Board e che gestisce il funzionamento di tutto il robot e vedremo, infine, anche come aggiornare l’interprete Micropython a bordo dell’Arduino Nano ESP32.

Arduino Lab For Micropython

Il software da utilizzare per fare tutte le operazioni di scrittura codice, upload/download, upgrade firmware ecc su Alvik è Arduino Lab For Micropython: non avrete altro software all’infuori di questo!

Scaricate sempre l’ultima versione dell’editor utilizzando questo link: https://github.com/arduino/lab-micropython-editor/releases/latest/

Io ho scaricato la versione x64 dato che uso Windows 11 (per cui tutta la trattazione sarà relativa a tale sistema operativo):

Estraiamo il file .zip appena scaricato. Il programma è stand-alone, non necessita quindi di installazione e l’eseguibile lancia quindi già l’editor. Dopo un breve ed intuitivo setup si presenta la schermata dell’editor:

Come vedete ricorda un po’ quella di Arduino IDE. Di default l’editor crea un file nuovo dandogli un nome a caso. Il primo tasto tondo consente di collegarci alla board

Premendo questo tasto, se la board è collegata, si presenta una finestra in cui siamo invitati a scegliere su quale porta COM è collegato l’Arduino Nano ESP32

Una volta collegati compare la finestra del terminale (si chiama REPL, che sta per Read Evaluate Print Loop). Il tasto:

consente di aprire il file manager, ovvero di trasferire files da Arduino Nano ESP32 a PC e viceversa, creare cartelle e nuovi files. Nel menù files dell’editor infatti (almeno per la versione che sto usando io, che attualmente è l’ultima: 0.10) non è presente il menù “nuovo”, per cui andrete a creare nuovi files qui, dal file manager:

In pratica la zona a sinistra rappresenta il contenuto della board, quella a destra il vostro PC. Selezionando un file in un una o nell’altra finestra è possibile copiarlo nella controparte premendo uno dei due tasti freccia al centro tra le due finestre.

Il percorso (porta COM a sinistra o cartella PC a destra) si cambia cliccando semplicemente sopra la scritta, mentre le due icone stilizzate affianco al percorso permettono, rispettivamente di creare una nuova cartella o un nuovo file. Utilizzerete questo sistema per fare un backup dei progetti che avete caricato sulla board, o, al contrario, per caricare sulla board dei programmi che avete sul PC.

Ricordo che il file che deve essere eseguito all’accensione della board si deve chiamare main.py altrimenti non viene eseguito nulla: per eseguire un programma qualsiasi basta fare doppio click sul nome del programma stesso, questo verrà aperto nell’editor e quindi premendo il tasto play sarà eseguito.

Ho già dato dei cenni di programmazione in Micropython in alcuni articoli precedenti, che vi invito a leggere se siete completamente a digiuno.

In ogni caso per tornare alla finestra dell’editor + REPL potete sempre cliccare il tasto:

In caso il REPL non compaia, potete farlo apparire andando con il puntatore nella parte bassa dell’editor fino a quando non compare la manina, quindi tenendo cliccato, trascinate verso l’alto.

Aggiornare il firmware di Alvik

Verifichiamo dapprima la versione corrente del firmware a bordo dell’STM32 digitando i seguenti comandi dal REPL:

from arduino_alvik import ArduinoAlvik
alvik=ArduinoAlvik()
alvik.begin()
alvik.get_version()

Ora andare nel repository github per scaricare l’ultima versione precompilata del firmware (nel momento in cui scrivo è appena uscita la versione 1.0.1)

Cliccando sul file firmware_1_0_1.bin scarichiamo il firmware. Ora bisogna caricarlo a bordo dell’ESP32: possiamo farlo in due modi: upload tramite Arduino Lab for Micropython con il sistema che vi ho illustrato prima oppure manualmente tramite uno script. Il primo metodo l’ho provato e lo trovo decisamente troppo lento per cui procederemo con l’upload tramite script, anche perchè ci consente di imparare qualcosa di nuovo.

Prima di tutto è necessario avere installato python sul pc: scarichiamo e installiamo python. Una volta installato python, lanciamo Windows Power Shell e digitiamo:

pip install mpremote

Questo eseguirà l’installazione di mpremote (che sta per MicroPython remote), utility che serve a comunicare con micropython attraverso la porta seriale:

con mpremote adesso possiamo copiare i files sulla board in maniera più veloce. Da esplora risorse andiamo nella cartella dove abbiamo scaricato il firmware, premiamo il tasto destro in un punto qualsiasi e selezioniamo dal menù contestuale “apri nel terminale”: in questo modo windows apre una finestra terminale direttamente in quella cartella. Digitiamo:

mpremote fs cp firmware_1_0_1.bin :firmware.bin

Questo comando esegue la copia del file specificato nella memoria dell’ESP32, rinominandolo. La copia del file procede. Al termine chiudiamo la finestra e apriamo Arduino Lab for Micropython. Colleghiamo la board premendo l’apposito tasto e selezionando la porta COM e quindi da REPL digitiamo:

from arduino_alvik import update_firmware
update_firmware('./firmware.bin')

In questo modo l’aggiornamento viene eseguito onboard da uno script in micropython già caricato sulla scheda, sfruttando il file di firmware che abbiamo caricato con mpremote. L’aggiornamento inizia:

Inutile dirvi che durante questa procedura non dovete staccare il cavo e non deve andare via la corrente! Dopo un minuto l’aggiornamento termina:

Premiamo il tasto di reset sulla Nano ESP32 e riconnettiamo la board premendo il tasto di connessione. Digitiamo di nuovo i comandi per caricare la libreria di Alvik, inizializzarla e per rilevare la versione:

Questo ci conferma che l’aggiornamento è avvenuto con successo!

Aggiornare la versione di Micropython

Vi avviso: questa procedura cancella tutto il contenuto della memoria di Arduino Nano ESP32, per cui elimina tutti i vostri programmi nonchè la libreria di Alvik preinstallata. Fate quindi un backup almeno dei vostri programmi utilizzando il sistema esposto sopra. Per caricare le librerie ci penseremo dopo.

La versione attuale di Micropython la si legge nel REPL all’avvio o ogni qualvolta che viene stoppata l’esecuzione del programma:

La versione più aggiornata di MicroPython, per ogni board, è sempre reperibile sul sito ufficiale di MicroPython, in particolare per Arduino Nano ESP32 la trovate qui: https://micropython.org/download/ARDUINO_NANO_ESP32/

Per evitare inutili complicazioni ed utilizzare un tool ufficiale è possibile fare l’aggiornamento tramite un programma apposito di Arduino: Arduino Lab Micropython Installer, la cui ultima versione può essere sempre scaricata a questo link: https://github.com/arduino/lab-micropython-installer/releases/latest/

Io chiaramente ho scaricato la versione per windows: una volta terminato il download, la cosa più sicura da fare è staccare l’Arduino Nano ESP32 da Alvik, chiudere con un jumper il pin B1 su GND (questa cosa forza l’Arduino Nano ESP32 ad andare in modalità boot) e quindi collegarlo ad una porta USB del PC.

Lanciamo quindi l’eseguibile di Arduino Lab Micropython Installer, si presenta questa finestra:

Cliccando su Install Micropython viene sempre installata l’ultima versione stabile disponibile, se invece flaggate Use Preview Builds viene caricata l’ultimissima (anche detta Night Build) che potrebbe essere perfetta così come potrebbe presentare dei difetti. Se poi volete caricare una versione differente, potete scaricarla dal sito indicato all’inizio e trascinarne il file .bin nel riquadro di drag & drop. Sia dopo aver trascinato il file che dopo aver premuto il tasto Install Micropython l’upload inizia immediatamente:

Io ho voluto “rischiare” installando una Preview Build

Alla fine della procedura possiamo chiudere il programma, staccare la porta USB, ricollegare la Nano ESP32 ad Alvik, lanciare Arduino Lab for Micropython e connettere:

Ora, andando ad aprire il file explorer… troveremo tutto vuoto come avevo detto all’inizio: non c’è più nemmeno la libreria per Alvik! 

Adesso o copiamo tutti i file a mano (spostandoli da destra a sinistra nel file manager, usando le freccette e ricreando le cartelle) oppure usiamo un sistema più rapido dato che abbiamo già installato mpremote e, facendo come sto per illustrarvi, siamo sicuri anche di aver installato la libreria per Alvik più aggiornata che c’è.

Disconnettete la board da Arduino Lab for Micropython premendo l’apposito tasto (lasciate però la board collegata al PC).

Scarichiamo l’intero repository di arduino-alvik-mpy: andiamo alla pagina https://github.com/arduino/arduino-alvik-mpy e clicchiamo il tasto CODE e quindi Download Zip:

Estraiamo il file ZIP appena scaricato ed entriamo nella cartella principale:

In uno spazio qualsiasi clicchiamo il tasto destro e selezioniamo dal menù contestuale Apri nel terminale. Viene avviato Windows Power Shell, digitiamo il sequente comando:

.\install.bat -p COMx

Al posto di COMx dovrete mettere il numero di porta COM al quale la board è collegata (quella che appare in Arduino Lab for Micropython quando andate a fare la connessione). Il punto-slash prima di install.bat è necessario altrimenti windows non esegue il comando ritenendolo pericoloso, premete invio:

Chiudiamo questa finestra. Ora se da Arduino Lab for Micropython ci colleghiamo ed apriamo il file manager, possiamo vedere che abbiamo nuovamente la cartella lib che contiene tutte le librerie di Alvik, ma non gli esempi e i nostri files (ovviamente!).

Potete ricaricare gli esempi. che adesso avete aggiornati dato che avete scaricato tutto il repo, nonchè i vostri files dal file manager:

Dalla parte destra, in alto, selezionate la cartella dove avete i files che volete caricare, selezionate quindi il file e premete sulla freccetta rivolta a sinistra per caricarlo sulla board. Gli esempi aggiornati sono nella cartella examples del repository che avete appena scaricato.

Se questo articolo ti è piaciuto, condividilo su un social:
Se l'articolo ti è piaciuto o ti è stato utile, potresti dedicare un minuto a leggere questa pagina, dove ho elencato alcune cose che potrebbero farmi contento? Grazie :)