Program ESP32 Mengirim Data Suhu dan Kelembapan melaui Bluetooth Serial

T. Ezandi Trinanda
3 min readJul 3, 2021

--

Rangkaian ESP32 untuk Mengirim Data Suhu dan Kelembapan

Gambar rangkaian breadboard ESP32 dengan sensor DHT22
Gambar rangkaian skema ESP32 dengan sensor DHT22

Kode Mengirim Data dari Klien ke Server

#include “BluetoothSerial.h”
#include “DHT.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;#define DHTPIN 4 // Digital pin yang tersambung ke Sensor DHT22
#define DHTTYPE DHT22 // Type Sensor DHT22
// Membuat Objek baru dht dengan parameter DHTPIN dan DHTTYPE
DHT dht(DHTPIN, DHTTYPE);
// Deklarasi variable h dan t secara global
float h = 0;
float t = 0;
#define TUNGGU_SETELAH_BACA_DATA 250// Deklarasi konstanta Nilai Delay
#define TUNGGU_SETELAH_KIRIM_DATA 250// Deklarasi konstanta Nilai Delay
// Fungsi untu baca Suhu
void bacaSuhudanKelembapan() {
t = dht.readTemperature();
h = dht.readHumidity();
}
// Fungsi untuk mengirim Data ke Server
void kirimData() {
bacaSuhudanKelembapan();
delay(TUNGGU_SETELAH_BACA_DATA);
if (SerialBT.available()) {
//Kirim Data ke Terminal Server
if (isnan(t) || isnan(h) <= -1) {
SerialBT.println(“Gagal membaca DHT sensor!”);
}
else {
SerialBT.print(h);
SerialBT.println(t);
}
delay(TUNGGU_SETELAH_KIRIM_DATA);
}
}
void setup() {
// Memulai DHT dan Serial Bluetooth
dht.begin();
SerialBT.begin(“ESP32”);
}void loop() {
kirimData();
}

Penjelasan Kode

Untuk menjalankan kode Bluetooth Serial dengan menggunakan ESP32 diperlukan library atau modul BluetoothSerial.h. Modul ini berisi fungsi-fungsi yang diperlukan untuk menjalakan serial melalui Bluetooth.

#include “BluetoothSerial.h”

Untuk membaca suhu dan kelembapan udara dengan menggunakan sensor DHT22 dibutuhkan library DHT.h.

#include “DHT.h”

Kemudian serangkaian kode di bawah digunakan untuk memastikan bahwa Bluetooth diaktifkan dengan benar.

#if !defined(CONFIG_BT_ENABLED) || !defined(CONFIG_BLUEDROID_ENABLED)
#error Bluetooth is not enabled! Please run `make menuconfig` to and enable it
#endif

Objek dibuat dari kelas BluetoothSerial dengan nama SerialBT. Objek ini digunakan untuk menginisialisasi fungsi yang digunakan oleh Bluetooth pada ESP32. Seperti untuk mengirim data, membaca data, dan banyak lagi.

BluetoothSerial SerialBT;

Menentukan atau mendefinisikan letak pin DHT22 yang terkoneksi pada ESP32.

#define DHTPIN 4

Memilih tipe sensor DHT yang digunakan. Tipe yang digunakan pada rangkaian ini adalah DHT22.

#define DHTTYPE DHT22

Membuat objek DHT dari pin dan tipe yang ditentukan sebelumnya

DHT dht(DHTPIN, DHTTYPE);

Deklarasi variabel h dan t dengan tipe data float

float h = 0;
float t = 0;

Deklarasi konstanta yang akan digunakan sebagai delay setelah membaca data dari sensor dan setelah mengirim data ke server.

#define TUNGGU_SETELAH_BACA_DATA 250
#define TUNGGU_SETELAH_KIRIM_DATA 250

Fungsi bacaSuhudanKelembapan() untuk baca suhu dan kelembapan udara. Data suhu disimpan dalam variabel t dan data kelembapan udara disimpan dalam variabel h.

void bacaSuhudanKelembapan() {
t = dht.readTemperature();
h = dht.readHumidity();
}

Fungsi kirimData() digunakan untuk mengirim data. Pada fungsi ini dipanggil fungsi bacaSuhudanKelembapan() untuk dieksekusi.

void kirimData() {
bacaSuhudanKelembapan();

Tunggu setelah membaca data.

delay(TUNGGU_SETELAH_BACA_DATA);

Percabangan if (SerialBT.available()) digunakan untuk mengecek ketersediaan akan serial pada port.

if (SerialBT.available()) {

Jika yang dibaca bukan berupa angka dan kecil atau sama dengan -1 maka pembacaan sensor dianggap gagal dan pesan error akan dikirim ke server.

if (isnan(t) || isnan(h) <= -1) {
SerialBT.println(“Gagal membaca DHT sensor!”);
}

Selain dari persyaratan diatas maka nilai kelembapan akan dikirim melalui perintah SerialBT.print(h). Sedangkan nilai suhu akan dikirim dengan perintah SerialBT.println(t).

else {
SerialBT.print(h);
SerialBT.println(t);
}

Tunggu setelah mengirim data

delay(TUNGGU_SETELAH_KIRIM_DATA);

Pada fungsi setup(), inisialisasi sensor dan memulai Bluetooth dengan nama ESP32 sehingga dapat dilihat perangkat Bluetooth lainnya.

void setup() {
dht.begin();
SerialBT.begin(“ESP32”);
}

Pada fungsi loop(), isinya akan terus dieksekusi. Fungsi kirimData() akan terus dipanggil dan diulang pada loop.

void loop() {
kirimData();
}

--

--