Mobiiltelefoniga juhitav robotauto, kasutades DTMF-moodulit

Proovige Meie Instrumenti Probleemide Kõrvaldamiseks





Selles projektis juhime oma mobiiltelefoni abil käsitsi robotit, kasutades DTMF-moodulit ja Arduino.

Autorid: Ankit Negi, Kanishk Godiyal ja Navneet Singh sajwan



Mobiiltelefoniga juhitav robotauto, kasutades DTMF-moodulit

SISSEJUHATUS

Selles projektis kasutatakse kahte mobiiltelefoni, ühte helistamiseks ja ühte kõne vastuvõtmiseks. Kõne saabuv telefon on robotiga ühendatud audiopistiku kaudu.

Helistav inimene saab robotit juhtida lihtsalt valimisklahvide abil. (st robotit saab juhtida igast maailma nurgast).



NÕUTAVAD KOMPONENDID

1 - Arduino UNO

2 - käsitsi robot

3 - 4 mootorit (siin kasutasime igaüks 300 p / min)

4 - DTMF-moodul

5 - mootorijuht

6 - 12-voldine aku

7 - lüliti

8 - kõrvaklappide pesa

9 - kaks mobiiltelefoni

10 - juhtmete ühendamine

RUUMI JUHISEST

Käsirobot koosneb šassiist (kerest), kuhu saab vastavalt vajadusele kinnitada kolm või neli mootorit (mis on rehvidega kruvitud).

Kasutatavad mootorid sõltuvad meie nõudest, st need võivad pakkuda kas suurt kiirust või suurt pöördemomenti või head kombinatsiooni mõlemast. Sellised rakendused nagu neljarattaline kopter vajavad raskusjõu vastu tõstmiseks väga suure kiirusega mootoreid, samas kui rakendused nagu mehaanilise käe liigutamine või järsul nõlval ronimine nõuavad suure pöördemomendiga mootoreid.

Mõlemad roboti vasakul ja paremal küljel olevad mootorid on ühendatud eraldi paralleelselt. Tavaliselt on need ühendatud 12-voldise akuga DPDT (topeltnõela topeltviske) lülitite kaudu.

Kuid selles projektis kasutame roboti juhtimiseks DPDT-de asemel mobiiltelefoni.

Mootorijuhi kohta

Arduino annab GPIO (üldotstarbelise sisendväljundi) tihvtide abil maksimaalse voolu 40mA, samas kui Vcc ja ground abil 200mA.

Mootorid vajavad töötamiseks suurt voolu. Me ei saa kasutada arduinot otse oma mootorite toitmiseks, seega kasutame mootori juhti.

Mootorijuht sisaldab H Bridge'i (mis on transistoride kombinatsioon). Mootori juhi IC-d (L298) juhib 5v, mida tarnib arduino.

Mootorite toitmiseks on vaja 12 V sisendit arduinost, mille lõpuks annab 12 V aku. Nii võtab arduino lihtsalt akult voolu ja annab mootorijuhile.

See võimaldab meil kontrollida mootorite kiirust ja suunda, andes maksimaalseks vooluks 2 amprit.

SISSEJUHATUS DTMF-moodulisse

DTMF tähistab kahetoonilist mitmekordset sagedust. Meie valimisklahvistik on kahetooniline mitmekordne sagedus, st üks nupp annab segu kahest erineva sagedusega toonist.

Üks toon genereeritakse kõrgsageduslikust toonide rühmast, teine ​​aga madala sagedusega rühmast. Seda tehakse nii, et mis tahes tüüpi hääl ei saaks toone jäljendada.

Niisiis dekodeerib see lihtsalt telefoni klaviatuuri sisendi neljabitiseks binaarkoodiks. Klaviatuuri numbrite sagedused, mida oleme oma projektis kasutanud, on toodud allolevas tabelis

Madal madal sagedus (herts) Kõrgsagedus (herts) 2697133647701209677014778852133609411336

Valimisklahvide numbrite binaarne dekodeeritud järjestus on toodud allolevas tabelis.

number D3 D2 D1 D0 1 0 0 0 1 kaks 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

JOONDIAGRAMM

ÜHENDUSED

Mootori juht -

  • Tihvtid „A” ja „B” juhivad vasakpoolset mootorit, tihvtid „C” ja „D” aga mootori paremat külge. Need neli tihvti on ühendatud nelja mootoriga.
  • Nööpnõel E on toiteallika (L298) toitmiseks, mis on võetud arduinost (5v).
  • tihvt F on maandatud.
  • Pistik G võtab akult 12-voldise voolu arduino Vini tihvti kaudu.
  • Nööpnõelad H, I, J ja K saavad loogika arduinost.

