Auto robot controllata da telefono cellulare utilizzando il modulo DTMF

Prova Il Nostro Strumento Per Eliminare I Problemi





In questo progetto controlleremo un robot manuale tramite il nostro cellulare utilizzando il modulo DTMF e Arduino.

A cura di: Ankit Negi, Kanishk Godiyal e Navneet Singh sajwan



Auto robot controllata da telefono cellulare utilizzando il modulo DTMF

INTRODUZIONE

In questo progetto vengono utilizzati due telefoni cellulari, uno per chiamare e uno per ricevere la chiamata. Il telefono che riceve la chiamata è collegato al robot tramite jack audio.

La persona che sta chiamando può controllare il robot semplicemente premendo i tasti della tastiera. (ovvero il robot può essere azionato da qualsiasi angolo del mondo).



COMPONENTI NECESSARI

1 - Arduino UNO

2 - Robot manuale

3-4 motori (qui abbiamo usato 300 giri / min ciascuno)

4 - Modulo DTMF

5 - Motor driver

Batteria da 6-12 volt

7 - Interruttore

8 - Jack per cuffie

9 - Due telefoni cellulari

10 - Cavi di collegamento

A PROPOSITO DEL ROBOT MANUALE

Un robot manuale è costituito da un telaio (corpo) in cui tre o quattro motori (che sono avvitati con pneumatici) possono essere collegati a seconda delle esigenze.

I motori da utilizzare dipendono dalle nostre esigenze, ovvero possono fornire alta velocità o coppia elevata o una buona combinazione di entrambi. Applicazioni come i quadricotteri richiedono motori ad altissima velocità per il sollevamento contro la gravità, mentre applicazioni come lo spostamento di un braccio meccanico o l'arrampicata su un pendio ripido richiedono motori a coppia elevata.

Entrambi i motori sul lato sinistro e destro del robot sono collegati in parallelo separatamente. Di solito sono collegati a una batteria da 12 volt tramite interruttori DPDT (double pin double throw).

Ma in questo progetto useremo il telefono cellulare invece dei DPDT per controllare il bot.

INFORMAZIONI SU MOTOR DRIVER

Arduino fornisce una corrente massima di 40mA utilizzando i pin GPIO (general purpose input output), mentre fornisce 200mA usando Vcc e terra.

I motori richiedono una grande corrente per funzionare. Non possiamo usare direttamente arduino per alimentare i nostri motori, quindi usiamo un driver del motore.

Il driver del motore contiene H Bridge (che è una combinazione di transistor). L'IC (L298) del driver del motore è pilotato da 5v fornito da arduino.

Per alimentare i motori, richiede un ingresso a 12 V da Arduino, che viene infine fornito da una batteria da 12 V. Quindi l'arduino prende solo l'alimentazione dalla batteria e la fornisce al driver del motore.

Ci permette di controllare la velocità e la direzione dei motori fornendo una corrente massima di 2 ampere.

INTRODUZIONE AL MODULO DTMF

DTMF sta per Dual tone multi frequency. La nostra tastiera è una frequenza multipla di due toner, ovvero un pulsante fornisce una miscela di due toni con frequenza diversa.

Un tono viene generato da un gruppo di toni ad alta frequenza mentre l'altro da un gruppo a bassa frequenza. È fatto in modo che qualsiasi tipo di voce non possa imitare i toni.

Quindi, decodifica semplicemente l'input della tastiera del telefono in un codice binario a quattro bit. Le frequenze dei numeri della tastiera che abbiamo usato nel nostro progetto sono mostrate nella tabella sottostante

Cifre Bassa frequenza (hertz) Alta frequenza (hertz) 2697133647701209677014778852133609411336

La sequenza binaria decodificata delle cifre della tastiera è mostrata nella tabella seguente.

cifra D3 D2 D1 D0 1 0 0 0 1 Due 0 0 1 0 3 0 0 1 1 4 0 1 0 0 5 0 1 0 1 6 0 1 1 0 7 0 1 1 1 8 1 0 0 0 9 1 0 0 1 0 1 0 1 0 * 1 0 1 1 # 1 1 0 0

SCHEMA ELETTRICO

CONNESSIONI

