Kontrol Kipas Angin pake Sensor Suara dan Monitoring Suhu dan Kelembapan Ruangan dengan DHT11
- Adam Kusumah
- Jun 26
- 2 min read
Selamat datang di website Cosmo!
di artikel ini, kita akan belajar buat sistem kontrol kipas angin pake sensor suara dan monitoring suhu dan kelembapan ruangan dengan DHT11.
Skema Rangkaian

Penjelasan Rangkaian
5V → VCC LCD, Relay, DHT11 & LM393
GND → GND LCD, Relay, DHT11 & LM393
D7 → Data LM393
D6 → Out DHT11
D3 → Data Relay
D2 → SDA LCD & BMP280
D1 → SCL LCD & BMP280
Adaptor (+) → Com Relay
NO Relay → Kaki (+) FAN
Adaptor (-) → Kaki (-) FAN
Kode
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
const int soundSensorPin = D7; // LM393 Digital Output (DO)
const int relayPin = D3; // Kontrol relay
#define DHTPIN D6 // Sensor DHT11 di Pin D6
#define DHTTYPE DHT11 // Tipe sensor
DHT dht(DHTPIN, DHTTYPE);
// Menginisialisasi LCD I2C dengan alamat 0x27 dan ukuran 16x2
LiquidCrystal_I2C lcd(0x27, 16, 2);
bool fanState = false; // Status awal kipas (mati)
unsigned long lastDetectTime = 0;
const int debounceTime = 300; // Waktu debounce untuk menghindari trigger ganda
void setup() {
Serial.begin(9600);
pinMode(soundSensorPin, INPUT);
pinMode(relayPin, OUTPUT);
digitalWrite(relayPin, LOW); // Pastikan relay mati di awal
lcd.begin();
lcd.backlight();
lcd.clear();
lcd.setCursor(4, 0);
lcd.print("Cosmo IoT");
lcd.setCursor(0, 1);
lcd.print("DHT11 Monitoring");
dht.begin(); // Mulai DHT11
delay(2000);
lcd.clear();
}
void loop() {
unsigned long now = millis();
// --- Deteksi suara duluan ---
int soundDetected = digitalRead(soundSensorPin);
if (soundDetected == HIGH && now - lastDetectTime > debounceTime) {
fanState = !fanState;
digitalWrite(relayPin, fanState ? HIGH : LOW);
lastDetectTime = now;
Serial.println(fanState ? "Kipas Menyala" : "Kipas Mati");
}
// --- Update DHT tiap 2 detik ---
static unsigned long lastSensorRead = 0;
if (now - lastSensorRead > 2000) {
lastSensorRead = now;
float suhu = dht.readTemperature();
float humid = dht.readHumidity();
String status;
if (suhu < 20) status = "Dingin";
else if (suhu <= 30) status = "Normal";
else status = "Panas";
lcd.setCursor(0, 0);
lcd.print("S:");
lcd.print(suhu, 1);
lcd.print((char)223);
lcd.print("C K:");
lcd.print(humid, 1);
lcd.print("% ");
lcd.setCursor(5, 1);
lcd.print(status);
Serial.print("Suhu: ");
Serial.print(suhu, 1);
Serial.print("C, Humid: ");
Serial.print(humid, 1);
Serial.print("% Status: ");
Serial.println(status);
}
}Penjelasan Kode
Kode ini pakai sensor suara LM393 untuk deteksi tepukan dan membalik status kipas lewat relay dengan debounce pakai millis(), sekaligus tiap 2 detik membaca suhu dan kelembapan dari DHT11 tanpa pakai delay, lalu menampilkan nilai dan status (“Dingin”, “Normal”, “Panas”) di LCD I²C serta mencetak ke Serial Monitor.
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