Penguin Bot: un simpatico robot bipede basato su Arduino

Abbiamo già avuto modo di conoscere la bontà dei prodotti Elegoo in un post precedente, in cui vi ho presentato un progetto di una macchina robotica basata su Arduino. In questo articolo vi parlerò del nuovo nato in casa Elegoo: il Penguin Bot.

Il Penguin Bot è un robot bipede da costruire in casa con i propri bambini. E’ munito di sensori che gli permettono di rilevare ostacoli per potersi muovere nell’ambiente circostante e ha a bordo anche un lettore mp3 che gli consente di emettere suoni, musica e perchè no, anche parlare.

Viene fornito il codice sorgente e chi ha un minimo di esperienza con Arduino IDE può cimentarsi facilmente in modifiche ed upgrade. E’ stato probabilmente battezzato “Penguin” per il modo in cui si muove, che ricorda molto la modalità di locomozione di un pinguino.

 

Due pinguini famosi nel mondo dell’Open Source

 

La qualità Elegoo

Il Penguin Bot segue la filosofia di Elegoo che ho già avuto modo di testare in precedenza. Il packaging è ad un livello molto alto come mi aspettavo: una comoda valigetta, riutilizzabile, contiene il kit. I componenti sono tutti separati in bustine e quelle delle viti hanno anche un’etichetta che aiuta a capire per quale parte del robot vanno utilizzate.

Rispetto alla robot car, questa volta il manuale, oltre ad essere presente sul cd, è anche presente in formato cartaceo: la stampa è su carta patinata con delle belle illustrazioni che i bambini gradiscono molto. Abituati a montare le cose con i Lego, difatti, apprezzano molto la presenza di un manuale illustrato con i vari passi di montaggio.

Rispetto al kit della Robot car segnalo anche che sono uscite delle viti/dadi in più, nonchè anche un paio di pezzi dello chassis. Anche in questo kit sono presenti alcuni attrezzi per facilitare il lavoro di montaggio: un piccolo cacciavite a croce e una pinzetta. Lo chassis è costituito da parti in acrilico tagliato al laser: i pezzi si incastrano tutti alla perfezione e non sono presenti giochi o disallineamenti.

Parte elettronica

Il Penguin Bot non è il classico kit a componenti separati: il PCB principale è disegnato dal team Elegoo appositamente per questo prodotto in particolare. Ho già avuto esperienza con il kit precedente della Elegoo, in cui , si, c’era un Arduino UNO nella sua forma classica, ma era comunque presente un PCB custom per facilitare il collegamento di tutti i componenti.

Qui abbiamo invece un unico PCB formato in maniera tale da presentare due fori rettangolari nel mezzo che hanno lo scopo di alloggiare i due servocomandi che costituiscono l’articolazione dell’anca. La scelta è anche dettata dal fatto di avere un PCB che occupasse tutto lo spazio a disposizione per ottenere comunque un prodotto compatto e facile da montare.

