Back to Portfolio

Automated Exhaust Fan

$ cat README.md
An Arduino-based system designed to monitor bathroom humidity and temperature, activating a fan and buzzer when levels exceed thresholds to prevent mold growth. Features real-time data display and multi-tier alerts.
README.md
source/
assets/
tests/
demo.mp4

Project Overview

Automated Exhaust Fan is an Arduino-based system designed to monitor bathroom humidity and temperature, activating a fan and buzzer when levels exceed thresholds to prevent mold growth. The project integrates:

  • DHT11 sensor (environmental monitoring)
  • MOSFET transistor (fan control)
  • I2C LCD (real-time data display)
  • Piezo buzzer (audible alerts)

Key Features:

  • Fan triggers at high humidity/temperature
  • Multi-tier buzzer alerts (low/high severity)
  • Compact housing with concealed wiring
---

Project Journey

1. Inspiration & Problem Identification

Motivation:

My bathroom lacked ventilation, leading to moisture buildup and mold risk. Existing exhaust fans were either manual or expensive.

Initial Goal:

Create a low-cost, automated system to:

  • Detect humidity/temperature spikes.
  • Activate exhaust fan + alerts.
  • Display real-time data.
---

2. Research & Prototyping

Phase 1: Learning from Existing Work

Adapted LIMPINGLIM's Humidity-Controlled Fan (Arduino Project Hub) but expanded it with:

  • LCD display (SunFounder tutorials).
  • Buzzer (classroom experience).

The research phase involved exploring both hardware and software aspects, leveraging online resources while adding unique elements based on personal experience.

Phase 2: Hardware Hurdles

Problem: Original schematic used Arduino Nano; I had an Uno.

Solution: Redesigned circuit:

  • Moved DHT11 to Pin 2.
  • Used breadboard for 5V distribution.
  • Added 12V MOSFET for fan control.

Prototyping & Testing

Initial breadboard circuit setup

Test 1: Initial breadboard circuit setup

Test 3: Fan activation with temperature control

Final Schematic: Revised schematic (see Fig. 3)

Revised Schematic

Final Schematic

Final schematic diagram showing component details and wiring connections

---

3. Iterative Development

Software Challenges:

LCD Integration:
  • Struggled with I2C address conflicts.
  • Fixed by testing 0x27 vs. 0x3F and using LiquidCrystal_I2C library.
Sensor Calibration:
  • Initially unreliable readings; added SimpleDHT library for stability.

Final Logic:

void loop() {
byte temp, humidity;
dht11.read(pinDHT11, &temp, &humidity, NULL);

lcd.print("Temp:"); lcd.print((int)temp);
lcd.print("Hum:"); lcd.print((int)humidity);

if (temp > 40) {
digitalWrite(Fan, HIGH);
tone(buzzer, 2000); // High-pitched alert
}
}
---

4. Physical Assembly

Design Goals:

  • Minimalist housing with hidden wires.
  • Sensor placement near shower for accuracy.

Process:

  1. Mockup: Cardboard prototype (Fig. 6).
  2. Final Build:
    • Air-dry clay "bathroom" facade.
    • Components mounted on foam board.

Final Assembly

Front view of completed assembly

Front view of completed assembly

Side view showing component arrangement Side view showing component arrangement

Side view showing component arrangement

Demonstration video of the working system

Figure: Final assembly

---

5. Testing & Validation

  • Fan Activation: Used a hairdryer to simulate temperature spikes (Fig. 4).
  • Buzzer Tones: Tested frequencies (100Hz for low, 2000Hz for high alerts).
  • LCD Readability: Verified under varying light conditions.
Unexpected Issue:
  • Debris (from clay) interfered with sensor.
  • Fix: cleaned the sensor.
---

Key Learnings

  1. Adaptability:
    • Pivoting from Nano to Uno required creative rewiring.
  2. Debugging:
    • Serial Monitor was invaluable for tracking sensor errors.
  3. User Feedback:
    • Class critiques led to adding the LCD (originally not planned).
---

Future Improvements

  1. Enhanced Alerts:
    • RGB LED to visually indicate humidity levels.
  2. Energy Efficiency:
    • Replace 12V fan with a 5V USB model.
  3. Cloud Integration:
    • Log data via IoT (e.g., Blynk) for long-term trends.

Technical Stack

Arduino Uno DHT11 Sensor I2C LCD Display MOSFET Transistor C++ PWM Control Piezo Buzzer

Conclusion

This project transformed a personal annoyance into a functional solution. It honed my skills in:

  • Circuit design (MOSFETs, I2C).
  • Sensor integration (DHT11 calibration).
  • Rapid prototyping (clay + cardboard).

Impact: The system now runs in my bathroom, proving its practicality.

Skills Demonstrated:

⌙ Arduino Programming | Circuit Design | Problem-Solving | User-Centered Design

Project Artifacts:

GitHub Repo | Demo Video | Full Schematic