Mobiltelefonstyrt robotbil ved bruk av DTMF-modul

Prøv Instrumentet Vårt For Å Eliminere Problemer





I dette prosjektet skal vi kontrollere en manuell robot via mobiltelefonen vår ved hjelp av DTMF-modulen og Arduino.

Av: Ankit Negi, Kanishk Godiyal og Navneet Singh sajwan



Mobiltelefonstyrt robotbil ved bruk av DTMF-modul

INTRODUKSJON

I dette prosjektet brukes to mobiltelefoner, en for å ringe og en for å motta samtalen. Telefonen som mottar samtalen er koblet til roboten via lydkontakt.

Personen som ringer kan styre roboten bare ved å trykke på talltastene. (dvs. roboten kan betjenes fra alle verdenshjørner).



KOMPONENTER KREVES

1 - Arduino UNO

2 - Manuell robot

3 - 4 motorer (her brukte vi 300 omdr./min hver)

4 - DTMF-modul

5 - Motordriver

6 - 12 volt batteri

7 - Bryter

8 - Hodetelefonkontakt

9 - To mobiltelefoner

10 - Koble ledninger

OM MANUELL ROBOT

En manuell robot består av chassis (karosseri) der tre eller fire motorer (som er skrudd med dekk) kan festes avhengig av behov.

Motorer som skal brukes avhenger av vårt krav, dvs. de kan enten gi høy hastighet eller høyt dreiemoment eller en god kombinasjon av begge. Programmer som quad copter krever motorer med høy hastighet for å løfte seg mot tyngdekraften mens applikasjoner som å bevege en mekanisk arm eller klatre i en bratt skråning krever motorer med høyt dreiemoment.

Begge motorene på venstre og høyre side av roboten er koblet sammen hver for seg. Vanligvis er de koblet til et 12 volt batteri via DPDT-brytere.

Men i dette prosjektet vil vi bruke mobiltelefon i stedet for DPDT for å kontrollere bot.

OM MOTORDRIVER

Arduino gir maksimal strøm på 40 mA ved bruk av GPIO-pins (generell inngangsutgang), mens den gir 200 mA ved bruk av Vcc og jord.

Motorer krever stor strøm for å fungere. Vi kan ikke bruke arduino direkte til å drive motorene våre, så vi bruker en motordriver.

Motordriveren inneholder H Bridge (som er en kombinasjon av transistorer). IC (L298) til motorføreren drives av 5v som leveres av arduino.

For å drive motorene, tar det 12v inngang fra arduino som til slutt leveres av et 12V batteri. Så arduino tar bare strøm fra batteriet og gir til motorføreren.

Det lar oss kontrollere hastigheten og retningen til motorene ved å gi maksimal strøm på 2 ampere.

INNLEDNING TIL DTMF-MODUL

DTMF står for Dual tone multifrekvens. Tastaturet vårt er en multiplikasjonsfrekvens på to toner, dvs. en knapp gir en blanding av to toner med forskjellig frekvens.

En tone genereres fra en høyfrekvent gruppe av toner, mens den andre fra en lavfrekvent gruppe. Det er gjort slik at enhver type stemme ikke kan imitere tonene.

Så det avkoder ganske enkelt telefonens tastaturinngang til fire-bits binær kode. Frekvensene til tastaturnumrene som vi har brukt i prosjektet vårt, er vist i tabellen nedenfor

DigitLow frekvens (hertz) Høy frekvens (hertz) 2697133647701209677014778852133609411336

Den binære dekodede sekvensen for talltastaturets sifre vises i tabellen nedenfor.

siffer D3 D2 D1 D0 1 0 0 0 1 to 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

KRETSDIAGRAM

FORBINDELSER

Motordriver -

  • Pin 'A' og 'B' styrer motoren på venstre side mens Pin 'C' og 'D' kontrollerer høyre side av motoren. Disse fire pinnene er koblet til de fire motorene.
  • Pin ‘E’ er til å drive IC (L298) som er hentet fra arduino (5v).
  • pin ‘F’ er malt.
  • Pin ‘G’ tar 12 volt strøm fra batteriet via Vin pin of arduino.
  • Pins ‘H’, ‘I’, ‘J’ og ‘K’ mottar logikk fra arduino.

DTMF -

  • pin ‘a’ er koblet til 3,5 volt arduino for å drive IC (SC9270D).
  • Pin ‘b’ er koblet til bakken.
  • Inngangen til DTMF hentes fra telefonen via kontakten.
  • Utgangen i form av binære data via (D0 - D3) pinner går til arduino.