Sul PCB prendono posto:

  • l’accoppiata ATmega328/ATmega16U2 che costituisce il core di Arduino UNO. Non sono disponibili pin all’esterno da utilizzare dal momento che ogni pin è già collegato sulla scheda agli utilizzatori.
  • un modulo MP3 MY1690 con annesso lettore di microSD. Si tratta di un player MP3 seriale, molto simile a quello che ho presentato qualche tempo fa. Il Player comunica con una UART in maniera inusuale rispetto a come siamo abituati: è difatti collegato ai pin PC2/PC3 dell’ATmega 328, che sono generalmente utilizzati su Arduino UNO come ingressi analogici 2 e 3. Viene quindi utilizzata una libreria che consente di avere una porta seriale emulata (software), ma anzichè utilizzare la libreria standard di Arduino, SoftwareSerial, viene utilizzata la libreria NeoSWSerial di SlashDevin, che viene dichiarata più efficiente in quanto utilizza minor tempo CPU, causa meno errori e ha la possibilità di utilizzare gli interrupt. Il modulo prende gli mp3 da suonare da una scheda microSD. E’ già inclusa una scheda da 256MiB con alcuni samples. Non vengono utilizzate particolari librerie dal momento che il modulo richiede semplici comandi inviati sulla seriale, tuttavia nello sketch di esempio, all’interno del modulo principale (il file .ino) è presente una libreria che, volendo, può anche essere separata come file a parte.
  • una coppia di HT6871. Si tratta di un amplificatore in classe D con una potenza tra 2 e 3W. Questo circuito integrato ha un pin denominato Control che può essere tenuto a livello basso per mettere l’amplificatore in standby e non consumare corrente: tale pin, di entrambi gli integrati, è collegato all’ingresso digitale 7. Gli ingressi dei due amplificatori sono chiaramente collegati alle uscite del lettore MP3 e pilotano due altoparlantini posti ai lati del robot. Il suono è quindi stereo e fuoriesce dalle “orecchie” del robot.
  • 2 sensori infrarossi fronto-laterali, utilizzati per coadiuvare il sensore ad ultrasuoni frontale nel rilevare gli ostacoli, costituiti da 2 ST188. Questi sensori sono collegati ai pin analogici A0 (sinistro) e A1 (destro) dal momento che tale sensore fornisce in uscita un valore analogico in funzione della distanza. Chiaramente non è possibile avere una retta di taratura distanza/valore analogico dal momento che sappiamo bene che i sensori ad infrarossi, per quanto possano essere costruiti in maniera perfetta, sono influenzati dal colore dell’oggetto a cui puntano: lavorano difatti per rilessione del raggio ad infrarossi emesso. Oggetti molto riflettenti (diciamo colore bianco) restituiscono un buon range di valori dal momento che il raggio viene riflesso bene (quasi del tutto), mentre oggetti scuri (diciamo colore nero) assorbendo tutto il raggio luminoso potrebbero addirittura non essere rilevati.
  • ricevitore per telecomando IR (indicato su schema e pcb come P10). Ha la forma di un led con 3 pin e fuoriesce dalla parte inferiore del PCB (fate attenzione a quando montate il circuito a farlo fuoriuscire!). L’uscita di tale sensore è collegata al pin digitale 3 e sfrutta la libreria classica IRremote di Ken Shirriff che però non è necessario installare perchè è già presente nei singoli progetti di esempio come file incluso. Non è indicato il modello di sensore ma si tratta chiaramente di un ricevitore demodulante classico a 38kHz come il TSOP382, PNA4602 ecc. In serie al pin di ricezione è posto un led smd rosso, indicato come “inf” visibile dalla parte superiore del pcb sul lato opposto alla microSD: quando premete un tasto sul telecomando, il led sul robot segue l’andamento del segnale ricevuto ed è quindi utile a fini di debug.
  • un led blu. Questo led fuoriesce anch’esso dalla parte inferiore del pcb (fate attenzione anche a questo quando montate il circuito!) ed è collegato al pin analogico A5, viene utilizzato come spia multifunzione.

Esternamente al PCB troviamo:

  • Un sensore ad ultrasuoni di tipo HC-SR04 (di cui ho parlato già abbondantemente) montato a formare gli ‘occhi’ del robot e che serve quindi a rilevare gli ostacoli frontali. La cosa simpatica è che è stato sfruttato esteticamente anche il quarzo a bordo di questo modulo che va a formare il naso. Per il controllo di questo modulo vengono utilizzati i pin digitali 5 (trigger) e 4 (echo).
  • 4 micro-servocomandi da 9g collegati ai pin digitali 6,9,10 e 11 che vengono pilotati mediante la libreria standard ‘servo’ di Arduino. Sul PCB i punti di collegamento dei servocomandi sono indicati come LEFT_D (sinistro giù) LEFT_U (sinistro su), RIGHT_D (destro giù) e RIGHT_U (destro su). Ogni gamba è formata da due servocomandi che costituiscono l’articolazione dell’anca (su) e della caviglia (giù), non è presente quindi l’articolazione del ginocchio per chiare questioni sia di semplicità che di gestione via software.

Io a questo punto mi sono detto: i pinguini hanno in effetti un modo di camminare piuttosto curioso che fa sembrare non abbiano l’articolazione del ginocchio. Così mosso dalla curiosità mi sono documentato e ho scoperto che la questione è talmente interessante che qualcuno ci ha anche scritto un libro!

