Go Down

Topic: "robotizzare" una macchinina telecomandata (Read 3702 times) previous topic - next topic

jumpjack

L'altro giorno sono stato a un mercatino dell'usato a Roma (via Conca D'Oro), e mi sono imbattuto in un'inaspettata occasione!
C'e' una tizia che vende (credo che il mercatino ci sia tutti i weekend) delle stupide automobiline telecomandate da 4 soldi (anzi, da 12 euro); ne ho comprata una e smontata, e dentro c'e' un circuito con un chippetto RX 2CS:
http://tec.icbuy.com/upload/silan/TX-2C(RX-2C)AY.pdf

Guardando il datasheet, si intuisce che il chip è fatto per controllare due ponti H, che credevo fosse quindi cio' che contiene il circuitino che ho trovato nella macchinina.
Così ho pensato: e se invece del chip di bordo, ci collego una arduino e dei sensori?
Detto-fatto.  :)

Ho collegato la arduino ai piedini 6,7, 10 e 11 (senza nemmeno bisogno di staccare il chip di bordo)., che controllano direzione di moto e direzione di sterzata... e questo è tutto! Ho il mio primo robot!   :)
Per il momento ovviamente puo' solo svolgere compiti preprogrammati, ma ora provero' ad aggiungere dei sensori; ovviamente sempre in ottica economica: due normali led IR da usare come "distanziometro" per farla fermare prima che sbatta contro gli ostacoli.
Poi dovro' installarci una Ardweeny invece che una "pesantissima" Arduino: la macchinina è poco piu' grande della arduino stessa!

lesto

bella mossa! hai un telaio già costruito, e se riesci ad intercettare il segnale della ricevente e della trasmittente, puoi inviare comandi attraverso di essi, magari pilotandola dal pc... uhmm quante idee! devo cercare la mia vecchia macchina radiocomandata!
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

jumpjack

Ci avevo pensato, ma se mando i comandi tramite il telecomando, la macchinina non è autonoma, quindi non è un robot, ma rimane un giocattolo!
Invece voglio mettergli il "cervello elettronico" a bordo. Anche perche' se mettessi a bordo anche dei sensori, per fargli inviare i dati al "cervello" collegato al telecomando... mi servirebbe comunque una arduino anche a bordo per gestire l'invio dei dati!

lesto

diventa un drone. magari i comandi che passi non sono per pilotarlo, ma semplicemente per modificareil suo comportamento (guida aggressiva/cauta, ecc..)

Sarebbe bello avere una comunicazione full-duplex, in modo da poter leggere a pc i dati rilevati da arduino ecc...

dai un'occhiata alle vecchie discussioni, c'è una discussuine su come usare i led IR come sensori per distanza molto economici ma comunque molto validi
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

jumpjack

E così, sono riuscito a costruire il mio primo robot.  8)
Con una arduino, una macchinina da 12 euro e due led IR che avevo nel cassetto.  :smiley-eek:
Roba da pazzi.  :smiley-eek:

Eccovi lo sketch:

Code: [Select]
#define irEmitter 12            // polo positivo emettitore
#define irReceiverN 7          // polo negativo ricevitore
#define irReceiverP 9   // polo positivo ricevitore

#define LEFT 8
#define RIGHT 10
#define FORWARD A3
#define BACKWARD A0

long distance = 0;
int interval = 15;

void setup() {
  Serial.begin(57600);             // inizializza seriale a 9600 baud
  pinMode(irEmitter, OUTPUT);      // il led emettitore è un output
  pinMode(irReceiverP, OUTPUT);    // il polo positivo del led ricevitore è un output
  digitalWrite(irReceiverP, LOW);  // e deve essere LOW
 
  pinMode(LEFT,OUTPUT);
  pinMode(RIGHT,OUTPUT);
  pinMode(FORWARD,OUTPUT);
  pinMode(BACKWARD,OUTPUT); 
}


int focus() {
distance = readLight(true) - readLight(false);
if(distance < 0) distance = 0;
// processing
int data = int(Serial.read());    //ottieni seriale
if(data == '1') interval++;       //se processing chiede di aumentare aumenta
if(interval > 0) if(data == '2') interval--; //se non sei a 0 diminuisci
Serial.print(interval);           //spedisci a processing distanza
Serial.print(" ");                //suddivisa da uno spazio
Serial.println(distance);         //e l'intervallo
return distance;
}

double readLight(boolean lightOn) {
digitalWrite(irEmitter, lightOn ? HIGH : LOW);
pinMode(irReceiverN, OUTPUT);
digitalWrite(irReceiverN, HIGH); //carico ricevitore di induttanza
long reading = 0;
pinMode(irReceiverN, INPUT);
digitalWrite(irReceiverN, LOW);
long lightTime = millis();
while((millis() - lightTime) < interval)
  if(digitalRead(irReceiverN) == 0)
   reading++;

return reading;
}

void GoForward() {
  digitalWrite(FORWARD,HIGH);
  digitalWrite(BACKWARD,LOW); 
}
   
void GoBackward() {
  digitalWrite(FORWARD,LOW);
  digitalWrite(BACKWARD,HIGH); 
}


void StopEngine() {
  digitalWrite(FORWARD,LOW);
  digitalWrite(BACKWARD,LOW); 
}

void loop() {
  while (focus() < 200) {
    GoForward();
  }
  GoBackward();
}