DTMF -

  • tihvt a on ühendatud IC-i toitmiseks 3,5 V arduinoga (SC9270D).
  • Tipp ’b’ on maaga ühendatud.
  • DTMF-i sisend võetakse telefonist pesa kaudu.
  • Binaarandmete kujul väljund (D0 - D3) tihvtide kaudu läheb arduinole.

ARDUINO -

  • (D0 - D3) tihvtide DTMF väljund tuleb arduino digitaalsetele tihvtidele. Saame selle väljundi ühendada mis tahes nelja digitaalse tihvtiga, mis varieeruvad (2 - 13) arduinos. Siin kasutasime tihvte 8, 9, 10 ja 11.
  • Arduino digitaalsed tihvtid 2 ja 3 on ühendatud mootorijuhi tihvtide numbritega H ja I, samas kui Arduino sõrmed 12 ja 13 on ühendatud J-i ja K-ga.
  • Arduino on ühendatud 12-voldise akuga.

Programmi KOOD-

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

KOODI SELETUS

  1. Kõigepealt initsialiseerime kõik muutujad enne tühise seadistamist.
  2. Tühjas seadistuses määratakse kõik kasutatavad tihvtid sisendi või väljundina vastavalt nende otstarbele.
  3. Tehakse uus funktsioon „void decoding ()”. Selles funktsioonis dekodeeritakse arduino kümnendkohani kogu binaarne sisend, mille saame DTMF-ist. Selle kümnendväärtuse jaoks määratud muutuja on a.
  4. Tehakse veel üks funktsioon „tühine printimine ()”. Seda funktsiooni kasutatakse sisendväärtuste printimiseks DTMF-tihvtidest.
  5. Samamoodi on vaja viit funktsiooni, mis on vaja vajaliku ülesande täitmiseks. Need funktsioonid on:

void move_left () // robot pöörab vasakule

void move_right () // robot pöörab paremale

void move_forward () // robot liigub edasi

void move_backward () // robot liigub tahapoole

void halt () // robot peatub

  1. Nüüd kasutatakse neid funktsioone void loop funktsioonis oma ülesande täitmiseks alati, kui neile helistatakse vastavalt mobiiltelefoni valimisklahvi sisendile.

Näiteks:::

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

seega kui nuppu 2 vajutatakse või sisendtappidele 0010 vastu võetakse, dekodeerib arduino selle ja seega teevad need funktsioonid oma tööd: edasi liikuma()

lugemine ()

dekodeerimine ()

trükkimine ()

JOONITÖÖ

Projektis kasutatavad juhtnupud on järgmised -

2 - edasi liikumiseks

4 - vasakule pööramiseks

6 - paremale pööramiseks

8 - tahapoole liikumiseks

0 - lõpetada

Pärast robotiga ühendatud telefonile helistamist avab inimene oma valimisklahvi.

  • Kui vajutatakse tähte „2”. DTMF võtab sisendi vastu, dekodeerib selle binaarse ekvivalentnumbriga, st '0010', ja saadab selle arduino digitaalsetele tihvtidele. Seejärel saadab arduino selle koodi mootorijuhile, kuna oleme programmeerinud, kui koodiks saab „0010”, mootorid pöörlevad päripäeva ja seega liigub meie robot edasi.
  • Kui vajutada nuppu 4, on selle ekvivalentne kood 0100 ja vastavalt programmeerimisele vasakpoolsed mootorid seiskuvad ja ainult parempoolsed mootorid pöörlevad päripäeva ja seega pöörab meie robot vasakule.
  • Kui vajutate nuppu 6, siis parempoolne mootor seiskub ja ainult vasakpoolsed mootorid pöörlevad päripäeva ja seega pöörab meie robot paremale.
  • Kui vajutada nuppu 8, siis meie mootorid pöörlevad vastupäeva ja seega liigub meie robot tahapoole.
  • Kui vajutate nuppu 0, siis kõik meie mootorid seiskuvad ja robot ei liigu.

Selles projektis oleme määranud funktsiooni ainult viiele valimisklahvinumbrile. Selle projekti täiendatud versiooni tegemiseks võime lisada mis tahes tüüpi muud mehhanismi ja määrata sellele mehhanismile valimisklahvi numbri.

PUNKTID, MIDA PIDADA MEELES

1 - tungraud ei tohiks olla lahti.

2 - telefoni klahvistiku toonid peaksid olema maksimaalsed.

3 - häirivate mõjude vältimiseks peaks vastuvõtva telefoni Internet / Wi-Fi olema suletud.

4 - DTMF-i vasak tihvt (st tihvt b) on maandatud ja parem tihvt (st tihvt a) on ühendatud 3.3v-ga.

Mobiiltelefoniga juhitava robotauto ringraja prototüüp, kasutades DTMF-i
Mobiiltelefoniga juhitava RC-auto video demonstreerimine DTMF-i abil



Eelmine: EEPROMi tutvustus Arduinos Järgmine: tehke see teaduse messiprojekti jaoks reajälgija robot