Kereta Robot Dikawal Telefon Bimbit Menggunakan Modul DTMF

Cuba Instrumen Kami Untuk Menghapuskan Masalah





Dalam projek ini kita akan mengendalikan robot manual melalui telefon bimbit kita menggunakan modul DTMF dan Arduino.

Oleh: Ankit Negi, Kanishk Godiyal dan Navneet Singh sajwan



Kereta Robot Dikawal Telefon Bimbit Menggunakan Modul DTMF

PENGENALAN

Dalam projek ini dua telefon bimbit, satu untuk panggilan dan satu untuk menerima panggilan digunakan. Telefon yang menerima panggilan disambungkan ke robot melalui bicu audio.

Orang yang menelefon dapat mengawal robot hanya dengan menekan butang pad dail. (iaitu robot boleh dikendalikan dari mana-mana pelosok dunia).



KOMPONEN DIPERLUKAN

1 - Arduino UNO

2 - Robot manual

3 - 4 motor (di sini kami menggunakan 300 r.p.m setiap satu)

4 - Modul DTMF

5 - Pemandu motor

Bateri 6 - 12 volt

7 - Tukar

8 - Jack fon kepala

9 - Dua Telefon Bimbit

10 - Menyambung wayar

MENGENAI MANUAL ROBOT

Robot manual terdiri daripada casis (bodi) di mana tiga atau empat motor (yang disekat dengan tayar) dapat dipasang bergantung pada keperluan.

Motor yang akan digunakan bergantung pada keperluan kita iaitu ia dapat memberikan kelajuan tinggi atau tork tinggi atau kombinasi yang baik dari keduanya. Aplikasi seperti quad copter memerlukan motor berkelajuan tinggi untuk mengangkat graviti sementara aplikasi seperti menggerakkan lengan mekanikal atau memanjat cerun curam memerlukan motor tork tinggi.

Kedua-dua motor di sebelah kiri dan kanan robot disambungkan secara selari secara berasingan. Biasanya mereka disambungkan ke bateri 12volt melalui suis DPDT (double pin double throw).

Tetapi dalam projek ini kita akan menggunakan telefon bimbit dan bukannya DPDT untuk mengawal bot.

TENTANG PEMANDU MOTOR

Arduino memberikan arus maksimum 40mA menggunakan pin GPIO (output input tujuan umum), sementara memberikan 200mA menggunakan Vcc dan ground.

Motor memerlukan arus yang besar untuk beroperasi. Kami tidak dapat menggunakan arduino secara langsung untuk menggerakkan motor kami jadi kami menggunakan pemandu motor.

Pemandu motor mengandungi H Bridge (yang merupakan gabungan transistor). IC (L298) pemandu motor dipacu oleh 5v yang dibekalkan oleh arduino.

Untuk menghidupkan motor, diperlukan input 12v dari arduino yang akhirnya dibekalkan oleh bateri 12 v. Jadi arduino hanya mengambil kuasa dari bateri dan memberikan kepada pemandu motor.

Ini membolehkan kita mengawal kelajuan dan arah motor dengan memberikan arus maksimum 2 ampere.

PENGENALAN MODUL DTMF

DTMF bermaksud frekuensi berbilang nada Dwi. Pad dail kami adalah frekuensi berganda dua ton iaitu satu butang memberikan campuran dua nada dengan frekuensi yang berbeza.

Satu nada dihasilkan dari kumpulan nada frekuensi tinggi sementara nada lain dari kumpulan frekuensi rendah. Ia dilakukan supaya semua jenis suara tidak dapat meniru nada.

Oleh itu, ia hanya menyahkod input pad kekunci telefon menjadi kod binari empat bit. Kekerapan nombor papan kekunci yang telah kami gunakan dalam projek kami ditunjukkan dalam jadual di bawah

DigitLow frekuensi (hertz) Frekuensi tinggi (hertz) 2697133647701209677014778852133609411336

Urutan dinyahkod binari digit pad dail ditunjukkan dalam jadual di bawah.

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

RAJAH PEKELILING

HUBUNGAN

Pemandu motor -

  • Pin ‘A’ dan ‘B’ mengawal motor sebelah kiri sementara Pin ‘C’ dan ‘D’ mengawal sebelah kanan motor. Keempat pin ini disambungkan ke empat motor.
  • Pin ‘E’ adalah untuk menghidupkan IC (L298) yang diambil dari arduino (5v).
  • pin ‘F’ adalah tanah.
  • Pin ‘G’ mengambil kuasa 12 volt dari bateri melalui pin Vin dari arduino.
  • Pin ‘H’, ‘I’, ‘J’ dan ‘K’ menerima logik dari arduino.

DTMF -

  • pin ‘a’ disambungkan ke arduino 3.5 volt untuk menghidupkan IC (SC9270D).
  • Pin ‘b’ disambungkan ke tanah.
  • Input DTMF diambil dari telefon melalui bicu.
  • Output dalam bentuk data binari melalui (D0 - D3) pin menuju ke arduino.

ARDUINO -

  • output DTMF dari (D0 - D3) pin datang ke pin digital arduino. Kita dapat menghubungkan output ini ke salah satu daripada empat pin digital yang berbeza dari (2 - 13) di arduino. Di sini kami menggunakan pin 8, 9, 10 dan 11.
  • Pin digital 2 dan 3 arduino disambungkan ke nombor pin ‘H’ dan ‘I’ pemandu motor manakala pin 12 dan 13 arduino disambungkan ke ‘J’ dan ’K’.
  • Arduino disambungkan ke bateri 12 volt.

KOD Program-

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

PENJELASAN KOD

  1. Pertama sekali, kami menginisialisasi semua pemboleh ubah sebelum membatalkan persediaan.
  2. Dalam penyediaan tidak sah, semua pin yang akan digunakan ditetapkan sebagai input atau output sesuai dengan tujuannya.
  3. Fungsi baru 'void decoding ()' dibuat. Dalam fungsi ini semua input binari yang kita dapat dari DTMF disahkod hingga perpuluhan oleh arduino. Dan pemboleh ubah yang diberikan untuk nilai perpuluhan ini adalah.
  4. Fungsi lain 'cetak tidak sah ()' dibuat. Fungsi ini digunakan untuk mencetak nilai input dari pin DTMF.
  5. Begitu juga, lima fungsi diperlukan fungsi yang diperlukan untuk melaksanakan tugas yang diperlukan. Fungsi-fungsi ini adalah:

void move_left () // robot membelok ke kiri

void move_right () // robot membelok ke kanan

void move_forward () // robot bergerak ke hadapan

void move_backward () // robot bergerak ke belakang

void berhenti () // robot berhenti

  1. Kini fungsi-fungsi ini digunakan dalam fungsi gelung void untuk melakukan tugasnya setiap kali dipanggil sesuai dengan input dari pad dial ponsel.

Sebagai contoh:::

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

oleh itu apabila butang 2 ditekan atau 0010 diterima pada pin input, arduino menyahkodkan ini dan dengan demikian fungsi ini berfungsi: bergerak_teruskan ()

membaca ()

penyahkodan ()

percetakan ()

KERJA PEKELILING

Kawalan yang telah kami gunakan dalam projek kami adalah seperti berikut -

2 - Untuk maju

4 - Untuk membelok ke kiri

6 - Untuk membelok ke kanan

8 - Untuk bergerak ke belakang

0 - untuk berhenti

Setelah membuat panggilan ke telefon yang disambungkan ke robot, orang itu membuka pad dailnya.

  • Sekiranya ‘2’ ditekan. DTMF menerima input, mendekodkannya dalam nombor setara binernya, iaitu '0010' dan menghantarnya ke pin digital arduino. Arduino kemudian menghantar kod ini kepada pemandu motor kerana kami telah memprogram kodnya menjadi '0010', motor akan berputar mengikut arah jam dan oleh itu robot kami akan bergerak ke depan.
  • Sekiranya ‘4’ ditekan maka kod yang setara adalah ‘0100’ dan mengikut pengaturcaraan motor sebelah kiri akan berhenti dan hanya motor sebelah kanan yang akan berputar mengikut arah jam dan oleh itu robot kami akan membelok ke kiri.
  • Sekiranya ‘6’ ditekan maka motor sebelah kanan akan berhenti dan hanya motor sebelah kiri yang akan berputar mengikut arah jam dan oleh itu robot kami akan membelok ke kanan.
  • Sekiranya ‘8’ ditekan maka motor kita akan berputar ke arah berlawanan arah jam dan dengan itu robot kita akan bergerak ke belakang.
  • Sekiranya ‘0’ ditekan maka semua motor kita akan berhenti dan robot tidak akan bergerak.

Dalam projek ini kami telah menetapkan fungsi untuk lima nombor pad pendail sahaja. Kita boleh menambahkan jenis mekanisme lain dan memberikan nombor pad pendail ke mekanisme itu untuk membuat versi projek yang ditingkatkan.

POIN UNTUK MENJAGA DALAM PIKIRAN

1 - Jack tidak boleh longgar.

2 - Nada kekunci telefon mestilah maksimum.

3 - Internet / Wi-Fi telefon penerima harus ditutup untuk mengelakkan kesan gangguan.

4 - Pin kiri (iaitu pin 'b') DTMF adalah ground dan pin kanan (iaitu pin 'a') disambungkan ke 3.3v.

Gambar prototaip litar kereta robot terkawal telefon bimbit menggunakan DTMF
Video Demonstrasi Kereta RC yang dikawal dengan telefon bimbit menggunakan DTMF



Sebelumnya: Pengenalan EEPROM di Arduino Seterusnya: Buat Robot Pengikut Line ini untuk Projek Science Fair