Mobiliuoju telefonu valdomas robotas, naudojant DTMF modulį

Išbandykite Mūsų Instrumentą, Kaip Pašalinti Problemas





Šiame projekte mes valdysime rankinį robotą per savo mobilųjį telefoną naudodami DTMF modulį ir „Arduino“.

Autoriai: Ankit Negi, Kanishk Godiyal ir Navneet Singh sajwan



Mobiliuoju telefonu valdomas robotas, naudojant DTMF modulį

ĮVADAS

Šiame projekte naudojami du mobilieji telefonai, vienas skirtas skambinti, o kitas - skambučiui priimti. Skambutį priimantis telefonas yra prijungtas prie roboto per garso lizdą.

Skambinantis asmuo gali valdyti robotą tiesiog paspausdamas rinkimo klaviatūros klavišus. (t. y. robotą galima valdyti iš bet kurio pasaulio kampelio).



BŪTINOS KOMPONENTAI

1 - „Arduino UNO“

2 - rankinis robotas

3 - 4 varikliai (čia naudojome po 300 aps./min.)

4 - DTMF modulis

5 - variklio vairuotojas

6 - 12 voltų baterija

7 - jungiklis

8 - ausinių lizdas

9 - du mobilieji telefonai

10 - Jungiamieji laidai

APIE VALDYMO ROBOTĄ

Rankinis robotas susideda iš važiuoklės (kėbulo), kurioje, atsižvelgiant į reikalavimus, galima pritvirtinti tris ar keturis variklius (kurie yra prisukami padangomis).

Naudojami varikliai priklauso nuo mūsų poreikio, t. Y. Jie gali suteikti didelį greitį arba didelį sukimo momentą, arba gerą jų derinį. Norint naudoti tokias programas kaip keturkampis kopijuoklis, reikia labai didelio greičio variklių, kad jie pakiltų nuo sunkio jėgos, o norint judėti mechanine ranka ar lipti stačiu šlaitu, reikia didelio sukimo momento variklių.

Abu varikliai kairėje ir dešinėje roboto pusėje yra lygiagrečiai sujungti atskirai. Paprastai jie yra prijungiami prie 12 voltų baterijos per DPDT (dvigubo kaiščio dvigubo metimo) jungiklius.

Tačiau šiame projekte botui valdyti naudosime ne DPDT, o mobilųjį telefoną.

APIE VARIKLIO VAIRUOTOJĄ

„Arduino“ suteikia maksimalią 40mA srovę, naudodama GPIO (bendrosios paskirties įvesties išvestį) kaiščius, o 200mA - naudojant „Vcc“ ir žemę.

Varikliams veikti reikalinga didelė srovė. Mes negalime naudoti „arduino“ tiesiogiai savo varikliams maitinti, todėl naudojame variklio vairuotoją.

Variklio vairuotojas turi „H Bridge“ (tai yra tranzistorių derinys). Variklio vairuotojo IC (L298) varo 5v, kurį tiekia „arduino“.

Varikliams maitinti reikia 12 V įvesties iš „Arduino“, kurį galiausiai tiekia 12 V baterija. Taigi „arduino“ tiesiog ima energiją iš akumuliatoriaus ir duoda variklio vairuotojui.

Tai leidžia mums valdyti variklių greitį ir kryptį, suteikiant maksimalią 2 amperų srovę.

ĮVADAS į DTMF MODULĮ

DTMF reiškia dvigubo tono daugialypį dažnį. Mūsų rinkimo skydelis yra dviejų dažų daugialypis dažnis, ty vienas mygtukas suteikia dviejų skirtingų dažnių tonų mišinį.

Vienas tonas generuojamas iš aukšto dažnio grupės, kitas - iš žemo dažnio grupės. Tai daroma taip, kad bet kokio tipo balsas negalėtų imituoti tonų.

Taigi, jis paprasčiausiai iššifruoja telefono klaviatūros įvestį į keturių bitų dvejetainį kodą. Klaviatūros numerių, kuriuos naudojome savo projekte, dažniai parodyti žemiau esančioje lentelėje

Žemas dažnis (hercai) Aukšto dažnio (hercai) 2697133647701209677014778852133609411336

Dvejetainė dekoduota rinkimo klaviatūros skaitmenų seka parodyta žemiau esančioje lentelėje.

skaitmenų D3 D2 D1 D0 1 0 0 0 1 du 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

PIRKIMO DIAGRAMA

JUNGTYS

Variklio vairuotojas -

  • Kaiščiai „A“ ir „B“ valdo kairiosios pusės variklį, o kaiščiai „C“ ir „D“ - dešiniąją variklio pusę. Šie keturi kaiščiai yra sujungti su keturiais varikliais.
  • Kaištis „E“ skirtas maitinti IC (L298), kuris paimtas iš „arduino“ (5v).
  • kaištis „F“ yra sumaltas.
  • Kaištis „G“ iš akumuliatoriaus perima 12 voltų energiją per „arduino“ „Vin“ kontaktą.
  • „H“, „I“, „J“ ir „K“ smeigtukai gauna logiką iš arduino.

