
Sistem Monitoring dan Alarm Suhu Serta Kelembapan Kamar Bayi ESP32 DHT22 Blynk IoT WOKWI
TUTORIAL PEMROGRAMAN ARDUINO – Sistem Monitoring dan Alarm Suhu Serta Kelembapan Kamar Bayi ESP32 DHT22 Blynk IoT WOKWI
Pada bagian ini akan dibahas pembuatan sistem monitoring dan alarm suhu serta kelembapan kamar bayi menggunakan mikroprosesor ESP32, sensor DHT22, dan sistem Internet of Things (Iot) dengan Blynk IoT, serta software simulasi WOKWI. Skematik rangkaian ditunjukkan pada Gambar 1, program Arduino pada Kode 1, dan video pembuatan pada tautan Video 1. Suhu dan kelembapan akan diukur menggunakan sensor DHT11 dan ditampilkan pada LCD. Pada kondisi tertentu lampu LED akan menyala pada kondisi tertentu.

Gambar 1. Skematik rangkaian sistem
Penjelasan pemetaan PIN:
* LCD 16×2 I2C
GND => GND
VCC => 5V
SDA => 21
SCL => 22
* DHT22
VCC => 5V
SDA => 15
GND => GND
* RGB 4 PIN (CATHODE)
R => 4
G => 2
B => 16
* BUZZER
GND => GND
OUT => 13
Kode Arduino 1. Kode program Arduino sistem monitoring dan alarm
// =============================
// ALFIAN CENTER
// SUBSCRIBE
// Sistem Monitoring dan Alarm Suhu dan Kelembapan Kamar Bayi ESP32 DHT22 Blynk IoT WOKWI
// PROGRAM BAKAL AKU KIRIM DENGAN SYARAT DIBAWAH
// LIKE 50, KOMEN 30 DAN * WAJIB SUBSCRIBE *
// PROGRAM DIKIRIM VIA KOMENTAR
// =============================
#define BLYNK_TEMPLATE_ID "ID"
#define BLYNK_TEMPLATE_NAME "NAME"
#define BLYNK_AUTH_TOKEN "TOKEN"
#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
#include <LiquidCrystal_I2C.h>
#include "DHT.h"
#define DHTPIN 15
#define DHTTYPE DHT22
#define LED_RED 4
#define LED_GREEN 2
#define LED_BLUE 16
#define BUZZER_PIN 13
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27, 16, 2);
BlynkTimer timer;
void setRGB(bool red, bool green, bool blue) {
digitalWrite(LED_RED, red ? HIGH : LOW);
digitalWrite(LED_GREEN, green ? HIGH : LOW);
digitalWrite(LED_BLUE, blue ? HIGH : LOW);
}
void checkBabyRoom() {
float temp = dht.readTemperature();
float hum = dht.readHumidity();
if (isnan(temp) || isnan(hum)) {
lcd.setCursor(0, 0);
lcd.print("Sensor Error!! ");
return;
}
String statusText = "";
bool isAlarm = false;
// Logika Ambang Batas Suhu Kamar Bayi
if (temp < 22.0) {
// TERLALU DINGIN
setRGB(false, false, true); // LED Biru
noTone(BUZZER_PIN);
statusText = "TOO COLD! (<22C)";
isAlarm = true;
Blynk.logEvent("suhu_kamar", "Peringatan: Suhu kamar bayi terlalu dingin! (" + String(temp, 1) + " C)");
}
else if (temp > 27.0) {
// TERLALU PANAS
setRGB(true, false, false); // LED Merah
tone(BUZZER_PIN, 1000, 100); // Beep intermiten pelan
statusText = "TOO HOT! (>27C)";
isAlarm = true;
Blynk.logEvent("suhu_kamar", "Peringatan: Suhu kamar bayi terlalu panas! (" + String(temp, 1) + " C)");
}
else {
// SUHU IDEAL (22C - 27C)
setRGB(false, true, false); // LED Hijau
noTone(BUZZER_PIN);
statusText = "IDEAL / COMFY";
isAlarm = false;
}
// Update Data ke Blynk IoT
Blynk.virtualWrite(V0, temp);
Blynk.virtualWrite(V1, hum);
Blynk.virtualWrite(V2, statusText);
Blynk.virtualWrite(V3, isAlarm ? 255 : 0);
// Update Display LCD 16x2
lcd.setCursor(0, 0);
lcd.print("T:"); lcd.print(temp, 1); lcd.print("C H:"); lcd.print(hum, 0); lcd.print("% ");
lcd.setCursor(0, 1);
lcd.print("ST:"); lcd.print(statusText); lcd.print(" ");
}
void setup() {
Serial.begin(115200);
pinMode(LED_RED, OUTPUT);
pinMode(LED_GREEN, OUTPUT);
pinMode(LED_BLUE, OUTPUT);
pinMode(BUZZER_PIN, OUTPUT);
dht.begin();
lcd.init();
lcd.backlight();
lcd.print("Smart Baby Room");
lcd.setCursor(0, 1);
lcd.print("Initializing...");
delay(1500);
Blynk.begin(auth, ssid, pass);
lcd.clear();
// Jalankan pemantauan setiap 2 detik
timer.setInterval(2000L, checkBabyRoom);
}
void loop() {
Blynk.run();
timer.run();
}

Video 1. Video tutorial pembuatan simulasi di software WOKWI