top of page

Kontrol Kipas dan LED dengan Sensor Suara LM393 + Display LCD I2C di Wemos D1 Mini

Updated: Jun 13


Selamat datang di website Cosmo!

di artikel ini, kita akan belajar mengontrol Kipas dan LED dengan sensor Suara (LM393) + display LCD I2C.


Skema Rangkaian



wiring

Penjelasan Rangkaian

  1. 5V → VCC LM393, LCD & Relay (+)

  2. D6  Out LM393

  3. GND  LM393(-), LCD(-), LED (-) & Relay (-)

  4. D1  SCL LCD

  5. D2  SDA LCD

  6. D7  Resistor 470 Ohm à LED

  7. D3  Data Relay

  8. Adaptor (+)  COM Relay

  9. Adaptor (-)  Fan (+)

  10. NO Relay  Fan (+)


#include <Wire.h>              // Library I2C
#include <LiquidCrystal_I2C.h> // Library LCD 16x2

const int soundSensorPin = D6;  // LM393 Digital Output (DO)
const int relayPin = D3;        // Kontrol relay
const int ledPin = D7;          // Indikator LED

LiquidCrystal_I2C lcd(0x27, 16, 2);  // Alamat LCD I2C (bisa 0x27 atau 0x3F)

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(115200);
    pinMode(soundSensorPin, INPUT);  
    pinMode(relayPin, OUTPUT);  
    pinMode(ledPin, OUTPUT);  
    digitalWrite(relayPin, LOW); // Pastikan relay mati di awal
    digitalWrite(ledPin, LOW);   // LED mati di awal

    lcd.begin(); // Inisialisasi LCD
    lcd.backlight();
    lcd.setCursor(2, 0);
    lcd.print("Project IoT");
    lcd.setCursor(2, 1);
    lcd.print("Fan Control");
    delay(2000);
    lcd.clear();
    lcd.setCursor(4, 0);
    lcd.print("Make Your");
    lcd.setCursor(3, 1);
    lcd.print("First Sound");
}

void loop() {
    int soundDetected = digitalRead(soundSensorPin); 

    if (soundDetected == HIGH && millis() - lastDetectTime > debounceTime) {
        fanState = !fanState;  // Toggle status kipas
        digitalWrite(relayPin, fanState ? HIGH : LOW); // Aktifkan/matikan relay
        digitalWrite(ledPin, fanState ? HIGH : LOW);  // Nyalakan/matikan indikator LED
        lastDetectTime = millis();
        
        Serial.println(fanState ? "Kipas Menyala - LED ON" : "Kipas Mati - LED OFF");

        // Update tampilan LCD
        lcd.clear();
        lcd.setCursor(0, 0);
        lcd.print(fanState ? "Kipas: Menyala" : "Kipas: Mati");
        lcd.setCursor(0, 1);
        lcd.print(fanState ? "LED: ON" : "LED: OFF");
    }
}

Hasil

Kode ini mengontrol kipas angin dengan sensor suara LM393 yang terhubung ke pin D6 pada Wemos D1 Mini. Saat sensor mendeteksi suara, sistem memeriksa apakah waktu debounce telah berlalu untuk menghindari pemicuan ganda. Jika kondisi terpenuhi, status kipas diubah dari menyala ke mati atau sebaliknya dengan mengaktifkan atau menonaktifkan relay pada pin D3, yang berfungsi sebagai sakelar elektronik yang mengontrol aliran listrik ke kipas. LED indikator di pin D7 juga dinyalakan atau dimatikan sesuai dengan status kipas. Sistem diinisialisasi dengan baud rate 115200 dan memastikan relay serta LED dalam keadaan mati saat startup. Modul LCD I2C digunakan untuk menampilkan informasi status kipas dan LED secara real-time, dengan pesan awal yang mendorong pengguna untuk memberikan suara agar sistem mulai bekerja. Waktu deteksi terakhir disimpan menggunakan fungsi millis() untuk menentukan apakah perubahan status dapat dilakukan.


Video Tutorial

Untuk penjelasan lebih mendalam, tonton tutorial video berikut.



Kesimpulan

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