Tutorial ESP32 – Menghidupkan Lampu LED dan Bertukar Data Menggunakan Android Melalui Koneksi Bluetooth

ARSAFAMILY.COM – Langsung saja bor, kali ini kita akan bereksperimen lagi dengan ESP 32 yaitu menghidupkan lampu LED dan bertukar data melalui android, sebenarnya menggunakan lampu besar 220v juga bisa, namun memerlukan modul relay alias saklar, jadi kita tutor yang simpel-simpel aja lah ya bor.

Sebelum itu, pada Android anda, install aplikasi “Serial Bluetooth Terminal” seperti tangkapan layar di bawah ini

Bahan-bahan yang digunakan adalah ESP32, BMP280, LED, dan Resistor. Rangkailah seperti gambar di bawah ini:

  • Led dihubungkan ke pin D5
  • SCL BMP280 ke pin D22
  • SDA BMP280

Lalu uploadlah kode di bawah ini

#include "BluetoothSerial.h"
#include <Wire.h>
#include <SPI.h>
#include <Adafruit_BMP280.h>
#if !defined(CONFIG_BT_ENABLED) || !defined(CONFIG_BLUEDROID_ENABLED)
#error Bluetooth is not enabled! Please run `make menuconfig` to and enable it
#endif

#define BMP_SCK  (13)
#define BMP_MISO (12)
#define BMP_MOSI (11)
#define BMP_CS   (10)

const int ledPin =  5;
int stat = 0;
Adafruit_BMP280 bmp;
BluetoothSerial SerialBT;
String message = "";
char incomingChar;
String temperatureString = "";
unsigned long previousMillis = 0;    // Stores last time temperature was published
const long interval = 1000;         // interval at which to publish sensor readings
void setup()
{
  Serial.begin(9600);
  pinMode(ledPin, OUTPUT);
 
  while ( !Serial ) delay(100);   // wait for native usb
  Serial.println(F("BMP280 test"));
  unsigned status;
 
  status = bmp.begin(0x76);
  if (!status)
  {
    Serial.println(F("Could not find a valid BMP280 sensor, check wiring or try a different address!"));
    while (1) delay(10);
  }
 
  bmp.setSampling(Adafruit_BMP280::MODE_NORMAL,     /* Operating Mode. */
                  Adafruit_BMP280::SAMPLING_X2,     /* Temp. oversampling */
                  Adafruit_BMP280::SAMPLING_X16,    /* Pressure oversampling */
                  Adafruit_BMP280::FILTER_X16,      /* Filtering. */
                  Adafruit_BMP280::STANDBY_MS_500); /* Standby time. */
  SerialBT.begin("ESP32test");
  Serial.println("The device started, now you can pair it with bluetooth!");
}
void loop() {
  unsigned long currentMillis = millis();
  if (currentMillis - previousMillis >= interval){
    previousMillis = currentMillis;
    temperatureString = "Suhu = " + String(bmp.readTemperature()) + "C";
    SerialBT.println(temperatureString);
  }
 
  if (SerialBT.available()){
    char incomingChar = SerialBT.read();
    if (incomingChar != '\n'){
      message += String(incomingChar);
    }
    else{
      message = "";
    }
    Serial.write(incomingChar);  
  }
  if (message =="led_on"){
    digitalWrite(ledPin, HIGH);
  }
  else if (message =="led_off"){
    digitalWrite(ledPin, LOW);
  }
  delay(20);
}

Buka serial monitor Arduino IDE

Jika sudah keluar output sesuai dengan gambar di atas, berarti ESP32 telah siap dibuat koneksi dengan android.

Lalu kita beralih ke android, silahkan dibuka aplikasi Serial Bluetooth Terminal.

Pertama buka menu Device

Lalu scan, dan lakukan Pair new device dengan nama ESP32test, ingat cara ini bisa berbeda dengan perangkat anda, sesuaikan cara koneksi bluetooth dengan masing-masing perangkat yang anda punya

Jika sudah, maka klik gambar sambungkan seperti gambar di bawah ini

Hasilnya kurang lebih seperti video di bawah ini, android akan menerima data yang dikirimkan oleh ESP32 melalui koneksi bluetooth

Lalu kita edit tombol macro M1 untuk difungsikan sebagai tombol untuk menghidupkan lampu LED. Caranya tekan agak lama tombol M1, maka akan muncul seperti gambar di bawah ini

untuk Name nya bebas diisi sesuai keinginan, dan untuk value nya, sesuaikan dengan kode arduino di atas, led_on untuk menghidupkan, led_off untuk mematikan. Pada tutorial ini M1 diubah untuk menghidupkan, lalu M2 diubah untuk mematikan LED.

Berikut video eksekusinya, ditekan tombol di android untuk menghidupkan dan mematikan lampu LED pada rangkaian ESP32

Demikian tutor cara bertukar data antara esp32 dan android melalui bluetooth.

FYI …

Ternyata ESP32 memiliki fitur bluetooth low energy (BLE) yang biasa ditanamkan pada perangkat-perangkat gaming seperti headset gaming.

Singkat saja kita buat tutorial contoh penerapan BLE ini, memanfaatkan ESP32 sebagai Server, dan Android sebagai Client

Upload kode berikut ke ESP32 anda

#include <BLEDevice.h>
#include <BLEUtils.h>
#include <BLEServer.h>
#define SERVICE_UUID        "4fafc201-1fb5-459e-8fcc-c5c9c331914b"
#define CHARACTERISTIC_UUID "beb5483e-36e1-4688-b7f5-ea07361b26a8"

void setup() {
  Serial.begin(115200);
  Serial.println("Starting BLE work!");
  BLEDevice::init("Long name works now");
  BLEServer *pServer = BLEDevice::createServer();
  BLEService *pService = pServer->createService(SERVICE_UUID);
  BLECharacteristic *pCharacteristic = pService->createCharacteristic(
                                         CHARACTERISTIC_UUID,
                                         BLECharacteristic::PROPERTY_READ |
                                         BLECharacteristic::PROPERTY_WRITE
                                       );
  pCharacteristic->setValue("Hello World says Neil");
  pService->start();
  BLEAdvertising *pAdvertising = BLEDevice::getAdvertising();
  pAdvertising->addServiceUUID(SERVICE_UUID);
  pAdvertising->setScanResponse(true);
  pAdvertising->setMinPreferred(0x06);  // functions that help with iPhone connections issue
  pAdvertising->setMinPreferred(0x12);
  BLEDevice::startAdvertising();
  Serial.println("Characteristic defined! Now you can read it in your phone!");
}
void loop() {
  delay(2000);
}

Jalankan ESP32 dengan membuka serial monitor, lalu akan tampil seperti di bawah ini

Lalu buka aplikasi nFR Connect for Mobile seperti gambar di bawah ini

Berikut tampilan aplikasinya

klik SCAN, lalu konek ke “Long name works now”, diperangkat anda mungkin akan bernama lain

Setelah konek maka tampil seperti ini,

Karakter “Hello World says Neil” berhasil ditampilkan di android, sesuai dengan apa yang dituliskan di kode ESP32 di atas.