R2 - RoboRoma La prima comunità romana di sviluppo di progetti elettronici
basati su piattaforma Arduino. |
Progetto 1
Trasformare una macchinina telecomandata in robot autonomo
Trasformare una macchinina telecomandata in robot autonomo
Il bello di Arduino è l'estrema facilità d'uso, e la rapidità con cui ci si possono realizzare progetti. Basta un po' di fantasia!
Un giorno, passeggiando in un mercatino dell'usato in Via Conca D'Oro a Roma, mi sono imbattuto in una bancarella che vendeva automobiline telecomandate come questa a 12 euro (ma c'erano anche modelli da 10):
Ho così deciso di fare un esperimento; stanziati questi 12 euro per la ricerca scientifica ;-) , sono andato a casa e ho aperto la macchinina.
(clicca per ingrandire)
Subito salta all'occhio questo:
Un piccolo chip marcato RX-2CS; ottimo, quindi molto probabilmente il controllo della macchinina è digitale, non analogico; quindi forse basta scoprire quali sono i pin giusti, e ci si può agganciare al chip per controllarlo tramite Arduino.
Uuna rapida ricerca su Google ed ecco il datasheet:
TX-2C(RX-2C)AY.pdf
Lo schema elettrico non lascia dubbi:
Si tratta di un chip digitale collegato a circuiteria analogica per il controllo dei motori i motori sono (le "M" nel cerchio nell'immagine sopra). Per l'esattezza, i circuiti in cui si trovano racchiusi i due motori sono "ponti H", ossia predisposti per controllare la direzione di rotazione di un motore semplicemente mandando una tensione sul pin giusto.
Infatti ecco la piedinatura del chip:
"Trasferita" sull'immagine diventa:
Ormai i dati necessari per collegare la Arduino alla macchinina ci sono tutti!
Funzionerà?
Proviamo...
I fili rossi sui pin 6, 7 10 e 11 nella foto sopra, visibili anche nella prima foto in alto della macchinina, sono proprio i fili di collegamento ad Arduino.
Ecco come appare il primissimo, orrendo, ma funzionante prototipo!
Purtroppo sì, l'Arduino è grande quasi quanto l'automobilina... che quindi si muove a stento; in più serve anche una batteria esterna, perchè ad Arduino servono almeno 5 V, mentre le piccole batterie ricaricabili della macchinina erogano al massimo 3,2 V.
Tuttavia, trattandosi di un test, va bene anche così.
Basta scrivere uno sketch semplicissimo, che accende il pin 11 per mandare avanti la macchinina e accende il 10 per mandarla indietro, ed è fatta:
A questo stadio, anche se la macchinina funziona, non può definirsi "robot", non essendo in grado di prendere decisioni autonome: va avanti, va indietro... e poi attende istruzioni (il telecomando funziona ancora, la Arduino è collegata in parallelo al chip, senza bisogno di staccarlo ).
Bisogna trovare un modo per far individuare alla macchinina gli ostacoli.
Ci viene in aiuto GioBlu con un interessante progetto che mostra come utilizzare due comuni LED trasmittenti a infrarossi per determinare la distanza di un oggetto.
Basta quindi collegare due LED ad Arduino come indicato in quel progetto, aggiungere allo sketch la parte che controlla i LED, e fare in modo, ad esempio, la macchinina vada avanti finchè incontra un ostacolo, dopodichè vada indietro. Automaticamente, quando sarà abbastanza indietro da non vedere più l'ostacolo, ricomincerà ad andare avanti.
Questo secondo sketch funziona proprio così:
LINK
EVOLUZIONI FUTURE
Questo primo progetto, anche se funzionante, ha un grosso difetto: con tutto quel "ciarpame" sopra, la macchinina si muove lentissima, per cui quando, a retromarcia, arriva abbastanza lontana dall'ostacolo, inizia subito ad andare avanti... ma lo rivede subito, quindi va subito indietro, poi riva' avanti...., in sostanza restando sempre lì! Occorrerà quindi aggiungere un piccolo ritardo al termine della retromarcia, per avere un comportamento un po' più interessante.
Il passo successivo sarà invece controllare anche le ruote sterzant i, ma questo richiederà di usare due coppie di LED, una destra e una a sinistra, puntate in diagonale: quando si avvicina un ostacolo a sinistra, bisognerà far sterzare l'auto a destra, e viceversa.
Un ulteriore miglioramento potrebbe essere di nascondere i led DENTRO la macchinina , magari sostituendoli o affiancandoli a quelli già presenti, che al momento hanno solo funzione decorativa (si illuminano quelli bianchi a marcia avanti e quelli rossi a marcia indietro).
Ma soprattutto sarà necessario passare dalla scheda Arduino UNO a una versione "minimale" , per esempio la Ardweeny, lungaappena quanto il processore di Arduino, per permettere all'auto di muoversi con un po' più di velocità, e al progetto di essere un po' più presentabile!
Creato da JumpingJackFlash (2011)
jumpjack at libero dot it
Ultimo aggiornamento: 25 marzo 2011
Se vuoi puoi anche lasciare un commento sul forum:
http://arduino.cc/forum/index.php/topic,56072.0.html
Un giorno, passeggiando in un mercatino dell'usato in Via Conca D'Oro a Roma, mi sono imbattuto in una bancarella che vendeva automobiline telecomandate come questa a 12 euro (ma c'erano anche modelli da 10):
Ho così deciso di fare un esperimento; stanziati questi 12 euro per la ricerca scientifica ;-) , sono andato a casa e ho aperto la macchinina.
(clicca per ingrandire)
Subito salta all'occhio questo:
Un piccolo chip marcato RX-2CS; ottimo, quindi molto probabilmente il controllo della macchinina è digitale, non analogico; quindi forse basta scoprire quali sono i pin giusti, e ci si può agganciare al chip per controllarlo tramite Arduino.
Uuna rapida ricerca su Google ed ecco il datasheet:
TX-2C(RX-2C)AY.pdf
Lo schema elettrico non lascia dubbi:
Si tratta di un chip digitale collegato a circuiteria analogica per il controllo dei motori i motori sono (le "M" nel cerchio nell'immagine sopra). Per l'esattezza, i circuiti in cui si trovano racchiusi i due motori sono "ponti H", ossia predisposti per controllare la direzione di rotazione di un motore semplicemente mandando una tensione sul pin giusto.
Infatti ecco la piedinatura del chip:
"Trasferita" sull'immagine diventa:
Ormai i dati necessari per collegare la Arduino alla macchinina ci sono tutti!
Funzionerà?
Proviamo...
I fili rossi sui pin 6, 7 10 e 11 nella foto sopra, visibili anche nella prima foto in alto della macchinina, sono proprio i fili di collegamento ad Arduino.
Ecco come appare il primissimo, orrendo, ma funzionante prototipo!
Purtroppo sì, l'Arduino è grande quasi quanto l'automobilina... che quindi si muove a stento; in più serve anche una batteria esterna, perchè ad Arduino servono almeno 5 V, mentre le piccole batterie ricaricabili della macchinina erogano al massimo 3,2 V.
Tuttavia, trattandosi di un test, va bene anche così.
Basta scrivere uno sketch semplicissimo, che accende il pin 11 per mandare avanti la macchinina e accende il 10 per mandarla indietro, ed è fatta:
// Imposta i pin di controllo
// I pin di Arduino a cui sono collegati sono del tutto casuali,
// li ho scelto in base a dove arrivavano i
// fili collegati al chip RX 2CS.
#define LEFT 8
#define RIGHT 10
#define FORWARD A3
#define BACKWARD A0
void setup() {
// Attiva i pin di controllo
pinMode(LEFT,OUTPUT);
pinMode(RIGHT,OUTPUT);
pinMode(FORWARD,OUTPUT);
pinMode(BACKWARD,OUTPUT);
Go();
}
void Go() {
// Semplice routine di test: vai avanti per un po', vai indietro per un po', fermati.
digitalWrite(FORWARD,HIGH);
digitalWrite(BACKWARD,LOW);
delay(500);
digitalWrite(FORWARD,LOW);
digitalWrite(BACKWARD,HIGH);
delay(500)
digitalWrite(FORWARD,LOW);
digitalWrite(BACKWARD,LOW);
}
void loop() {
// vuota
}
A questo stadio, anche se la macchinina funziona, non può definirsi "robot", non essendo in grado di prendere decisioni autonome: va avanti, va indietro... e poi attende istruzioni (il telecomando funziona ancora, la Arduino è collegata in parallelo al chip, senza bisogno di staccarlo ).
Bisogna trovare un modo per far individuare alla macchinina gli ostacoli.
Ci viene in aiuto GioBlu con un interessante progetto che mostra come utilizzare due comuni LED trasmittenti a infrarossi per determinare la distanza di un oggetto.
Basta quindi collegare due LED ad Arduino come indicato in quel progetto, aggiungere allo sketch la parte che controlla i LED, e fare in modo, ad esempio, la macchinina vada avanti finchè incontra un ostacolo, dopodichè vada indietro. Automaticamente, quando sarà abbastanza indietro da non vedere più l'ostacolo, ricomincerà ad andare avanti.
Questo secondo sketch funziona proprio così:
LINK
EVOLUZIONI FUTURE
Questo primo progetto, anche se funzionante, ha un grosso difetto: con tutto quel "ciarpame" sopra, la macchinina si muove lentissima, per cui quando, a retromarcia, arriva abbastanza lontana dall'ostacolo, inizia subito ad andare avanti... ma lo rivede subito, quindi va subito indietro, poi riva' avanti...., in sostanza restando sempre lì! Occorrerà quindi aggiungere un piccolo ritardo al termine della retromarcia, per avere un comportamento un po' più interessante.
Il passo successivo sarà invece controllare anche le ruote sterzant i, ma questo richiederà di usare due coppie di LED, una destra e una a sinistra, puntate in diagonale: quando si avvicina un ostacolo a sinistra, bisognerà far sterzare l'auto a destra, e viceversa.
Un ulteriore miglioramento potrebbe essere di nascondere i led DENTRO la macchinina , magari sostituendoli o affiancandoli a quelli già presenti, che al momento hanno solo funzione decorativa (si illuminano quelli bianchi a marcia avanti e quelli rossi a marcia indietro).
Ma soprattutto sarà necessario passare dalla scheda Arduino UNO a una versione "minimale" , per esempio la Ardweeny, lungaappena quanto il processore di Arduino, per permettere all'auto di muoversi con un po' più di velocità, e al progetto di essere un po' più presentabile!
Creato da JumpingJackFlash (2011)
jumpjack at libero dot it
Ultimo aggiornamento: 25 marzo 2011
Se vuoi puoi anche lasciare un commento sul forum:
http://arduino.cc/forum/index.php/topic,56072.0.html
News