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.
Leave a Reply
View Comments