Robotické auto ovládané mobilním telefonem pomocí modulu DTMF

Vyzkoušejte Náš Nástroj Pro Odstranění Problémů





V tomto projektu budeme ovládat manuálního robota prostřednictvím našeho mobilního telefonu pomocí DTMF modulu a Arduina.

Autor: Ankit Negi, Kanishk Godiyal a Navneet Singh sajwan



Robotické auto ovládané mobilním telefonem pomocí modulu DTMF

ÚVOD

V tomto projektu jsou použity dva mobilní telefony, jeden pro volání a druhý pro příjem hovoru. Telefon přijímající hovor je připojen k robotovi prostřednictvím zvukového konektoru.

Osoba, která volá, může robota ovládat pouhým stisknutím tlačítek číselné klávesnice. (tj. robota lze ovládat z kteréhokoli koutu světa).



POŽADOVANÉ KOMPONENTY

1 - Arduino UNO

2 - Ruční robot

3 - 4 motory (zde jsme použili každý 300 ot / min)

4 - DTMF modul

5 - Řidič motoru

6 - 12voltová baterie

7 - Přepínač

8 - Konektor pro sluchátka

9 - Dva mobilní telefony

10 - Připojení vodičů

O RUČNÍM ROBOTU

Manuální robot se skládá z podvozku (karoserie), ke kterému lze v závislosti na požadavku připojit tři nebo čtyři motory (sešroubované s pneumatikami).

Motory, které se mají použít, závisí na našem požadavku, tj. Mohou buď poskytovat vysoké otáčky nebo vysoký točivý moment, nebo dobrou kombinaci obou. Aplikace, jako je čtyřkolka, vyžadují pro zvedání proti gravitaci velmi vysokorychlostní motory, zatímco aplikace, jako je pohybování mechanickým ramenem nebo lezení po strmém svahu, vyžadují motory s vysokým točivým momentem.

Oba motory na levé a pravé straně robota jsou zapojeny paralelně samostatně. Obvykle jsou připojeny k 12voltové baterii přes přepínače DPDT (double pin double throw).

Ale v tomto projektu použijeme k ovládání robota místo DPDT mobilní telefon.

O ŘIDIČI MOTORU

Arduino poskytuje maximální proud 40 mA pomocí pinů GPIO (vstup pro všeobecné použití), zatímco dává 200 mA pomocí Vcc a země.

Motory k provozu vyžadují velký proud. Nemůžeme použít arduino přímo k napájení našich motorů, takže používáme ovladač motoru.

Ovladač motoru obsahuje H Bridge (což je kombinace tranzistorů). IC (L298) ovladače motoru je poháněn 5V, který je dodáván společností Arduino.

K napájení motorů je zapotřebí 12 V vstup z Arduina, který je nakonec napájen 12 V baterií. Arduino tedy pouze bere energii z baterie a dává řidiči motoru.

Umožňuje nám řídit otáčky a směr motorů poskytováním maximálního proudu 2 ampéry.

ÚVOD DO DTMF MODULU

DTMF je zkratka pro Dual tone multi frequency. Naše číselná klávesnice má více tonerů se dvěma kmitočty, tj. Jedno tlačítko poskytuje směs dvou tónů, které mají různou frekvenci.

Jeden tón je generován z vysokofrekvenční skupiny tónů, zatímco druhý z nízkofrekvenční skupiny. Dělá se to tak, aby žádný typ hlasu nemohl napodobit tóny.

Jednoduše tak dekóduje vstup klávesnice telefonu do čtyřbitového binárního kódu. Frekvence čísel klávesnic, která jsme použili v našem projektu, je uvedena v tabulce níže

DigitLow frekvence (hertz) Vysoká frekvence (hertz) 2697133647701209677014778852133609411336

Binárně dekódovaná sekvence číslic číselníku je uvedena v tabulce níže.

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

KRUHOVÝ DIAGRAM

PŘIPOJENÍ

Řidič motoru -

  • Kolíky „A“ a „B“ ovládají motor na levé straně, zatímco kolíky „C“ a „D“ ovládají pravou stranu motoru. Tyto čtyři kolíky jsou připojeny ke čtyřem motorům.
  • Pin „E“ slouží k napájení IC (L298), který je převzat z arduina (5v).
  • kolík „F“ je broušený.
  • Pin „G“ odebírá z baterie 12 voltů přes Vin pin arduino.
  • Kolíky „H“, „I“, „J“ a „K“ dostávají logiku od arduina.

