Robotski automobil kojim upravlja mobitel pomoću DTMF modula

Isprobajte Naš Instrument Za Uklanjanje Problema





U ovom ćemo projektu upravljati ručnim robotom putem našeg mobitela pomoću DTMF modula i Arduina.

Napisali: Ankit Negi, Kanishk Godiyal i Navneet Singh sajwan



Robotski automobil kojim upravlja mobitel pomoću DTMF modula

UVOD

U ovom projektu koriste se dva mobitela, jedan za pozivanje i jedan za primanje poziva. Telefon koji prima poziv povezan je s robotom putem audio priključka.

Osoba koja zove može upravljati robotom pritiskom na tipke tipkovnice. (tj. robotom se može upravljati iz bilo kojeg kutka svijeta).



POTREBNE KOMPONENTE

1 - Arduino UNO

2 - Ručni robot

3 - 4 motora (ovdje smo koristili po 300 okretaja u minuti)

4 - DTMF modul

5 - Vozač motora

6 - 12 voltna baterija

7 - Prekidač

8 - Utičnica za slušalice

9 - Dva mobitela

10 - Spajanje žica

O RUČNOM ROBOTU

Ručni robot sastoji se od šasije (karoserije) u koju se mogu pričvrstiti tri ili četiri motora (koji su zavrnuti gumama), ovisno o zahtjevu.

Motori koji će se koristiti ovise o našim zahtjevima, tj. Mogu pružiti veliku brzinu ili veliki zakretni moment ili dobru kombinaciju oba. Primjene poput četverokotača zahtijevaju motore s vrlo velikom brzinom za podizanje protiv gravitacije, dok primjene poput pomicanja mehaničke ruke ili penjanja na strmu padinu zahtijevaju motore s velikim okretnim momentom.

Oba motora na lijevoj i desnoj strani robota spojena su paralelno odvojeno. Obično su povezani s 12-voltnom baterijom putem DPDT (dvopolnih dvostrukih bacanja) prekidača.

Ali u ovom projektu koristit ćemo mobilni telefon umjesto DPDT-a za kontrolu bota.

O VOZAČU MOTORA

Arduino daje maksimalnu struju od 40 mA pomoću GPIO (općenito ulazni izlaz) pinova, dok daje 200 mA pomoću Vcc i uzemljenja.

Motorima je potrebna velika struja za rad. Ne možemo koristiti arduino izravno za napajanje svojih motora pa koristimo pokretački program motora.

Motorni pogon sadrži H most (koji je kombinacija tranzistora). IC (L298) pogonskog sklopa motora napaja se od 5v koje napaja arduino.

Da bi napajali motore, potrebno je 12v ulaza od arduina koji se u konačnici napaja od 12v baterije. Dakle, arduino samo uzima energiju iz baterije i daje vozaču motora.

Omogućuje nam kontrolu brzine i smjera motora davanjem maksimalne struje od 2 ampera.

UVOD U DTMF MODUL

DTMF je kratica za dvotonski višefrekventni zvuk. Naša tipkovnica je dvostruka višestruka frekvencija, tj. Jedan gumb daje mješavinu dva tona različite frekvencije.

Jedan ton generira se iz visokofrekventne skupine tonova, dok drugi iz niskofrekventne skupine. To je učinjeno tako da bilo koja vrsta glasa ne može oponašati tonove.

Dakle, jednostavno dekodira unos telefonske tipkovnice u četverobitni binarni kôd. Frekvencije brojeva tipkovnice koje smo koristili u našem projektu prikazane su u donjoj tablici

DigitLow frekvencija (herc) Visoka frekvencija (herc) 2697133647701209677014778852133609411336

Binarno dekodirani niz znamenki brojčanika prikazan je u donjoj tablici.

broj 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

KRUŽNI DIJAGRAM

VEZE

Vozač motora -

  • Pin 'A' i 'B' kontrolira lijevu stranu motora, dok pin 'C' i 'D' kontrolira desnu stranu motora. Te su četiri zatiča spojene na četiri motora.
  • Pin 'E' služi za napajanje IC (L298) koji je preuzet iz arduina (5v).
  • pin 'F' je mljeven.
  • Pin 'G' uzima 12 volti napajanja iz baterije putem Vin-pin-a arduino.
  • Pribadače 'H', 'I', 'J' i 'K' primaju logiku od arduina.

DTMF -

  • pin 'a' spojen je na 3,5 volta arduina za napajanje IC-a (SC9270D).
  • Pin 'b' spojen je na masu.
  • Ulaz DTMF-a preuzima se s telefona putem utičnice.
  • Izlaz u obliku binarnih podataka putem (D0 - D3) pinova ide na arduino.

