Kinokontrol ng Mobile Phone ng Kotse ng Robot Gamit ang DTMF Module

Subukan Ang Aming Instrumento Para Sa Pagtanggal Ng Mga Problema





Sa proyektong ito makokontrol namin ang isang manu-manong robot sa pamamagitan ng aming cellphone gamit ang DTMF module at Arduino.

Ni: Ankit Negi, Kanishk Godiyal at Navneet Singh sajwan



Kinokontrol ng Mobile Phone ng Kotse ng Robot Gamit ang DTMF Module

PANIMULA

Sa proyektong ito, ginagamit ang dalawang cell phone, isa para sa pagtawag at isa para sa pagtanggap ng tawag. Ang telepono na tumatanggap ng tawag ay konektado sa robot sa pamamagitan ng audio jack.

Ang tao na tumatawag ay maaaring makontrol ang robot sa pamamagitan lamang ng pagpindot sa mga dial pad key. (ibig sabihin, ang robot ay maaaring mapatakbo mula sa anumang sulok ng mundo).



KINAKAILANGAN NG MGA KOMPONENSA

1 - Arduino UNO

2 - Manu-manong robot

3 - 4 na mga motor (dito ginamit namin ang bawat 300 r.p.m bawat isa)

4 - module ng DTMF

5 - Motor driver

6 - 12 volt Baterya

7 - Lumipat

8 - Headphone Jack

9 - Dalawang Mga Cell Phones

10 - Pagkonekta ng mga wire

TUNGKOL SA MANUAL ROBOT

Ang isang manu-manong robot ay binubuo ng chassis (katawan) kung saan tatlo o apat na mga motor (na kung saan ay naka-screwed sa mga gulong) ay maaaring ikabit depende sa kinakailangan.

Ang mga motor na gagamitin ay nakasalalay sa aming kinakailangan na ibig sabihin maaari silang magbigay ng mataas na bilis o mataas na metalikang kuwintas o isang mahusay na kumbinasyon ng pareho. Ang mga application tulad ng quad copter ay nangangailangan ng napakataas na bilis ng mga motor upang maiangat laban sa gravity habang ang application tulad ng paggalaw ng isang mechanical arm o pag-akyat sa isang matarik na dalisdis ay nangangailangan ng mataas na mga motor na metalikang kuwintas.

Ang parehong mga motor sa kaliwa at kanang bahagi ng robot ay konektado sa kahanay nang magkahiwalay. Kadalasan nakakonekta ang mga ito sa isang 12volt na baterya sa pamamagitan ng mga switch ng DPDT (doble na pin doble itapon).

Ngunit sa proyektong ito gagamit kami ng mobile phone sa halip na DPDTs upang makontrol ang bot.

TUNGKOL SA MOTOR DRIVER

Nagbibigay ang Arduino ng maximum na kasalukuyang 40mA gamit ang mga GPIO (pangkalahatang layunin ng output output) na mga pin, habang nagbibigay ito ng 200mA gamit ang Vcc at ground.

Ang mga motor ay nangangailangan ng malaking kasalukuyang upang gumana. Hindi namin maaaring gamitin ang arduino nang direkta upang mapagana ang aming mga motor kaya't gumagamit kami ng isang driver ng motor.

Naglalaman ang driver ng motor ng H Bridge (na kung saan ay isang kombinasyon ng transistors). Ang IC (L298) ng driver ng motor ay hinihimok ng 5v na ibinibigay ng arduino.

Upang mapagana ang mga motor, tumatagal ng 12v input mula sa arduino na sa huli ay ibinibigay ng isang 12 v na baterya. Kaya't ang arduino ay kumukuha lamang ng lakas mula sa baterya at ibinibigay sa driver ng motor.

Pinapayagan kaming kontrolin ang bilis at direksyon ng mga motor sa pamamagitan ng pagbibigay ng maximum na kasalukuyang 2 amperes.

PANIMULA SA DTMF MODULE