DTMF -

  • pin „a“ je připojen k 3,5 voltu arduina pro napájení IC (SC9270D).
  • Pin „b“ je připojen k zemi.
  • Vstup DTMF je převzat z telefonu přes jack.
  • Výstup ve formě binárních dat přes piny (D0 - D3) jde do arduina.

ARDUINO -

  • výstup DTMF z pinů (D0 - D3) přichází na digitální piny arduina. Tento výstup můžeme připojit k libovolnému ze čtyř digitálních kolíků od (2 - 13) v arduino. Zde jsme použili kolíky 8, 9, 10 a 11.
  • Digitální piny 2 a 3 arduina jsou připojeny k číslům pinů „H“ a „I“ ovladače motoru, zatímco piny 12 a 13 arduina jsou připojeny k „J“ a „K“.
  • Arduino je připojeno k 12voltové baterii.

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

VYSVĚTLENÍ KÓDU

  1. Nejprve inicializujeme všechny proměnné před nastavením neplatnosti.
  2. V nastavení neplatnosti jsou všechny použité piny přiřazeny jako vstup nebo výstup podle jejich účelu.
  3. Je vytvořena nová funkce „void decoding ()“. V této funkci je veškerý binární vstup, který získáme z DTMF, dekódován pomocí arduino na desítkové. A proměnná přiřazená k této desítkové hodnotě je a.
  4. Je provedena další funkce „neplatný tisk ()“. Tato funkce se používá k tisku vstupních hodnot z kolíků DTMF.
  5. Podobně je požadováno pět funkcí, funkce jsou vyžadovány k provedení požadovaného úkolu. Jedná se o tyto funkce:

void move_left () // robot zahne doleva

void move_right () // robot zahne doprava

void move_forward () // robot se pohybuje vpřed

void move_backward () // robot se posune dozadu

void halt () // robot se zastaví

  1. Nyní se tyto funkce používají ve funkci void loop, aby splnily svůj úkol, kdykoli jsou volány podle vstupu z číselníku mobilního telefonu.

Například:::

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

tedy když je stisknuto tlačítko 2 nebo je na vstupních pinech přijato 0010, arduino to dekóduje, a tak tyto funkce fungují: move_forward ()

čtení()

dekódování()

tisk()

PRACOVNÍ OBVOD

Ovládací prvky, které jsme použili v našem projektu, jsou následující -

2 - Pro posun vpřed

4 - Chcete-li odbočit doleva

6 - Odbočit doprava

8 - Pro pohyb vzad

0 - zastavit

Po uskutečnění hovoru na telefonu připojeném k robotu otevře dotyčná osoba číselnou klávesnici.

  • Pokud je stisknuto „2“. DTMF přijme vstup, dekóduje jej na své binární ekvivalentní číslo, tj. „0010“, a pošle jej na digitální piny arduina. Arduino poté odešle tento kód ovladači motoru, jak jsme naprogramovali, když bude kód „0010“, motory se budou otáčet ve směru hodinových ručiček, a proto se náš robot bude pohybovat vpřed.
  • Pokud je stisknuto „4“, jeho ekvivalentní kód je „0100“ a podle programování se levé motory zastaví a pouze pravé motory se budou otáčet ve směru hodinových ručiček, a proto se náš robot otočí doleva.
  • Pokud je stisknuto „6“, motor na pravé straně se zastaví a pouze motory na levé straně se budou otáčet ve směru hodinových ručiček, a proto se náš robot otočí doprava.
  • Pokud je stisknuto „8“, pak se naše motory budou otáčet proti směru hodinových ručiček a náš robot se tak bude pohybovat dozadu.
  • Pokud stisknete „0“, všechny naše motory se zastaví a robot se nebude pohybovat.

V tomto projektu jsme přiřadili funkci pouze pěti číslům číselníku. Můžeme přidat jakýkoli typ jiného mechanismu a přiřadit tomuto číselníku číselnou klávesnici, abychom vytvořili upgradovanou verzi tohoto projektu.

BODY, KTERÉ MĚJTE NA PAMĚTI

1 - Zvedák by neměl být uvolněný.

2 - Tóny klávesnice telefonu by měly být maximální.

3 - Internet / Wi-Fi přijímajícího telefonu by měl být uzavřen, aby nedocházelo k rušivým účinkům.

4 - Levý kolík (tj. Kolík „b“) DTMF je uzemněn a pravý kolík (tj. Kolík „a“) ​​je připojen k 3,3 V.

Prototypové snímky obvodu robota řízeného mobilním telefonem pomocí DTMF
Video ukázka RC automobilu ovládaného mobilními telefony pomocí DTMF



Předchozí: Úvod do EEPROM v Arduinu Další: Vyrobte si tohoto robota pro sledování linek pro projekt Science Fair