Cotxe robot controlat per telèfon mòbil que utilitza el mòdul DTMF

Cotxe robot controlat per telèfon mòbil que utilitza el mòdul DTMF

En aquest projecte, controlarem un robot manual a través del nostre telèfon mòbil mitjançant el mòdul DTMF i Arduino.



Per: Ankit Negi, Kanishk Godiyal i Navneet Singh sajwan

Cotxe robot controlat per telèfon mòbil que utilitza el mòdul DTMF

INTRODUCCIÓ

En aquest projecte s’utilitzen dos telèfons mòbils, un per trucar i un per rebre la trucada. El telèfon que rep la trucada es connecta al robot mitjançant un connector d’àudio.





La persona que truca pot controlar el robot només prement les tecles del teclat de marcatge. (és a dir, el robot es pot operar des de qualsevol racó del món).

COMPONENTS NECESSARIS

1 - Arduino UN



2 - Robot manual

3-4 motors (aquí hem utilitzat 300 r.p.m cadascun)

4 - Mòdul DTMF

5 - Conductor del motor

Bateria de 6 a 12 volts

7 - Interruptor

8 - Presa per a auriculars

9 - Dos telèfons mòbils

10 - Connexió de cables

SOBRE EL ROBOT MANUAL

Un robot manual consta de xassís (carrosseria) en el qual es poden connectar tres o quatre motors (que es cargolen amb pneumàtics) en funció del requisit.

Els motors que s’utilitzaran depenen del nostre requisit, és a dir, poden proporcionar una velocitat elevada o un parell elevat o una bona combinació de tots dos. Les aplicacions com el quad helicòpter requereixen motors de molt alta velocitat per aixecar-se contra la gravetat mentre que per a aplicacions com moure un braç mecànic o pujar per un fort pendent es requereixen motors de parell elevat.

Els dos motors del costat esquerre i dret del robot es connecten en paral·lel per separat. Normalment es connecten a una bateria de 12 volt mitjançant interruptors DPDT (doble pin doble tir).

Però en aquest projecte utilitzarem el telèfon mòbil en lloc de DPDT per controlar el bot.

SOBRE EL CONDUCTOR DE MOTOR

Arduino proporciona un corrent màxim de 40 mA mitjançant pins GPIO (sortida d’entrada d’ús general), mentre que proporciona 200 mA mitjançant Vcc i terra.

Els motors requereixen un gran corrent per funcionar. No podem utilitzar arduino directament per alimentar els nostres motors, de manera que fem servir un controlador de motor.

El controlador del motor conté Bridge H (que és una combinació de transistors). El CI (L298) del controlador de motor és alimentat per 5v que és subministrat per arduino.

Per alimentar els motors, es necessita una entrada de 12 V d’arduino, que finalment és subministrada per una bateria de 12 V. Així doncs, l’arduino només pren energia de la bateria i li dóna al controlador del motor.

Ens permet controlar la velocitat i la direcció dels motors donant un corrent màxim de 2 amperes.

INTRODUCCIÓ AL MUDUL DTMF

DTMF significa dual freqüència múltiple de to. El nostre teclat de marcatge és una freqüència múltiple de dos tòners, és a dir, un botó proporciona una barreja de dos tons amb freqüència diferent.

Un to es genera a partir d’un grup de tons d’alta freqüència, mentre que un altre a partir d’un grup de baixa freqüència. Es fa de manera que qualsevol tipus de veu no pugui imitar els tons.

Per tant, simplement descodifica l'entrada del teclat del telèfon en codi binari de quatre bits. Les freqüències dels números de teclat que hem utilitzat en el nostre projecte es mostren a la taula següent

Digit Baixa freqüència (hertz) Alta freqüència (hertz) 2697133647701209677014778852133609411336

La seqüència descodificada binària dels dígits del teclat de marcatge es mostra a la taula següent.

dígit D3 D2 D1 D0 1 0 0 0 1 2 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

ESQUEMA DE CONNEXIONS

CONNEXIONS

Conductor de motor -

  • Els pins 'A' i 'B' controlen el motor del costat esquerre mentre que els pins 'C' i 'D' controlen el costat dret del motor. Aquests quatre pins estan connectats als quatre motors.
  • El pin 'E' serveix per alimentar IC (L298) que es pren d'arduino (5v).
  • el pin 'F' està mòlt.
  • El pin 'G' pren energia de 12 volts de la bateria mitjançant el pin Vin d'Arduino.
  • Els pins 'H', 'I', 'J' i 'K' reben la lògica d'arduino.