Driver del motore -

  • I pin 'A' e 'B' controllano il motore sul lato sinistro mentre i pin 'C' e 'D' controllano il lato destro del motore. Questi quattro pin sono collegati ai quattro motori.
  • Il pin 'E' è per alimentare l'IC (L298) che è preso da arduino (5v).
  • il pin 'F' è a massa.
  • Il pin 'G' prende l'alimentazione a 12 volt dalla batteria tramite il pin Vin di arduino.
  • I pin 'H', 'I', 'J' e 'K' ricevono la logica da arduino.

DTMF -

  • il pin 'a' è collegato a 3,5 volt di arduino per alimentare l'IC (SC9270D).
  • Il pin 'b' è collegato a terra.
  • L'ingresso del DTMF viene preso dal telefono tramite jack.
  • L'output sotto forma di dati binari tramite i pin (D0 - D3) va ad arduino.

ARDUINO -

  • l'uscita del DTMF dai pin (D0 - D3) arriva ai pin digitali di arduino. Possiamo collegare questa uscita a uno qualsiasi dei quattro pin digitali che variano da (2-13) in arduino. Qui abbiamo usato i pin 8, 9, 10 e 11.
  • I pin digitali 2 e 3 di arduino sono collegati al pin numero 'H' e 'I' del driver del motore mentre i pin 12 e 13 di arduino sono collegati a 'J' e 'K'.
  • L'arduino è collegato a una batteria da 12 volt.

CODICE del programma

int x // initialising variables
int y
int z
int w
int a=20
void setup()
{
pinMode(2,OUTPUT) //left motor
pinMode(3,OUTPUT) //left
pinMode(8,INPUT) // output from DO pin of DTMF
pinMode(9,INPUT) //output from D1 pin of DTMF
pinMode(10,INPUT) //output from D2 pin of DTMF
pinMode(11,INPUT) // output from D3 pin of DTMF
pinMode(12,OUTPUT) //right motor
pinMode(13,OUTPUT) //right
Serial.begin(9600)// begin serial communication between arduino and laptop
}
void decoding()// decodes the 4 bit binary number into decimal number
{
if((x==0)&&(y==0)&&(z==0)&&(w==0))
{
a=0
}
if((x==0)&&(y==0)&&(z==1)&&(w==0))
{
a=2
}
if((x==0)&&(y==1)&&(z==0)&&(w==0))
{
a=4
}
if((x==0)&&(y==1)&&(z==1)&&(w==0))
{
a=6
}
if((x==1)&&(y==0)&&(z==0)&&(w==0))
{
a=8
}
}
void printing()// prints the value received from input pins 8,9,10 and 11 respectively
{
Serial.print(' x ')
Serial.print( x )
Serial.print(' y ')
Serial.print( y )
Serial.print(' z ')
Serial.print( z )
Serial.print(' w ')
Serial.print( w )
Serial.print(' a ')
Serial.print(a)
Serial.println()
}
void move_forward()// both side tyres of bot moves forward
{
digitalWrite(2,HIGH)
digitalWrite(3,LOW)
digitalWrite(12,HIGH)
digitalWrite(13,LOW)
}
void move_backward()//both side tyres of bot moves backward
{
digitalWrite(3,HIGH)
digitalWrite(2,LOW)
digitalWrite(13,HIGH)
digitalWrite(12,LOW)
}
void move_left()// only left side tyres move forward
{
digitalWrite(2,HIGH)
digitalWrite(3,LOW)
digitalWrite(12,LOW)
digitalWrite(13,HIGH)
}
void move_right()//only right side tyres move forward
{
digitalWrite(2,LOW)
digitalWrite(3,HIGH)
digitalWrite(12,HIGH)
digitalWrite(13,LOW)
}
void halt()// all motor stops
{
digitalWrite(2,LOW)
digitalWrite(3,LOW)
digitalWrite(12,LOW)
digitalWrite(13,LOW)
}
void reading()// take readings from input pins that are connected to DTMF D0, D1, D2 and D3 PINS.
{
x=digitalRead(8)
y=digitalRead(9)
z=digitalRead(10)
w=digitalRead(11)
}
void loop()
{
reading()
decoding()
if((x==0)&&(y==0)&&(z==1)&&(w==0))
{
move_forward()
reading()
decoding()
printing()
}
if((x==1)&&(y==0)&&(z==0)&&(w==0))
{
move_backward()
reading()
decoding()
printing()
}
if((x==0)&&(y==1)&&(z==0)&&(w==0))
{
move_left()
reading()
decoding()
printing()
}
if((x==0)&&(y==1)&&(z==1)&&(w==0))
{
move_right()
reading()
decoding()
printing()
}
if((x==0)&&(y==0)&&(z==0)&&(w==0))
{
halt()
reading()
decoding()
printing()
}
a=20
printing()
}

