Mobiltelefonstyrd robotbil med DTMF-modul

Prova Vårt Instrument För Att Eliminera Problem





I det här projektet ska vi styra en manuell robot via vår mobiltelefon med hjälp av DTMF-modulen och Arduino.

Av: Ankit Negi, Kanishk Godiyal och Navneet Singh sajwan



Mobiltelefonstyrd robotbil med DTMF-modul

INTRODUKTION

I detta projekt används två mobiltelefoner, en för att ringa och en för att ta emot samtalet. Telefonen som tar emot samtalet är ansluten till roboten via ljuduttag.

Den som ringer kan styra roboten bara genom att trycka på knapparna. (dvs. roboten kan manövreras från vilket som helst hörn av världen).



KOMPONENTER KRÄVS

1 - Arduino UNO

2 - Manuell robot

3 - 4 motorer (här använde vi 300 varv / min vardera)

4 - DTMF-modul

5 - Motorförare

6 - 12 volt batteri

7 - Växla

8 - Hörlursuttag

9 - Två mobiltelefoner

10 - Anslutning av ledningar

OM MANUELL ROBOT

En manuell robot består av chassi (kaross) där tre eller fyra motorer (som är skruvade med däck) kan monteras beroende på behov.

Motorer som ska användas beror på vårt krav, dvs. de kan antingen ge hög hastighet eller högt vridmoment eller en bra kombination av båda. Tillämpningar som fyrkopare kräver motorer med hög hastighet för att lyfta mot tyngdkraften medan applikationer som att flytta en mekanisk arm eller klättra uppför en brant sluttning kräver motorer med högt vridmoment.

Båda motorerna på robotens vänstra och högra sida är parallellkopplade separat. Vanligtvis är de anslutna till ett 12 volts batteri via DPDT-omkopplare (dubbla stift dubbla kast).

Men i det här projektet kommer vi att använda mobiltelefon istället för DPDT för att styra botten.

OM MOTORFÖRARE

Arduino ger maximal ström på 40mA med GPIO-stift (allmänt ingångsutgång), medan den ger 200mA med Vcc och jord.

Motorer kräver stor ström för att fungera. Vi kan inte använda arduino direkt för att driva våra motorer så vi använder en motorförare.

Motordrivrutinen innehåller H Bridge (som är en kombination av transistorer). IC (L298) hos motorföraren drivs av 5v som levereras av arduino.

För att driva motorerna krävs 12v-ingång från arduino som till slut levereras av ett 12-voltsbatteri. Så arduino tar bara ström från batteriet och ger till motorföraren.

Det gör att vi kan styra motorns hastighet och riktning genom att ge maximal ström på 2 ampere.

INLEDNING TILL DTMF-MODUL

DTMF står för Dual tone multifrekvens. Vår knappsats är en multipelfrekvens med två toner, dvs. en knapp ger en blandning av två toner med olika frekvens.

En ton genereras från en högfrekvent grupp av toner medan den andra från en lågfrekvent grupp. Det görs så att alla typer av röster inte kan imitera tonerna.

Så det avkodar helt enkelt telefonens tangentbordets inmatning i fyra bitars binär kod. Frekvenserna för knappsatsnummer som vi har använt i vårt projekt visas i tabellen nedan

DigitLow frekvens (hertz) Hög frekvens (hertz) 2697133647701209677014778852133609411336

Den binära avkodade sekvensen för knappsatsens siffror visas i tabellen nedan.

siffra D3 D2 D1 D0 1 0 0 0 1 två 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

ANSLUTNINGAR

Motorförare -

  • Stift 'A' och 'B' styr vänster sidomotor medan stift 'C' och 'D' styr höger sida av motorn. Dessa fyra stift är anslutna till de fyra motorerna.
  • Pin 'E' är att driva IC (L298) som är hämtad från arduino (5v).
  • stift 'F' är slipat.
  • Pin 'G' tar 12 volt ström från batteriet via Vin pin of arduino.
  • Pins 'H', 'I', 'J' och 'K' får logik från arduino.

DTMF -

  • pin 'a' är ansluten till 3,5 volt arduino för att driva IC (SC9270D).
  • Stift 'b' är anslutet till marken.
  • Ingången till DTMF tas från telefonen via uttaget.
  • Utgången i form av binära data via (D0 - D3) stift går till arduino.

