Robotické auto ovládané mobilným telefónom pomocou modulu DTMF

Vyskúšajte Náš Nástroj Na Odstránenie Problémov





V tomto projekte budeme riadiť manuálneho robota prostredníctvom nášho mobilného telefónu pomocou modulu DTMF a Arduina.

Autori: Ankit Negi, Kanishk Godiyal a Navneet Singh sajwan



Robotické auto ovládané mobilným telefónom pomocou modulu DTMF

ÚVOD

V tomto projekte sa používajú dva mobilné telefóny, jeden na volanie a druhý na príjem hovoru. Telefón prijímajúci hovor je pripojený k robotovi prostredníctvom zvukového konektora.

Osoba, ktorá volá, môže ovládať robota iba stlačením klávesov číselnej klávesnice. (t. j. robot je možné ovládať z ktoréhokoľvek kúta sveta).



POŽADOVANÉ KOMPONENTY

1 - Arduino UNO

2 - Ručný robot

3 - 4 motory (tu sme použili každý 300 otáčok za minútu)

4 - modul DTMF

5 - Vodič motora

6 - 12 voltová batéria

7 - Prepínač

8 - Konektor pre slúchadlá

9 - Dva mobilné telefóny

10 - Pripojenie vodičov

O RUČNOM ROBOTE

Ručný robot sa skladá z podvozku (karosérie), do ktorého môžu byť podľa potreby pripevnené tri alebo štyri motory (ktoré sú priskrutkované pomocou pneumatík).

Motory, ktoré sa majú použiť, závisia od našich požiadaviek, tzn. Môžu buď poskytovať vysoké otáčky alebo vysoký krútiaci moment alebo dobrú kombináciu oboch. Aplikácie ako štvorkolka vyžadujú na zdvíhanie proti gravitácii veľmi rýchle motory, zatiaľ čo aplikácie ako pohyb mechanického ramena alebo lezenie po strmom svahu vyžadujú motory s vysokým krútiacim momentom.

Oba motory na ľavej a pravej strane robota sú paralelne zapojené osobitne. Zvyčajne sú pripojené k 12voltovej batérii cez prepínače DPDT (dvojitý kolík, dvojitý vývod).

Ale v tomto projekte budeme na ovládanie robota používať namiesto DPDT mobilný telefón.

O VODIČI MOTORA

Arduino dáva maximálny prúd 40mA pomocou pinov GPIO (vstup na všeobecné účely), zatiaľ čo dáva 200mA pomocou Vcc a zeme.

Motory na svoju činnosť potrebujú veľký prúd. Nemôžeme použiť arduino priamo na napájanie našich motorov, takže používame vodič motora.

Driver obsahuje H Bridge (čo je kombinácia tranzistorov). IC (L298) vodiča motora je poháňané 5v, ktoré dodáva arduino.

Na napájanie motorov je potrebných 12 V arduina, ktoré je nakoniec napájané 12 V batériou. Arduino teda berie iba energiu z batérie a dáva vodičovi motora.

Umožňuje nám ovládať rýchlosť a smer motorov poskytovaním maximálneho prúdu 2 ampéry.

ÚVOD DO DTMF MODULU

DTMF je skratka pre Dual tone multi frequency. Naša číselná klávesnica má viacnásobnú frekvenciu s dvoma tonermi, to znamená, že jedno tlačidlo poskytuje zmes dvoch tónov s rôznou frekvenciou.

Jeden tón je generovaný z vysokofrekvenčnej skupiny tónov, zatiaľ čo druhý z nízkofrekvenčnej skupiny. Robí sa to tak, že akýkoľvek typ hlasu nemôže napodobňovať tóny.

Takže jednoducho dekóduje vstup klávesnice telefónu do štvorbitového binárneho kódu. Frekvencie čísel klávesníc, ktoré sme použili v našom projekte, sú uvedené v nasledujúcej tabuľke

DigitLow frekvencia (hertz) Vysoká frekvencia (hertz) 2697133647701209677014778852133609411336

Binárne dekódovaná postupnosť číslic číselnej klávesnice je uvedená v nasledujúcej tabuľke.

číslica 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

DIAGRAM OBVODU

SPOJENIA

Vodič motora -

  • Kolíky „A“ a „B“ ovládajú motor na ľavej strane, zatiaľ čo kolíky „C“ a „D“ ovládajú pravú stranu motora. Tieto štyri kolíky sú spojené so štyrmi motormi.
  • Pin „E“ slúži na napájanie integrovaného obvodu (L298), ktorý je prevzatý z Arduina (5 V).
  • kolík „F“ je brúsený.
  • Pin „G“ odoberá z batérie 12 voltov cez Vin pin arduino.
  • Kolíky „H“, „I“, „J“ a „K“ dostávajú logiku od arduina.

DTMF -

  • pin „a“ je pripojený k 3,5 voltu arduina na napájanie integrovaného obvodu (SC9270D).
  • Kolík „b“ je pripojený k zemi.
  • Vstup DTMF sa získava z telefónu pomocou konektora.
  • Výstup vo forme binárnych údajov cez piny (D0 - D3) smeruje na arduino.