DTMF -

  • el pin ‘a’ està connectat a 3,5 volts d’arduino per alimentar l’IC (SC9270D).
  • El pin ‘b’ està connectat a terra.
  • L'entrada de DTMF es pren des del telèfon mitjançant un connector.
  • La sortida en forma de dades binàries mitjançant pins (D0 - D3) passa a arduino.

ARDUINO -

  • la sortida de DTMF des de pins (D0 - D3) arriba a pins digitals d'arduino. Podem connectar aquesta sortida a qualsevol dels quatre pins digitals que varien de (2 - 13) a arduino. Aquí hem utilitzat els pins 8, 9, 10 i 11.
  • Els pins digitals 2 i 3 de l’arduino estan connectats al número de pin ‘H’ i ‘I’ del controlador del motor, mentre que els pins 12 i 13 de l’arduino estan connectats a ‘J’ i ‘K’.
  • L'arduino està connectat a una bateria de 12 volts.

CODI del programa-

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()
}

EXPLICACIÓ DEL CODI

  1. Primer de tot, inicialitzem totes les variables abans de la configuració nul·la.
  2. En configuració nul·la, tots els pins que s’utilitzaran s’assignen com a entrada o sortida segons el seu propòsit.
  3. Es fa una nova funció 'void decoding ()'. En aquesta funció, tota l’entrada binària que obtenim de DTMF es descodifica a decimal mitjançant arduino. I la variable assignada per a aquest valor decimal és a.
  4. Es fa una altra funció 'void printing ()'. Aquesta funció s’utilitza per imprimir valors d’entrada des de pins DTMF.
  5. De la mateixa manera, es requereixen cinc funcions per realitzar la tasca requerida. Aquestes funcions són:

void move_left () // el robot gira a l'esquerra

void move_right () // el robot gira a la dreta

void move_forward () // el robot avança

void move_backward () // el robot es mou cap enrere

void halt () // el robot s’atura

  1. Ara aquestes funcions s'utilitzen en funció de bucle buit per fer la seva tasca sempre que es criden segons l'entrada del teclat numèric.

Per exemple:::

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

per tant, quan es prem el botó 2 o es rep 0010 als pins d'entrada, arduino ho descodifica i, per tant, aquestes funcions fan el seu treball: avançar()

lectura()

descodificació ()

imprimir ()

FUNCIONAMENT DEL CIRCUIT

Els controls que hem utilitzat en el nostre projecte són els següents:

2 - Per avançar

4 - Per girar a l'esquerra

6 - Per girar a la dreta

8 - Per retrocedir

0 - parar

Després de fer una trucada al telèfon connectat al robot, la persona obre el seu teclat de marcatge.

  • Si es prem '2'. El DTMF rep l’entrada, la descodifica en el seu número binari equivalent, és a dir, ‘0010’ i l’envia a pins digitals d’arduino. A continuació, l’arduino envia aquest codi al controlador del motor tal com hem programat quan el codi serà ‘0010’, els motors giraran en sentit horari i, per tant, el nostre robot avançarà.
  • Si es prem '4', el seu codi equivalent és '0100' i, segons la programació, els motors del costat esquerre s'aturaran i només els motors del costat dret giraran en sentit horari i, per tant, el nostre robot girarà a l'esquerra.
  • Si es prem '6', el motor del costat dret s'aturarà i només els motors del costat esquerre giraran en sentit horari i, per tant, el nostre robot girarà a la dreta.
  • Si es prem '8', els nostres motors giraran en sentit antihorari i, per tant, el nostre robot es desplaçarà cap enrere.
  • Si es prem '0', tots els nostres motors s'aturaran i el robot no es mourà.

En aquest projecte hem assignat una funció només a cinc números de teclat. Podem afegir qualsevol altre tipus de mecanisme i assignar-li un número de teclat per fer una versió actualitzada d’aquest projecte.

PUNTS A CONSERVAR

1 - El gat no s'ha de deixar anar.

2 - Els tons del teclat del telèfon han de ser màxims.

3 - Internet / Wi-Fi del telèfon receptor hauria de tancar-se per evitar efectes d'interferència.

4 - El pin esquerre (és a dir, el pin 'b') de DTMF està connectat a terra i el pin dret (ie el pin 'a') està connectat a 3,3v.

Imatges prototipus del circuit de cotxe robot controlat per mòbil mitjançant DTMF
Demostració de vídeo de cotxe RC controlat per mòbil mitjançant DTMF



Anterior: Introducció a EEPROM a Arduino Següent: Feu aquest robot Line Follower per a la fira científica