Ang DTMF ay nangangahulugang Dual tone multi frequency. Ang aming dial pad ay isang dalawang toneladang maramihang dalas ibig sabihin ang isang pindutan ay nagbibigay ng isang halo ng dalawang mga tono na may iba't ibang dalas.

Ang isang tono ay nabuo mula sa isang pangkat ng mataas na dalas ng mga tono habang ang iba ay mula sa isang mababang grupo ng dalas. Ginagawa ito upang ang anumang uri ng boses ay hindi gayahin ang mga tono.

Kaya, dinidisenyo lamang nito ang pag-input ng keypad ng telepono sa apat na binary code. Ang mga dalas ng mga numero ng keypad na ginamit namin sa aming proyekto ay ipinapakita sa talahanayan sa ibaba

Dalas ng DigitLow (hertz) Mataas na dalas (hertz) 2697133647701209677014778852133609411336

Ang binary na na-decode na pagkakasunud-sunod ng mga digit ng dial pad ay ipinapakita sa talahanayan sa ibaba.

digit D3 D2 D1 D0 1 0 0 0 1 dalawa 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

CIRCUIT DIAGRAM

Mga koneksyon

Driver ng motor -

  • Kinokontrol ng Pin 'A' at 'B' ang kaliwang bahagi ng motor habang ang Pin 'C' at 'D' ay kumokontrol sa kanang bahagi ng motor. Ang apat na mga pin na ito ay konektado sa apat na mga motor.
  • Ang Pin 'E' ay upang i-power ang IC (L298) na kinuha mula sa arduino (5v).
  • ang pin na 'F' ay lupa.
  • Ang Pin 'G' ay tumatagal ng 12 volt na lakas mula sa baterya sa pamamagitan ng Vin pin ng arduino.
  • Ang mga pin na 'H', 'I', 'J' at 'K' ay tumatanggap ng lohika mula sa arduino.

DTMF -

  • Ang pin ‘a’ ay konektado sa 3.5 volt ng arduino upang mapagana ang IC (SC9270D).
  • Ang pin ‘b’ ay konektado sa lupa.
  • Ang pag-input ng DTMF ay kinuha mula sa telepono sa pamamagitan ng jack.
  • Ang output sa anyo ng binary data sa pamamagitan ng (D0 - D3) na mga pin ay napupunta sa arduino.

ARDUINO -

  • ang output ng DTMF mula sa (D0 - D3) na mga pin ay dumating sa mga digital na pin ng arduino. Maaari naming ikonekta ang output na ito sa alinman sa apat na mga digital na pin na nag-iiba mula sa (2 - 13) sa arduino. Ginamit namin dito ang mga pin na 8, 9, 10 at 11.
  • Ang mga digital na pin 2 at 3 ng arduino ay konektado sa pin number na 'H' at 'I' ng driver ng motor habang ang mga pin na 12 at 13 ng arduino ay konektado sa 'J' at 'K'.
  • Ang arduino ay konektado sa isang 12 volt na baterya.

CODE ng Programa-

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

PAGLALAHAD NG CODE

  1. Una sa lahat, pinasimulan namin ang lahat ng mga variable bago walang bisa ang pag-set up.
  2. Sa walang bisa na pag-set up, ang lahat ng gagamitin na mga pin ay itinalaga bilang input o output ayon sa kanilang layunin.
  3. Ang isang bagong pagpapaandar na 'void decoding ()' ay ginawa. Sa pagpapaandar na ito ang lahat ng binary input na nakukuha namin mula sa DTMF ay na-decode sa decimal ng arduino. At ang variable na itinalaga para sa decimal na halaga na ito ay a.
  4. Ang isa pang pagpapaandar na 'walang bisa na pagpi-print ()' ay ginawa. Ang pagpapaandar na ito ay ginagamit upang mai-print ang mga halaga ng pag-input mula sa mga pin ng DTMF.
  5. Katulad nito, ang limang pagpapaandar ay kinakailangan ng mga pagpapaandar ay kinakailangan upang maisagawa ang kinakailangang gawain. Ang mga pagpapaandar na ito ay:

