GiammaBOT: il nostro primo robot
DIY EDUCATION da il 28 Marzo 2021
Il sabato pomeriggio nella nostra famiglia è uno dei due momenti in cui i nostri figli possono guardare la TV e qualche settimana fa ci siamo soffermati su Battle BOTs. Per chi ama la tecnologia e i robot è un programma fantastico... ci ha tenuto due ore incollati alla TV, ed i miei figli oramai quasi tutti i sabati rinunciano ai cartoni animati a favore di queste epiche battaglie. Durante questa puntata ho pensato... e se costruissimo un robottino, piccolo, tutti insieme? Non ho nemmeno finito di presentare l'idea ai ragazzi che già erano euforici e carichi con mille idee (molto orientate alle battaglie che avevano appena visto alla TV). Bene, non si poteva più tornare indietro! :)
Sulla scia di questo fervore abbiamo iniziato a definire le specifiche di base del nostro robot che abbiamo deciso di chiamare GiammaBOT! L'idea di base è che il nostro primo robot deve essere piccolo e molto semplice, senza nessuna arma distruttiva a bordo. Voglio che sia un piccolo laboratorio che possa far sviluppare ai miei figli la sete di sapere, la voglia di imparare e sperimentare qualcosa di nuovo, di diverso e poi magari tra qualche anno riusciremo a costruire veramente un robot da Battle BOTs.
Iniziamo dalla meccanica. Qualche anno fa mia moglie mi aveva regalato per Natale la base meccanica dello Zumo di Pololu, comprensiva di motori. È rimasta inutilizzata per un qualche anno, ma è arrivato il momento di dargli nuova vita e per questa prima versione di GiammaBOT sarà la nostra base!
Per quanto riguarda l'elettronica ho deciso, dove possibile, di utilizzare cose già pronte, come moduli, breakout o devboard, con l'obiettivo di velocizzare lo sviluppo del PCB ed allo stesso tempo ridurre le possibilità di errore.
Nell'immagine seguente c'è uno schema a blocchi di come ho pensato di strutturare la main board.
Come microcontrollore ho pensato al STM32L476 che oramai mi accompagna in molte avventure casalinghe ed alla relativa development board, la NUCLEO-L476RG.
Per il driver motori, essendo questi due piccoli motori DC brushed, ho scelto la breakout della Pololu 2130 che monta a bordo il driver DRV8883 della Texas Instruments.
Il nostro piccolo Zumo sarà alimento a batteria.
Nonostante la meccanica ha la predisposizione per quattro batterie di tipo AA, ho deciso di utilizzare una batteria al litio ad una cella.
Questa batteria andrà ovviamente ricaricata (e se conosco bene i miei figli questo succederà mooolto spesso), e per questo compito ho deciso di utilizzare STBC08 di ST Microelectronics, un semplice caricabatteria da 800mA, che può essere alimentato da un carica batterie.
Come è possibile osservare dallo schema a blocchi presentato sopra, per alimentare i motori è necessaria una tensione più alta rispetto al valore fornito dalla batteria, e per far ciò, è necessario l'ultilizzo di un circuito di Step-Up.
Anche in questo caso ho deciso di utilizzare una breakout ed in particolare la 2868 sempre di Pololu che è uno Step-Up/Step-Down da 2.5V a 9V regolabile.
GiammaBOT sarà comandato a distanza da un telecomando (che ancora non si è palesato nella mia mente...).
I due dispositivi comunicheranno tra di loro in Bluetooth tramite l'oramai onnipresente ed economico ESP32-WROOM-32E di EspressIF.
Da buon firmwarista, non rinuncio mai ad una porta seriale di debug se lo spazio e il microcontrollore lo permettono.
Per questo motivo ho deciso di sfruttare la linea dati della porta USB inserita per ricaricare la batteria per comunicare con il microcontrollore.
Per ovviare all'uso dello stack USB all'interno del firmware del microcontrollore e rendere più semplice il firware, la comunicazione avverà in UART.
Ho quindi inserito l'FT230X di Future Technology Devices International Limited (meglio conosciuta come FTDI) che si occupa appunto di offrire un bridge tra USB e UART.
Nel prossimo articolo vi presenteremo lo schema elettrico ed il PCB della main board e poi a seguire tutti gli aggiornamenti del progetto, in attesa dei primi passi, e delle prime sfide, di GiammaBOT.
Quindi... stay tuned!