Mobil Robot Kontrol Ponsel Menggunakan Modul DTMF

Coba Instrumen Kami Untuk Menghilangkan Masalah





Dalam proyek ini kita akan mengontrol robot manual melalui ponsel kita menggunakan modul DTMF dan Arduino.

Oleh: Ankit Negi, Kanishk Godiyal dan Navneet Singh sajwan



Mobil Robot Kontrol Ponsel Menggunakan Modul DTMF

PENGANTAR

Dalam proyek ini dua ponsel, satu untuk menelepon dan satu untuk menerima panggilan digunakan. Telepon yang menerima panggilan terhubung ke robot melalui jack audio.

Orang yang menelepon dapat mengontrol robot hanya dengan menekan tombol papan tombol. (yaitu robot dapat dioperasikan dari sudut manapun di dunia).



KOMPONEN DIBUTUHKAN

1 - Arduino UNO

2 - Robot manual

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

4 - Modul DTMF

5 - Pengemudi motor

Baterai 6 - 12 volt

7 - Ganti

8 - Jack Headphone

9 - Dua Telepon Seluler

10 - Menghubungkan kabel

TENTANG ROBOT MANUAL

Robot manual terdiri dari sasis (bodi) di mana tiga atau empat motor (yang disekrup dengan ban) dapat dipasang tergantung kebutuhan.

Motor yang akan digunakan bergantung pada kebutuhan kami, yaitu dapat memberikan kecepatan tinggi atau torsi tinggi atau kombinasi keduanya. Aplikasi seperti quad copter membutuhkan motor berkecepatan sangat tinggi untuk mengangkat melawan gravitasi sementara aplikasi seperti menggerakkan lengan mekanis atau mendaki lereng yang curam membutuhkan motor torsi tinggi.

Kedua motor di sisi kiri dan kanan robot dihubungkan secara paralel secara terpisah. Biasanya mereka terhubung ke baterai 12volt melalui sakelar DPDT (double pin double throw).

Tetapi dalam proyek ini kami akan menggunakan ponsel sebagai pengganti DPDT untuk mengontrol bot.

TENTANG MOTOR DRIVER

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

Motor membutuhkan arus yang besar untuk beroperasi. Kami tidak dapat menggunakan arduino secara langsung untuk menyalakan motor kami, jadi kami menggunakan pengemudi motor.

Driver motor berisi H Bridge (yang merupakan kombinasi transistor). IC (L298) driver motor digerakkan oleh 5v yang disuplai oleh Arduino.

Untuk menyalakan motor, dibutuhkan input 12v dari arduino yang akhirnya disuplai oleh baterai 12 v. Jadi Arduino hanya mengambil tenaga dari baterai dan memberikannya kepada pengemudi motor.

Ini memungkinkan kita untuk mengontrol kecepatan dan arah motor dengan memberikan arus maksimum 2 ampere.

PENGANTAR MODUL DTMF

DTMF adalah singkatan dari Dual tone multi frekuensi. Papan tombol kami adalah dua toner dengan frekuensi ganda yaitu satu tombol memberikan campuran dua nada yang memiliki frekuensi berbeda.

Satu nada dihasilkan dari grup frekuensi tinggi sementara yang lain dari grup frekuensi rendah. Ini dilakukan agar semua jenis suara tidak dapat meniru nadanya.

Jadi, ini hanya menerjemahkan masukan keypad ponsel menjadi kode biner empat bit. Frekuensi nomor keypad yang telah kami gunakan dalam proyek kami ditunjukkan pada tabel di bawah ini

DigitLow frekuensi (hertz) Frekuensi tinggi (hertz) 2697133647701209677014778852133609411336

Urutan dekode biner dari digit papan tombol ditampilkan pada tabel di bawah.

angka 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

DIAGRAM SIRKUIT

KONEKSI

Pengemudi motor -

  • Pin 'A' dan 'B' mengontrol motor sisi kiri sedangkan Pin 'C' dan 'D' mengontrol sisi kanan motor. Keempat pin ini terhubung ke empat motor.
  • Pin 'E' untuk power IC (L298) yang diambil dari arduino (5v).
  • pin 'F' adalah ground.
  • Pin 'G' mengambil daya 12 volt dari baterai melalui pin Vin arduino.
  • Pin 'H', 'I', 'J' dan 'K' menerima logika dari arduino.

DTMF -

  • pin 'a' dihubungkan ke 3,5 volt arduino untuk menyalakan IC (SC9270D).
  • Pin 'b' terhubung ke ground.
  • Input DTMF diambil dari telepon melalui jack.
  • Output berupa data biner melalui pin (D0 - D3) menuju arduino.

ARDUINO -

  • output DTMF dari pin (D0 - D3) menjadi pin digital arduino. Kita dapat menghubungkan output ini ke salah satu dari empat pin digital yang bervariasi dari (2 - 13) di arduino. Di sini kami menggunakan pin 8, 9, 10 dan 11.
  • Pin digital 2 dan 3 arduino dihubungkan ke pin nomor 'H' dan 'I' driver motor sedangkan pin 12 dan 13 dari arduino terhubung ke 'J' dan 'K'.
  • Arduino terhubung ke baterai 12 volt.

KODE 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 KODE

  1. Pertama-tama, kami menginisialisasi semua variabel sebelum penyiapan void.
  2. Dalam pengaturan void, semua pin yang akan digunakan ditetapkan sebagai input atau output sesuai dengan tujuannya.
  3. Fungsi baru 'void decoding ()' dibuat. Dalam fungsi ini semua input biner yang kita dapatkan dari DTMF didekodekan menjadi desimal oleh arduino. Dan variabel yang diberikan untuk nilai desimal ini adalah a.
  4. Fungsi lain 'pencetakan void ()' dibuat. Fungsi ini digunakan untuk mencetak nilai input dari pin DTMF.
  5. Demikian pula, lima fungsi diperlukan fungsi yang diperlukan untuk melakukan tugas yang diperlukan. Fungsi-fungsi tersebut adalah:

void move_left () // robot belok kiri

void move_right () // robot belok kanan

void move_forward () // robot bergerak maju

void move_backward () // robot bergerak mundur

void halt () // robot berhenti

  1. Sekarang fungsi-fungsi ini digunakan dalam fungsi void loop untuk melakukan tugasnya setiap kali dipanggil sesuai dengan input dari dialpad ponsel.

Sebagai contoh:::

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

maka ketika tombol 2 ditekan atau 0010 diterima pada pin input, Arduino menerjemahkan ini dan dengan demikian fungsi-fungsi ini melakukan tugasnya: maju kedepan()

bacaan()

decoding ()

pencetakan()

SIRKUIT BEKERJA

Kontrol yang kami gunakan dalam proyek kami adalah sebagai berikut -

2 - Untuk maju

4 - Untuk belok kiri

6 - Untuk belok kanan

8 - Untuk mundur

0 - berhenti

Setelah melakukan panggilan ke ponsel yang terhubung ke robot, orang tersebut membuka tombol nomornya.

  • Jika '2' ditekan. DTMF menerima input, mendekodekannya dalam angka ekuivalen binernya yaitu '0010' dan mengirimkannya ke pin digital arduino. Arduino kemudian mengirimkan kode ini ke pengemudi motor seperti yang telah kita programkan ketika kode akan menjadi '0010', motor akan berputar searah jarum jam dan karenanya robot kita akan bergerak maju.
  • Jika '4' ditekan maka kode ekivalennya adalah '0100' dan menurut pemrograman motor sisi kiri akan berhenti dan hanya motor sisi kanan yang akan berputar searah jarum jam dan karenanya robot kita akan berbelok ke kiri.
  • Jika '6' ditekan maka motor sisi kanan akan berhenti dan hanya motor sisi kiri yang akan berputar searah jarum jam sehingga robot kita akan berbelok ke kanan.
  • Jika '8' ditekan maka motor kita akan berputar berlawanan arah jarum jam dan dengan demikian robot kita akan bergerak mundur.
  • Jika '0' ditekan maka semua motor kita akan berhenti dan robot tidak akan bergerak.

Dalam proyek ini kami telah menetapkan fungsi hanya untuk lima nomor papan tombol. Kami dapat menambahkan jenis mekanisme lain dan menetapkan nomor papan tombol ke mekanisme tersebut untuk membuat versi yang ditingkatkan dari proyek ini.

POIN YANG HARUS DIPERHATIKAN

1 - Dongkraknya tidak boleh longgar.

2 - Nada tombol telepon harus maksimal.

3 - Internet / Wi-Fi dari telepon penerima harus ditutup untuk menghindari efek interferensi.

4 - Pin kiri (yaitu pin 'b') dari DTMF adalah ground dan pin kanan (yaitu pin 'a') terhubung ke 3.3v.

Gambar prototipe sirkuit mobil robot yang dikendalikan ponsel menggunakan DTMF
Video Demonstrasi Mobil RC yang dikendalikan Ponsel menggunakan DTMF



Sebelumnya: Pengantar EEPROM di Arduino Berikutnya: Buat Robot Pengikut Baris ini untuk Proyek Pameran Sains