Bluetooth merupakan komunikasi wireless (nirkabel) menggunakan SPP (Serial Port Protocol) dengan frekusensi kerja 2.4 GHz. Dengan Bluetooth, anda dapat saling bertukar informasi dengan perangkat-perangkat lain. Namun bluetooth hanya dapat berkomunikasi dengan jarak sekitar 10 m. Untuk dapat berkomunikasi dengan mikrokontroler, sudah terdapat jenis modul bluetooth yang beredar di pasaran yaitu HC-05 dan HC-06. Terdapat 2 mode kerja Bluetooth HC-06:
Mode 1 berperan sebagai slave atau receiver data saja
Mode 2 berperan sebagai master atau dapat bertindak sebagai transceiver.

Pengaplikasian komponen ini sangat cocok pada project elektronika dengan komunikasi nirkabel atau wireless. Aplikasi yang dimaksud antara lain aplikasi sistem kendali, monitoring, maupun gabungan keduanya. Antarmuka yang dipergunakan untuk mengakses module ini yaitu serial TXD, RXD, VCC serta GND. Serta terdapat LED (built in) sebagai indikator koneksi bluetooth terhadap perangkat lainnya seperti sesama module, dengan smartphone, dan sebagainya.
Spesifikasi dari module ini antara lain :


Bluetooth HC-05 Vs Bluetooth HC-06
Bluetooth jenis ini adalah seri bluetooth yang bisa digunakan dengan mikrokontroler. Bluetooth HC-05 dan HC-06 secara tampilan fisik tampak sama. Namun secara fungsi ternyata memiliki perbedaan. Khususnya letak perbedaannya yaitu HC-05 adalah bluetooth yang bisa difungsikan sebagai master atau slave. Sedangkan jika yang seri HC-06 hanya sebagai slave saja karena telah diset dari pabrik.

Secara garis besar Bluetooth seri ganjil bisa diubah-ubah menjadi master atau slave dengan memanfaatkan command tertentu. sedangkan untuk seri genap telah diset sebagai slave saja dari pabrik dan tidak bisa diubah. jadi untuk pemakaian yang seri ganjil lebih flexibel.
Setting AT-Command

Contoh beberapa Command bluetooth yang dapat digunakan di serial monitor antara lain :
- AT : untuk mengetest konektivitas antara module, arduino/mikrokontroler, dan ditampilkan di serial monitor
- AT+RESET : untuk mereset data yang terdapat pada module
- AT+VERSION? : untuk mengetahui akan versi firmware yang terdapat pada module
- AT+ORGL : mengembalikan semua data seperti semula
- AT+ADDR : untuk mengetahui akan bluetooth module address
- AT+NAME=”TES1” : mengatur nama module dengan nama “TES1”
- AT+NAME? : mengetahui nama device module
- AT+ROLE? : untuk mengetahui akan parameter device tentang status dijadikan mode slave atau master.
- AT+ROLE=0 : menjadikan modul mode slave role (mode yang hanya menerima data saja), apabila diisikan “1” module dijadikan mode master role (sebagai transmisi data / pengendali), sedangkan “2” maka akan dijadikan mode slave loop role (mode yang hanya menerima data saja dan mengirimkan data juga ke master)
Percobaan 69: Akses Modul Komunikasi Wireless Bluetooth HC-06


- Hubungkan TX dengan pin D19 ATMEGA 2560
- Hubungkan RX dengan pin D18 ATMEGA 2560
- Hubungkan ENABLE dengan pin VCC
- Hubungkan board ATMEGA 2560 dengan Komputer menggunakan kabel USB.
- Bukalah IDE Arduino, kemudian ketikkan kode program/sketch atau buka file BLUETOOTH_1_SETTING_AT_COMMAND (Setting AT COMMAND Bluetooth HC-06) atau BLUETOOTH_2_TES_DATA (Testing)
- Compile menggunakan verify button (tanda ceklist pada IDE arduino) untuk mengecek ada atau tidaknya error/kesalahan dalam pengetikan.
- Upload program ke arduino dengan cara, pilih File > Upload to I/O board, atau tekan tombol tanda panah pada jendela IDE arduino.
Code BLUETOOTH_1_SETTING_AT_COMMAND (Setting AT COMMAND Bluetooth HC-06):
void setup()
{
Serial.begin(9600); //menggunakan komunikasi serial softawre IDE pada 9600 bps
Serial.println("Input command AT:");
Serial1.begin(9600); //Baudrateb module bluetooth
}
void loop() {
//Membaca terhubungnya koneksi HC06 dengan arduino pada serial Monitor
if (Serial1.available())
{
Serial.write(Serial1.read());
}
//Membaca data dari Arduino Serial monitor yang akan dikirim ke HC06
if (Serial.available())
Serial1.write(Serial.read());
}
Hasil:

.
Code BLUETOOTH_2_TES_DATA (Testing):
char data = 0;
#define led 2
void setup()
{
Serial.begin(9600);
Serial1.begin(9600);
pinMode(led, OUTPUT); //inisialisasi LED menjadi output
}
void loop()
{
//Serial1.println("Bismillah");
if(Serial1.available() > 0)
{
data = Serial1.read();
Serial.print(data); //Pembacaan dan ditampilkan data yang masuk
Serial.print("\n");
//Data yang masuk
if(data == '1'){
digitalWrite(led, HIGH);//diberikan waktu tunda 1 detik
Serial1.println("LED ON");
}
else if(data == '0')
{
digitalWrite(led, LOW);
Serial1.println("LED OFF");
}
}
}
Video Demo: