Mobiltelefon vezérelt robotautó DTMF modul használatával

Próbálja Ki A Műszerünket A Problémák Kiküszöbölésére





Ebben a projektben kézi robotot fogunk irányítani a mobiltelefonunkon keresztül a DTMF modul és az Arduino segítségével.

Készítette: Ankit Negi, Kanishk Godiyal és Navneet Singh sajwan



Mobiltelefon vezérelt robotautó DTMF modul használatával

BEVEZETÉS

Ebben a projektben két mobiltelefont használnak, egyet a híváshoz és egyet a hívás fogadásához. A hívást fogadó telefon audio aljzaton keresztül csatlakozik a robothoz.

A hívó személy a tárcsázó gombok megnyomásával irányíthatja a robotot. (vagyis a robot a világ bármely sarkából működtethető).



SZÜKSÉGES ALKATRÉSZEK

1 - Arduino UNO

2 - Kézi robot

3-4 motor (itt 300 fordulat / perc sebességet használtunk)

4 - DTMF modul

5 - Motorvezető

6 - 12 voltos akkumulátor

7 - Kapcsoló

8 - Fejhallgató-csatlakozó

9 - Két mobiltelefon

10 - Csatlakozó vezetékek

A KÉZI ROBOTRÓL

A kézi robot alvázból (karosszériából) áll, amelybe az igényektől függően három vagy négy motor (amely gumiabroncsokkal van csavarozva) csatlakoztatható.

Az alkalmazandó motorok a követelményektől függenek, azaz nagy sebességet vagy nagy nyomatékot, vagy mindkettő jó kombinációját képesek biztosítani. Az olyan alkalmazásokhoz, mint a négykopcos, nagyon nagy sebességű motorok szükségesek a gravitációval szembeni felemelkedéshez, míg olyan alkalmazásokhoz, mint egy mechanikus kar mozgatása vagy meredek lejtőn való megmászás, nagy nyomatékú motorok szükségesek.

A robot bal és jobb oldalán mindkét motor külön-külön párhuzamosan van csatlakoztatva. Általában egy 12 voltos akkumulátorhoz csatlakoznak DPDT (kettős csapos kettős dobás) kapcsolókon keresztül.

De ebben a projektben a bot vezérléséhez DPDT-k helyett mobiltelefont fogunk használni.

A MOTORVEZETŐRŐL

Az Arduino a GPIO (általános célú bemeneti kimenet) csapok segítségével maximálisan 40 mA áramot ad, míg a Vcc és a föld segítségével 200 mA-t.

A motorok működéséhez nagy áram szükséges. Az arduino-t nem használhatjuk közvetlenül motorjaink áramellátására, ezért motorvezérlőt használunk.

A motorvezérlő tartalmazza a H Bridge-et (amely egy tranzisztor kombinációja). A motorvezérlő IC-jét (L298) 5v hajtja, amelyet az arduino szállít.

A motorok táplálásához 12 V-os bemenetre van szükség az arduino-tól, amelyet végül egy 12 V-os akkumulátor szolgáltat. Tehát az arduino csak az akkumulátort veszi át és adja a motorvezetőnek.

Ez lehetővé teszi számunkra, hogy a motorok sebességét és irányát 2 amper árammal állítsuk be.

BEVEZETÉS A DTMF MODULBA

A DTMF jelentése Dual tone multi frequency. Tárcsázóink két toner többszörös frekvenciát jelentenek, vagyis egy gomb két különböző frekvenciájú hang keverékét adja.

Az egyik hang egy magas frekvenciájú hangcsoportból, míg a másik egy alacsony frekvenciájú csoportból származik. Annak érdekében, hogy bármilyen típusú hang ne tudja utánozni a hangokat.

Tehát egyszerűen dekódolja a telefon kezelőjének bemenetét négy bites bináris kódra. A projektben használt billentyűzet számok frekvenciáját az alábbi táblázat mutatja

Alacsony frekvencia (hertz) Magas frekvencia (hertz) 2697133647701209677014778852133609411336

A tárcsázó számjegyeinek bináris dekódolt sorrendjét az alábbi táblázat mutatja.

számjegy D3 D2 D1 D0 1 0 0 0 1 két 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

KÖRDIAGRAMM

CSATLAKOZÁSOK

Motorvezető -

  • Az „A” és „B” csapok a bal oldali motort, míg az „C” és „D” csapok a motor jobb oldalát vezérlik. Ez a négy tüske csatlakozik a négy motorhoz.
  • Az „E” tű az IC (L298) táplálására szolgál, amelyet az arduino (5v) vesz át.
  • „F” csap van földelve.
  • A „G” tű 12 voltos energiát vesz fel az akkumulátorról az arduino Vin tűjén keresztül.
  • A „H”, „I”, „J” és „K” csapok logikát kapnak az arduinótól.

