ESP32 Bluetooth Classic dengan DHT11 & LCD Display

Shafa Amarsya Madyaratri
4 min readMar 1, 2020

--

Hello readers!

Pada projek kali ini aku ingin berbagi pengalamanku menggunakan Bluetooth Classic ESP32 dan mengintegrasikannya dengan sensor DHT11 serta Display LCD I2C berukuran 16×2.

Percobaan yang dilakukan adalah menampilkan hasil pembacaan sensor DHT11 di perangkat lain yang terhubung dengan koneksi Bluetooth dari ESP32 serta menampilkan pesan yang diterima ESP32 dari perangkat tersebut melalui LCD.

Funtimes

Komponen dan Alat

Dalam percobaan ini berikut adalah komponen yang diperlukan:

  1. Board ESP32 DOIT DEVKIT V1
  2. I2C Liquid Crystal Display (LCD) 16×2
  3. Kabel jumper
  4. Breadboard
  5. Kabel micro-USB to USB 2.0/3.0
  6. Sensor DHT11
  7. Resistor 4.7 kΩ
  8. Smartphone Android dengan Bluetooth dan telah diinstall aplikasi “Serial Bluetooth Terminal

Skema

Rangkai ESP32, DHT11, serta LCD melalui breadboard seperti gambar berikut:

Untuk menghubungkan ESP32 dengan DHT11 dapat menggunakan Pin GPIO lainnya (tidak harus GPIO4).

Instalasi Library

Sebelum memulai, pastikan sudah melakukan pemasangan (instalasi) library Adafruit Unified Sensor, DHT sensor library, serta LiquidCrystal Library. Berikut langkahnya:

  1. Buka Arduino IDE
  2. Buka Library Manager dengan mengakses menu bar : Sketch > Include Library > Manage Libraries…
  3. Lakukan pencarian pada field Search terhadap Adafruit Unified Sensor, DHT sensor library, dan LiquidCrystal Library
  4. Lakukan instalasi dengan klik tombol install
Adafruit Unified Sensor Library
DHT Sensor Library
Liquid Crystal Library

Melihat Pembacaan Sensor DHT11 di Smartphone dan menuliskan pesan dari Smartphone ke LCD

Sebelum memulai, pastikan terlebih dahulu sudah mencari tahu alamat LCD yang terhubung dengan ESP32 melalui serial komunikasi I2C, lebih lengkapnya silakan lihat postingan blog saya yang sebelumnya.

Gunakan kode berikut yang kemudian diunggah ke ESP32 melalui Arduino IDE:

#include "DHT.h"
#define DHTPIN 4
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
#include "BluetoothSerial.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;unsigned long delayTime;// set the LCD number of columns and rows
int lcdColumns = 16;
int lcdRows = 2;
LiquidCrystal_I2C lcd(0x27, lcdColumns, lcdRows);
String message;
void setup() {
// put your setup code here, to run once:
lcd.init();

lcd.backlight();

dht.begin();
Serial.begin(115200);
SerialBT.begin("sushi"); //Bluetooth device name
Serial.println("The device started, now you can pair it with bluetooth!");

}
void loop() {
// put your main code here, to run repeatedly:
delay(1000);
// Check if any reads failed and exit early (to try again).


SerialBT.print("Hum: ");
SerialBT.print(dht.readHumidity());
SerialBT.println(" %");

SerialBT.print("Temp: ");
SerialBT.print(dht.readTemperature());
SerialBT.println(" C ");
delay(2000);
if (SerialBT.available()){
lcd.clear();
message = "";
while(SerialBT.available()){

char inCome = SerialBT.read();
message += String(inCome);
}
Serial.println(message);
lcd.setCursor(0, 0);
lcd.print(message);
}
}

Pada kode tersebut, DHTPIN disesuaikan dengan pin GPIO ESP32 yang disambungkan. Kemudian selain meng-include Library LCD dan DHT, juga digunakan library BluetoothSerial.h. Pada kode tersebut nama device Bluetooth ESP32 kami beri nama “sushi”.

Pada bagian setup dilakukan inisialisasi LCD, DHT serta Serial Bluetooth. Pada bagian loop, dengan bantuan fungsi SerialBT.print() akan mencetak hasil pembacaan sensor DHT11 ke Smartphone. Kemudian dilanjutkan dengan pembacaan pesan dari Smartphone menggunakan fungsi SerialBT.read() yang disimpan dalam variabel bertipe char bernama inCome. Variabel inCome kemudian diubah menjadi tipe string agar dapat ditampilkan secara utuh pada LCD.

Untuk bisa melihat hasil pembacaan sensor DHT11 pada Smartphone Android, buka aplikasi “Serial Bluetooth Terminal”, pastikan Bluetooth telah diaktifkan, kemudian lakukan pairing terhadap device ESP32 yang digunakan.

Hasil Pembacaan Sensor DHT11
Menampilkan Pesan dari Smartphone ke LCD

Pada awalnya, kami tidak berhasil menampilkan pesan dengan baik ke layar LCD. Hal ini disebabkan karena pada awal proses loop LCD tidak terlebih dahulu di-clear sehingga pesan yang diterima “tertumpuk” dan tidak dapat dibaca dengan jelas. Selain itu juga perlu diperhatikan untuk melakukan print ke layar LCD dengan baik maka pesan yang dibaca dengan fungsi SerialBT.read() perlu diubah menjadi tipe string terlebih dahulu agar pencetakan pesan tidak ter-append atau ditampilkannya satu per satu huruf (tidak langsung perkalimat atau perkata).

Sekian pengalamanku di projek kali ini. Semoga bermanfaat ya. Cheers!

--

--

Shafa Amarsya Madyaratri

Information System & Technology Student at Institut Teknologi Bandung