Avtomobil z nadzorovanim mobilnim telefonom z uporabo modula DTMF

Preizkusite Naš Instrument Za Odpravo Težav





V tem projektu bomo prek našega mobilnega telefona upravljali ročnega robota z uporabo modula DTMF in Arduino.

Avtor: Ankit Negi, Kanishk Godiyal in Navneet Singh sajwan



Avtomobil z nadzorovanim mobilnim telefonom z uporabo modula DTMF

UVOD

V tem projektu se uporabljata dva mobilna telefona, eden za klicanje in drugi za sprejem klica. Telefon, ki sprejme klic, je z robotom povezan prek avdio vtičnice.

Oseba, ki kliče, lahko robota nadzira samo s pritiskom na tipke številčnice. (tj. z robotom je mogoče upravljati s katerega koli konca sveta).



ZAHTEVANE KOMPONENTE

1 - Arduino UNO

2 - Ročni robot

3 - 4 motorji (tukaj smo uporabili po 300 vrt / min)

4 - DTMF modul

5 - Voznik motorja

6 - 12-voltna baterija

7 - Stikalo

8 - Priključek za slušalke

9 - Dva mobilna telefona

10 - Priključitev žic

O ROČNEM ROBOTU

Ročni robot je sestavljen iz šasije (ohišja), na katero je mogoče pritrditi tri ali štiri motorje (ki so priviti s pnevmatikami), odvisno od potrebe.

Motorji, ki jih je treba uporabiti, so odvisni od naše zahteve, torej lahko zagotavljajo visoko hitrost ali velik navor ali dobro kombinacijo obeh. Aplikacije, kot je quad copter, zahtevajo motorje z zelo visoko hitrostjo, da se dvignejo proti gravitaciji, medtem ko uporaba, kot je premikanje mehanske roke ali vzpenjanje po strmem pobočju, zahteva motorje z velikim navorom.

Oba motorja na levi in ​​desni strani robota sta povezana vzporedno ločeno. Običajno so na 12-voltno baterijo priključeni s stikali DPDT (dvojni zatič z dvojnim metanjem).

Toda v tem projektu bomo za nadzor bota uporabili mobilni telefon namesto DPDT-jev.

O VOZNIKU MOTORJA

Arduino daje največji tok 40 mA z uporabo zatičev GPIO (splošni vhodni izhod), medtem ko daje 200 mA z uporabo Vcc in ozemljitve.

Motorji za delovanje potrebujejo velik tok. Arduina ne moremo uporabljati neposredno za pogon naših motorjev, zato uporabljamo gonilnik motorja.

Gonilnik motorja vsebuje most H (ki je kombinacija tranzistorjev). IC (L298) motornega voznika poganja 5v, ki ga napaja arduino.

Za napajanje motorjev je potreben 12-voltni vhod iz arduina, ki ga na koncu napaja 12-voltna baterija. Arduino torej samo napaja baterijo in oddaja vozniku motorja.

Omogoča nam nadzor hitrosti in smeri motorjev tako, da daje največji tok 2 ampera.

UVOD V DTMF MODUL

DTMF pomeni Dvotonsko večfrekvenčno. Naša številčnica je dvofrekvenčna več frekvenca, tj. En gumb daje mešanico dveh tonov z različno frekvenco.

En ton se ustvari iz visokofrekvenčne skupine tonov, drugi pa iz nizkofrekvenčne skupine. Narejeno je tako, da katera koli vrsta glasu ne more posnemati tonov.

Torej preprosto dekodira vnos telefonske tipkovnice v štiri bitno binarno kodo. Frekvence številk tipkovnice, ki smo jih uporabili v našem projektu, so prikazane v spodnji tabeli

DigitLow frekvenca (herc) Visoka frekvenca (herc) 2697133647701209677014778852133609411336

Binarno dekodirano zaporedje številk številčnice je prikazano v spodnji tabeli.

številka D3 D2 D1 D0 1. 0 0 0 1. dva 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

KROG DIAGRAM

POVEZAVE

Voznik motorja -

  • Zatiča 'A' in 'B' nadzorujeta levo stran motorja, medtem ko zatič 'C' in 'D' nadzorujeta desno stran motorja. Ti štirje zatiči so povezani s štirimi motorji.
  • Pin 'E' je za napajanje IC (L298), ki je vzet iz arduino (5v).
  • zatič „F“ je ozemljen.
  • Pin 'G' od akumulatorja prek vtiča Vin Arduino napaja 12 voltov.
  • Zatiči 'H', 'I', 'J' in 'K' prejemajo logiko iz arduina.