DTMF -

  • az „a” tű 3,5 V arduino-hoz van csatlakoztatva az IC áramellátásához (SC9270D).
  • A „b” csap a földhöz csatlakozik.
  • A DTMF bemenetét a telefon aljzaton keresztül veszi.
  • A kimenet bináris adat formájában (D0 - D3) csapok segítségével az arduino-ba kerül.

ARDUINO -

  • a DTMF kimenete a (D0 - D3) csapokról az arduino digitális csapjaira érkezik. Csatlakoztathatjuk ezt a kimenetet az arduino-ban a (2 - 13) értéktől eltérő négy digitális tű bármelyikéhez. Itt a 8., 9., 10. és 11. csapokat használtuk.
  • Az arduino 2. és 3. digitális érintkezője a motorvezérlő „H” és „I” tűjéhez, míg az arduino 12. és 13. érintkezője a „J” és a „K” csatlakozóihoz csatlakozik.
  • Az arduino egy 12 voltos akkumulátorhoz van csatlakoztatva.

Program KÓD-

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

KÓDMagyarázat

  1. Először is az inicializálás előtt inicializálunk minden változót.
  2. A void beállításban az összes használandó érintkező rendeltetésüknek megfelelően bemenetként vagy kimenetként van hozzárendelve.
  3. Új függvény készül a „void decoding ()”. Ebben a függvényben az összes bináris bemenetet, amelyet a DTMF-től kapunk, decimálisra dekódolja az arduino. Az ehhez a tizedesértékhez rendelt változó pedig a.
  4. Egy másik funkció: „érvénytelen nyomtatás ()”. Ez a funkció a bemeneti értékek DTMF-érintkezőkből történő kinyomtatására szolgál.
  5. Hasonlóképpen öt funkció szükséges, a szükséges feladatok elvégzéséhez szükséges funkciók. Ezek a funkciók:

void move_left () // robot balra fordul

void move_right () // robot jobbra fordul

void move_forward () // robot halad előre

void move_backward () // robot hátra mozog

void halt () // robot leáll

  1. Ezeket a funkciókat a void loop funkcióban használják feladataik elvégzéséhez, amikor a mobiltelefon tárcsázójának bemenete alapján hívják őket.

Például:::

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

így amikor a 2-es gombot megnyomják, vagy a 0010-et megkapják a bemeneti csapokon, az arduino ezt dekódolja, és így ezek a funkciók elvégzik a dolgukat: menj tovább()

olvasás()

dekódolás()

nyomtatás()

ÁRAMKEZELÉS

A projektünkben alkalmazott kontrollok a következők:

2 - Haladás

4 - Balra fordulni

6 - jobbra fordulni

8 - Visszafelé haladás

0 - megáll

Miután felhívta a robothoz csatlakoztatott telefont, az illető kinyitja a tárcsázóját.

  • Ha a „2” gombot megnyomja. A DTMF megkapja a bemenetet, dekódolja bináris ekvivalens számában, azaz „0010”, és elküldi az arduino digitális csapjainak. Az arduino ezt követően elküldi ezt a kódot a motorvezérlőnek, mivel beprogramoztuk, amikor a kód ’0010’ lesz, a motorok az óramutató járásával megegyező irányban forognak, és így robotunk előrelép.
  • Ha megnyomják a „4” -t, akkor annak megfelelő kódja „0100”, és a programozás szerint a bal oldali motorok leállnak, és csak a jobb oldali motorok forognak az óramutató járásával megegyező irányba, és így robotunk balra fordul.
  • Ha megnyomják a „6” -t, akkor a jobb oldali motor leáll, és csak a bal oldali motorok forognak az óramutató járásával megegyező irányba, és így robotunk jobbra fordul.
  • Ha megnyomják a „8” -t, akkor motorjaink az óramutató járásával ellentétes irányban forognak, és így robotunk visszafelé mozog.
  • Ha a „0” gombot megnyomjuk, akkor az összes motorunk leáll, és a robot nem mozog.

Ebben a projektben csak öt tárcsázó számhoz rendeltünk funkciót. Bármilyen típusú más mechanizmust hozzáadhatunk, és hozzáadhatunk egy tárcsázó számot ahhoz, hogy a projekt továbbfejlesztett változata készüljön.

AZ ELMÉLETBEN TARTANDÓ PONTOK

1 - Az emelő nem lehet laza.

2 - A telefon billentyűzetének maximálisnak kell lennie.

3 - A fogadó telefon internetét / Wi-Fi-jét le kell zárni az interferenciahatások elkerülése érdekében.

4 - A DTMF bal tüskéje (azaz „b” csapja) földelve van, és a jobb oldali tüske (azaz az „a” csap) a 3,3 V-hoz van csatlakoztatva.

A mobiltelefon által vezérelt robotautó-áramkör prototípusának képei DTMF segítségével
A mobiltelefon által vezérelt RC autó videó bemutatása DTMF segítségével



Előző: Bevezetés az EEPROM-ba Arduinóban Következő: Készítse el ezt a vonalkövető robotot a Science Fair projekt számára