Post

Trasformare Emiglio in un AI assistant PT 1

Trasformare Emiglio in un AI assistant PT 1

La storia

Un giorno, mentre navigo su un sito di usato, mi imbatto in un vecchio Emiglio a 20€. Ho sempre desiderato avere un robot “jarvis” personale come in Iron Man e, senza pensarci un attimo, scrivo al venditore per acquistarlo. Il venditore mi dice che non spedisce, quindi mi metto in macchina e parto per recuperare Emiglio.

Desktop View L’annuncio online

Emiglio è messo un pò maluccio:

  • manca manca il radiocomando
  • manca il vassoio
  • lo zaino e la testa sono danneggiati

Ci sarà un pò di lavoro da fare per rimetterlo a posto ma vale tutti i 20€ spesi.

Il restauro

Ho deciso di iniziare dalla parte estetica. Ho preso le misure dei pezzi danneggiati di Emiglio e li ho ristampati con la stampante 3D. Ho dovuto anche aprire Emiglio, smontare i motori DC e sostituire le rondelle di plastica dato che erano danneggiate e non facevano girare le ruote del carrello.

In questa cartella trovate tutti i files STL dopo aver stampato i pezzi e averli assemblati, questo è il risultato finale:

Desktop View Emiglio come nuovo

Desktop View Vista CAD

Ora che Emiglio ha un aspetto migliore e la meccanica degli ingranaggi delle ruote funziona e permette corretamente ai motori DC di far girare le ruote possiamo passare alla fase di radiocomando.

Il radiocomando per aerei

Desktop View Radiocomando e circuito saldato su PCB

Dato che non sono in possesso del radiocomando originale mi sono arrangiato con un radiocomando 2.4Ghz per aerei. Questo tipo di radiocomando trasmette i comandi tramite segnali PWM (Pulse Width Modulation): ogni canale invia un impulso con durata variabile tra circa 1000µs e 2000µs, dove il valore centrale (~1500µs) corrisponde al punto neutro dello stick. Il ricevitore radio viene collegato direttamente ai pin GPIO del Raspberry Pi 1 B. Per leggere questi segnali con precisione ho usato la libreria pigpio, che permette di misurare la durata degli impulsi in modo hardware-accurato senza dipendere dai tempi del sistema operativo. Il driver TB6612FNG si occupa di pilotare i 4 motori DC ricevendo i segnali di direzione e PWM dai GPIO del Raspberry tramite lo script tank.py, che implementa una logica di movimento a carri armati: le ruote dei due lati vengono gestite indipendentemente per permettere le svolte.

Desktop View Schema dei collegamenti

Tutto il codice è opensource su github qui

Risultato finale

I motori ora sono alimentati da una batteria ricaricabile a 12V e il Raspberry da una powerbank, entrambi comodamente alloggiati nello zaino di Emiglio. Ho fatto anche dei fori con il Dremel sul retro di Emiglio per far uscire un Power LED, l’antenna radio, i cavi della batteria, l’interruttore della powerbank e il pulsante di spegnimento logico del Raspberry — necessario perché spegnere brutalmente l’alimentazione corrompe la SD card. I servizi tank.py e btn.py si avviano automaticamente al boot tramite systemd, così Emiglio è operativo non appena acceso, senza bisogno di un monitor o di connettersi in SSH.

Parte 2

Nella parte 2 vediamo come usare un raspberry pi W2 e un modulo respeaker per interagire vocalmente con Emiglio. STAY TUNED

This post is licensed under CC BY 4.0 by the author.