Tutorial ESP32 dengan Arduino IDE : #2 Mengakses Bluetooth
Espressif, menghadirkan ESP32 dengan dilengkapi konektivitas beragam, tidak hanya Wi-Fi, namun juga Bluetooth (klasik) dan juga Bluetooth Low Energy. Dalam tulisan kali ini, embeddednesia akan mengulas bagaimana menggunakan Bluetooth (klasik) dan menghubungkannya dengan smartphone Android.
- Blok Diagram
Gambar berikut mengilustrasikan dari blok diagram rancangan pada artikel kali ini.
Data serial dari smartphone (yang sebelumnya telah di-pairing dengan bluetooth dengan ESP32), dikirim menggunakan aplikasi terminal. Begitu data diterima, ESP32 akan memproses data tersebut dan memutuskan apakah GPIO yang terhubung pada LED berada di logika 1 atau 0.
- Prasyarat Perangkat Keras
- Development Board ESP32
Development Board yang kompatibel dengan artikel kali ini dan dapat dibeli di TOKO BEY. Salah satu jenisnya adalah ESP32S DevKit DOIT dengan kaki – kaki pin berjumlah 38 seperti berikut
Development board lainnya, yang sedikit berbeda namun memiliki diagram pin yang sama adalah sebagai berikut
Pembaca dapat membeli modul ESP32 melalui TOKO BEY dengan mengakses halaman pembelian di tautan berikut. Jika pembaca merasa tulisan ini bermanfaat, pembaca dapat berterimakasih dengan membeli produk di TOKO BEY
- Prasyarat Perangkat Lunak
Pembaca diasumsikan telah mengatur environment Arduino IDE sebagaimana dijelaskan dalam tautan berikut
Untuk kepentingan simulasi, dan membatasi lingkup tulisan ini, embeddednesia tidak akan membuat aplikasi android sendiri dan akan menggunakan aplikasi terminal bluetooth yang telah tersedia di Play Store. Misalnya Serial Bluetooth Terminal, yang digunakan pada tulisan ini
https://play.google.com/store/apps/details?id=de.kai_morich.serial_bluetooth_terminal
- Rangkaian Elektronika
Dalam artikel ini, GPIO pada ESP32 akan dihubungkan dengan LED. Namun pembaca dapat juga menggunakan led internal yang secara bawaan sudah terkoneksi dengan GPIO2.
- Source Code
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
#include "BluetoothSerial.h" | |
BluetoothSerial ESP_BT; //Object for Bluetooth | |
int incoming; | |
int LED_BUILTIN = 2; | |
void setup() { | |
Serial.begin(9600); //Start Serial monitor in 9600 | |
ESP_BT.begin("ESP32_LED_Control"); //Name of your Bluetooth Signal | |
Serial.println("Bluetooth Device is Ready to Pair"); | |
pinMode (LED_BUILTIN, OUTPUT);//Specify that LED pin is output | |
} | |
void loop() { | |
if (ESP_BT.available()) //Check if we receive anything from Bluetooth | |
{ | |
incoming = ESP_BT.read(); //Read what we recevive | |
Serial.print("Received:"); Serial.println(incoming); | |
if (incoming == 49) | |
{ | |
digitalWrite(LED_BUILTIN, HIGH); | |
ESP_BT.println("LED turned ON"); | |
} | |
if (incoming == 48) | |
{ | |
digitalWrite(LED_BUILTIN, LOW); | |
ESP_BT.println("LED turned OFF"); | |
} | |
} | |
delay(20); | |
} |
- Penjelasan Program
Pada baris pertama,
#include "BluetoothSerial.h"
adalah deklarasi untuk memasukan library bluetooth yang nanti dapat dipergunakan dalam mengakses ESP32. Berikutnya di baris ke -3 dibuat object dari class BluetoothSerial
yang bernama ESP_BT
BluetoothSerial ESP_BT;
Setelah itu pada blok fungsi setup
. Dilakukan inisialisasi fungsi komunikasi serial dengan baud rate 9600, dan memberi nama sinyal Bluetooth dengan nama ESP32_LED_Control
. Nama ini yang nantinya ditemukan oleh smartphone saat perangkat pertama kali melakukan pairing.
Serial.begin(9600); //Start Serial monitor in 9600 ESP_BT.begin("ESP32_LED_Control"); //Name of your Bluetooth Signal Serial.println("Bluetooth Device is Ready to Pair");
Pada baris 13, GPIO2 (yang terkoneksi dengan led bawaan), dideklarasikan sebagai output.
pinMode (LED_BUILTIN, OUTPUT);
Didalam fungsi loop
tak terhingga, program akan memeriksa terlebih dahulu data yang masuk ke modul bluetooth. Jika ya, maka data dibaca dan disimpan pada variabel incoming. Nilai ini juga dikeluarkan pada Serial Monitor, sekedar untuk memastikan bahwa data yang dikirim sama dengan data yang diterima
Sampai sini, data yang diterima telah disimpan pada variabel incoming
. Sehingga kemudian dapat dibandingkan dengan nilai yang diinginkan agar melakukan action tertentu. Namun yang perlu diperhatikan adalah data yang dikirim dari bluetooth akan menjadi bentuk char
. dan program arduino akan membaca nilai desimal dari karakter tersebut.
Dalam kasus ini misalnya, karakter 0
memiliki nilai desimal 48, sedangkan karakter 1
memiliki nilai desimal 49. Pembaca bisa merujuk tabel ASCII seperti pada gambar berikut
Di dalam program, nilai karakter ini dibandingkan, jika data yang diterima adalah karakter 1 (desimal 49) maka program akan menyalakan LED internal dan juga mengirim pesan serial ke bluetooth. Begitupun jika data yang diterima adalah karakter 0
(desimal 48), program akan mematikan LED (memberikan logika 0) sembari mengirim pesan acknowledge ke bluetooth
if (incoming == 49) { digitalWrite(LED_BUILTIN, HIGH); ESP_BT.println("LED turned ON"); } if (incoming == 48) { digitalWrite(LED_BUILTIN, LOW); ESP_BT.println("LED turned OFF"); }
- Running
Saat program diupload dan dijalankan ke ESP32. Sinyal bluetooth bernama ESP32_LEDControl akan muncul pada smartphone. Pair terlebih dahulu dengan smartphone android yang digunakan.
Jalankan program Serial Bluetooth Terminal seperti yang dibahas pada langkah sebelumnya. Lalu masuk ke menu Device dan pilih ESP32_LED_Control tunggu sampai status menjadi Connected.
Setelah status menjadi Connected, perintah dari smartphone ke ESP32 dapat mulai dikirimkan, kirim 1
untuk menyalakan LED, dan 0
untuk mematikan LED, sebagaimana tangkapan layar berikut
Selamat, kini smartphone Android yang digunakan telah berhasil berkomunikasi dengan ESP32.