SPIEGAZIONE DEL CODICE

  1. Prima di tutto, inizializziamo tutte le variabili prima della configurazione di void.
  2. Nella configurazione void, tutti i pin da utilizzare vengono assegnati come input o output in base al loro scopo.
  3. Viene creata una nuova funzione 'void decoding ()'. In questa funzione tutto l'input binario che otteniamo da DTMF viene decodificato in decimale da arduino. E la variabile assegnata per questo valore decimale è a.
  4. Viene eseguita un'altra funzione 'void printing ()'. Questa funzione viene utilizzata per stampare i valori di input dai pin DTMF.
  5. Allo stesso modo, sono necessarie cinque funzioni per eseguire l'attività richiesta. Queste funzioni sono:

void move_left () // il robot gira a sinistra

void move_right () // il robot gira a destra

void move_forward () // il robot si muove in avanti

void move_backward () // il robot si muove all'indietro

void halt () // il robot si ferma

  1. Ora queste funzioni vengono utilizzate nella funzione void loop per svolgere il loro compito ogni volta che vengono chiamate in base all'input dalla tastiera del cellulare.

Per esempio:::

if((x==0)&&(y==0)&&(z==1)&&(w==0))
{
move_forward()
reading()
decoding()
printing()
}

quindi quando si preme il pulsante 2 o si riceve 0010 sui pin di ingresso, arduino lo decodifica e quindi queste funzioni fanno il loro lavoro: move_forward ()

lettura()

decodifica ()

stampa()

CIRCUITO FUNZIONANTE

I controlli che abbiamo utilizzato nel nostro progetto sono i seguenti:

2 - Per andare avanti

4 - Girare a sinistra

6 - Girare a destra

8 - Per spostarsi all'indietro

0 - fermarsi

Dopo aver effettuato una chiamata al telefono collegato al robot, la persona apre la tastiera.

  • Se viene premuto '2'. Il DTMF riceve l'input, lo decodifica nel suo numero binario equivalente cioè '0010' e lo invia ai pin digitali di arduino. Arduino invia quindi questo codice al driver del motore come abbiamo programmato quando il codice sarà '0010', i motori ruoteranno in senso orario e quindi il nostro robot si muoverà in avanti.
  • Se viene premuto '4', il suo codice equivalente è '0100' e in base alla programmazione i motori del lato sinistro si fermeranno e solo i motori del lato destro ruoteranno in senso orario e quindi il nostro robot girerà a sinistra.
  • Se si preme '6', il motore del lato destro si fermerà e solo i motori del lato sinistro ruoteranno in senso orario e quindi il nostro robot girerà a destra.
  • Se si preme '8', i nostri motori ruoteranno in senso antiorario e quindi il nostro robot si muoverà all'indietro.
  • Se viene premuto '0', tutti i nostri motori si fermeranno e il robot non si muoverà.

In questo progetto abbiamo assegnato una funzione solo a cinque numeri di tastiera. Possiamo aggiungere qualsiasi tipo di altro meccanismo e assegnare un numero di tastierino a quel meccanismo per creare una versione aggiornata di questo progetto.

PUNTI DA TENERE A MENTE

1 - Il jack non deve essere allentato.

2 - I toni della tastiera del telefono dovrebbero essere al massimo.

3 - La connessione Internet / Wi-Fi del telefono ricevente deve essere chiusa per evitare effetti di interferenza.

4 - Il pin sinistro (ovvero il pin 'b') del DTMF è a massa e il pin destro (ovvero il pin 'a') è collegato a 3.3v.

Prototipazione di immagini del circuito dell'auto robot controllata da cellulare utilizzando DTMF
Dimostrazione video di auto RC controllata da cellulare utilizzando DTMF



Precedente: Introduzione alla EEPROM in Arduino Successivo: crea questo robot seguace di linea per il progetto Science Fair