ESP32 Bluetooth Classic dengan Arduino IDE

Tujuan

  • Memahami cara mengatur dan menggunakan ESP32 untuk komunikasi Bluetooth Classic.
  • Mampu mengirim dan menerima data menggunakan Bluetooth.

Alat dan Bahan

  • Modul ESP32
  • Kabel USB untuk koneksi ke komputer
  • Arduino IDE (pastikan sudah terinstal)
  • Smartphone atau perangkat lain yang mendukung Bluetooth

Uji komunikasi ESP32 Bluetooth Classic dengan aplikasi Serial Bluetooth Terminal di Android

Langkah-langkah

  • Persiapan Lingkungan
    • Install Arduino IDE jika belum terpasang.
    • Tambahkan dukungan untuk ESP32 di Arduino IDE:
      • Buka Arduino IDE, pergi ke File > Preferences.
      • Tambahkan URL berikut di bagian “Additional Board Manager URLs”:
        https://espressif.github.io/arduino-esp32/package_esp32_index.json
      • Pergi ke Tools > Board > Board Manager, cari “ESP32” dan instal.
  • Pilih Board ESP32
    • Pilih board yang sesuai dengan ESP32 Anda:
      Tools > Board > ESP32 Dev Module (atau board lain yang sesuai).
  • Koneksi ESP32
    • Hubungkan ESP32 ke komputer menggunakan kabel USB.
  • Contoh Kode
    • Salin dan tempel kode berikut ke dalam Arduino IDE:
#include "BluetoothSerial.h"
BluetoothSerial SerialBT;
void setup() {

    Serial.begin(115200);
    SerialBT.begin("ESP32_BT"); // Nama perangkat Bluetooth
    Serial.println("Perangkat Bluetooth siap untuk dipasangkan");

}




void loop() {

    if (SerialBT.available()) {
        //Serial.write(SerialBT.read());
        char incomingChar = SerialBT.read();
        Serial.print("Diterima: ");
        Serial.println(incomingChar);

    }




    if (Serial.available()) {

        char outgoingChar = Serial.read();
        SerialBT.print(outgoingChar);
        Serial.print("Terkirim: ");
        Serial.println(outgoingChar);

    }

    delay(20);

}
  • Contoh Code Aplikasi
#include "BluetoothSerial.h"

#include "DHT.h"

#define DHTPIN 2       // Pin data DHT11

#define DHTTYPE DHT11  // DHT11 digunakan

DHT dht(DHTPIN, DHTTYPE);

// Check if Bluetooth configs are enabled

#if !defined(CONFIG_BT_ENABLED) || !defined(CONFIG_BLUEDROID_ENABLED)

#error Bluetooth is not enabled! Please run `make menuconfig` to and enable it

#endif

// Bluetooth Serial object

BluetoothSerial SerialBT;

// GPIO where LED is connected to

const int ledPin =  25;

// Handle received and sent messages

String message = "";

char incomingChar;

String temperatureString = "";

// Timer: auxiliar variables

unsigned long previousMillis = 0;    // Stores last time temperature was published

const long interval = 10000;         // interval at which to publish sensor readings

void setup() {

  dht.begin();

  pinMode(ledPin, OUTPUT);

  Serial.begin(115200);

  // Bluetooth device name

  SerialBT.begin("ESP32");

  Serial.println("The device started, now you can pair it with bluetooth!");

}

void loop() {

  unsigned long currentMillis = millis();

  // Send temperature & humadity readings

  if (currentMillis - previousMillis >= interval){

    previousMillis = currentMillis;

    float humidity = dht.readHumidity();

    float temperature = dht.readTemperature();

    temperatureString = String(temperature) + "C  " +  String(humidity) + "%";

    SerialBT.println(temperatureString);

  }

  // Read received messages (LED control command)

  if (SerialBT.available()){

    char incomingChar = SerialBT.read();

    if (incomingChar != '\n'){

      message += String(incomingChar);

    }

    else{

      message = "";

    }

    Serial.write(incomingChar);  

  }

  // Check received message and control output accordingly

  if (message =="led_on"){

    digitalWrite(ledPin, HIGH);

  }

  else if (message =="led_off"){

    digitalWrite(ledPin, LOW);

  }

  delay(20);

}
  • Upload Kode
    • Klik tombol Upload di Arduino IDE untuk mengunggah kode ke ESP32.
  • Uji Koneksi Bluetooth
    • Setelah pengunggahan selesai, buka aplikasi Bluetooth di smartphone.
    • Cari perangkat dengan nama “ESP32_BT” dan lakukan pairing.
    • Gunakan aplikasi terminal Bluetooth (seperti “Bluetooth Terminal”) untuk mengirim dan menerima data.
  • Verifikasi
    • Kirim karakter dari aplikasi terminal ke ESP32.
    • Periksa Serial Monitor di Arduino IDE untuk melihat data yang diterima.

