top of page

Kontrol Kipas Angin pake Sensor Suara dan Monitoring Suhu dan Kelembapan Ruangan dengan DHT11


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

wiring

Penjelasan Rangkaian

  1. 5V  VCC LCD, Relay, DHT11  & LM393

  2. GND  GND LCD, Relay, DHT11 & LM393

  3. D7 Data LM393

  4. D6  Out DHT11

  5. D3  Data Relay

  6. D2  SDA LCD & BMP280

  7. D1  SCL LCD & BMP280

  8. Adaptor (+)  Com Relay

  9. NO Relay  Kaki (+) FAN

  10. 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


Bantu tingkatkan
kualitas website ini!

Dengan memberi masukan dan/atau pertanyaan

Jika berkenan, silakan masukan e-mail Anda untuk kontak lebih lanjut

Pilihan
Masukan
Pertanyaan
Lainnya
bottom of page