Kontrol FAN dengan DHT11 & Monitoring Blynk
- Adam Kusumah
- Jun 15
- 2 min read
Selamat datang di website Cosmo!
di artikel ini, kita akan belajar mengontrol FAN dengan DHT11 & Monitoring Blynk.
Skema Rangkaian

Penjelasan Rangkaian
5V ⮕ Kaki (+) DHT11, LCD & Relay
GND ⮕ Kaki (-) DHT11, LCD & Relay
D7 ⮕ Data DHT11
D3 ⮕ Data Relay
D2 ⮕ SDA LCD
D1 ⮕ SCL LCD
Adaptor (+) ⮕ COM Relay
NO Relay ⮕ Kaki (+) FAN
Adaptor (-) ⮕ Kaki (+) FAN
#define BLYNK_TEMPLATE_ID "TMPL6k65v6vID"
#define BLYNK_TEMPLATE_NAME "dht11"
#define BLYNK_AUTH_TOKEN "um1b_9D4HawO4wW8Eog7mKp9PqE3s49h"
#define BLYNK_PRINT Serial
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <DHT.h>
// Konfigurasi WiFi
char ssid[] = "YOUR WIFI SSID"; // Ganti dengan SSID WiFi kamu
char pass[] = "YOUR WIFI PASSWORD"; // Ganti dengan password WiFi kamu
// Pin Konfigurasi
#define DHTPIN D7
#define DHTTYPE DHT11
#define RELAY_PIN D3
#define SDA_PIN D2
#define SCL_PIN D1
// Threshold Suhu dan Kelembapan
#define TEMP_THRESHOLD 30
#define HUMIDITY_THRESHOLD 90
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27, 16, 2);
BlynkTimer timer;
bool fanState = false;
void sendSensorData() {
float suhu = dht.readTemperature();
float kelembapan = dht.readHumidity();
// Validasi pembacaan sensor
if (isnan(suhu) || isnan(kelembapan)) {
Serial.println("Gagal membaca data dari DHT11!");
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Sensor Error!");
return;
}
// Tentukan kategori suhu
String kategoriSuhu = (suhu < 25) ? "Dingin" : (suhu >= TEMP_THRESHOLD) ? "Panas" : "Normal";
// Kirim data ke Blynk
Blynk.virtualWrite(V0, suhu); // Kirim suhu
Blynk.virtualWrite(V1, kelembapan); // Kirim kelembapan
Blynk.virtualWrite(V2, fanState); // Kirim status kipas
Serial.print("Suhu: ");
Serial.print(suhu);
Serial.print("°C, Kelembapan: ");
Serial.print(kelembapan);
Serial.print("%, Status: ");
Serial.print(kategoriSuhu);
Serial.print(", Kipas: ");
Serial.println(fanState ? "Nyala" : "Mati");
// Cek perubahan status kipas
bool newFanState = (suhu >= TEMP_THRESHOLD || kelembapan > HUMIDITY_THRESHOLD);
if (newFanState != fanState) {
fanState = newFanState;
Blynk.virtualWrite(V2, fanState); // Update status kipas
digitalWrite(RELAY_PIN, fanState ? HIGH : LOW);
}
// Update LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("S:" + String(suhu) + "C");
lcd.setCursor(9, 0);
lcd.print("K:" + String(kelembapan) + "%");
lcd.setCursor(2, 1);
lcd.print((fanState) ? "Panas poll!" : "Normal ges");
lcd.backlight();
}
void setup() {
Serial.begin(9600);
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
dht.begin();
lcd.begin();
lcd.setCursor(0, 0);
lcd.print("Connecting to");
lcd.setCursor(0, 1);
lcd.print("Blynk...");
delay(2000);
lcd.clear();
lcd.backlight();
pinMode(RELAY_PIN, OUTPUT);
digitalWrite(RELAY_PIN, LOW);
timer.setInterval(5000L, sendSensorData); // Kirim data setiap 5 detik
}
void loop() {
Blynk.run();
timer.run();
}
Hasil
Kode ini adalah program pemantauan suhu dan kelembapan menggunakan sensor DHT11 yang dikendalikan oleh ESP8266 dan terhubung ke Blynk untuk pemantauan jarak jauh. Program membaca suhu dan kelembapan dari sensor, menampilkan data di layar LCD I2C, serta mengontrol kipas secara otomatis berdasarkan ambang batas suhu 30°C dan kelembapan 90%. Jika suhu atau kelembapan melebihi batas, kipas menyala; jika tidak, kipas mati. Data juga dikirim ke aplikasi Blynk agar pengguna dapat melihat pembaruan secara real-time. Kode ini menggunakan BlynkTimer untuk menjalankan fungsi sendSensorData() setiap 5 detik, memastikan sistem selalu mendapatkan data terbaru. Selain itu, layar LCD menampilkan pesan tentang kondisi suhu dan kelembapan, serta status kipas dengan teks interaktif seperti "Panas poll!" dan "Normal ges", memberikan pengalaman yang lebih informatif dan menarik bagi pengguna.
Video Tutorial
Untuk penjelasan lebih mendalam, tonton tutorial video berikut.
Penutup
Kalau ingin belajar lebih banyak tentang IoT, langsung kunjungi YouTube IQ+ dan temukan berbagai tutorial menarik lainnya.


Comments