Catatan

  • Pastikan baud rate di Serial Monitor disesuaikan dengan pengaturan di kode (115200).
  • Jika ada masalah dalam koneksi, pastikan perangkat Bluetooth di smartphone aktif dan dalam jangkauan.

Penutup

Dengan mengikuti langkah-langkah di atas, Anda seharusnya dapat berhasil mengatur dan menggunakan ESP32 untuk komunikasi Bluetooth Classic. Jika ada pertanyaan atau kesulitan, jangan ragu untuk bertanya!

Penting: Tidak Semua ESP32 Mendukung Bluetooth Classic

ChipBluetooth Classic (BluetoothSerial)BLE
ESP32 (original, mis. DevKit V1/WROOM-32)YaYa
ESP32-S3, ESP32-C3, ESP32-C6TidakYa
ESP32-S2TidakTidak

Jika muncul error “Bluetooth is not enabled” atau BluetoothSerial.h tidak ditemukan saat memilih board S3/C3, penyebabnya adalah chip tersebut tidak memiliki Bluetooth Classic. Gunakan BLE sebagai gantinya.

Catatan untuk pengguna iPhone: iOS tidak mendukung profil Serial Port (SPP) Bluetooth Classic untuk aplikasi umum, sehingga ESP32 dengan BluetoothSerial tidak bisa dihubungkan dari iPhone. Gunakan HP Android (mis. aplikasi Serial Bluetooth Terminal) atau beralih ke BLE.

Bluetooth Classic vs BLE

AspekBluetooth Classic (SPP)Bluetooth Low Energy (BLE)
Pola komunikasiSeperti kabel serial (aliran data)Layanan dan karakteristik (GATT)
Konsumsi dayaLebih besarSangat rendah
Kemudahan untuk pemulaSangat mudah (mirip Serial)Perlu memahami UUID dan karakteristik
Dukungan HPAndroidAndroid dan iPhone

Kode Aplikasi yang Lebih Andal

Banyak aplikasi terminal mengirim akhiran \r\n. Pada kode aplikasi di atas, karakter \r ikut masuk ke variabel message sehingga perintah “led_on” tidak pernah cocok. Versi berikut mengabaikan \r, memproses perintah hanya setelah Enter, dan membalas status ke HP:

#include "BluetoothSerial.h"

BluetoothSerial SerialBT;
const int ledPin = 25;
String pesan = "";

void setup() {
  Serial.begin(115200);
  pinMode(ledPin, OUTPUT);
  SerialBT.begin("ESP32_BT");
}

void prosesPerintah(String cmd) {
  cmd.trim();
  if (cmd == "led_on")       { digitalWrite(ledPin, HIGH); SerialBT.println("LED ON"); }
  else if (cmd == "led_off") { digitalWrite(ledPin, LOW);  SerialBT.println("LED OFF"); }
  else                       { SerialBT.println("Perintah tidak dikenal: " + cmd); }
}

void loop() {
  while (SerialBT.available()) {
    char c = SerialBT.read();
    if (c == '\r') continue;
    if (c == '\n') { prosesPerintah(pesan); pesan = ""; }
    else pesan += c;
  }
}

Pada contoh aplikasi DHT11, pin data GPIO 2 adalah strapping pin dan terhubung ke LED onboard di banyak board. Jika board gagal boot atau upload, pindahkan DHT11 ke pin aman seperti GPIO 4.

Troubleshooting

GejalaPenyebabSolusi
Nama ESP32_BT tidak muncul di HPBoard bukan ESP32 original, atau program belum berjalanCek chip, buka Serial Monitor untuk memastikan program jalan
Sudah pairing tetapi terminal tidak terhubungPairing saja tidak cukupDi aplikasi terminal, pilih perangkat lalu tekan Connect
Perintah LED tidak berpengaruhAkhiran baris berbeda (\r\n)Gunakan kode yang diperbarui di atas
Sketch terlalu besarLibrary Bluetooth memakan banyak flashTools → Partition Scheme → “Huge APP”

Baca juga: ESP32: Panduan Komprehensif untuk Pemula hingga Ahli (IoT, Pemrograman, & Proyek) untuk memahami roadmap lengkap belajar ESP32 dari dasar hingga proyek IoT.

Related Articles

Tinggalkan Balasan

Chat Langsung dengan Kami
Staff bisaioti 1 — +62 823-3306-4821 E-Course, Offline Course, Hardware & Teknis IoT/OT Staff bisaioti 2 — +62 823-3306-4821 Training Korporat & Toko Hardware