La macchinina va avanti finchè non vede un ostacolo, poi va indietro finche' non lo vede piu', poi rivà avanti....  :P
'na cretinata.... ma lo decide da sola, quindi è un robot a tutti gli effetti!
Unico problema: una arduino standard e una batteria sono TROOOOOPPO pesanti per questa macchinina.... quindi le ruote girano solo se la tengo in mano!  :smiley-roll: Domani devo passare alla versione Ardweeny...

Probabilmente dovò aggiungere anche un'isteresi, perche' per quei due secondi che la macchinina riesce a camminare da sola prima che il peso "ciucci" tutte le batterie di bordo  :smiley-roll: , siccome va molto piano va "in stallo" quando arriva alla distanza critica dall'ostacolo.


xelendilx

Complimenti!

Volevo fare una cosa del genere con una vecchia macchinina che ha mio zio che ha la ricetrasmittente rotta...

Ma come sensore formato dai due led hai utilizzato il codice di gioblu che si trovava qualche topic fa?

gbm

#6
Mar 24, 2011, 02:14 am Last Edit: Mar 24, 2011, 03:22 am by gbm Reason: 1
Ciao JumpJack non sai che piacere vedere una mia invenzione essere utile a qualcuno  :smiley-mr-green:!!
Fai qualche foto e magari un video!! Sono curioso di vedere l'oggetto!!
Perchè non carichi un articolo sulla tua realizzazione (magari potrebbe essere utile a qualcun altro  :smiley-mr-green:)
http://www.gioblu.com/index.php?option=com_content&view=article&layout=form&Itemid=15
Community robotica / programmazione Arduino
www.gioblu.com

jumpjack


Complimenti!

Volevo fare una cosa del genere con una vecchia macchinina che ha mio zio che ha la ricetrasmittente rotta...

Ma come sensore formato dai due led hai utilizzato il codice di gioblu che si trovava qualche topic fa?

Esatto.


Ciao JumpJack non sai che piacere vedere una mia invenzione essere utile a qualcuno  :smiley-mr-green:!!
Fai qualche foto e magari un video!! Sono curioso di vedere l'oggetto!!
Perchè non carichi un articolo sulla tua realizzazione (magari potrebbe essere utile a qualcun altro  :smiley-mr-green:)
http://www.gioblu.com/index.php?option=com_content&view=article&layout=form&Itemid=15

Sì, infatti ho preparato un articolo... ma per il sito del "gruppo arduino" che sta organizzando DigitalRome di settembre, mi spiace!
http://jumpjack.altervista.org//digitalrome/progetti/macchinina/index.xhtml

jumpjack

Cavolo, sembra che il metodo dei led IR sia molto piu' sensibile alla luce di quello che credevo, nonostante abbia usato gli infrarossi! Il comportamento della macchinina cambia profondamente lontano o vicino alla finestra!

lesto

#9
Mar 31, 2011, 09:13 pm Last Edit: Mar 31, 2011, 09:19 pm by lesto Reason: 1
prova a fare una specie di "tettuccio" in modo da tenere i led sempre in ombra, dovrebbe funzionare

edit: ancora meglio se li metti in una scatola
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Michele Menniti

Quote

Sì, infatti ho preparato un articolo... ma per il sito del "gruppo arduino" che sta organizzando DigitalRome di settembre, mi spiace!
http://jumpjack.altervista.org//digitalrome/progetti/macchinina/index.xhtml

Ciao, perché se clicco sul link mi appare una pagine che mi dice "la risorsa è qui" e cliccando cerca di scaricarmi il file index invece di aprire la pagina?
(Ho procurato una macchinina.... :D)
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

jumpjack


Quote

Sì, infatti ho preparato un articolo... ma per il sito del "gruppo arduino" che sta organizzando DigitalRome di settembre, mi spiace!
http://jumpjack.altervista.org//digitalrome/progetti/macchinina/index.xhtml

Ciao, perché se clicco sul link mi appare una pagine che mi dice "la risorsa è qui" e cliccando cerca di scaricarmi il file index invece di aprire la pagina?
(Ho procurato una macchinina.... :D)

Che appaia quella fastidiosissima pagina è "normale", perche' Altervista funziona cosi', ahime'. Pero' è strano che il browser cerchi di scaricare il file invece di aprirlo!

Pero' in teoria la pagina "di intermezzo" dovrebbe apaprirti solo se clicki sul link dalla pagina principale del nostro sito, mentre se scrivi questo nella barra-indirizzi dovrebbe aprirsi subito la pagina... o no?
http://jumpjack.altervista.org//digitalrome/progetti/macchinina/index.xhtml

Michele Menniti

Niente da fare, sono andato direttamente sulla home del tuo sito, mi fa entrare nelle altre due sezioni, invece su questa mi propone di scaricare l'home page, sarà la desinenza xhtml o il nome index1? Il sito sulla programmazione ha una pagina html "semplice" e si apre. :smiley-eek:
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

leo72

Io ho appena provato sia con Chrome che con FF sotto Linux: a parte che a volte compare la pagina di intermezzo, cliccando su "qui" arrivo alla pagina del progetto.

Michele Menniti

Io ho la coppia maledetta WinXP-IE8, speriamo che jumpjack risolva la cosa, vorrei proprio realizzarlo questo progettino.
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

Go Up