In aggiunta, in serie alla tensione di alimentazione è posto un partitore formato da due resistenze da 10kΩ -e 2kΩ (tensione in ingresso diviso 6) mediante il quale viene monitorata la tensione della batteria mediante l’ingresso analogico A4.

Assemblaggio

Il manuale a disposizione è decisamente molto chiaro, le illustrazioni sono ben fatte e non ho incontrato particolari difficoltà se non togliere la pellicola protettiva dalle parti dello chassis. Mio figlio di 7 anni è riuscito a montarlo da solo con una supervisione minima da parte mia. La parte più difficoltosa per un bambino è forse quella di inserire i dadi negli appositi slot ricavati nello chassis: è facile che cadano durante l’avvitamento per cui è necessario un po’ di aiuto per mantenerli fermi. Questo sistema di assemblaggio è classico nei kit realizzati con l’acrilico: consente un ottimo ancoraggio dei pezzi senza utilizzare collanti.

Dal momento che ci sono 4 servocomandi ed è necessario che durante il montaggio questi si trovino nella posizione centrale, ad un certo punto del piano di montaggio vi verrà chiesto di collegarli e dare tensione alla scheda. Su Arduino è difatti precaricato lo sketch di esempio che inizia con il robot in posizione perfettamente eretta (tutti i servocomandi in posizione centrale), prosegue con una musichetta durante la quale il robot esegue un piccolo balletto per poi fermarsi e mettersi nuovamente in posizione eretta in attesa di comandi. Quando il movimento si ferma siamo certi che i servo sono in posizione centrale per cui possiamo montare su di loro le staffe e ancorarle alle parti dello chassis.

Un’altra cosa che richiede attenzione è il montaggio della scheda all’interno del corpo del robot in quanto il led blu e il ricevitore IR devono fuoriuscire verso il basso passando attraverso il proprio foro: è facile sbagliare e chiudere tutto lasciando i due componenti piegati all’interno, quindi fate attenzione.

Il robot richiede 4 batterie stilo (AA), non incluse. Anche se ci sono degli attrezzi inclusi, è sempre meglio munirsi di una pinzetta coi becchi ricurvi che può tornare utile per mantenere con più forza i dadi durante il montaggio.

La Elegoo ha anche caricato un video che illustra l’assemblaggio:

Maschere

Altra cosa simpatica del robot è la presenza di maschere in cartoncino stampate che possono essere messe sulla testa del robot dandogli un altro aspetto:

4 maschere sono colorate (mia figlia dice che uno somiglia al Dr. Eggman di Sonic e un’altra ad una power puff girl), una rappresenta un robot in bianco e nero, da colorare, ed un’altra è completamente bianca per permettere ai bambini di disegnare la faccia del robot che hanno in mente. In questo video potete vedere una simpatica coreografia eseguita da 3 penguinbot insieme che eseguono il programma standard:

Funzionamento

Il CD contiene, oltre a schema – manuale in formato PDF e musichette già incluse sulla microSD, lo sketch caricato di default sul robot e che si chiama PenguinBot_Core (che contiene in pratica tutte le funzioni per poter utilizzare i singoli componenti del robot) e alcuni sketch separati di esempio che aiutano a capire il funzionamento delle varie singole parti che compongono il robot e suddivisi in 5 lezioni contenute nella cartella “Penguin Bot Function introduction”.

Ogni lezione, oltre allo sketch e alle librerie già presenti nella cartella (caricando il file .ino vengono caricate in Arduino IDE anche gli altri file in automatico), presenta anche un manualetto in PDF che guida nella comprensione del programma.

La lezione numero 1 è forse quella più interessante di tutte perchè aiuta a capire come fa il robot a muoversi. C’è innanzitutto da dire che si tratta di un robot economico e “facile” per cui non è presente un accelerometro per mantenere l’equilibrio che avrebbe richiesto una parte software decisamente più complessa da gestire (voglio da mettere da parte il costo di un accelerometro che direi ormai ininfluente) e il robot quindi si mantiene in piedi  grazie al fatto che è relativamente basso, ha un’impronta del piede molto larga e a movimenti non troppo ampi che consentono di contenere il baricentro all’interno dei punti di appoggio.

La locomozione grazie a due sole articolazioni è abbondantemente spiegata nel pdf della lezione 1 che è suddivisa in due parti: movimento avanti-indietro e movimento destra-sinistra. Ogni movimento è suddiviso in 4 passi, chiamati “beat” (battito) nel manuale, che vanno ripetuti ciclicamente, ogni beat prevede una rotazione di un certo numero di gradi per ogni servo.

 

La lezione n.2 è sull’utilizzo del telecomando ad infrarossi: caricando questo sketch, il robot si muoverà utilizzando le frecce sul telecomando.

La lezione n.3 è relativa alla rilevazione degli ostacoli: il robot si muove autonomamente e utilizza i due sensori infrarossi laterali e il sensore ad ultrasuoni centrale per rilevare ostacoli e cambiare la direzione di movimento.

La lezione n.4 spiega l’utilizzo del modulo MP3: nel file INO è inclusa la libreria scritta per gestire il modulo a bordo della scheda madre del robot e vengono eseguiti i vari file che si trovano già sulla microsd.

La lezione n.5 è in pratica l’inverso della n.3 : gli ostacoli vengono seguiti anzichè evitati. In pratica potete muovervi davanti al robot e lui vi insegue.

Queste 5 lezioni sono in pratica tanti pezzi separati che sono già inclusi nello sketch penguinbot_core.

Acquisto e codice sconto Amazon

Potete acquistare il penguibot, disponibile in 3 diversi colori, su Amazon a questo indirizzo:

https://www.amazon.it/dp/B07GVD6GQH

se vi sbrigate, riuscirete ad averlo per i vostri bambini prima di Natale e farglielo trovare sotto l’albero. Ma c’è di più. Elegoo ha riservato un codice sconto proprio per gli utenti di settorezero.com che consente di avere uno scondo del 20% il che vuol dire che lo pagherete €40. La spedizione è gratuita e arriva a casa dopo un paio di giorni. Per poter utilizzare il codice sconto, completate l’acquisto e prima della fase finale in cui si conferma, c’è un tasto che consente di inserire un buono acquisto. Digitate il codice sconto:

ZLJDPOXD

Date l’ok e vedete che il codice sconto viene applicato. Il codice sconto è valido fino al 21 Dicembre 2018 ore 11:59 PM CET.

Quando vi arriva a casa il robot, mi raccomando, lasciate anche una recensione su Amazon indicando che l’avete avuto a buon prezzo grazie a settorezero.com!

Galleria

Links



Questo articolo ti è stato utile? Ti ha permesso di risolvere un problema o di migliorare le tue applicazioni? Ci lavori? Ti ha permesso di scrivere la tua tesina? Ti ha semplicemente fatto spendere un po' del tuo tempo in maniera costruttiva? Allora clicca il banner qui sotto:


Settorezero.com è un blog personale di Giovanni Bernardo aperto dal 25 Ottobre 2007. Non è una testata giornalistica né un sito a carattere commerciale.
Settorezero.com, il logo Zroid™ e la tagline "Play embedded electronics™" sono copyright ©2007÷2019 Giovanni Bernardo.
La navigazione su settorezero.com e la fruizione dei contenuti ivi presenti sono soggette ai seguenti Termini di utilizzo - Informativa sulla privacy - Utilizzo dei Cookie.
Il tema di questo sito è basato sul tema Fusion per wordpress, realizzato originariamente da digitalnature e fa uso del plugin Wassup per il computo delle statistiche.
Per poter contattare il gestore del sito potete utilizzare la sezione contatti o inviare una email a gianni[at]settorezero[dot]com.
Per seguire gli aggiornamenti del blog Settorezero, oltre al feed RSS, puoi anche seguire la pagina Facebook o iscriverti al canale Telegram.
Su Twitter, invece, pubblico un po' di tutto e, quando mi va, uso anche Tumblr - Google+ - Blogspot - Youtube.