ESP32 Journey — Bluetooth Adventure
Hallo semua, balik lagi nih di ESP32 Journey, kali ini gue mau cerita cukup banyak nih. Yap, seperti judul di atas, petualangan bersama si bluetooth. Oiya, di ESP32 udah support dua jenis bluetooth loh, bluetooth classic sama bluetooth low energy(BLE). Tapi kali ini gue bakal nyoba dulu yang classic, dan pada perjalanan kali ini gue membuat dua percobaan sekaligus nih, kira — kira ada yang bisa nebak ga tuh apa aja?
So, biar gak lama — lama, gaskeun kita bedah percobaan kali ini. Percobaan pertama yaitu kita bakal bikin serial communication dari bluetooth device buat ditampilin ke LCD Display lewat ESP32. Lalu, buat percobaan kedua kita bakal menampilkan hasil dari pembacaan sensor DHT11 ke Bluetooth Device. Nah disini gue pake smartphone buat jadi bluetooth devicenya. Terus apa aja sih yang dibutuhin dari percobaan kali ini? Ini dia listnya :
- 1 buah sensor DHT11,
- 1 buah I2C LCD Display,
- 4 buah kabel jumper male — female,
- 8 buah kabel jumper male — male,
- 1 buah resistor 10k Ohm,
- 1 buah ESP32,
- 1 buah breadboard.
Percobaan 1 — Bluetooth serial communication & LCD Display
Nah, skematik diatas bakal kita pake buat percobaan pertama. Skematiknya simple sih soalnya kita cuma butuh nyambungin ESP32 sama LCD nya aja. Intinya sih ada pada program alias kodingan di bawah ini. Terus, jangan lupa buat nyari dulu address dari LCD kalian, yang udah pernah gue ceritain di journey sebelumnya.
#include "BluetoothSerial.h"
#include <LiquidCrystal_I2C.h>
#if !defined(CONFIG_BT_ENABLED) || !defined(CONFIG_BLUEDROID_ENABLED)
#error Bluetooth is not enabled! Please run make menuconfig to and enable it
#endif
// set the LCD number of columns and rows
int lcdColumns = 16;
int lcdRows = 2;
LiquidCrystal_I2C lcd(0x3f, lcdColumns, lcdRows);
BluetoothSerial SerialBT;
String message = "";
char incomingChar;
void setup() {
Serial.begin(115200);
// initialize LCD
lcd.init();
// turn on LCD backlight
lcd.backlight();
// initialize Bluetooth
SerialBT.begin("ESP32nya Ihza"); //Bluetooth device name
Serial.println("The device started, now you can pair it with bluetooth!");
}
void loop() {
lcd.setCursor(0, 0);
lcd.print("!send something!");
if (SerialBT.available()){
char incomingChar = SerialBT.read();
if (incomingChar != '\0'){
message += String(incomingChar);
}
else{
message = "";
}
Serial.write(incomingChar);
}
if (Serial.available()) {
SerialBT.write(Serial.read());
}
if (message != ""){
// clears the display to print new message
lcd.clear();
// set cursor to first column, first row
lcd.setCursor(0, 1);
// print message
lcd.print(message);
}
}
Nah udah kan bisa tuh kita upload ke ESP32, terus gimana sih cara nyambungin bluetooth di device kita ke ESP32 nya, langkah yang harus kalian lakuin yakni pertama download terlebih dahulu Aplikasi “Serial Bluetooth Terminal” di Playstore, buat yang iOS gue kurang tau, kayanya sih gabisa soalnya kan bluetooth di iOS agak rada” susah ya wkwk. Nah, setelah kita upload program ke ESP32, kita buka aplikasi tersebut, terus masuk ke menu → device → pilih nama bluetooth dari ESP32 kita terus connect deh.
Tadaa~~ device mu berhasil connect dengan ESP32. Ini dia hasil dari pembacaan data dari bluetooth device dan ditampilin ke LCD Display.
Percobaan 2 — DHT 11 Sensor & Bluetooth Device
Nah, percobaan selanjutnya kita cuma membutuhkan skematik DHT11 seperti di atas, harusnya kalian yang ngikutin journey ini masih inget sih pas journey DHT11, nah untuk programnya ada di bawah ini.
//This example code is in the Public Domain (or CC0 licensed, at your option.)
//By Evandro Copercini - 2018
//
//This example creates a bridge between Serial and Classical Bluetooth (SPP)
//and also demonstrate that SerialBT have the same functionalities of a normal Serial#include "BluetoothSerial.h"
#include "DHT.h"#define DHTPIN 4
#define DHTTYPE DHT11#if !defined(CONFIG_BT_ENABLED) || !defined(CONFIG_BLUEDROID_ENABLED)
#error Bluetooth is not enabled! Please run make menuconfig to and enable it
#endifBluetoothSerial SerialBT;
DHT dht(DHTPIN, DHTTYPE);void setup() {
Serial.begin(115200);
SerialBT.begin("ESP32ihhza"); //Bluetooth device name
Serial.println(F("DHTxx test!"));
Serial.println("The device started, now you can pair it with bluetooth!");
dht.begin();
}void loop() {
delay(2000);// Reading temperature or humidity takes about 250 milliseconds!
// Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
float h = dht.readHumidity();
// Read temperature as Celsius (the default)
float t = dht.readTemperature();
// Read temperature as Fahrenheit (isFahrenheit = true)
float f = dht.readTemperature(true);// Check if any reads failed and exit early (to try again).
if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println(F("Failed to read from DHT sensor!"));
return;
}// Compute heat index in Fahrenheit (the default)
float hif = dht.computeHeatIndex(f, h);
// Compute heat index in Celsius (isFahreheit = false)
float hic = dht.computeHeatIndex(t, h, false);Serial.print(F("Humidity: "));
Serial.print(h);
Serial.print(F("% Temperature: "));
Serial.print(t);
Serial.print(F("°C "));
Serial.print(f);
Serial.print(F("°F Heat index: "));
Serial.print(hic);
Serial.print(F("°C "));
Serial.print(hif);
Serial.println(F("°F"));SerialBT.print(F("Humidity: "));
SerialBT.print(h);
SerialBT.print(" % \n");
SerialBT.print(F("Temperature: "));
SerialBT.print(t);
SerialBT.print((F("°C ")));
SerialBT.print((f));
SerialBT.print((F("°F")));
SerialBT.print("\n");
SerialBT.print((("Heat index: ")));
SerialBT.print((hic));
SerialBT.print((F("°C ")));
SerialBT.print((hif));
SerialBT.print((F("°F")));
SerialBT.print("\n");
SerialBT.print("\n");/*if (Serial.available()) {
SerialBT.write(Serial.read());
}
if (SerialBT.available()) {
Serial.write(SerialBT.read());
} */
delay(20);
}
Nah, di atas ini merupakan kode program dari percobaan 2 ini. Sebenernya inti dari program ini sih ya itu SerialBT.print nya itu yang dipakai buat nyetak hasil pembacaan sensor ke dalam bluetooth device kita alias smartphone. Setelah kita upload program tersebut ke ESP32, sama kaya percobaan sebelumnya, sambungkan bluetooth di ESP32 dengan bluetooth smartphone kalian. Dan setelah terkoneksi, akan menghasilkan program di bawah ini.
Dan, dengan berhasilnya percobaan 2, berakhir sudah Journey kali ini, ditunggu cerita dari kaliann juga yaak, terima kasih!