walang bisa move_left () // ang robot ay lumiliko sa kaliwa

void move_ Right () // robot ay lumiliko pakanan

void move_forward () // ang robot ay sumusulong

void move_backward () // ang robot ay paatras

void ihinto () // huminto ang robot

  1. Ngayon ang mga pagpapaandar na ito ay ginagamit sa void loop function upang gawin ang kanilang gawain tuwing tatawagin sila ayon sa input mula sa dialpad ng cellphone.

Halimbawa:::

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

samakatuwid kapag ang pindutan 2 ay pinindot o 0010 ay natanggap sa mga input pin, ina-decode ito ng arduino at sa gayon ang mga pagpapaandar na ito ay gumagawa ng kanilang gawain: sumulong()

pagbabasa ()

pag-decode ()

pagpi-print ()

TRABAHO NG CIRCUIT

Ang mga kontrol na ginamit namin sa aming proyekto ay ang mga sumusunod -

2 - Upang sumulong

4 - Upang kumaliwa

6 - Upang kumanan sa kanan

8 - Upang umatras paatras

0 - upang huminto

Matapos tumawag sa telepono na konektado sa robot, bubuksan ng tao ang kanyang dial pad.

  • Kung ang '2' ay pinindot. Tumatanggap ang DTMF ng input, na-decode ito sa binary na katumbas nitong numero hal '0010' at ipinapadala ito sa mga digital na pin ng arduino. Pagkatapos ay ipapadala ng arduino ang code na ito sa driver ng motor tulad ng na-program namin kung kailan ang code ay '0010', ang mga motor ay paikutin sa direksyon sa orasan at kaya't ang aming robot ay susulong.
  • Kung ang '4' ay pinindot pagkatapos ang katumbas na code nito ay '0100' at alinsunod sa programa ang mga kaliwang bahagi ng motor ay titigil at ang mga kanang bahagi na motor ay paikutin nang pakanan at samakatuwid ang aming robot ay liliko sa kaliwa.
  • Kung ang '6' ay pinindot pagkatapos ang kanang bahagi ng motor ay titigil at ang mga kaliwang bahagi lamang ng motor ay paikutin nang pakanan at samakatuwid ang aming robot ay liliko sa kanan.
  • Kung ang '8' ay pinindot pagkatapos ang aming mga motor ay paikutin sa anticlockwise na direksyon at sa gayon ang aming robot ay babalik.
  • Kung pinindot ang '0' pagkatapos ay titigil ang lahat ng aming mga motor at hindi gumagalaw ang robot.

Sa proyektong ito nagtalaga kami ng isang pagpapaandar sa limang mga dial pad number lamang. Maaari kaming magdagdag ng anumang uri ng iba pang mekanismo at magtalaga ng isang dial pad number sa mekanismong iyon upang makagawa ng isang na-upgrade na bersyon ng proyektong ito.

MGA PUNTO NA ITINGING SA ISIP

1 - Ang jack ay hindi dapat maging maluwag.

2 - Ang mga tono ng keypad ng telepono ay dapat na maximum.

3 - Ang Internet / Wi-Fi ng pagtanggap ng telepono ay dapat sarado upang maiwasan ang mga epekto ng pagkagambala.

4 - Ang kaliwang pin (ie pin 'b') ng DTMF ay ground at kanang pin (ibig sabihin pin 'a') ay konektado sa 3.3v.

Mga imahe ng prototype ng cellphone na kinokontrol ng cellphone ng robot gamit ang DTMF
Pagpapakita ng Video ng kontrolado ng Cellphone RC Car gamit ang DTMF



Nakaraan: Panimula sa EEPROM sa Arduino Susunod: Gawin ang Robot na Tagasunod sa Linya para sa Project Fair ng Agham