ARDUINO -

  • utgangen av DTMF fra (D0 - D3) pinner kommer til digitale pinner av arduino. Vi kan koble denne utgangen til hvilken som helst av de fire digitale pinnene som varierer fra (2 - 13) i arduino. Her brukte vi pinner 8, 9, 10 og 11.
  • Digitale pinner 2 og 3 på arduino er koblet til pin nummer 'H' og 'I' til motordriveren mens pinn 12 og 13 i arduino er koblet til 'J' og 'K'.
  • Arduino er koblet til et 12 volt batteri.

Program KODE-

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

KODEKLARING

  1. Først av alt initialiserer vi alle variablene før ugyldig oppsett.
  2. I ugyldig oppsett tildeles alle pinner som skal brukes som inngang eller utgang i henhold til deres formål.
  3. En ny funksjon “ugyldig dekoding ()” er laget. I denne funksjonen blir all binærinngang som vi får fra DTMF dekodet til desimal av arduino. Og en variabel som er tildelt denne desimalverdien, er a.
  4. En annen funksjon “ugyldig utskrift ()” er laget. Denne funksjonen brukes til å skrive ut inngangsverdier fra DTMF-pinner.
  5. Tilsvarende er fem funksjoner nødvendige funksjoner som kreves for å utføre den nødvendige oppgaven. Disse funksjonene er:

ugyldig move_left () // robot svinger til venstre

ugyldig move_right () // robot svinger til høyre

ugyldig move_forward () // robot beveger seg fremover

ugyldig move_backward () // robot beveger seg bakover

void halt () // robot stopper

  1. Nå brukes disse funksjonene i ugyldig sløyfefunksjon for å gjøre oppgaven når de blir ringt i henhold til inngang fra tastaturet på mobiltelefonen.

For eksempel:::

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

derav når knapp 2 trykkes eller 0010 mottas på inngangspinnene, dekoder arduino dette og dermed gjør disse funksjonene sitt arbeid: gå fremover()

lesning()

dekoding ()

printing()

KRETSARBEID

Kontrollene som vi har brukt i prosjektet vårt er som følger -

2 - For å komme videre

4 - For å svinge til venstre

6 - For å svinge til høyre

8 - Å bevege seg bakover

0 - for å stoppe

Etter å ha ringt til telefonen som er koblet til roboten, åpner personen talltastaturet.

  • Hvis ‘2’ trykkes. DTMF mottar inngangen, dekoder den i sitt binære ekvivalente nummer, dvs. '0010' og sender den til digitale pinner i arduino. Arduino sender deretter denne koden til motordriveren slik vi har programmert når koden vil være '0010', motorene vil rotere med urviseren og dermed vil roboten vår bevege seg fremover.
  • Hvis '4' trykkes, er dens ekvivalente kode '0100', og i henhold til programmeringen vil motorene på venstre side stoppe og bare motorene på høyre side vil rotere med klokken, og dermed vil roboten vår svinge til venstre.
  • Hvis '6' trykkes, stopper høyre motor og bare venstre motors vil rotere med klokken, og dermed vil roboten vår svinge til høyre.
  • Hvis '8' trykkes, vil motorene våre rotere mot urviseren, og dermed vil roboten vår bevege seg bakover.
  • Hvis '0' trykkes, vil alle motorene våre stoppe og roboten vil ikke bevege seg.

I dette prosjektet har vi bare tilordnet en funksjon til fem nummertaster. Vi kan legge til en hvilken som helst annen mekanisme og tilordne et talltastaturnummer til den mekanismen for å lage en oppgradert versjon av dette prosjektet.

PUNKTER Å HOLDE I HÅND

1 - Jekken skal ikke være løs.

2 - Telefonens tastaturtoner skal være maksimale.

3 - Internett / Wi-Fi for mottakende telefon bør lukkes for å unngå interferenseffekter.

4 - Venstre stift (dvs. pin ‘b’) på DTMF er jordet og høyre pin (dvs. pin ‘a’) er koblet til 3.3v.

Prototype bilder av mobiltelefonstyrt robotbilkrets ved hjelp av DTMF
Videodemonstrasjon av mobiltelefonstyrt RC-bil ved bruk av DTMF



Forrige: Introduksjon til EEPROM i Arduino Neste: Lag denne Line Follower Robot for Science Fair Project