DTMF -

  • kaištis „a“ yra prijungtas prie 3,5 voltų arduino, kad maitintų IC (SC9270D).
  • Kaištis „b“ yra sujungtas su žeme.
  • DTMF įvestis imama iš telefono per lizdą.
  • Išvestis dvejetainių duomenų pavidalu per (D0 - D3) kaiščius eina į „Arduino“.

ARDUINO -

  • DTMF išvestis iš (D0 - D3) kaiščių ateina į skaitmeninius arduino kaiščius. Mes galime prijungti šią išvestį prie bet kurio iš keturių skaitmeninių kaiščių, besikeičiančių nuo (2 - 13) arduino. Čia mes panaudojome 8, 9, 10 ir 11 kaiščius.
  • „Arduino“ skaitmeniniai 2 ir 3 kaiščiai yra prijungti prie variklio tvarkyklės kaiščių „H“ ir „I“, o „Arduino“ 12 ir 13 kaiščiai - prie „J“ ir „K“.
  • „Arduino“ yra prijungtas prie 12 voltų baterijos.

Programos KODAS-

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

KODO PAAIŠKINIMAS

  1. Visų pirma, prieš nustatydami negaliojančius, inicijuojame visus kintamuosius.
  2. Negaliojant sąrankos, visi naudojami kaiščiai priskiriami kaip įvestis arba išvestis pagal jų paskirtį.
  3. Atliekama nauja funkcija „void decoding ()“. Šioje funkcijoje visas dvejetainis įvestis, kurią gauname iš DTMF, arduino dekoduoja dešimtainiu skaičiumi. Šiai dešimtainei reikšmei priskirtas kintamasis yra a.
  4. Atliekama dar viena funkcija „negaliojantis spausdinimas ()“. Ši funkcija naudojama spausdinant įvesties reikšmes iš DTMF kaiščių.
  5. Panašiai reikalingos penkios funkcijos, reikalingos reikalingai užduočiai atlikti. Šios funkcijos yra:

void move_left () // robotas pasuka kairėn

void move_right () // robotas sukasi į dešinę

void move_forward () // robotas juda pirmyn

void move_backward () // robotas juda atgal

void halt () // robotas sustoja

  1. Dabar šios funkcijos naudojamos tuščiosios linijos funkcijai atlikti savo užduotį, kai tik jos yra iškviečiamos pagal įvestį iš mobiliojo telefono rinktinės.

Pavyzdžiui:::

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

taigi, paspaudus mygtuką 2 arba gavus 0010 ant įvesties kaiščių, „Arduino“ tai iššifruoja ir šios funkcijos atlieka savo darbą: judėti į priekį()

skaitymas ()

dekodavimas ()

spausdinimas ()

PIRKIMO DIRBIMAS

Kontrolė, kurią naudojome savo projekte, yra tokia -

2 - judėti pirmyn

4 - pasukti į kairę

6 - pasukti į dešinę

8 - judėti atgal

0 - sustoti

Paskambinęs į telefoną, prijungtą prie roboto, asmuo atidaro savo rinkimo skydelį.

  • Jei paspausite „2“. DTMF gauna įvestį, iššifruoja ją dvejetainiu ekvivalentiniu skaičiumi, ty „0010“, ir siunčia ją į skaitmeninius „arduino“ kaiščius. Tada „arduino“ siunčia šį kodą variklio vairuotojui, nes mes užprogramavome, kai kodas bus „0010“, varikliai suksis pagal laikrodžio rodyklę, taigi mūsų robotas judės pirmyn.
  • Jei paspausite „4“, jo ekvivalentinis kodas bus „0100“, o pagal programavimą kairės pusės varikliai sustos ir tik dešinės pusės varikliai suksis pagal laikrodžio rodyklę, taigi mūsų robotas pasuks kairėn.
  • Jei paspausite „6“, dešinės pusės variklis sustos ir tik kairiosios pusės varikliai suksis pagal laikrodžio rodyklę, taigi mūsų robotas pasuks dešinėn.
  • Jei paspausite „8“, mūsų varikliai suksis prieš laikrodžio rodyklę, taigi mūsų robotas judės atgal.
  • Jei paspausite „0“, visi mūsų varikliai sustos ir robotas nejudės.

Šiame projekte funkciją paskyrėme tik penkiems rinkimo klaviatūros numeriams. Mes galime pridėti bet kokio tipo kitus mechanizmus ir priskirti šiam mechanizmui numerį, kad galėtume sukurti atnaujintą šio projekto versiją.

TAŠKAI, KURIE TURI BŪTI PAMINTI

1 - domkratas neturi būti laisvas.

2 - Telefono klaviatūros tonai turėtų būti maksimalūs.

3 - Kad būtų išvengta trikdžių, priimančio telefono internetas / „Wi-Fi“ turėtų būti uždarytas.

4 - DTMF kairysis kaištis (t. Y. „B“) yra įžemintas, o dešinysis kaištis (t. Y. „A“) yra prijungtas prie 3.3v.

Mobiliuoju telefonu valdomos roboto automobilių grandinės, naudojant DTMF, vaizdų prototipai
Vaizdo demonstravimas mobiliuoju telefonu valdomam RC automobiliui naudojant DTMF



Ankstesnis: EEPROM įvadas „Arduino“ Kitas: Padarykite šį robotų robotą, skirtą mokslo mugės projektui