ARDUINO -

  • izlaz DTMF-a iz (D0 - D3) pinova dolazi na digitalne pinove arduina. Ovaj izlaz možemo povezati na bilo koji od četiri digitalna pina koji se razlikuju od (2 - 13) u arduinu. Ovdje smo koristili igle 8, 9, 10 i 11.
  • Digitalne iglice 2 i 3 arduina povezane su s pin brojevima 'H' i 'I' vozača motora, dok su iglice 12 i 13 arduina povezane s 'J' i 'K'.
  • Arduino je spojen na 12 voltnu bateriju.

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

OBJAŠNJENJE KODA

  1. Prije svega, inicijaliziramo sve varijable prije postavljanja praznina.
  2. U praznom postavljanju, sve igle koje će se koristiti dodijeljene su kao ulaz ili izlaz prema svojoj namjeni.
  3. Izrađena je nova funkcija 'void decoding ()'. U ovoj funkciji sav binarni ulaz koji dobijemo iz DTMF-a arduino dekodira u decimalu. A varijabla koja je dodijeljena za ovu decimalnu vrijednost je a.
  4. Napravljena je još jedna funkcija 'ispis praznina ()'. Ova se funkcija koristi za ispis ulaznih vrijednosti s DTMF pinova.
  5. Slično tome, pet je funkcija potrebnih funkcija koje su potrebne za izvršavanje traženog zadatka. Te su funkcije:

void move_left () // robot skreće ulijevo

void move_right () // robot skreće udesno

void move_forward () // robot se kreće naprijed

void move_backward () // robot se kreće unatrag

void halt () // robot se zaustavlja

  1. Sada se ove funkcije koriste u void loop funkciji za obavljanje svog zadatka kad god ih se pozove prema unosu s brojčanika mobitela.

Na primjer:::

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

dakle, kada se pritisne tipka 2 ili se na ulazne pinove primi 0010, arduino to dekodira i tako ove funkcije rade svoj posao: kreni naprijed()

čitanje()

dekodiranje ()

tisak ()

Kružni rad

Kontrole koje smo koristili u našem projektu su sljedeće -

2 - Za pomicanje naprijed

4 - Za skretanje ulijevo

6 - Za skretanje udesno

8 - Za pomicanje unatrag

0 - zaustaviti

Nakon što uputi poziv telefonu povezanom s robotom, osoba otvara brojčanik.

  • Ako se pritisne „2“. DTMF prima ulaz, dekodira ga u svoj binarni ekvivalentni broj, tj. '0010', i šalje na digitalne pinove arduina. Arduino tada šalje ovaj kôd vozaču motora kako smo programirali kada će kôd biti '0010', motori će se okretati u smjeru kazaljke na satu i stoga će se naš robot pomicati naprijed.
  • Ako se pritisne „4“, onda je njegov ekvivalentni kod „0100“ i prema programiranju lijevi bočni motori će se zaustaviti, a samo desni bočni motori okretat će se u smjeru kazaljke na satu, a time će i naš robot skrenuti lijevo.
  • Ako se pritisne ‘6’, tada će se desni bočni motor zaustaviti, a samo će se lijevi bočni motori okretati u smjeru kazaljke na satu, a time će i naš robot skrenuti udesno.
  • Ako pritisnete '8', tada će se naši motori okretati u smjeru suprotnom od kazaljke na satu i tako će se naš robot pomicati unatrag.
  • Ako se pritisne ‘0’, tada će se svi naši motori zaustaviti i robot se neće pomicati.

U ovom smo projektu dodijelili funkciju samo pet brojeva tipkovnice. Možemo dodati bilo koju vrstu drugog mehanizma i tom mehanizmu dodijeliti broj tipkovnice za biranje kako bismo napravili nadograđenu verziju ovog projekta.

BODOVI KOJE TREBA IMATI NA UMU

1 - Dizalica ne smije biti labava.

2 - Tonovi tipkovnice telefona trebaju biti maksimalni.

3 - Internet / Wi-Fi primajućeg telefona trebao bi biti zatvoren kako bi se izbjegli učinci smetnji.

4 - Lijevi zatik (tj. Zatik „b“) DTMF-a je uzemljen, a desni zatik (tj. Pribadača „a“) ​​spojen je na 3,3 v.

Prototip slika kruga robotskog automobila kojim upravlja mobitel pomoću DTMF-a
Video demonstracija RC automobila kojim upravlja mobitel pomoću DTMF-a



Prethodno: Uvod u EEPROM u Arduinu Dalje: Napravite ovog robota sljedbenika za projekt Sajma znanosti