DTMF -

  • pin 'a' je priključen na 3,5 volta arduina za napajanje IC (SC9270D).
  • Zatič 'b' je povezan s tlemi.
  • Vhod DTMF je iz telefona prek priključka.
  • Izhod v obliki binarnih podatkov prek zatičev (D0 - D3) gre na arduino.

ARDUINO -

  • izhod DTMF iz zatičev (D0 - D3) prihaja na digitalne zatiče arduino. Ta izhod lahko povežemo s katerim koli od štirih digitalnih zatičev, ki se razlikujejo od (2 - 13) v arduinu. Tu smo uporabili zatiče 8, 9, 10 in 11.
  • Digitalna zatiča 2 in 3 arduina sta povezana s številkama pinov „H“ in „I“ gonilnika motorja, medtem ko sta zatiča 12 in 13 arduina povezana z „J“ in „K“.
  • Arduino je povezan z 12-voltno baterijo.

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

POJASNILO KODE

  1. Najprej vse spremenljivke inicializiramo pred nastavitvijo praznine.
  2. Pri nastavitvi void so vsi zatiči, ki jih je treba uporabiti, dodeljeni kot vhod ali izhod glede na njihov namen.
  3. Izdelana je nova funkcija »void decoding ()«. V tej funkciji ves binarni vhod, ki ga dobimo iz DTMF, arduino dekodira na decimalno mesto. In spremenljivka, dodeljena tej decimalni vrednosti, je a.
  4. Izvedena je še ena funkcija »void printing ()«. Ta funkcija se uporablja za tiskanje vhodnih vrednosti iz zatičev DTMF.
  5. Podobno je pet funkcij potrebnih funkcij, ki so potrebne za izvajanje zahtevane naloge. Te funkcije so:

void move_left () // robot zavije levo

void move_right () // robot zavije desno

void move_forward () // robot se premakne naprej

void move_backward () // robot se premakne nazaj

void halt () // robot se ustavi

  1. Zdaj se te funkcije uporabljajo v funkciji void loop, da opravijo svojo nalogo, kadar koli jih pokličejo glede na vnos iz številčnice mobilnega telefona.

Na primer :::

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

s tem, ko pritisnete gumb 2 ali prejmete 0010 na vhodne nožice, Arduino to dekodira in tako te funkcije opravijo svoje delo: premakniti se naprej()

branje ()

dekodiranje ()

tiskanje ()

DELOVANJE V KOLU

Nadzor, ki smo ga uporabili v našem projektu, je naslednji -

2 - Za premik naprej

4 - Zavijte levo

6 - Zavijte desno

8 - Za premik nazaj

0 - ustaviti

Po klicu na telefon, povezan z robotom, oseba odpre svojo številčnico.

  • Če pritisnete »2«. DTMF sprejme vhod, ga dekodira v binarno ekvivalentno številko, tj. „0010“, in ga pošlje na digitalne nožice arduina. Nato arduino pošlje to kodo gonilniku motorja, kot smo programirali, kdaj bo koda '0010', motorji se bodo vrteli v smeri urnega kazalca in s tem se bo naš robot premikal naprej.
  • Če pritisnete »4«, je njegova enakovredna koda »0100« in v skladu s programiranjem se bodo levi bočni motorji ustavili in le desni bočni motorji se bodo vrteli v smeri urnega kazalca, zato bo naš robot zavil levo.
  • Če pritisnete '6', se bo desni bočni motor ustavil in le levi bočni motorji se bodo vrteli v smeri urinega kazalca, zato bo naš robot zavil desno.
  • Če pritisnete '8', se bodo naši motorji zavrteli v nasprotni smeri urnega kazalca in tako se bo naš robot pomaknil nazaj.
  • Če pritisnete '0', se bodo vsi naši motorji ustavili in robot se ne bo premaknil.

V tem projektu smo funkcijo dodelili samo petim številkam številčnic. Za nadgrajeno različico tega projekta lahko dodamo katero koli drugo vrsto mehanizma in mu dodamo številko številčnice.

TOČKE, KI JIH MORAMO IMETI

1 - Dvigalka ne sme biti ohlapna.

2 - Toni tipkovnice telefona naj bodo najvišji.

3 - Internet / Wi-Fi prejemnega telefona mora biti zaprt, da se preprečijo motnje.

4 - Levi zatič (tj. Zatič 'b') DTMF je ozemljen, desni zatič (tj. Zatič 'a') pa je povezan na 3,3 v.

Prototipne slike robotskega avtomobilskega vezja z DTMF
Video prikaz RC avtomobila, ki ga upravlja mobilni telefon z uporabo DTMF



Prejšnji: Uvod v EEPROM v Arduinu Naprej: Naredite ta projekt Robot sledilca za projekt Science Fair