15. Pembelajaran Komunikasi Nirkabel pada Arduino
Materi:
Bab ini membahas cara berkomunikasi dua perangkat elektronis tanpa menggunakan kabel. Topik yang dibahas berupa penggunaan :
- Remote control;
- Penerima dan pengirim berfrekuensi radio;
- Peranti Bluetooth.
15.1 Remote Control Empat Kanal
Salah satu jenis remote control yang beredar di pasaran untuk digunakan di Arduino adalah RF CH Remote control kit. Peranti ini memiliki empat tombol, yang beroperasi dengan menggunakan tegangan DC 12 volt, Adapun perangkat penerimanya menggunakan sumber tegangan DC 5 volt. Frekuensi yang digunakan 315MHz. Gambar 15.1 memperlihatkan bentuk perangkat ini.
Pengujian dengan Remote Control
Untuk kepentingan pengujian remote control tersebut, Anda bisa menyusun rangkaian seperti terlihat di Gambar 15.2. Setelah rangkaian tersebut disusun, Anda perlu memunggah sketch remote.
Gambar 15.2 Rangkaian Arduino dan receiver milik remote control
// ——————————————–
// Contoh pemakaian remote kontrol 4 tombol
// ——————————————–
const int PIN_D0 =8;
const int PIN_D1=9;
const int PIN_D2=10;
const int PIN_D3=11;
void setup()
{
pinMode(PIN_D0, INPUT);
pinMode(PIN_D1, INPUT);
pinMode(PIN_D2, INPUT);
pinMode(PIN_D3, INPUT);
Serial.begin(9600);
Serial.println(“”);
}
void loop()
{
int d0 = aigitalRead(PIN_D0);
int d1 = digitalRead(PIN_D1);
int d2 = digitalRead(PIN_D2);
int d3 = digitalRead(PIN_D3);
if (d0==HIGH)
{
Serial.println(“B ditekan”);
delay(200);
}
}
Sketch di depan memantau pin D0 hingga 03 pada bagian penerima. Pemantauan dilakukan oleh:
int d0
int dl
int d2
int dB
Semua nilai di variabel d0 hingga d3 akan berisi data digital (HIGH atau LOW). Jika nilai masing-masing dalam keadaan HIGH, informasi mengenai tombol bersangkutan dikirim ke port serial.
Contoh hasil pengujian dengan menggunakan sketch remote diperlihatkan di Gambar 15.3. Anda bisa mengujinya dengan menekan tombol-tombol di remote control.
Gambar 15.3 Contoh hasil pengontrolan dengan remote control
Pengontrolan LED dengan Remote Control
Remote control empat kanal dapat digunakan untuk sebagai saklar untuk mengendalikan empat LED. Dalam
Gambar 15.4 Rangkaian LED yang dikendalikan oleh remote control
Untuk menguji rangkaian di atas:
// ——————————————–
// Contoh remote control untuk mengendalikan LED
// ——————————————–
const int PIN D0=8;
const int PIN D1=9;
const int PIN D2=10;
const int PIN D3=11;
const int PIN LED0=4;
const int PIN LED1=5;
const int PIN LED2 =6;
const int PIN LED3=7;
const int INTERVAL=500;
int waktuSebelumD0 =0;
int waktuSebelumD1=0;
int waktuSebelumD2 = 0;
int waktuSebelumnyaD3= 0;
int statusLED0 = LOW;
int statusLED1= LOW;
int statusLED2 = LOW;
int statusLED3 = LOW;
void setup()
{
pinMode(PIN_D0,INPUT);
pinMode (PIN_D1,INPUT);
pinMode(PIN_D2, INPUT);
pinMode(PIN_D3, INPUT);
pinMode (PIN_LED0, OUTPUT);
pinMode(PIN_LED1, OUTPUT);
pinMode(PIN LED2, OUTPUT);
pinMode(PIN_LED3, OUTPUT);
}
void loop()
int d0 = digitalRead(PIN_D0);
int d1= digitalRead(PIN_D1);
int d2= digitalRead(PIN_D2);
int d3= digitalRead(PIN_D3);
if ((d0 == HIGH) and (abs (millis() – waktuSebelumD0) > INTERVAL))
{
statusLED0 = not statusLED0;
digitalWrite(PIN_LED0, statusLED0);
waktuSebelumD0= millis();
}
if ((d1 == HIGH) and (abs(millis() – waktuSebelumD1) > INTERVAL))
{
statusLED1 = not statusLED1;
digitalWrite(PIN LED1, statusLED1);
waktuSebelumD1=millis();
}
if ((d2 == HIGH) and (abs(millis() – waktuSebelumD2) > INTERVAL))
{
statusLED2 = not statusLED2;
digitalWrite(PIN_LED2, statusLED2);
waktuSebelumD2 = millis();
}
íf ((d3 == HIGH) and (abs(millis() – waktuSebelumD3)>INTERVAL))
{
statusLED3 = not statusLED3;
digitalWrite(PIN_LED3, statusLED3);
waktuSebelumD3 = millis();
}
}
pada sketch di depan, setiap LED dikendalikan oleh satu tombol di hemote control Sebagai contoh,
if ((d0 == HIGH) and (abs (millis() – waktuSebelumD0) > INTERVAL))
{
statusLED0 = not statusLED0;
digitalWrite(PIN_LED0, statusLED0);
waktuSebelumD0= millis();
}
digunakan untuk menyalakan atau mematikan LED yang terhubung ke pin PIN LED0 kalau d0 dalam keadaan HIGH dan nilai absolut selisih antara mil lis ( ) dan waktuSebelumD0 melebihí nilai INTERVAL Pada pernyataan tersebut,
statusLED0 = not statusLED0;
digunakan untuk mengubah nilai di statusLED0 dari 0 menjadi 1 atau dari 1 menjadi O. Dengan demikian,
digitalWrite(PIN_LED0, statusLED0);
akan menghidupkan atau mematikan LED tergantung oleh nilai di statusLED0. Adapun
waktuSebelumD0= millis();
digunakan untuk mencatat saat terakhir, LED yang terhubung ke pin PIN LED0 diproses.
Gambar 15.5 menunjukkan contoh ketika salah satu LED (terkiri) dinyalakan melalui remote control.
15.2 Remote Control 21 Tombol
Gambar 15.6 Remote control 21 tombol
Wujud komponen IR receiver diperlihatkan di Gambar 15.7. Cara memasangnya ditunjukkan di Gambar 15.8.
Perhatikan bahwa GND dihubungkan ke pin GND di Arduino dan VCC dihubungkan ke pin SV di Arduino. Adapun OUT menyatakan pin yang berisi sinyal inframerah yang telah dikonversi dalam bentuk tegangan listrik.
Gambar 15.7 IR Receiver 1838
Gambar 15.8 Rangkaian Arduino yang dihubungkan ke IR Receiver
Untuk menguji rangkaian di depan, sketch tidak diperlukan. Anda cukup mengarahkan remote control ke receiver. Jika penyusunan rangkaian sudah benar, LED akan berkedip-kedip saat tombol remote contr ditekan. Hal yang menarik, semua jenis remote control dapat digunakan.
Ketika sedang menyala LED inframerah yang ada di remote control tidak terlihat oleh mata telanjang. Tahukah Anda bahwa LED inframerah dapat dimonitor dengan kamera? Ya, untuk mengetahui remote control Anda rusak atau tidak, arahkan rempte control ke kamera. Lalu, tekanlah tombol di remote control. Anda akan melihat LED berkejap-kejap. Gambar berikut pada bagian kiri memperlihatkan ketika tombol di remote control ditekan, sedangkan gambar pada bagian kanan memperlihatkan ketika LED berkejap-kejap. |
Memperoleh Kode Tombol
Persoalan sekarang adalah bagaimana cara membaca setiap tombol yang ada di remote control yang mengandung 21 tombol. Untuk kepentingan ini, susunlah rangkaian seperti terlihat di Gambar 15.9 terlebih dahulu.
Gambar 15.9 Rangkaian untuk menguji kode setiap tombol di remote control
Pemasangan Pustaka IRremote
Untuk mempermudah dalam membuat kode yang terkait dengan pengontrol jarak jauh yang bersifat umum, pustaka bernama IRremote dapat dimanfaatkan. Pustaka buatan Ken Shirriff ini dapat diunduh di https://github.com/shirriff/Arduino-lRremote. Untuk memudahkan Anda, file bernama ArduinoIRremote—master disertakan di CD.
Pertama-tama, ekstraklah file tersebut sehingga terbentuk subfolder Arduino-IRremote-master. Kemudian, sederhanakan namanya menjadi IR. Lalu, ikuti ped0man berikut.
- Pindahkan subfolder IR ke C: \ Program Files (x86) \ Arduino\libraries (dengan asumsi, program Arduino IDE terinstal di C: \ Program Files (x86) \Arduino).
- Tutuplah Arduino IDE jika dalam keadaan sedang dibuka.
- Panggil kembali Arduino IDE supaya pustaka yang baru saja Anda tambahkan dikenali.
Untuk menguji rangkaian di Gambar 15.9, Anda bisa menggunakan sketch berikut :
Sketch: cekrem
// ——————————————–
// Contoh pemakaian untuk memeriksa
// kode tombol-tombol di remote control
// ——————————————–
#include <IRremote.h>
const int PIN_SENSOR=2;
IRrecv penerima(PIN_SENSOR);
void setup()
{
// Memulai objek IR
penerima.enableIRIn();
Serial.begin(9600);
Serial.println(“Klik tombol-tombol di Remote Control”);
}
void loop()
{
decode_results hasil;
if (penerima.decode(&hasi1))
{
Serial.print1n(hasil.value, HEX);
penerima.resume(); // Ambil nilai berikutnya
}
}
Baris berikut digunakan untuk melibatkan pustaka IRremote:
# include <IRremote.h>
Dengan cara begitu, objek berkelas IRrecv dapat dibentuk. Perintahnya:
IRrecv penerima (PIN_SENSOR) ;
Argumen pada objek penerima menyatakan PIN yang dihubungkan ke pin OUT milik IR receiver.
untuk mendapatkan nilai dari sensor, pertama-tama perlu deklarasi seperti berikut:
decode_results hasil;
Selanjutnya, hasil perlu dijadikan sebagai argumen pada pemanggilan:
penerima.decode ( ‘hasil )
Perhatikan bahwa tanda & (yang berarti “alamat”) perlu diberikan di depan hasil agar nilai hasil dapat diubah oleh fungsi decode ( ) . Jika fungsi tersebut berhasil memproses data dari sensor, dua pernyataan berikut akan dijalankan:
Serial.printIn(hasil.value,HEX); penerima.resume ( ) ;
Pernyataan pertama mengirimkan isi va lue pada hasil dalam bentuk heksadesimal ke port serial. Adapun pernyataan kedua untuk mengambil nilai berikutnya yang akan diproses.
Contoh hasil pengujian dengan menggunakan remote control yang mengandung 21 tombol ditunjukkan di Gambar 15.10.
Gambar 15.10 Hasil pengujian pada tombol-tombol remote control yang mengandung 21 tombol
Kode FFFFFFFF akan muncul sekiranya tombol ditekan lama. Pada prinsipnya, nilai ini dapat diabaikan.
Pemadanan Kode Tombol
Berdasarkan percobaan-percobaan yang dilakukan melalui sketch cekrem, nilai untuk setiap tombol bisa diperoleh. Berdasarkan hal itu, dapat disusun suatu sketch berikut, yang ditujukan untuk menampilkan nama tombol ketika suatu kode tombol diterima di Sisi penerima:
Sketch: cekrem
// ——————————————–
// Contoh pengujian remote control 21 tombol
// dengan memantau kode setiap tombol
// ——————————————–
#include <IRremote.h>
const int PIN SENSOR=2;
IRrecv penerima(PIN_SENSOR);
void setup()
{
// Mengaktifkan objek IR
penerima.enableIRIn();
Serial.begin(9600);
Serial.println(“Klik tombol-tombol di Remote Control”);
}
void loop()
{
decode_results hasil;
if (penerima.decode(&hasil))
{
if (hasil.value != 0xFFFFFFFF)
switch(hasil.value)
{
case 0xFFA25D: Serial.println(“CH- “); break;
case 0xFFC23D: Serial.println(“PLAY/PA USE “); break;
case 0xFFE01F: Serial.println(“VOL- “); reak;
case 0xFFA857: Serial.println(“VOL+ “); break;
case 0xFF906F: Serial.println(“EQ “); break;
case 0xFF6897: Serial.println(“0 “); break;
case 0xFF9867: Serial.println(“100+ “); break;
case 0xFFB04F: Serial.println (“200+ “); break;
case 0xFF30CF: Serial.println(“1 “); break;
case 0xFF30CF: Serial.println(“2 “); break;
case 0xFF30CF: Serial.println(“3 “); break;
case 0xFF30CF: Serial.println(“4 “); break;
case 0xFF30CF: Serial.println(“5 “); break;
case 0xFF30CF: Serial.println(“6 “); break;
case 0xFF30CF: Serial.println(“7 “); break;
case 0xFF30CF: Serial.println(“8 “); break;
case 0xFF30CF: Serial.println(“9 “); break;
default :
Serial.println(“Tombol tidak didefinisikan di switch”);
Serial.println (“Kode: “);
Serial.println (hasil.value, HEX);
}
penerima.resume (); Ambil nilai berikutnya
}
}
Seleksi nilai yang didapat ditangani melalui switch sekiranya hasil . value tidak bernilai OXFFFFFFFF.
Skrip tesrem didasarkan pada rangkaian yang tercantum di Gambar 15.9. Jika sketch ini dipunggah, percobaan penekanan pada tombol-tombol di remote control akan memberikan hasil semacam yang diperlihatkan di Gambar 15.11.
Perlu diketahui, saat ini ada beberapa remote control yang mempunyai 21 tombol tetapi dengan merek yang berbeda. Perangkat-perangkat seperti itu berkemungkinan besar memiliki nilai-nilai yang berbeda untuk setiap tombol. Contoh dua remote control yang berbeda dan menghasilkan kode yang berlainan pula diperlihatkan di Gambar 15.12.
Gambar 15.12 Dua remote control yang berbeda mempunyai kode yang berbeda pula.
15-3 Modul Pengirim dan Penerima Frekuensi Radio 315MHz
Salah satu cara pengiriman dan penerimaan data nirkabel dapat dilakukan dengan menggunakan modul gelombang radio berfrekuensi 315MHz. Modul yang diperlukan berupa:
- transmitter : bagian pengirim data;
- receiver: bagian penerima data.
Gambar 15.1 memperlihatkan kedua modul tersebut
Gambar 15.13 Transmitter dan Receiver RF 315MHz
RF
Gambar 15.14 Rangkaian Arduino dan transmitter RF 315MHz
Gambar 15.15 Rangkaian aktual Transmitter RF 315MHz dan Arduino
Gambar 15.16 Rangkaian Arduino dan receiver RF 315MHz
Gambar 15.17 Rangkaian aktual Receiver RF 315MHz dan Arduino
Catatan | Antena dibuat dengan menggunakan kabel tembaga. Panjang kabel sekitar 24cm. Dibentuk dengan cara menggulung di batang pensil dan kemudian disolder ke pin ANT, baik di modul receiver maupun transmitter. |
Pengujian Pengiriman dan Penerimaan Data
Untuk melakukan pengujian diperlukan sepasang papan Arduino. Salah satu berufngsi pengirim dan satu lagi penerima. Untuk bagian pengirim sketch bernama kirim diperlukan.
Sketch: kirim
// ——————————————–
// Contoh untuk mengirim data
// menggunakan pengirim nirkabel
// dengan transmitter RF 315MHz
// ——————————————–
#include <VirtualWire.h>
void setup()
{
// Inisialisasi Pengirim vw_set_ptt_inverted(true); vw_set_tx_pin(12);
vw_setup(4000); // Kecepatan 4000 bit per detik
// Inisialisasi port serial
Serial.begin(9600);
}
void loop()
{
// Kirim data
kirim(“Tes..tes..123!”);
delay(1000);
// Kirim lagi
kirim(“Helo hola! Apa kabar?”);
delay(1000);
// Kirim ketiga kali
kirim(“Oke-kah? Mudah-mudahan.”);
// Fungsi untuk mengirim suatu teks
}
void kirim(char *teks)
{
Serial.println(teks);
vw_send((uint8_t *)teks, strlen(teks));
vw_wait_tx();
}
pertama-tama, baris berikut diperlukan:
#include <VirtualWire.h>
Pustaka virtualWire (perlu diinstal terlebih dahulu) digunakan untuk menangani pengiriman dan penerimaan data melalui gelombang radio. Menurut McCauley (2013), hubungan antara kecepatan pengiriman data (dalam bps) dan jarak pengiriman data berdasarkan eksperimen tertera dalam Tabel 15.1.
Tabel 15.1 Kecepatan transmisi dan jarak pada pengujian dergan gelombang radio
Kecepatan Transmisi Data | Jarak |
10000 bps | Data tidak diterima dengan baik |
7000 bps | Sekitar 90 m |
5000 bps | Sekitar 100 m |
2000 bps | Melebihi 150 m |
1000 bps | Melebihi 150 m |
pada setup ( ) terdapat tiga pengaturan yang terkait dengan pengiriman data.
- Pernyataan vw set_ptt_inverted (true) ; digunakan untuk menyatakan keadaan LOW untuk mengirim data. PTT berasal dari “press to talk” atau “tekan untuk berbicara”
- Pernyataan vw set tx_pin (12) ; digunakan untuk menentukan pin yang digunakan untuk mengirimkan data.
- Pernyataan vw setup (4000) ; digunakan untuk mengatur kecepatan transmisi data dalam satuan bps (bit per second).
Pengiriman data ditangani oleh fungsi kirim ( ) . Contoh:
kirim (“Tes . .tes . . 12 3 !”);
Fungsi kirim ( ) didefinisikan seperti berikut:
void kirim (char *teks)
{
Serial.printIn(teks) ;
vw send ( (uint8 t * )teks, strlen (teks) ) ;
vw_wait_tx () ;
}
Pernyataan
Serial.printIn (teks) ;
digunakan untuk mengirimkan teks ke port serial. Pernyataan
Vw_send ( (uint8 t * ) teks, strlen (teks) ) ;
mengirimkan data yang ada di string teks dengan jumlah byte yang dikirim, yang dinyatakan oleh argumen kedua (berupa strlen (teks) yang menyatakan jumlah karakter di teks). Pernyataan
vw_wait_tx () ;
dipakai untuk menunggu pengiriman data sampai selesai.
Adapun sketch berikut digunakan pada bagian penerima:
Sketch: terima
// ——————————————–
// Contoh untuk menerima data secara nirkabel
// menggunakan receiver RF 315MHz
// ——————————————–
#include <VirtualWire.h>
byte penampung[VW_MAX_MESSAGE_LEN];
byte panjangPesan = VW_MAX_MESSAGE_LEN;
void setup()
{
vw_set_ptt_inverted(true);
vw_set_rx_pin(11);
vw_setup(4000); // bit per detik
vw_rx_start(); // Memulai penerimaan datai
Serial.begin(9600);
Serial.println(“Siap menerima data!”);
}
void loop()
{
if (vw_get_message (penampung, &panjangPesan))
{
for (int i=0;i< panjangPesan; i++)d
Serial.write(penampung[i]);
Serial.println();
// Reset ke VW MAX MESSAGE LEN
// untuk mengatasi bug di pustaka VirtualWire
panjangPesan = VW_MAX_MESSAGE_LEN;
}
}
Pada setup ( ) terdapat empat pengaturan yang terkait dengan penerimaan data.
-
- Pernyataan vw set ptt inverted (true) ; digunakan untuk menyatakan keadaan LOW untuk mengirim data.
- Pernyataan vw set rx pin (12) ; digunakan untuk menentukan pin yang digunakan untuk menerima data.
- Pernyataan vw setup (4000) ; digunakan untuk mengatur kecepatan penerimaan data dalam satuan bps (bit per second).
- Pernyataan vw rx start ( ) ; digunakan untuk memulai penerimaan data.
pengambilan data dilakukan melalui fungsi vw_get message ( ) . Jika data berhasil diambil, fungsi tersebut memberikan nilai balik berupa true. Pada pemanggilan
vw_get_message(penampung,&panjangPesan)
argumen pertama menyatakan wadah yang digunakan untuk menampung data dan argumen kedua menyatakan alamat (dinyatakan dengan &) variabel yang akan diisi dengan jumlah data yang diperoleh. Selanjutnya, data di penampung dikirimkan ke port serial melalui:
for (int i = 0; i < panjangPesan; i++)
Serial.write (penampung [i] ) ;
Gambar 15.18 menunjukkan contoh hasil penerimaan data.
Pengontrolan LED Menggunakan Pemancar dan Penerima RF
Contoh di Gambar 15.19 memperlihatkan rangkaian di Sisi receiver yang melibatkan empat LED. Contoh ini dipakai untuk memperlihatkan cara mengontrol LED melalui transmitter. Contoh perwujudan rangkaian diperlihatkan di Gambar 15.20.
Gambar 15.19 Rangkaian penerima RF dan LED
Gambar 15.20 Contoh aktual pengendalian LED melalui RF 315MHz
Sketch: ledrecv
// ——————————————–
// Contoh untuk menerima data secara nirkabel
// menggunakan receiver RF 315MHz
// untuk pengendalian LED
// ——————————————–
#include <VirtualWire.h>
const int PIN_LED_A=4;
const int PIN_LED_B=5;
const int PIN_LED_C=6;
const int PIN_LED D=7;
byte penampung[VW MAX MESSAGE LEN];
byte panjangPesan = VW_MAX_MESSAGE_LEN;
void setup()
{
pinMode(PIN_LED_A, OUTPUT);
pinMode(PIN_LED B, OUTPUT);
pinMode (PIN_LED C, OUTPUT);
pinMode (PIN_LED D, OUTPUT) ;
vw_set_ptt_inverted(true);
vw_set_rx_pin(11);
vw_setup(4000); // bit per detik
// Memulai penerimaan data
vw_rx_start(); // Memulai penerimaan data
Serial.begin(9600);
serial.println(“Siap menerima data!”);
void loop()
if (vw_get_message (penampung, &panjangPesan))
{
char perintah[VW_MAX_MESSAGE_LEN+1];
// Bentuk string
for (int i=0; i < panjangPesan; i++)
perintah[i] = penampung[i];
perintah[panjangPesan] = 0; // Karakter NULL
// Periksa perintah di penampung
if (strcmp(perintah, “LEDA ON”) == 0)
{
digitalWrite(PIN_LED_A, HIGH);
Serial.println(“LED A menyala”);
}
else if (strcmp(perintah, “LEDA OFF”) == 0)
{
diiLPTN LED A, LOW);
Serial.println(“LED A padam”);
}
else if (strcmp(perintah, “LEDB ON”)==0)
{
digitalWrite(PIN LED B, HIGH);
Serial.println(“LED B menyala”);
}
else if (strcmp(perintah, “LEDB OFF”) == 0)
{
digitalWrite(PIN LED B, LOW);
Serial.println(“LED B padam”) ;
}
else if (strcmp(perintah, “LEDC ON”) == 0)
{
digitalWrite(PIN LED_C, HIGH);
Serial.println(“LED C menyala”);
}
else if (strcmp(perintah, “LEDC OFF”) ==0)
{
digitalWrite(PIN LED C,LOW);
Serial.println(“LED C padam”);
}
else if (strcmp(perintah, “LEDD ON”) == 0) {
{
digitalWrite(PIN_LED_D, HIGH);
Serial.println(“LED D menyala”);
}
else if (strcmp(perintah, “LEDD OFF”) == 0) {
{
digitalWrite(PIN_LED D,LOW);
Serial.println(“LED D padam”);
}
// Reset ke VW MAX_MESSAGE_LEN
// untuk mengatasi bug di pustaka VirtualWire
panjangPesan = VW_MAX_MESSAGE_LEN;
}
}
Pada pernyataan di atas,
for (int i=0; i < panjangPesan; i++)
perintah[i] = penampung[i];
perintah[panjangPesan] = 0; // Karakter NULL
dipakai untuk menyalin isi penampung ke perintah dan terakhir memberikan karakter pengakhir string (karakter NULL) di perintah. Dengan demikian, perintah berisi string perintah untuk mengatur LED.
Kemudian, perintah diseleksi melalui if, Contoh:
if (strcmp(perintah, “LEDA ON”) == 0)
{
digitalWrite(PIN_LED_A, HIGH);
Serial.println(“LED A menyala”);
}
Fungsi
(strcmp(perintah, “LEDA ON”)
akan menghasilkan nilai 0 hanya kalau isi perintah berupa “LEDA ON”. Dengan demikian, ekspresi
if (strcmp(perintah, “LEDA ON”) == 0)
akan menghasilkan true sekiranya perintah berisi “LED A”.
Jika sketch ledrcv dijalankan, LED akan padam terus sampai Anda menjalankan sketch ledtran. Sekarang, Anda bisa mengunggah sketch ledtran di komputer lain. Isi sketch ledtran seperti berikut:
Sketch: ledtran
// ——————————————–
// Contoh untuk mengontrol LED
// menggunakan pengirim nirkabel RF 315MHz
// ——————————————–
#include <VirtualWire.h>
void setup()
{
// Inisialisasi Pengirim
vw_set_ptt_inverted(true);
vw_set_tx_pin(12);
vw_setup(4000);// Kecepatan 4000 bit per detik
// Inisialisasi port serial
Serial.begin(9600);
}
void loop()
{
kirim(“LEDA ON”);
delay(3000);
kirim(“LEDB ON”);
delay(3000);
kirim(“LEDC ON”) ;
delay(3000);
kirim(“LEDD ON”);
delay(3000);
kirim(“LEDA OFF”);
delay(3000);
kirim(“LEDB OFF”);
delay(3000);
kirim(“LEDC OFF”);
delay(3000);
kirim(“LEDD OFF”);
delay(3000);
}
// Fungsi untuk mengirim suatu teks
void kirim(char *teks)
{
Serial.println(teks);
vw_send((uint8_t *)teks, strlen(teks));
vw wait tx();
}
Perhatikan bahwa di loop ( ) terdapat perintah untuk menghidupkan LED dan juga mematikan LED. Perintah-perintah tersebutlah yang membuat LED masing-masing mengikutinya.
Setelah sketch di atas diunggah, LED akan menyala dan padam mengikuti instruksi dari sketch ledtran. Contoh diperlihatkan di Gambar 15.21.
Gambar 15.21 LED sedang menyala karena pengaturan dari transmitter
Komunikasi nirkabel dapat dilakukan dengan menggunakan bluetooth. Dengan menggunakan teknologi ini, dua peralatan atau lebih dapat saling berkomunikasi tanpa kabel. Untuk keperluan percobaan dengan menggunakan bluetooth, diperlukan hal-hal berikut:
- bluetooth d0ngle (Gambar 15.22a; dipasangkan ke port USB komputer) di Sisi PC jika PC belum dilengkapi bluetooth;
- modul Bluetooth di Sisi Arduino (Gambar 15.22b);
- software di Sisi PC untuk melakukan komunikasi dengan Arduino (misalnya Tera Term); satu LED.
Pada percobaan yang akan dilakukan, LED akan dikontrol melalui PC melalui Tera Term.
(A)
Gambar 15.22 Bluetooth d0ngle dan modul bluetooth
Sebelum percobaan dilakukan, beberapa persiapan perlu dilakukan.
Penyusunan Rangkaian
Rangkaian yang diperlukan untuk percobaan diperlihatkan di Gambar 15.23. Setelah penyusunan rangkaian dilakukan, hubungkan ke komputer.
Gambar 15.23 Rangkaian Bluetooth untuk pengendalian LED
Memasang Bluetooth D0ngle dan Menginstal Bluetooth Device
Pertama-tama, pasanglah bluetooth d0ngle di komputer. Secara otomatis, komputer akan mengenalinya• Beberapa saat kemudian akan terlihat di task bar seperti terlihat di Gambar 15.24.
Gambar 15.24 Ikon bluetooth di task bar
selanjutnya, PC perlu diatur agar mengenali peranti Bluetooth yang terhubung di Arduino dengan cara seperti berikut.
- Aktifkan Control Panel.
- Klik pada Add a device. Beberapa saat akan muncul tampilan seperti terlihat di Gambar 15.25.
- Klik pada HC-06 (yang merupakan nama untuk peranti bluetooth. Nama ini bisa berbeda tergantung jenis modul bluetooth). Kemudian, klik pada tombol Langkah ini memunculkan tampilan seperti terlihat di Gambar 15.26.
- Ketik
1234
Beberapa saat kemudian akan terjadi proses instalasi dan kemudian klik pada tombol seperti terlihat di Gambar 15.27.
- Tunggu sampai jendela tertutup
Hal di atas hanya perlu dilakukan sekali. Setelah itu, Anda perlu mengetahui port yang digunakan oleh peranti bluetooth tersebut. Caranya sebagai berikut:
- Melalui Control Panel, klik pada View devices and printers. Hasilnya akan berupa semacam yang
- Klik ganda pada HC-06. Gambar 15.29 memperlihatkan hasilnya.
Gambar 15.29 Tab General pada properti HC-06
- Klik pada tab Hardware. Hasilnya ditunjukkan di Gambar 15.30.
Gambar 15.30 Tab Hardware
- Catat nomor port (pada contoh di atas adalah COMII).
- Tutuplah jendela dengan mengklik pada tombol OK
Menginstal Software
Untuk kepentingan pengendalian LED di Arduino, diperlukan software bernama Tera Term. Software ini dapat diunduh secara gratis di situs en/sourceforge . j p/ proj ects/ttssh2. Versi yang digunakan untuk percobaan adalah Tera Term 4.84. Untuk memudahkan Anda, file ini disertakan di CD dengan nama teraterm—4.84. zip.
Hal yang diperiukan adalah mendekompresi file tersebut sehingga terbentuk folder bernama teraterm4 84. Folder ini boleh diletakkan di mana saja.
Menguji Rangkaian
Pertama-tama, unggahkan sketch berikut ke papan Arduino:
Sketch: bt
// ——————————————–
// Contoh untuk menguji pengontrolan LED dengan Bluetooth
// Anode LED dihubungkan ke pin 13
// Katode LED dihubungkan ke pin GND
// Pin RXD Bluetooth dihubungkan ke pin 11
// Pin TXD Bluetooth dihubungkan ke pin 10
// ——————————————–
#include <SoftwareSerial.h>
const int PIN LED=13;
SoftwareSerial bt(10, 11);// RX, TX
void setup()
{
// Atur kecepatan transfer data di Bluetooth
bt.begin(9600);
// Mode output untuk pin LED
pinMode (PIN_LED, OUTPUT);
}
void loop()
int dataBt; // Data dari bluetooth
if (bt.available())
{
dataBt=bt.read();
if (dataBt == ‘1’)
{
// Berarti tombol 1 ditekan
// maka hidupkan LED
digitalWrite(PIN LED, 1);
bt.println(“LED menyala!”);
}
else
if (dataBt==’0′)
{
// Berarti tombol 0 ditekan
// maka matikan LED
digitalWrite(PIN LED, 0);
bt.println(“LED tidak hidup!”);
}
}
delay(100); // Tunda untuk pemeriksaan berikutnya
}
sekarang saatnya untuk menjalankan Tera Term. Caranya, klik ganda pada ttempro ( ttermpro ) yang berada di folder teraterm-4 . 84. Langkah ini akan membuat jendela berikut ditampilkan:
Gambar 15.31 Pilihan koneksi di Tera Term
Selanjutnya, klik pada tombol radio Serial. Lalu, pilihlah port untuk peranti bluetooth. Pada contoh di depan adalah COMII. Contoh ditunjukkan di Gambar 15.32.
Selanjutnya, silakan tekan tombol 0. LED pun akan dimatikan dan tulisan “LED tidak hidupl” ditampilkan di antarmuka Tera Term (Gambar 15.35).
BACA JUGA :
1. Kursus dan Pelatihan Koding untuk Anak
2. Kursus dan Pelatihan Mikrokontroller Arduino
3. Kursus dan Pelatihan Internet of Things atau IoT
5. Kursus dan Pelatihan Raspberry Pi