sabato 23 gennaio 2021

RSHELL un ottimo sistema per gestire ESP32 da terminale

Nel mio percorso di approfondimento della conoscenza dell'ESP32, ho incontrato questo interessante programma per Python; RSHELL  che consente una connessione tra una macchina Linux ed il nostro ESP32 tramite cavo USB e gestisce alla perfezione l'upload ed il download dei file sulla scheda.

Attraverso RSHELL si potranno caricare i file di programma sulla scheda ESP e scaricare eventuali file o log registrati sulla scheda stessa, direttamente da shell attraverso una macchina Linux.

Abbiamo gia' visto come connettere la ESP via WiFi attraverso WebRepl nel precedente post, adesso vediamo come poter fare lo stesso attraverso una semplice shell Linux. Sulla mia macchina in questo momento ho il sistema Win10,  e l'ambiente virtuale WSL che ho costruito per utilizzare Linux con i programmi per la programmazione in Python, non gestisce le porte seriali della macchina, o almeno non lo fa nelle impostazioni di base che attualmente girano sul mio sistema, quindi per poter testare RSHELL ho dovuto "passare" da una Raspberry Pi che, attraverso una shell remota, mi consente di "parlare" con l'ESP via seriale.

Quindi ho collegato ESP32 con il cavo USB alla Raspberry Pi. Ho connesso la Raspberry Pi via WiFi in SSH, ed ho cosi' ottenuto quando necessario per funzionare.


Installato rshell sul sistema Linux con 

$ pip install rshell

Collegato la ESP32 alla presa USB della Raspberry Pi  bisogna trovare il nome della seriale che e' stato assegnato al device, semplicemente leggendo con il comando:

$ ls /dev/tty*

Nel mio sistema il nome assegnato e' il solito  ttyUSB0

Quindi basta chiamare con il comando sotto, la connessione con il parametro -p e se tutto e' andato regolarmente, ci troviamo connessi alla nostra ESP32 

$  rshell -p /dev/ttyUSB0





Il manuale onlne del programma spiega con dovizia di particolari l'utilizzo di ogni comando, e se ne volete sapere di piu' vi consiglio di andare a leggere

Io per fare conoscenza ho testato il comando -d  che mette  RSHELL in modalita' debug, quindi la connessione e' molto piu' verbose, ma consente di capire meglio cosa succede dopo ogni comando

Adesso vediamo come mettere su il sistema in modo da far connettere in automatico il nostro ESP32 al router di casa, senza utilizzare il metodo gia' spiegato nel post precedente.

La prima cosa connettere con RSHELL e questi comandi:

$ rshell -p /dev/ttyUSB0 --buffer-size 30 -a -e nano

Il comando -e nano consente di scegliere l'editor nano anziche' il predefinito vi che come sappiamo e' molto piu' ostico !!

A questo punto possiamo andare a leggere il contenuto  della flash dell'ESP32 con il comando 

$ ls /pyboard     

nb. pytboard e' il nome che viene dato in automatico all'ESP se non e' settato in maniera differente dentro il file board.py  che contenga un attributo simile a :  name = "myboard"

A questo punto possiamo editare il file boot.py che risiede gia' di default sulla ESP32 con l'editor che abbiamo definito con il parametro -e (cioe' nano)

> edit /pyboard/boot.py    





Le istruzioni da inserire nel file sono le stesse del precedente post, cioe':

# This file is executed on every boot (including wake-boot from deepsleep)
import esp
esp.osdebug(None)
import webrepl
webrepl.start()
def do_connect():
    import network
    wlan = network.WLAN(network.STA_IF)
    wlan.active(True)
    if not wlan.isconnected():
        print('connecting to network...')
        wlan.connect('XXXXXXXXXXXXXXXXX''XXXXXXXXXXX')
        while not wlan.isconnected():
            pass
    print('network config:', wlan.ifconfig())
do_connect()

Al posto delle X dovete inserire i dati relativi al vostro router, naturalmente.

Per uscire e salvare da nano, i comandi sono Ctrl-X  e poi confermare il salvataggio delle modifiche effettuate.

Con queste semplici modifiche il ESP32 al successivo riavvio si colleghera' al router ed entrera' nella vostra rete locale.

Un'altra cosa che si puo' fare e' far partire REPL, chiamandolo direttamente dal prompt:

> repl pyboard         
 nb. il nome della scheda puo' essere omesso, serve solo se abbiamo piu' schede insieme, che possono essere collegate  chiamandole per nome

Qui ci troviamo direttamente nell'ambiente MicroPython del nostro ESP32


Buon divertimento.

TecnoGeppetto







Nessun commento: