Projek Arduino Remote Control Servo
Dalam projek ini, kita akan menggunakan arduino untuk memeriksa dan dekode sinyal dari remot kontrol dan kemudian menggunakan kode ini untuk mengontrol servo.
Komponen yang diperlukan :
1. Arduino board
2. Breadbord
3. Kabel jumper
4. 38 kHz IR Receiver
5. Remote Control
6. 2 servo SG90
7. Pan and tilt housing module
Diperlukan librari
Servo
IRremote
Cara Kerja :
Pertama kita akan memecahkan kode remote control menggunakan penerima IR. Penerima IR memiliki tiga pin: OUT, GND, dan VCC (ditunjukkan dari kiri ke kanan pada Gambar). Periksa lembar data untuk receiver yang Anda beli untuk memastikan cocok dengan tata letak pin ini. Dalam kasus yang jarang terjadi, Anda mungkin menemukan bahwa tata letak pin receiver Anda berbeda, tetapi Anda masih dapat menggunakan pinout untuk menyambungkannya.
Anda juga akan membutuhkan remote control. Anda dapat menggunakan segala jenis remote, termasuk remote TV, tetapi yang terbaik adalah menggunakan yang lama yang tidak lagi Anda perlukan. Saat Anda menekan tombol pada remote, itu mengirimkan nilai digital yang diambil oleh penerima. Nilai ini berbeda untuk setiap tombol. Kami akan memecahkan kode nilai untuk setiap tombol dengan Arduino dan kemudian menetapkannya ke pin Arduino dalam sketsa untuk mengontrol output-dalam hal ini, servo.
Dengan mempersonalisasi sketsa dengan nilai yang Anda dekode, Anda dapat menghubungkan tombol tertentu ke instruksi tertentu dan menggunakan remote untuk mengontrol servos. Jika Anda sudah membuat model rumah pan-and-tilt dari Project sebelumnya, Anda dapat menggunakannya kembali di sini. Jika tidak, balik ke Projek sebelumnya untuk instruksi tentang pengaturannya.
Kami akan menetapkan tombol untuk gerakan arah servos di rumah tilt-and-pan, sehingga total empat tombol akan mengontrol semua gerakan: kiri dan kanan untuk servo sumbu-x, dan atas dan bawah untuk servo sumbu y. Penekanan tombol pendek akan menggerakkan servo sedikit demi sedikit, dan penekanan yang diperpanjang akan menggerakkan servo terus menerus hingga nilai maksimum atau minimum tercapai.
PENGATURAN
1. Unduh perpustakaan IRremote dan tambahkan ke folder perpustakaan Anda.
2. Masukkan penerima IR ke breadbord. Hubungkan pin OUT pada receiver ke pin Arduino 11, GND ke Arduino GND, dan VCC ke Arduino +5V. Sekali lagi, dengan beberapa versi penerima 38 kHz, urutan pin mungkin berbeda dari yang ditampilkan di sini, jadi periksa lembar data yang sesuai dengan komponen Anda.
3. Sekarang unggah dan jalankan kode berikut.
/* Copyright 2009 Ken Shirriff
Used with kind permission
http://arcfn.com
*/
#include <IRremote.h> // Use library
int receiver = 11; // Pin connected to receiver
IRrecv irrecv(receiver);
decode_results results;
void setup() {
Serial.begin(9600); // Show keypresses in IDE
irrecv.enableIRIn(); // Start up receiver
}
void loop() {
if (irrecv.decode(&results)) { // If there's an input, decode value
Serial.println(results.value, HEX); // Display button value
// on Serial Monitor in
// hexadecimal format
irrecv.resume(); // Receive next value
}
}
4. Buka Serial Monitor di IDE Anda.
5. Arahkan remote Anda ke penerima dan coba tekan tombol ent yang berbeda. Mereka akan muncul di Serial Monitor yang diterjemahkan ke dalam huruf dan angka dalam format yang dikenal sebagai heksadesimal (HEX), seperti yang ditunjukkan pada Gambar. Cobalah penekanan singkat dan tajam untuk mendapatkan hasil terbaik. Jika Anda menekan tombol terlalu lama, Serial Monitor akan menampilkan Fs selama Anda menahan tombol tersebut.
Sketsa pertama memanggil perpustakaan IRremote, yang membaca dari penerima IR dan mengirimkan data yang sesuai ke Arduino. Penerima IR ditugaskan ke pin 11 pada Arduino, dan sketsa mulai berkomunikasi dengan Arduino IDE sehingga ketika tombol ditekan, input ditampilkan di Serial Monitor secara real time. Sketsa berlanjut dalam satu lingkaran, mencari penekanan tombol, dan menunjukkan nilai yang sesuai dengan IDE.
4. Buka Serial Monitor di IDE Anda.
5. Arahkan remote Anda ke penerima dan coba tekan tombol ent yang berbeda. Mereka akan muncul di Serial Monitor yang diterjemahkan ke dalam huruf dan angka dalam format yang dikenal sebagai heksadesimal (HEX), seperti yang ditunjukkan pada Gambar. Cobalah penekanan singkat dan tajam untuk mendapatkan hasil terbaik. Jika Anda menekan tombol terlalu lama, Serial Monitor akan menampilkan Fs selama Anda menahan tombol tersebut.
Tuliskan angka-angka yang muncul dan tombol yang sesuai dengannya. Anda akan membutuhkan nomor-nomor ini nanti.
Sekarang kita telah memecahkan kode sinyal tombol dari remote control, kita dapat menggunakannya untuk mengontrol dua servos.
Cara membuat rangkaian :
1. Menggunakan pengaturan breadbord Anda, dengan penerima sudah terhubung, pasang servo Anda ke Arduino dengan menghubungkan kabel coklat masing-masing ke GND, dan kabel merah ke +5V. Kemudian, sambungkan kabel kontrol kuning untuk servo pertama ke pin Arduino 10, dan kabel kontrol kuning untuk servo kedua ke pin Arduino 9.
2. Ingatlah untuk memasang daya ke breadbord.
3. Pastikan pengaturan Anda cocok dengan diagram sirkuit pada Gambar, lalu unggah kode di "Sketsa".
Pastikan Anda menggunakan nilai yang Anda dekode sebagai ganti nilai yang disertakan di sini saat menyelesaikan sketsa. Saat Anda mengubah nilai dalam sketsa agar sesuai dengan kode Anda sendiri, pertahankan Ox dan tambahkan kode HEX Anda setelahnya. Misalnya, untuk tombol pertama yang saya dekode, kode HEX adalah FFA05F, yang terlihat seperti ini dalam sketsa:
unsigned long Value1 = 0xFFA05F;
Dalam proyek ini kami mengontrol servo, tetapi Anda dapat sedikit menyesuaikan kode untuk mengontrol dari jarak jauh apa pun yang perlu disetel ke TINGGI, seperti bel LED atau piezo.
Sketsa tersebut memanggil perpustakaan IRremote untuk membaca dari penerima dan perpustakaan Servo untuk menggerakkan motor. Dua tombol pertama ditetapkan ke servo sumbu-x untuk memindahkan sudut ke maksimum 70 derajat untuk pan kiri atau 160 derajat untuk kanan. Tombol ketiga dan keempat ditetapkan ke servo sumbu y untuk mengontrol gerakan kemiringan ke atas dan ke bawah.
Jika Anda ingin mengadaptasi ini ke output lain, ubah kodenya:
servo.write
to:
digitalWrite(pin, HIGH)
/* IR Library Copyright Ken Shirriff
Used with kind permission
http://arcfn.com
*/
#include <Servo.h> // Include the Servo library
#include <IRremote.h> // Include the IRremote library
unsigned long Value1 = 0xFFA05F; // Change this to your value
unsigned long Value2 = 0xFF50AF; // Change this to your value
unsigned long Value3 = 0xFF807F; // Change this to your value
unsigned long Value4 = 0xFF609F; // Change this to your value
int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;
Servo servo1;
Servo servo2;
void setup() { // Set up routine
Serial.begin(9600);
irrecv.enableIRIn(); // Start the IR receiver
servo1.attach(10); // Pin connected to servo 1
servo2.attach(9); // Pin connected to servo 2
}
void loop() { // Loop routine runs forever
if (irrecv.decode(&results)) {
Serial.println(results.value, HEX);
irrecv.resume(); // Receive the next value
}
if (results.value == Value1) { // If remote code matches value 1,
// then move the servo
servo1.write(160);
}
else if (results.value == Value2) { // If remote code matches
// value 2, then move the
// servo, and so on
servo1.write(70);
}
else if (results.value == Value3) {
servo2.write(70);
}
else if (results.value == Value4) {
servo2.write(160);
}
}







0 Comments