Untuk mendeteksi suhu menggunakan ESP32 dengan sensor DHT (DHT11/DHT22) dan mengontrol kipas angin berdasarkan suhu, Anda dapat mengikuti langkah berikut:
- ESP32.
- Sensor DHT (DHT11/DHT22).
- Kipas angin (DC fan) 12v.
- Modul relay
- Kabel Jumper
- Power Suplay 12v
Diagram Rangkaian :
DHT Sensor:
- Pin VCC → 3.3V atau 5V di ESP32.
- Pin GND → GND di ESP32.
- Pin DATA → D8 ESP32.
- Resistor pull-up 10kΩ antara pin DATA dan VCC.
Modul Relay (untuk kipas angin):
- VCC → 5V dari Modul StepDown.
- GND → GND dari ESP32.
- IN → D6 ESP32.
Sambungkan kipas ke relay seperti berikut:
Salah satu kabel kipas ke NO (Normally Open).
Kabel kipas lainnya ke C (Common).
bisa dilihat pada gambar diaatas
Program :
#include <Adafruit_Sensor.h>
#include <DHT.h>
#include <DHT_U.h>
// Konfigurasi sensor DHT
#define DHTPIN 8 // Pin data DHT
#define DHTTYPE DHT22 // Ubah ke DHT11 jika menggunakan DHT11
DHT dht(DHTPIN, DHTTYPE);
// Pin relay untuk kipas
#define RELAYPIN 6
// Ambang suhu untuk kipas
#define TEMPERATURE_THRESHOLD 30.0 // Suhu dalam °C
void setup() {
Serial.begin(115200);
Serial.println(F("DHT with Fan Control"));
// Memulai DHT
dht.begin();
// Mengatur pin relay sebagai output
pinMode(RELAYPIN, OUTPUT);
digitalWrite(RELAYPIN, LOW); // Kipas mati saat awal
}
void loop() {
// Tunggu 2 detik antar pembacaan
delay(2000);
// Membaca suhu dan kelembapan
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
// Periksa apakah pembacaan berhasil
if (isnan(temperature) || isnan(humidity)) {
Serial.println(F("Failed to read from DHT sensor!"));
return;
}
// Menampilkan hasil ke Serial Monitor
Serial.print(F("Temperature: "));
Serial.print(temperature);
Serial.print(F("°C Humidity: "));
Serial.print(humidity);
Serial.println(F("%"));
// Mengontrol kipas berdasarkan suhu
if (temperature > TEMPERATURE_THRESHOLD) {
digitalWrite(RELAYPIN, HIGH); // Nyalakan kipas
Serial.println(F("Fan ON"));
} else {
digitalWrite(RELAYPIN, LOW); // Matikan kipas
Serial.println(F("Fan OFF"));
}
}