Embedded System (ESP32 Project 7): Bluetooth Communication Protocol
Haloooo, Setelah sukses dengan project ke-6 yaitu Communication Protocol and Bus Interface, kali ini aku akan membuat project ke-7 yaitu Bluetooth Communication Protocol. Project kali ini aku akan menghubungkan ESP32 dengan HP android menggunakan bluetooth sehingga dapat melakukan komunikasi dan akan menyebabkan LED menyala. Sebelum lanjut ke projectnya, aku akan memberikan sedikit informasi mengenai bluetooth itu sendiri.
Jadiii, bluetooth adalah sebuah teknologi nirkabel atau wireless yang memungkinkan perangkat untuk saling berkomunikasi dan bertukar data dengan jarak pendek melalui gelombang radio. Bluetooth memungkinkan pengiriman data dalam jarak yang relatif dekat (biasanya antara 10 hingga 100 meter) dengan kecepatan yang tinggi dan dengan konsumsi daya yang rendah. Pada ESP32 yang aku gunakan, terdapat 2 jenis bluetooth, yaitu Bluetooth Classic dan Bluetooth Low Energy (BLE). Terdapat beberapa perbedaan antara kedua jenis itu, diantaranya adalah:
- Bluetooth Classic menggunakan daya yang relatif lebih banyak daripada BLE
- Bluetooth Classic memiliki jangkauan yang lebih jauh dibandingkan dengan BLE
- Bluetooth Classic memiliki kecepatan transfer data yang lebih tinggi dibandingkan dengan BLE
- BLE memiliki waktu respons yang lebih cepat dibandingkan dengan Bluetooth Classic
- Bluetooth Classic kompatibel dengan sebagian besar perangkat yang sudah mendukung teknologi Bluetooth sebelumnya, sedangkan BLE hanya kompatibel dengan perangkat yang sudah mendukung teknologi Bluetooth 4.0 atau yang lebih baru
Itulah sedikit penjelasan mengenai bluetooth dan jenis bluetooth pada ESP32 yang bisa aku berikan, selanjutnya langsung aja kita ke projectnya!!!
TOOLS
- ESP32 DOIT DEVKIT V1
- Breadboard
- Kabel jumper
- Kabel Data Micro USB
- Resistor 330 ohm
- HP Android
- LED
- Sensor BMP280
- Laptop yang sudah terinstall Arduino IDE
Jika belum melakukan instalasi Arduino IDE, kamu dapat menginstalnya pada https://www.arduino.cc/en/software
Jangan lupa untuk melakukan setup Arduino IDE, jika belum silahkan untuk membaca pada postingan sebelumnya.
Berikut linknya! Embedded System (ESP32 Project 1): LED Blink
EXPERIMENT
Sebelum melanjutkan melakukan experiment, perlu dipastikan bahwa kita telah memiliki Adafruit BMP280 Library. Selain itu, kita perlu menginstall aplikasi bernama Serial Bluetooth Terminal pada HP android untuk menghubungkan bluetooth pada handphone kita dengan bluetooth ESP32.
Untuk penginstalan library Adafruit BMP280 tersebut, kamu dapat melihat caranya pada project sebelumnya.
- Bluetooth Classic
Di experiment pertama pada project ini, aku akan mencoba menyalakan LED melalui android yang aku pakai.
Untuk skema rangkaiannya adalah sebagai berikut.
- Buatlah rangkaian mengikuti skema rangkaian diatas
- Kemudian buka Arduino IDE dan gunakan kode berikut ini.
#include "BluetoothSerial.h"
#include <Wire.h>
#include <stdio.h>
#if !defined(CONFIG_BT_ENABLED) || !defined(CONFIG_BLUEDROID_ENABLED)
#error Bluetooth is not enabled! Please run `make menuconfig` to and enable it
#endif
BluetoothSerial SerialBT;
const int ledPin = 18;
String message = "";
char incomingChar;
void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(115200);
SerialBT.begin("ESP32");
Serial.println("The device started, now you can pair it with bluetooth!");
}
void loop() {
if (SerialBT.available()){
char incomingChar = SerialBT.read();
if (incomingChar != '\n'){
message += String(incomingChar);
}
else{
message = "";
}
Serial.write(incomingChar);
}if (message =="Turn on"){
digitalWrite(ledPin, HIGH);
delay(100);
}
else if (message =="Turn off"){
digitalWrite(ledPin, LOW);
}
delay(20);
}
- Kemudian, Sambungkan ESP32 menggunakan kabel micro USB.
- Lalu, lakukan verify dan upload
- Klik tombol EN pada ESP32
- Kemudian nyalakan bluetooth pada smartphone
- Sambungkan ESP32 dengan bluetooth smartphone
- Kemudian Buka aplikasi Serial Bluetooth terminal lalu hubungkan bluetooth smartphone dengan ESP32. Tunggu sampai muncul pesan “Connected”
Dan setelah mengikuti langkah-langkah tersebut, jadilaah…..
Dan berhasil ges!!!
- Bluetooth Low Energy (BLE)
Pada BLE terdapat dua jenis device, yaitu Client dan Server. Pada project ini, kita akan mencoba BLE server dengan ESP32.
Sebelum melanjutkan ke langkah-langkahnya, kita perlu menginstall aplikasi di play store terlebih dahulu, yaitu….
Oke kalo udah install, langsung aja ke langkah-langkahnya.
- Pertama, buatlah rangkaiannya terlebih dahulu
- Kemudian buka Arduino IDE dan gunakan kode berikut ini
/*
Based on Neil Kolban example for IDF: https://github.com/nkolban/esp32-snippets/blob/master/cpp_utils/tests/BLE%20Tests/SampleServer.cpp
Ported to Arduino ESP32 by Evandro Copercini
updates by chegewara
*/
#include <BLEDevice.h>
#include <BLEUtils.h>
#include <BLEServer.h>
// See the following for generating UUIDs:
// https://www.uuidgenerator.net/
#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("Kopeng de guners");
pService->start();
// BLEAdvertising *pAdvertising = pServer->getAdvertising(); // this still is working for backward compatibility
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() {
// put your main code here, to run repeatedly:
delay(2000);
}
Untuk line dibawah ini,
pCharacteristic->setValue("Kopeng de guners");
Kamu dapat menuliskan String dengan value sesuka hati, disini aku menuliskan Kopeng de gunners.
- Kemudian, Sambungkan ESP32 menggunakan kabel micro USB.
- Lalu, lakukan verify dan upload
- Klik Tools > Serial Monitor. Lalu, klik tombol EN pada ESP32
- Kemudian nyalakan bluetooth pada smartphone
- Sambungkan ESP32 dengan bluetooth smartphone
- Buka aplikasi nRF Connect for Mobile. Pilih SCAN pada pojok kanan atas. Lalu tunggu hingga muncul device bernama “Long name works now”. Klik connect pada device tersebut.
- Setelah connected, pilih halaman khusus device Long name works now, dan klik bagian client. Pada layar akan muncul generic attribute, generic access, dan unknown service
- Pada bagian unknown service, klik simbol download
Dan berhasil ges, muncul tulisan Kopeng de guners nih
Akhirnya kita telah menyelesaikan project ketujuh ini, sampai jumpa di project berikutnyaa!!!