PyBLE: un IDE MicroPython via Bluetooth LE per ESP32

PyBLE è un IDE open-source per MicroPython che comunica via Bluetooth LE. Funziona su tablet e iPad, senza fili e senza cloud. L’utente scrive codice, lo esegue e vede la console direttamente sul touchscreen. Il progetto nasce per schede economiche come ESP32-C3 e ESP32-S3. la scheda del progetto descrive un protocollo chiamato PBLE/1, pensato per essere leggero e affidabile.

L’IDE MicroPython Bluetooth LE non è una semplice app. Include un servizio GATT con UUID base 7079626c, che in ASCII significa pybl. Le caratteristiche sono RX, TX e INFO. Il client invia comandi, il dispositivo risponde. La connessione avviene in modo standard, quindi funziona con qualsiasi tablet moderno.

Il protocollo PBLE/1 in dettaglio

La comunicazione usa frame strutturati. Ogni frame ha un header con versione, tipo, opcode, ID e lunghezza. Poi arriva il payload e infine un CRC32 per controllare l’integrità. Il MTU è di 247 byte. Il payload massimo per pacchetto è MTU meno 3 byte di header ATT, meno 1 byte di frammentazione. Quindi restano 243 byte utili per ogni pacchetto.

I messaggi più grandi del MTU vengono frammentati. Un header di frammentazione dice al ricevente come ricostruire il messaggio. Inoltre, il protocollo prevede la ripresa dei trasferimenti interrotti. Infatti, il trasferimento file usa opcode dedicati come FILE_LIST, FILE_STAT, FILE_GET e FILE_PUT. Ogni file viene verificato con CRC32. Se qualcosa va storto, si riprende da dove si era interrotto.

Dopo la connessione, il client invia HELLO. Il dispositivo risponde con DEVICE_INFO. Così si negoziano versione e capacità. La versione del protocollo è 0x01. Gli ID vanno da 1 a 255. La lunghezza è un uint16 little-endian, quindi fino a 65535 byte. Il CRC32 è quello standard IEEE.

Eseguire codice e gestire la console

L’esecuzione del codice avviene con opcode RUN. Si può mandare un file oppure codice sorgente inline. Per fermare tutto, c’è STOP. Per resettare la macchina virtuale MicroPython, c’è SOFT_REBOOT. La console è gestita con CONSOLE_DATA e CONSOLE_INPUT. In pratica, l’IDE MicroPython Bluetooth LE diventa un terminale completo.

La sicurezza non è lasciata al caso. Il protocollo prevede pairing e encryption di base. C’è un solo writer attivo alla volta. Inoltre, non esiste telemetria né raccolta di dati personali. Il protocollo è pulito e minimale, adatto a dispositivi con poche risorse.

  • MTU 247, payload 243 byte per pacchetto
  • UUID base 7079626c, codifica ASCII pybl
  • ID da 1 a 255, LEN uint16 little-endian
  • CRC32 IEEE per ogni frame
  • Label massimo 24 byte UTF-8
  • IDENTIFY blink a 5 Hz, durata default 2 secondi

Perché PyBLE interessa ai maker

PyBLE è pensato per target vincolati come ESP32-C3. Il protocollo è abbastanza piccolo da girare senza problemi. Inoltre, è versionato e con negoziazione di capacità. Questo significa che in futuro potrà evolvere senza rompere la compatibilità. Per i maker è un modo nuovo di lavorare, senza cavi USB e senza PC.

Per provare PyBLE, servono schede adatte. Ad esempio, l’ESP32-C6-Zero IoT Development Kit è una scelta compatta e moderna. Oppure, il Arduino NANO ESP32 con Wi-Fi e Bluetooth offre un formato classico. Anche la ESP32, Scheda di sviluppo con Wi-Fi, Bluetooth e connettore USB Type-C funziona bene. Tutte supportano MicroPython e hanno il Bluetooth LE necessario.

Il progetto è ancora giovane, ma la direzione è chiara. Un IDE MicroPython Bluetooth LE apre scenari interessanti. Si può programmare una scheda montata su un robot, senza smontare nulla. Si può aggiornare il firmware da un iPad in laboratorio. Infine, si può insegnare MicroPython in classe, con tablet economici al posto dei PC.


Fonte: https://github.com/PyBLE-dev/PyBLE/blob/main/docs/specifications/protocol.md

    Lascia un commento

    Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

    Menu