Banyak cara mengenai bagaimana mengendalikan perangkat elektronik tanpa menggunakan kabel. Mulai dari media Wifi, bluetooth, inframerah hingga menggunakan frekuensi Radio (RF). Pada tulisan kali ini embeddednesia akan mengulas sebuah modul yk-04 yang merupakan modul RF 315 MHz yang berguna untuk mengendalikan perangkat (seperti lampu, pintu pagar) secara jarak jauh.
Modul ini terdiri dari transmiter (pemancar) dan juga receiver (penerima) seperti gambar.
Sebuah pemancar yang berfungsi sebagai remote control akan mengirimkan sinyal gelombang radio yang bersesuaian dengan perintah biner dari tombol yang ditekan. Sedangkan modul receiver, akan menerima gelombang radio yang dikirimkan dan mendekodekan.
Kelebihan pengiriman data menggunakan frekuensi radio adalah jarak yang mampu ditempuh yaitu sampai rentang 30 meter, bandingkan dengan sinar inframerah atau bluetooth.
Modul YK-04 yang akan penulis coba memiliki 4 kanal keluaran D0, D1, D2, D3, D4. Kanal – kanal ini dihubungkan ke LED untuk mengetahui apakah modul berfungsi baik atau tidak.
Modul sejauh ini berfungsi baik, terbukti dengan ujicoba yang dilakukan pada breadboard, led -led berwarna – warna tersebut menyala bergantian sesuai dengan tombol pemancar yang ditekan. Karakteristik data yang diterimanya pun bersifat diskrit (tidak kontinu) terbukti dengan led yang berkedip – kedip ketika tombol ditekan. Semakin jauh jarak antara transmitter dan receiver maka akan semakin jarang pula led menyala.
Menghubungkan dengan Arduino
Pembaca diasumsikan memiliki board Arduino Uno. Jika belum, disarankan membelinya terlebih dahulu di TOKO BEY dengan mengakses halaman pembelian berikut
Modul YK-04 akan dihubungkan dengan PIN 9,10,11,12. Masukan yang diterima akan diproses untuk menyalakan led yang terhubung dengan PIN 2, 3, 4, 5. Sedangkan sketch yang dibuat adalah sebagai berikut
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#define LED_A 3 | |
#define LED_B 4 | |
#define LED_C 5 | |
#define LED_D 6 | |
#define BUTTON_A 9 | |
#define BUTTON_B 10 | |
#define BUTTON_C 11 | |
#define BUTTON_D 12 | |
void setup(){ | |
//Serial.begin(9600); // setting the baud rate | |
// Serial.println("RF receiver button decode"); // printing | |
pinMode(LED_A, OUTPUT); | |
pinMode(LED_B, OUTPUT); | |
pinMode(LED_C, OUTPUT); | |
pinMode(LED_D, OUTPUT); | |
pinMode(BUTTON_A, INPUT); | |
pinMode(BUTTON_B, INPUT); | |
pinMode(BUTTON_C, INPUT); | |
pinMode(BUTTON_D, INPUT); | |
} | |
void loop(){ | |
/*here in this code I used if statement to setup my loops codes, yo can also use while loop statements to control the output in the serial monitor*/ | |
if (digitalRead(BUTTON_A) == HIGH) { // Button a pressed | |
// Serial.println("you are pushing on the A"); | |
digitalWrite(LED_A, HIGH); | |
} | |
if (digitalRead(BUTTON_B) == HIGH) { // Button B pressed | |
// Serial.println("you are pushing on B"); | |
digitalWrite(LED_B, HIGH); | |
} | |
if (digitalRead(BUTTON_C) == HIGH) { // Button C pressed | |
// Serial.println("you are pushing on C"); | |
digitalWrite(LED_C, HIGH); | |
} | |
if (digitalRead(BUTTON_D) == HIGH) { // Button D pressed | |
//Serial.println("you are pushing on D"); | |
digitalWrite(LED_D, HIGH); | |
} | |
} |
Program tersebut akan menyalan LED berdasarkan perintah yang diterima (masukan yang diterima dari modul Receiver RF) berdasarkan tombol yang ditekan oleh pemancar RF.
Setelah program berhasil diupload dan dijalankan pada rangkaian maka ketika tombol button