Advertisement

Tutorial ESP32 dengan Arduino IDE : #2 Mengakses Bluetooth

0 14,774

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.

Adverstiment

  • 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

 

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

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

Adverstiment

 

  • 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


#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);
}

- Advertisement -

 

  • 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

Advertisement

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.

Baca juga tulisan lain pada seri #Tutorial ESP32 dengan Arduino IDE atau tulisan menarik lainnya pada kategori ESP32

Tinggalkan Balasan

Situs ini menggunakan Akismet untuk mengurangi spam. Pelajari bagaimana data komentar Anda diproses.