Tutorial #8 – costruiamo un Danbo interattivo
materiale utilizzato – Arduino, cavi elettrici, breadboard, nunchuk, motorino servo 180°, cartone, forbici e colla.
Per vedere tutti i tutorial: www.marcopucci.it/arduino/
Segui la pagina Tutorial Arduino su Facebook
[slideshow_deploy id=’1170′]
In questo tutorial costruiamo un Danbo interattivo. Cos’è un Danbo?
Danbo è il nome originale usato nel manga Yotsuba&! del genio di Azuma Kiyohiko per indicare un giocattolo di cartone costruito da Miura, la protagonista del fumetto, per un compito assegnatole a scuola.
Per scoprire la storia del Danbo clicca qui.
In poche parole costruiremo un piccolo robot di carta che si muoverà in base alla posizione del nostro nunchuk. Questo piccolo progetto è utile per continuare a studiare il nunchuk (clicca qui per leggere il precedente tutorial) e per iniziare a studiare i servo motori.
I servo motori sono dei piccoli motori che possono essere acquistati in qualsiasi negozio di elettronica, modellistica oppure su internet, qui di seguito alcuni link:
Store Arduino – 5.90 euro
Futura Shop – 8 euro
Robot-Italy – vari prezzi e modelli
I servo motori si dividono in due categorie, quelli che possono ruotare fino a 180° e quelli a rotazione continua (360°). La differenza principale tra i due motori è che i primi sono molto precisi se dobbiamo spostare un corpo, un oggetto, un braccio meccanico di un certo numero di gradi. Con questi servi è possibile muovere il motore in base all’angolazione scelta (ad esempio possiamo muovere un braccio meccanico collegato al servo da 0° a 120°, tornare indietro a 12° e poi continuare fino a 180°, ecc…).
I servo a rotazione continua possono essere utilizzati per muovere oggetti in uno spazio, ad esempio robot che devono percorrere un certo percorso e che devono quindi avere ruote in grado di ruotare completamente su se stesse senza mai bloccarsi. Con questi servo motori possiamo decidere la direzione (avanti o dietro) e la velocità, ma non possiamo stabilire con precisione i gradi di rtazione. Questo tipo di strumenti verranno analizzati nei prossimi tutorial quando realizzeremo un piccolo robot con sensori di distanza.
Per il progetto del Danbo potete acquistare un servo con una spesa di circa 8 euro.
Per utilizzare i servo motori a 180° dobbiamo utilizzare la libreria “Servo” che ci permette di gestirli. Controlliamo se questa è già installata nel nostro computer. Cerchiamo la cartella “libraries” all’interno della directory
Arduino (se non la trovate eseguite una ricerca all’interno del vostro computer). Dentro la cartella “libraries” controllate se esiste una cartella denominata “Servo”. Se c’è il vostro Arduino è pronto per gestire i servo motori, altrimenti cliccate qui e scaricate il file Servo.rar.
Estrai la cartella e copiala all’interno della cartella “libraries”. Riavvia il software di Arduino. A fianco l’immagine di come appare la mia cartella “libraries” con le varie librerie che installeremo successivamente.
Circuito elettrico
Tutti i motorini servo hanno tre cavetti. Due servono per alimentare il motorino (Vcc e GND) mentre il terzo è il cavo da collegare ad Arduino per gestire il suo movimento.
Per realizzare il progetto dobbiamo collegare i due componenti (nunchuk e motorino) alla scheda Ardunio. Per il collegamento del
nunchuk guardate il precedente tutorial (clicca qui) oppure lo schema elettrico qui sotto.
Per il motorino il procedimento è molto semplice: il cavo nero deve essere inserito nel pin GND, quello rosso nel pin 5V e quello arancione nel pin digitale 9 di Ardunio.
Se il vostro motorino ha dei cavetti con colori diversi cercate su internet il suo datasheet (schema elettrico) per capire come devono essere collegati i tre fili.
Informatica
Prima di iniziare la programmazione del progetto iniziamo a vedere come funziona un motorino servo e il codice che dobbiamo utilizzare. Più avanti uniremo lo sketch della gestione del servo con quella del nunchuk per far muovere il motorino in base alla posizione del nunchuk. Scriviamo il seguente codice e Upload sulla sheda Arduino:
#include <Servo.h>
Servo myservo;
void setup()
{
myservo.attach(9);
}
void loop()
{
myservo.write(0);
delay(250);
myservo.write(180);
delay(250);
}
Analizziamo il codice:
#include <Servo.h>
Servo myservo;
importiamo la libreria Servo.h
dichiariamo la variabile myservo per gestire il motorino
myservo.attach(9);
la variabile myservo è associata al pin 9 dove colleghiamo il motorino
myservo.write(0);
delay(250);
myservo.write(180);
delay(250);
mandiamo il motorino al grado 0
tempo di pausa
mandiamo il motorino al grado 180
tempo di pausa
Uplodando il codice vediamo che il motorino inizierà a spostarsi dal grado 0 a 180°.
Il nostro progetto prevede l’interazione tra il nunchuk e il servo motore.
Spostando il joystick del nunchuk verso sinistra il motorino si posizionerà al grado 0, se il joystick è al centro il motorino si fermerà a 90° se spostiamo il joystick verso destra il motorino andrà a 180°. Sopra il motorino incolleremo più avanti la testa del Danbo (la costruzione del robot di carta è spiegata in fondo a questo Pdf).
Uniamo ora la patch del nunchuk vista nel precedente tutorial (clicca qui) e quella del motorino:
#include <Wire.h>
#include <ArduinoNunchuk.h>
#include <Servo.h>
#define BAUDRATE 19200
ArduinoNunchuk nunchuk = ArduinoNunchuk();
Servo myservo;
void setup()
{
Serial.begin(BAUDRATE);
nunchuk.init();
myservo.attach(9);
}
void loop()
{
nunchuk.update();
Serial.print(nunchuk.analogX, DEC);
Serial.println(‘ ‘);
if (nunchuk.analogX < 50){
myservo.write(50);
delay(100);
}
if ((nunchuk.analogX > 51)&&(nunchuk.analogX < 199)) {
myservo.write(90);
delay(100);
}
if (nunchuk.analogX >200) {
myservo.write(130);
delay(180);
}
}
Analizziamo il codice:
#include <Wire.h>
#include <ArduinoNunchuk.h>
#include <Servo.h>
#define BAUDRATE 19200
includiamo le librerie del nunchuk e del servo
aumentiamo la velocità di comunicazione
myservo.attach(9);
la variabile myservo è associata al pin 9 di Arduino.
Serial.print(nunchuk.analogX, DEC);
Serial.println(‘ ‘);
Stampiamo sul Serial Monitor il valore del joystick. Se i valori non sono leggibile ricordarsi di cambiare la velocità di trasmissione da 9600 a 19200 (in basso a destra del Serial Monitor)
if (nunchuk.analogX < 50){
myservo.write(50);
delay(100);
}
Se il joystick è posizionato verso sinistra allora il motorino va a 50°
if ((nunchuk.analogX > 51)&&(nunchuk.analogX < 199)) {
myservo.write(90);
delay(100);
}
Se il joystick è posizionato al centro (se il valore della X è compreso tra 51 e 199) allora il
motorino va a 90°
if (nunchuk.analogX >200) {
myservo.write(130);
delay(180);
}
Se il joystick è posizionato verso destra allora il motorino va a 130°
Prima di uplodare il nuovo codice verifichiamo di non aver commesso errori cliccando sul bottone VERIFICA.
Un possibile errore, se avete copiato il codice da questo PDF potrebbe essere il seguente: Serial.print(‘ ‘);
In questo caso non si tratta di un vero errore, ma di un problema con il font del PDF che non viene riconosciuto. Basta eliminare i due apici e scriverli nuovamente facendo attenzione a lasciare uno spazio vuoto tra i due.
Costruiamo il Danbo
Costruiamo ora il nostro Danbo che posizioneremo sopra il motorino. La testa deve essere incollata sopra la staffetta che gira in modo da comandarla con il nunchuck.
Clicca qui per scaricare due file da stampare su cartoncino.
Ritagliate e incollate le varie parti.
Se avete problemi con il taglia-incolla (quello reale questa volta) guardate questo video, clicca qui.
Le immagini sono scaricate dal sito www.deviantart.com by Simon120188
Una volta costruito il Danbo proviamo a coprire il motorino con la testa di cartone incollandola sulla staffetta rotante del servo. In questo modo il nostro Danbo girerà la testa in base al movimento del joystick.
Come esercizio potete collegare due led all’interno della testa di cartone e farli accendere premendo i due bottoni del nunchuk.
Se volete, una volta costruito, potete mandarmi delle immagini o dei piccoli video che caricherò su questo sito con i vostri credits.
email: puccimarco76@yahoo.it
In basso l’immagine di tutti i componenti utilizzati.
Arduino, una volta uplodato il codice, può essere alimentato tramite una batteria da 9V con apposito connettore in vendita in tutti i negozi di elettronica.
A sinistra l’immagine del motorino servo montato sul Danbo di cartone. La testa deve essere incollata al motorino. Nella foto è presente una staffetta di metallo per sollevare la testa di cartone dal corpo.
In basso un secondo progetto: la testa del Danbo si sposta in verticale in base al dato proveniente dal sensore Sharp (leggi il tutorial sul sensore Sharp – clicca qui).
In questo modo il Danbo alzerà la testa se qualcuno si avvicina. Nell’ultima foto potete vedere il sensore Sharp posizionato vicino alle gambe del Danbo.
Il codice è molto semplice da realizzare, basta sostituire la patch del sensore Sharp a quella del nunchuk.
Qui sotto il codice relativo al progetto Danbo con sensore Sharp.
Provate ad analizzare il codice da soli. Il funzionamento del motorino è identico, cambia solamente il controllo IF che questa volta non è sul nunchuk ma sul sensore Sharp.
#include <Servo.h>
#define BAUDRATE 19200
int sensore=0;
int lettura_sensore=0;
Servo myservo;
void setup()
{
Serial.begin(BAUDRATE);
myservo.attach(9);
}
void loop()
{
lettura_sensore=analogRead(sensore);
Serial.println(lettura_sensore);
if (lettura_sensore > 200){
myservo.write(140);
delay(100);
}
else {
myservo.write(100);
delay(180);
}
}
Elettronica
Il motorino all’interno della testa di cartone deve essere incollato sulla parte interna laterale in modo da far piegare la testa in basso e in alto.
Ti è piaciuto il tutorial? Se ti va offrimi un caffè…[paypal-donation]
I tutorial sono liberamente scaricabili e condivisibili sotto l’etichetta Creative Commons (non è possibile commercializzarli e modificarli)
Scarica il Pdf del tutorial di Arduino ” Nunchuk”