La mascotte di GitHub, la nota piattaforma per l’hosting di file destinata agli sviluppatori e di proprietà di Microsoft, è un incrocio fra un polpo e un gatto. Non per niente si chiama Octocat. Utilizzando una Raspberry Pi, i tecnici di Infineon, colosso del mercato dei semiconduttori, le cui soluzioni si rivolgono a sistemi automobilistici, industriali, sensori di potenza e e sistemi collegati, spiegano di aver dato vita a Octocat utilizzando tentacoli pneumatici.
Il progetto, pubblicato su Hackster, può essere eventualmente replicato da ogni maker ed esteso ai propri progetti. Infineon ha infatti condiviso l’elenco dei componenti hardware, il codice di programmazione e i modelli 3D utilizzati.
Come usare una scheda Raspberry Pi per muovere i tentacoli di un polpo
Nessun animale è stato maltrattato per realizzare con successo l’esperimento di Infineon. Gli esperti della società si sono divertiti a stampare in 3D la testa di Octocat con una stampante FDM, rifinendo poi a mano il risultato. Successivamente, hanno realizzato un paio di stampi per i tentacoli utilizzando poi del silicone per la realizzazione vera e propria.
L’utilizzo della pneumatica, con attuatori collegati ai singoli tentacoli, ha quindi permesso di pilotare i movimenti del simpatico polpo-gatto tramite un single-board computer Raspberry Pi.
Nello specifico, gli ideatori del progetto spiegano di aver utilizzato un set di valvole pneumatiche collegate al DC Motor Control HAT di Infineon stessa. Le valvole sono in grado di gestire i movimenti colmando con aria dei piccoli canali creati all’interno di ogni singolo tentacolo.
Secondo Infineon, il suo DC Motor Control HAT ospita un chip TLE94112ES che fornisce 12 driver a semiponte ed è in grado di sovrintendere il funzionamento di una varietà di attuatori, tra cui le valvole pneumatiche implementate nel sistema di tentacoli.
L’insieme delle valvole pneumatiche utilizzate per gestire i movimenti dei tentacoli tramite Raspberry Pi.
Cos’è un HAT nel caso di Raspberry Pi
HAT sta per “Hardware Attached on Top“: si tratta di un’espansione hardware compatibile con le schede Raspberry Pi. Si collega direttamente sopra la scheda inventata da Eben Upton tramite i connettori GPIO (General Purpose Input/Output) e fornisce funzionalità aggiuntive, come ad esempio controllori di motori, sensori, interfaccia audio e così via. Su Amazon Italia è possibile trovare un’infinità di moduli HAT per le schede Raspberry Pi.
Infineon ha appunto sfruttato il DC Motor Control HAT per controllare motori e attuatori tramite Raspberry Pi e una serie di librerie sia in Python e C++. In questa pagina si può trovare la lista degli “ingredienti” per la realizzazione dell’intero progetto in totale autonomia.
Questo è il risultato del lavoro, con il polpo mascotte di GitHub che muove i suoi tentacoli, comandati dalla scheda Raspberry.
La configurazione software per animare i tentacoli del polpo tramite Raspberry Pi
Infineon spiega di aver utilizzato la sua libreria multi-half-bridge, anch’essa condivisa su GitHub, per controllare i movimenti del motore TLE94112ES. Queste istruzioni offrono spunti concreti per l’utilizzo pratico della libreria, eccellenti anche per altri progetti.
Gli sviluppatori cominciano definendo tutte le librerie necessarie per far funzionare l’HAT per Raspberry Pi. La variabile MOVEMENT_INTERVAL
rappresenta il ritardo tra le sequenze di movimenti. Le due funzioni di log facilitano il debug del codice e migliorano la leggibilità dell’output.
Gli aspetti più importanti del codice che muove i tentacoli
La parte successiva del codice disponibile su Hackster, definisce una classe Octocat
che sfrutta a sua volta la classe Tle94112Rpi
della libreria multi-half-bridge. Viene quindi definito un tempo di “cooldown” in millisecondi, attivato tra i singoli movimenti. Si tratta di una finestra temporale determinata sperimentalmente per permettere alle ventose dei tentacoli di sgonfiarsi dopo ogni movimento, in modo da evitare danni.
Segue la mappatura delle singole valvole utilizzate sulle ventose: questo processo permette di rappresentarle una ad una oppure per gruppi, così da indirizzarle facilmente.
Il codice condiviso da Infineon definisce quindi due tipi di movimento: sollevamento e abbassamento delle ventose. Infine, si stabiliscono dei ritardi per le singole ventose e per i gruppi di esse.
La funzione principale è moveTentacle
, che viene esposta come parte della classe Octocat
e utilizzata per controllare effettivamente le ventose dal flusso del programma. Tale funzione utilizza in input due parametri: la ventosa o il gruppo di ventose che si desiderano controllare e quale movimento devono eseguire (sollevamento o abbassamento). Il main-loop
, infine, costituisce la sequenza di movimenti che le ventose devono eseguire.