ARDUINO -

  • výstup DTMF z pinov (D0 - D3) prichádza na digitálne piny arduino. Tento výstup môžeme pripojiť k ľubovoľnému zo štyroch digitálnych pinov, ktoré sa od (2 - 13) v arduino líšia. Tu sme použili kolíky 8, 9, 10 a 11.
  • Digitálne piny 2 a 3 arduina sú pripojené k číslam pinov „H“ a „I“ vodiča motora, zatiaľ čo piny 12 a 13 arduina sú pripojené k „J“ a „K“.
  • Arduino je pripojené k 12 voltovej batérii.

KÓD programu

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

VYSVETLENIE KÓDU

  1. Najskôr inicializujeme všetky premenné pred nastavením neplatnosti.
  2. V nastavení neplatnosti sú všetky použité kolíky priradené ako vstup alebo výstup podľa ich účelu.
  3. Je vytvorená nová funkcia „void decoding ()“. V tejto funkcii je arduino dekódovaný všetok binárny vstup, ktorý dostaneme z DTMF, na desatinné miesto. A premenná priradená k tejto desatinnej hodnote je a.
  4. Je vykonaná ďalšia funkcia „neplatná tlač ()“. Táto funkcia sa používa na tlač vstupných hodnôt z kolíkov DTMF.
  5. Podobne je potrebných päť funkcií. Na vykonanie požadovanej úlohy sú potrebné funkcie. Jedná sa o tieto funkcie:

void move_left () // robot sa stáča doľava

void move_right () // robot sa stáča doprava

void move_forward () // robot sa posúva dopredu

void move_backward () // robot sa posúva dozadu

void halt () // robot sa zastaví

  1. Teraz sa tieto funkcie používajú vo funkcii void loop, aby vykonali svoju úlohu, kedykoľvek sú vyvolané podľa vstupu z číselnej klávesnice mobilného telefónu.

Napríklad:::

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

teda keď je stlačené tlačidlo 2 alebo je na vstupných pinoch prijatých 0010, arduino to dekóduje a teda tieto funkcie fungujú: pohnúť sa vpred()

čítanie()

dekódovanie ()

tlač ()

PRACOVNÝ OBVOD

Ovládacie prvky, ktoré sme použili v našom projekte, sú nasledujúce -

2 - Posunúť sa vpred

4 - Odbočiť doľava

6 - Odbočte doprava

8 - Pre pohyb dozadu

0 - zastaviť

Po uskutočnení hovoru na telefón pripojený k robotovi osoba otvorí číselnú klávesnicu.

  • Ak je stlačené „2“. DTMF prijme vstup, dekóduje ho na svoje binárne ekvivalentné číslo, tj. „0010“, a pošle ho na digitálne piny arduina. Arduino potom odošle tento kód vodičovi motora, ako sme naprogramovali, keď bude mať kód „0010“, motory sa budú otáčať v smere hodinových ručičiek, a preto sa náš robot bude pohybovať vpred.
  • Ak je stlačené „4“, jeho ekvivalentný kód je „0100“ a podľa programovania sa motory na ľavej strane zastavia a iba motory na pravej strane sa budú otáčať v smere hodinových ručičiek, a preto sa náš robot bude otáčať doľava.
  • Ak stlačíte „6“, potom sa motor na pravej strane zastaví a iba motory na ľavej strane sa budú otáčať v smere hodinových ručičiek, a preto sa náš robot bude otáčať doprava.
  • Ak stlačíte „8“, naše motory sa budú otáčať proti smeru hodinových ručičiek a náš robot sa tak bude pohybovať dozadu.
  • Ak stlačíte „0“, všetky naše motory sa zastavia a robot sa nebude pohybovať.

V tomto projekte sme priradili funkciu iba piatim číslam číselnej klávesnice. Môžeme pridať akýkoľvek typ iného mechanizmu a priradiť tomuto mechanizmu číslo číselnej klávesnice, aby sme vytvorili inovovanú verziu tohto projektu.

BODY, KTORÉ MAJETE MAŤ NA PAMÄŤ

1 - Zdvihák by nemal byť uvoľnený.

2 - Tóny klávesov telefónu by mali byť maximálne.

3 - Internet / Wi-Fi prijímajúceho telefónu by mali byť uzavreté, aby sa zabránilo účinkom rušenia.

4 - Ľavý kolík (t.j. kolík „b“) DTMF je uzemnený a pravý kolík (t.j. kolík „a“) ​​je pripojený k 3,3 V.

Prototypové snímky okruhu automobilového robota riadeného mobilnými telefónmi pomocou DTMF
Video ukážka RC auta riadeného mobilnými telefónmi pomocou DTMF



Predchádzajúci: Úvod do EEPROM v Arduine Ďalej: Vyrobte tohto robota s radovým sledovačom pre projekt Science Fair