Program ESP32 Mengirim Data Suhu dan Kelembapan melaui Bluetooth Serial
Rangkaian ESP32 untuk Mengirim Data Suhu dan Kelembapan
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
#endifBluetoothSerial 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();
}