Mengirimkan Data Temperatur dan Kelembapan melalui Wi-Fi dari Sensor DHT22 & ESP32 (Client Side)

Jabal Abdul Salam
3 min readJul 15, 2021

Proses pengiriman data bacaan sensor DHT22 menggunakan beberapa perangkat seperti ESP32 sebagai mikrokontroler dan juga melalui protokol Wi-Fi serta menggunakan Socket pada saat proses pengiriman datanya di jaringan komputer. Berikut rangkaian dan kode pengiriman data yang digunakan.

Rangkaian Pengiriman Data

Rangkaian Pengiriman Data

Kode Pengiriman Data

#include “WiFi.h”
#include “DHT.h”
// Informasi sambungan Wi-Fi dan IP Address Server
const char* ssid = “nama ssid”;
const char* password = “password_wifi”;
const char* host = “192.168.00.00”;
// Deklarasi Wi-Fi Server
WiFiClient client;
#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 NILAI_DELAY 3000// Deklarasi konstanta Nilai Delay// Fungsi untu baca Suhu
void bacaSuhudanKelembapan() {
t = dht.readTemperature();
h = dht.readHumidity();
if (isnan(t) || isnan(h) == -1) {
client.println(“Gagal membaca DHT sensor!”);
return;
}
}
// Fungsi untuk mengirim Data ke Server
void kirimData() {
bacaSuhudanKelembapan();
if (client.connect(host, 9090)) {
//Kirim Data ke Terminal Server
client.print(h);
client.print(t);
delay(NILAI_DELAY);
}
}
void setup() {
/* Tidak dipakai */
//Serial.begin(115200);
// Memulai DHT dan Wi-Fi
dht.begin();
WiFi.begin(ssid, password);
/* Tidak dipakai */
//Serial.print(“Menyambungkan”);
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
//Serial.print(“.”);
}
}
void loop() {
kirimData();
}

Penjelasan Kode

Di bawah ini adalah Library yang digunakan untuk menjalankan DHT22 dan Wi-Fi

#include “WiFi.h”
#include “DHT.h”

Di bawah ini adalah bagian informasi dari sambungan Wi-Fi mulai dari SSID, Password dan juga IP Address Server

const char* ssid = “nama ssid”;
const char* password = “password_wifi”;
const char* host = “192.168.00.00”;

Mendeklarasikan objek client yang diinisialisasi dari Wificlient yang mana nanti objek ini digunakan untuk menyambungkan dan mengirimkan data dari client ke server.

WiFiClient client;

Selanjutnya yaitu mendefinisikan pin dan tipe dari sensor dan disini kita memilih pin 4 pada ESP32 serta memilih tipe sensor DHT22.

#define DHTPIN 4 // Digital pin yang tersambung ke Sensor DHT22
#define DHTTYPE DHT22 // Type Sensor DHT22

Dibawah ini merupakan perintah untuk membuat objek DHT dari pin dan tipe yang ditentukan sebelumnya.

DHT dht(DHTPIN, DHTTYPE);

Mendeklarasikan variabel t dan h secara global serta konstanta nilai delay yang nantinya kita gunakan untuk menyimpan data.

float h = 0;
float t = 0;
#define NILAI_DELAY 3000

Membuat sebuah fungsi untuk membaca data temperatur dan kelembapan dari sensor DHT22 serta langsung membuat pengkondisian untuk mengecek apakah suhu dapat terbaca atau tidak.

void bacaSuhudanKelembapan() {
t = dht.readTemperature();
h = dht.readHumidity();
if (isnan(t) || isnan(h) == -1) {
client.println(“Gagal membaca DHT sensor!”);
return;
}
}

Selanjutnya kita membuat sebuah fungsi untuk mengirimkan data yang telah ditampung sebelumnya ke server. Disini kita memanggil fungsi bacaSuhudanKelembapan() yang telah kita buat di atas. Di perintah di bawah kita membuat pengkondisian apabila client sudah tersambung, maka langsung kita kirimkan datanya dan tak lupa pula kita tambahkan nilai delay yang telah kita buatkan sebagai konstanta.

void kirimData() {
bacaSuhudanKelembapan();
if (client.connect(host, 9090)) {
//Kirim Data ke Terminal Server
client.print(h);
client.print(t);
delay(NILAI_DELAY);
}
}

Di fungsi setup kita mendeklarasikan beberapa perintah dan yang pertama sekali yaitu menjalankan DHT22 dan Wi-Fi, dibawah ini adalah perintah yang digunakan.

// Memulai DHT dan Wi-Fi
dht.begin();
WiFi.begin(ssid, password);

Kemudian kita membuat sebuah pengkondisian, apabila Wi-Fi tersambung, maka kita tambahkan delay sebesar 500ms.

while (WiFi.status() != WL_CONNECTED)
{
delay(500);
//Serial.print(“.”);
}

Dan yang terakhir yaitu kita menjalankan perintah mengirimkan datanya secara berulang di fungsi loop. Di fungsi loop kita cukup memanggil fungsi kirimData();.

void loop() {
kirimData();
}

--

--