// Temperature and Humidity Monitoring System
// Green LED on when temp < 24°C
// Red LED on when temp > 26°C
// Buzzer sounds when humidity > 90%
#include <DHT.h>
// Pin definitions - CORRECTED for your diagram
#define DHTPIN 33 // DHT22 data pin connected to GPIO33 (from your diagram)
#define GREEN_LED 2 // Green LED on GPIO2 (from your diagram)
#define RED_LED 27 // Red LED on GPIO27 (from your diagram)
#define BUZZER_PIN 4 // You'll need to add a buzzer on GPIO4
// DHT sensor type
#define DHTTYPE DHT22 // Using DHT22 (not DHT11)
// Initialize DHT sensor
DHT dht(DHTPIN, DHTTYPE);
// Thresholds
const float TEMP_LOW_THRESHOLD = 24.0; // Below 24°C - green LED on
const float TEMP_HIGH_THRESHOLD = 26.0; // Above 26°C - red LED on
const float HUMIDITY_ALERT = 90.0; // Above 90% - buzzer sounds
void setup() {
Serial.begin(9600);
Serial.println("Temperature & Humidity Monitor Started");
// Initialize LED pins
pinMode(GREEN_LED, OUTPUT);
pinMode(RED_LED, OUTPUT);
pinMode(BUZZER_PIN, OUTPUT);
// Start with both LEDs off
digitalWrite(GREEN_LED, LOW);
digitalWrite(RED_LED, LOW);
digitalWrite(BUZZER_PIN, LOW);
// Initialize DHT sensor
dht.begin();
Serial.println("Thresholds:");
Serial.print(" Green LED ON when temp < ");
Serial.print(TEMP_LOW_THRESHOLD);
Serial.println("°C");
Serial.print(" Red LED ON when temp > ");
Serial.print(TEMP_HIGH_THRESHOLD);
Serial.println("°C");
Serial.print(" Buzzer when humidity > ");
Serial.print(HUMIDITY_ALERT);
Serial.println("%");
Serial.println("----------------------------------------");
}
void loop() {
// Wait 2 seconds between readings
delay(2000);
// Read temperature and humidity
float humidity = dht.readHumidity();
float temperature = dht.readTemperature(); // Read as Celsius
// Check if readings are valid
if (isnan(humidity) || isnan(temperature)) {
Serial.println("Failed to read from DHT sensor!");
Serial.println("Check wiring: DHT22 data pin should be on GPIO33");
return;
}
// Print readings
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.print("°C | Humidity: ");
Serial.print(humidity);
Serial.println("%");
// --- Temperature Control Logic ---
if (temperature < TEMP_LOW_THRESHOLD) {
// Below 24°C - Green LED ON, Red LED OFF
digitalWrite(GREEN_LED, HIGH);
digitalWrite(RED_LED, LOW);
Serial.println(" Status: COLD - Green LED ON");
}
else if (temperature > TEMP_HIGH_THRESHOLD) {
// Above 26°C - Red LED ON, Green LED OFF
digitalWrite(GREEN_LED, LOW);
digitalWrite(RED_LED, HIGH);
Serial.println(" Status: HOT - Red LED ON");
}
else {
// Between 24-26°C - Both LEDs OFF
digitalWrite(GREEN_LED, LOW);
digitalWrite(RED_LED, LOW);
Serial.println(" Status: NORMAL - Both LEDs OFF");
}
// --- Humidity Alert Logic ---
if (humidity > HUMIDITY_ALERT) {
// Humidity above 90% - Sound buzzer
tone(BUZZER_PIN, 1000); // 1kHz tone
Serial.println(" ALERT: High humidity! Buzzer ON");
} else {
// Normal humidity - Buzzer OFF
noTone(BUZZER_PIN);
}
Serial.println("----------------------------------------");
}