ARDUINO -

  • utgången från DTMF från (D0 - D3) stift kommer till digitala stift av arduino. Vi kan ansluta denna utgång till någon av de fyra digitala stiften som varierar från (2 - 13) i arduino. Här använde vi stift 8, 9, 10 och 11.
  • Digitala stift 2 och 3 på arduino är anslutna till stiftnummer 'H' och 'I' hos motordrivrutinen medan stift 12 och 13 i arduino är anslutna till 'J' och 'K'.
  • Arduino är ansluten till ett 12 volts batteri.

Program KOD-

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

KODFÖRKLARING

  1. Först och främst initierar vi alla variabler innan ogiltig installation.
  2. I ogiltig inställning tilldelas alla stift som ska användas som ingång eller utgång enligt deras syfte.
  3. En ny funktion ”ogiltig avkodning ()” skapas. I den här funktionen avkodas all binär ingång från DTMF till decimal av arduino. Och variabel tilldelad för detta decimalvärde är a.
  4. En annan funktion ”ogiltig utskrift ()” görs. Denna funktion används för att skriva ut inmatningsvärden från DTMF-stift.
  5. På samma sätt är fem funktioner nödvändiga funktioner krävs för att utföra den uppgift som krävs. Dessa funktioner är:

ogiltigt move_left () // roboten svänger åt vänster

ogiltigt move_right () // roboten svänger åt höger

ogiltigt move_forward () // robot går framåt

ogiltigt move_backward () // robot rör sig bakåt

void halt () // robot stannar

  1. Nu används dessa funktioner i tomrumsfunktion för att utföra sina uppgifter när de anropas enligt ingång från mobiltelefonens knappsats.

Till exempel:::

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

alltså när knapp 2 trycks in eller 0010 tas emot på ingångsstift, avkodar arduino detta och därmed gör dessa funktioner sitt arbete: gå framåt()

läsning()

avkodning ()

utskrift()

KRETSARBETE

Kontrollerna som vi har använt i vårt projekt är som följer -

2 - Att gå framåt

4 - Sväng vänster

6 - Att svänga åt höger

8 - Att flytta bakåt

0 - för att stoppa

Efter att ha ringt till den telefon som är ansluten till roboten öppnar personen sin knappsats.

  • Om du trycker på “2”. DTMF tar emot ingången, avkodar den i sitt binära ekvivalenta nummer, dvs '0010' och skickar den till digitala stift av arduino. Arduino skickar sedan denna kod till motorföraren som vi har programmerat när koden kommer att vara '0010', motorerna kommer att rotera medurs och därför kommer vår robot att gå framåt.
  • Om '4' trycks in är dess motsvarande kod '0100' och enligt programmeringen kommer motorerna till vänster att stanna och endast motorerna på höger sida kommer att rotera medurs och därmed kommer vår robot att svänga åt vänster.
  • Om '6' trycks in kommer högermotorn att stanna och endast vänstermotorer kommer att rotera medurs och därmed kommer vår robot att svänga åt höger.
  • Om '8' trycks in kommer våra motorer att rotera moturs och därmed kommer vår robot att röra sig bakåt.
  • Om '0' trycks in kommer alla våra motorer att stanna och roboten kommer inte att röra sig.

I det här projektet har vi tilldelat en funktion endast till fem nummer. Vi kan lägga till vilken typ av annan mekanism som helst och tilldela en knappsats till den mekanismen för att göra en uppgraderad version av detta projekt.

PUNKTER FÖR ATT FÖRVARA

1 - Jacken ska inte vara lös.

2 - Telefonknappsignalerna bör vara maximala.

3 - Internet / Wi-Fi för mottagande telefon bör stängas för att undvika störningseffekter.

4 - Vänster stift (dvs stift 'b') på DTMF är jordat och höger stift (dvs stift 'a') är anslutet till 3,3 v.

Prototypbilder av den mobiltelefonstyrda robotbilskretsen med DTMF
Videodemonstration av mobiltelefonstyrd RC-bil med DTMF



Tidigare: Introduktion till EEPROM i Arduino Nästa: Gör denna Line Follower-robot för Science Fair-projektet