🔵 BLE Gateway - Kontrol ESP32 Tanpa WiFi

Pernah nggak sih lo pengen ngontrol ESP32 tapi lokasinya jauh dari router WiFi? Atau lo cuma butuh komunikasi jarak dekat yang irit baterai? Nah, BLE Gateway adalah solusinya.

Apa Itu BLE Gateway?

BLE Gateway adalah perangkat (bisa ESP32) yang bertindak sebagai jembatan antara perangkat Bluetooth Low Energy (BLE) dan jaringan internet (atau cloud). Jadi ESP32 lo tetap bisa dikirim perintah dari smartphone via BLE, tanpa perlu koneksi WiFi sama sekali.

Di ekosistem Chat AIoT, BLE Gateway memungkinkan lo mengontrol perangkat IoT dari jarak dekat tanpa harus repot mengatur WiFi. Cukup sambungkan smartphone lo ke ESP32 via Bluetooth, kirim perintah, dan perangkat lo merespons.

Kenapa Pilih BLE daripada WiFi?

Komponen yang Dibutuhkan

Wiring (Skema Koneksi)

Untuk testing sederhana, sambungkan LED ke GPIO 2 (bawaan ESP32) via resistor 220 Ohm. Gak perlu wiring ribet karena komunikasi lewat udara (BLE).

Skema:

- LED Anoda (+) → GPIO 2 (melalui resistor 220 Ohm)
- LED Katoda (-) → GND

Kode Program ESP32 (Arduino IDE)

Copy-paste kode ini ke Arduino IDE, lalu upload ke ESP32 lo.

#include 
#include 
#include 

#define SERVICE_UUID        "4fafc201-1fb5-459e-8fcc-c5c9c331914b"
#define CHARACTERISTIC_UUID "beb5483e-36e1-4688-b7f5-ea07361b26a8"

bool ledState = false;

class MyCallbacks: public BLECharacteristicCallbacks {
  void onWrite(BLECharacteristic *pCharacteristic) {
    std::string value = pCharacteristic->getValue();
    if (value.length() > 0) {
      if (value[0] == '1') { ledState = true; }
      else if (value[0] == '0') { ledState = false; }
      digitalWrite(2, ledState ? HIGH : LOW);
    }
  }
};

void setup() {
  Serial.begin(115200);
  pinMode(2, OUTPUT);
  digitalWrite(2, LOW);

  BLEDevice::init("ESP32_BLE_Gateway");
  BLEServer *pServer = BLEDevice::createServer();
  BLEService *pService = pServer->createService(SERVICE_UUID);
  BLECharacteristic *pCharacteristic = pService->createCharacteristic(
                      CHARACTERISTIC_UUID,
                      BLECharacteristic::PROPERTY_READ |
                      BLECharacteristic::PROPERTY_WRITE
                    );
  pCharacteristic->setCallbacks(new MyCallbacks());
  pService->start();
  BLEAdvertising *pAdvertising = pServer->getAdvertising();
  pAdvertising->start();
  Serial.println("BLE Gateway siap! Tunggu koneksi...");
}

void loop() {
  delay(1000);
}

Bagaimana Cara Mengirim Perintah?

Setelah kode diupload, buka aplikasi Chat AIoT di smartphone lo. Cari perangkat bernama "ESP32_BLE_Gateway", lalu sambungkan. Kirim karakter '1' untuk menyalakan LED, dan '0' untuk mematikan.

Lo juga bisa menggunakan aplikasi nRF Connect untuk testing. Cari perangkat, sambungkan, lalu tulis nilai pada karakteristik yang tersedia.

Kelebihan BLE Gateway di Chat AIoT

Di Chat AIoT, BLE Gateway tidak hanya bisa kirim 1 byte, tapi juga bisa mengirim data sensor (suhu, kelembaban) dan menerima notifikasi. Ini sangat cocok untuk aplikasi smart home tanpa WiFi atau remote control di area parkir/garasi yang jauh dari router.

Selain itu, BLE Gateway bisa diintegrasikan dengan Genk Mesh (LoRa) untuk komunikasi jarak jauh. BLE menangani komunikasi lokal (smartphone ke ESP32), sedangkan LoRa menangani komunikasi antar-node (ESP32 ke ESP32).

Troubleshooting Umum

Kesimpulan

Dengan BLE Gateway, lo bisa bikin perangkat IoT yang super irit dan praktis tanpa ribet WiFi. Cocok untuk proyek smart home, kontrol peralatan, atau monitoring sensor di jarak dekat.

Selamat mencoba! Kalau ada kendala, tanyakan di komunitas Chat AIoT.