USB Looper “Blooper”: strumento seriale USB per debug e trasferimento dati

Il progetto documentato nell’episodio 702 della serie element14 presents introduce il dispositivo denominato Blooper, uno strumento USB looper progettato per il debug seriale UART, l’emulazione di dispositivi e il trasferimento di file senza rete.

USB Looper: definizione e obiettivi

Il Blooper è un tool hardware open-source che si comporta come una reinterpretazione moderna del classico cavo null modem, ma progettato per le moderne connessioni USB-C. Internamente converte le comunicazioni USB in UART, consentendo a due host USB di comunicare come se fossero collegati da un dispositivo seriale esterno.

La caratteristica principale è che, quando collegato, il sistema operativo vede due dispositivi seriali USB indipendenti. Questi possono dialogare tra loro, permettendo a un computer di inviare e ricevere dati attraverso lo strumento come se fosse un dispositivo esterno reale.

Logging seriale come da dispositivo reale

Uno dei casi d’uso illustrati consiste nel loggare l’output seriale su file. Il progetto espone uno script Python (logfile.py) che legge dati da una porta seriale, aggiunge un timestamp e scrive il risultato su disco.

Lo script utilizza:

  • una funzione per leggere linee dai dati seriali;
  • decodifica UTF-8;
  • e la formattazione del timestamp prima della scrittura su file.

Questo approccio permette di testare software che normalmente si aspetta input da un dispositivo hardware reale, poiché dal punto di vista del computer i dati appaiono come provenienti da un dispositivo connesso fisicamente.

Rileggere il concetto di null modem

Il progetto trae ispirazione dal concetto storico di null modem cable, usato in passato per collegare direttamente due computer tramite linee UART. Secondo quanto riportato, il Blooper ripropone la stessa funzione sfruttando però le possibilità offerte dall’USB, consentendo la comunicazione diretta bypassando i limiti tradizionali del protocollo USB host-device.

Comunicazione full-duplex tra host

Un altro esempio del video mostra lo sviluppo di una semplice applicazione Python (chat.py) che sfrutta thread multipli: uno legge in continuo i dati dalla porta seriale e l’altro invia messaggi. Questo permette di ottenere una chat bidirezionale in tempo reale tra due terminali, anche se entrambi sono connessi allo stesso computer.

Trasferimento di file senza rete

Il progetto include anche una dimostrazione di trasferimento file senza connessione di rete, utilizzando script Python come filesender.py e filereader.py. Il file viene letto in memoria, convertito in byte e inviato sulla porta seriale. Dall’altra parte, il programma legge i byte in arrivo dalla seriale e li salva su file, replicando un trasferimento di dati tra host.

Scelte di progetto hardware

Nel testo viene descritto che il design si basa su chip FTDI USB-UART, ritenuti affidabili e stabili, in grado di enumerarsi correttamente senza richiedere cristalli esterni. Inoltre, la progettazione include componenti come resistenze di pull-down per USB-C, diodi Schottky per protezione contro inversioni di alimentazione e LED indicatori per visualizzare traffico e direzione dei dati.

Conclusione tecnica

Il Blooper è documentato come strumento pratico e affidabile per sviluppatori embedded che lavorano con comunicazioni seriali e protocolli UART, consentendo debug, logging, emulazione di dispositivi e trasferimenti di file senza rete. Il progetto include risorse open-source e una lista dei materiali usati.

Lascia un commento

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

Menu