Sperimentazione LoRa: familiarizziamo con la nuova release SW 5.x…
Nei precedenti articoli abbiamo illustrato le principali funzionalità HW e SW rese disponibili con la nuova release SW Vr. 5.1.
Con questo articolo vorremmo passare ad una prova pratica di installazione e setup del nuovo SW Sarimesh Core utilizzando come HW uno degli HW più diffusi attualmente: ovvero uno schedino TTGO T-Beam in versione 0.7 ovvero 1.1. Si tratta come tutti sanno di schedini acquistabili su aliexpress e altri portali similari a prezzi oscillanti tra i 40 e gli 80 € a seconda della versione e dei moduli LoRa e GPS equipaggiati.
Il SW Sarimesh Core già dalle versioni precedenti può essere installato e girare su questi dispositivi anche se con alcuni limiti imposti dalla architettura HW degli stessi. Con la rel 5.x si è cercato di rimuovere ulteriori limitazioni per cui in pratica tutte le funzioni principali del SW sono utilizzabili con le sole limitazioni legate ai moduli HW presenti .
Ovviamente non sarà utilizzabile in particolare la modalità Dual-Mode ( ovvero la doppia radio LoRa) e alcune funzioni di debug.
Per la prova, oltre allo schedino TTGO T-Beam sarà richiesto un qualsiasi PC con Windows o meglio Linux installato; non è in particolare richiesta l’installazione di alcun ambiente di sviluppo SW e debug essendo tutta la configurazione e il setup realizzabile tramite una opportuna interfaccia grafica (GUI) accessibile tramite un qualsiasi browser internet ( consigliati Chrome o firefox e derivati ).
Assumendo di avere uno schedino vergine o anche già utilizzato in precedenza, la prima fase consisterà nel primo caricamento di una immagine SW completa sul dispositivo. Questa operazione richiederà di collegarsi alla interfaccia USB/Seriale presente sul processore ESP32 equipaggiato sullo schedino tramite il computer… l’operazione di setup iniziale di questo collegamento è assolutamente standard e per nulla differente da quanto fatto verosimilmente già in precedenza in altre sperimentazioni con questi schedini. Conseguentemente in questo articolo assumeremo che il collegamento sia già operativo.
Per il caricamento dell’immagini utilizzeremo il tool, reso disponibile dal produttore del processore ESP32 , allo scopo. Per la descrizione dettagliata di questo tool è possibile fare riferimento ad uno dei tanti articoli presenti su internet, ovvero alla sezione 7 del documento di uso e installazione del SW Sarimesh versione 4.x già attualmente reperibile al seguente URL LoRa_Tracker_manual_vr4_1_c_en.pdf ; il documento contiene, a partire da pagina 30, le istruzioni dettagliate per l’installazione del tool Espressif necessario per il caricamento del SW .
Una volta installato il tool di caricamento bisognerà procurasi l’immagine SW completa di prima installazione relativa alla precisa versione dello schedino che si vuole utilizzare e caricare in una certa directory il file immagine full_flash_image_xxxxxx.bin , quindi collegare il dispositivo al PC.
L’immagine consiste in un singolo file il cui nome termina in .img e la cui dimensione si aggira su circa 2 Mbytes. Questo singolo file contiene i classici 5 moduli SW che tradizionalmente nelle versioni SW fino alla 4.x era necessario installare a dei precisi indirizzi di memoria; con la versione 5.x allo scopo di semplificare e velocizzare l’operazione di caricamento iniziale i moduli sono già opportunamente concatenati in un unico modulo il cui indirizzo di caricamento sara semplicemento 0x0000000. Le figure a seguire mostrano le schermate relative a questa operazione.
Volendo effettuare il caricamento dell’immagine da un computer linux è sufficiente installare il tool equivalente esptool secondo le semplici istruzioni riportate di seguito, usando una shell linux ( es. per linux ubuntu) dopo aver caricato in una certa directory il file immagine full_flash_image_xxxxx.bin , e quindi collegare il dispositivo ed effettuare il caricamento come di seguito illustrato
apt install python3-pip
pip3 install esptool
esptool.py -h
ls -als full_flash_image.bin
esptool.py –chip esp32 –port /dev/ttyUSB0 –baud 921600 –before default_reset –after hard_reset write_flash 0x0 full_flash_image.bin
Non è necessario effettuare alcuna operazione di caricamento del classico LittleFS che tipicamente era sempre fonte di problemi, in quanto la configurazione di default è già contenuta nel codice e viene automaticamente caricata nel LittleFS alla prima accensione del dispositivo dopo il caricamento dell’immagine iniziale.
Alla fine del processo di caricamento è sufficiente riavviare il dispositivo che si presenterà con una configurazione completa di default accessibile direttamente tramite WiFi usando un qualasiasi browser web.
In particolare dopo l’accensione il display del dispositivo mostrerà alcuni messaggi di benvenuto ed effettuerà, il caricamento della configurazione di default; alla fine del caricamento apparirà sul display un messaggio di attesa di spots LoRa!!!! questo indica che l’installazione è avvenuta con successo. A seguire alcune foto che descrivono la sequenza di boot ….
Per l’accesso alla GUI di gestione è sufficiente collegarsi alla rete WiFi di tipo ad es. ESP32-807D3AC5D8CC e accedere all’indirizzo 192.168.5.1 ( se è il primo caricamento) ovvero all’indirizzo assegnato al dispositivo in fase di configurazione precedente se NON è il primo caricamento: apparirà la pagina inziale della GUI da cui si potrà customizzare a piacimento la configurazione del dispositivo.
In questo articolo non è intenzione entrare nell’operazione di customizzazione che sarà ampiamente documentata nella nuova versione 5.x del manuale di uso, attualmente in fase di approntamento: volendo è possibile utilizzare come base il manuale della versione 4 che non differisce macroscopicamente dalla nuova ver. 5.
A seguire cercheremo invece di approfondire alcuni aspetti aggiuntivi introdotti nella versione 5.x allo scopo di semplificare e rendere più veloce l’operazione di customizzazione.
Innanzitutto va osservato che diversamente dalla maggior parte dei SW LoRa che richiedono di compilare un file di configurazione da poi caricare sul dispositivo tramite un ambiente di sviluppo SW, nel caso del SW Sarimesh vengono rese disponibili una serie di pagine WEB relative ad altrettanti aspetti funzionali del prodotto, tramite cui customizzare la configurazione: abbiamo per esempio delle pagine per settare le caratteristiche del livello funzionale LoRa, delle pagine per il livello funzionale APRS, una pagina per il settaggio delle modalità operative e di debug, etc. etc.
Ogni pagina richiede quindi di inserire un certo numero di parametri tra loro correlati, segnalando tramite opportuni finestre a scomparsa i possibili valori da introdurre per i vari parametri; esiste poi in tutte le pagine un pulsante di “SAVE” che consente di “congelare” il gruppo di parametri immessi nella schermata… questa operazione memorizza il gruppo di parametri, in una “configurazione temporanea” senza però rendere attiva questa configurazione… Il motivo di questa non attivazione è legato al fatto che per avere una configurazione completa è probabilmente necessario modificare altri gruppi di parametri tramite altre pagine della GUI…
Quando tutte le pagine richieste per una nuova configurazione del dispositivo sono state “congelate” nella “configurazione provvisoria” è possibile trasformare tale configurazione in una configurazione permanente tramite una operazione di “commit” che scrive la configurazione transitora in una memoria non volatile presente sul dispositivo rendendola attivabile.
Per attivare la nuova congurazione è sufficiente effettuare un “reboot” del dispositivo e verificare che la configurazione ottenuta sia quella desiderata.
Ovviamente in una fase di sperimentazione è verosimile che si potranno fare svariate prove in diverse condizioni di lavoro… per tenere traccia ordinata delle configurazioni usate nel corso delle prove è utile “salvare” sul proprio computer le varie configurazioni di prova in modo da poterle poi successivamente confrontare e/o ricaricare agevolmente sul dispositivo just-in-case…
Allo scopo è quindi resa disponibile una pagina sulla GUI da cui è possibile scaricare la configurazione attiva dal dispositivo al computer o caricare una configurazione precedentemente salvata dal computer sul dispositivo.
Il file di configuazione ottenuto con le operazioni di “SAVE” è in un formato standard JSON facilmente processabile con svariati tools disponibili sul web , in modo da poterne vedere il contenuto in formato leggibile e sotto forma di un albero facilmente navigabile in modo da poter effettuare agevolmente dei confronti.
Esiste anche un tool online ( https://jsonformatter.org/json-pretty-print ) allo scopo, agevolmente utilizzabile caricando su tale sito il file di configurazione.
Il nome del file di configurazione è costituito da un prefisso “ESP32”, seguito da una serie di caratteri esadecimali che rappresentabo il MAC address radio wifi del dispositivo e da una etichetta di data in modo da poter agevolmente identificare i vari files e correlarli ai dispositivi a cui si riferiscono. Tutti i file di configurazione hanno estensione .json
Va osservato a questo punto che alcune schermate, per la loro funzionalità, possono contenere dei parametri di configurazione che sviluppano il loro effetto immediatamente all’atto del salvataggio nella “configurazione temporanea” senza richiedere necessariamente una operazione di “commit”… è il caso per es. delle funzioni di debug che per loro natura devono essere attivabili o disattivabili a “run time” per approfondire eventuali situazioni che si presentano sporadicamente. Per questi parametri è comunque possibile salvare dei valori rendendoli permanenti, effettuando il “commit” della configurazione corrente del dispositivo.
Un ultimo aspetto relativo alla gestione del SW è quello relativo agli aggiornamenti SW successivi alla prima installazione.
Pur essendo sempre possibile ricaricare una immagine completa per i successivi aggiornamenti SW tramite la procedura sopra indicata per il primo caricamento, non è ovviamente una operazione semplice per quei dispositivi installati in siti remoti non facilmente raggiungibili… è previata allo scopo un sistema di caricamenteo degli aggiornamenti SW di tipo remoto tramite rete TCP/IP: la modalità in questione viene tipicamente definita OTA (Over The Air) e non richiede alcun accesso fisico all’HW del dispositivo da aggiornare.
La GUI presenta delle pagine dedicate a questa funzione: l’accesso a queste pagine è però legato all’attivazione di una particolare modalità operativa del dispositivo che definiamo “Admin Mode”: in questa modalità operativa vengono opportunamente disabilitate una serie di funzioni inessenziali o dannose in fase di aggiornamento del SW.
L’attivazione della modalità “Admin” avviene tramite la pagina di debug&operation e richiede il reboot del dispositivo. Il processo di caricamenteo OTA della Vr. 5.x è esattamente identico a quella della vr 4.x come descritta nella sezione 10 del documento sopra referenziato .
Anche l’immagine di aggiornamento OTA è costituita da un unico file con estensione .img generalmente di dimensioni limitate e quindi facilmente trasferibile tramite collegamento TCP/IP al dispositivo remoto.
Diversamente dalle versioni fino alla 4.x il SW di Vr 5.x consente di effettuare l’aggiornamento SW con modalità OTA anche tenedndo il dispositivo in modalità “standalone” ovvero collegandosi direttamente al dispositivo tramite la rete WiFi che lo caratterizza quando settato in modalità standalone ( ESP32-….).
A conclusione di questo articolo va segnalato che l’approccio di configurazione tramite GUI, rispetto all’approccio tramite file di configurazione, ha un significativo vantaggio dal punto di vista della faciltà di settaggio corretto in quanto fornisce automaticamente i possibili valori per i vari parametri richiesti nelle varie situazioni funzionali, cosa non sempre agevolmente comprensibile con l’approccio di compilazione manuale di un file di configurazione.
La procedura e le considerazioni descritte per l’HW TTGO sono ovviamente esattamente applicabili anche agli HW originali del progetto Sarimesh.
Ottimo come sempre e sono pronto per fare quest’altra sperimentazione per vedere i risultati dei test come abbiamo fatto in precedenza complimenti sempre per l’ottimo lavoro