Arduino AC — Automated Fan Controller

I built a small embedded cooling controller that behaves like a simple air conditioner: it reads temperature/humidity, lets the user set a target on a 7-segment display via a potentiometer, and turns a fan on when the measured temperature exceeds the setpoint. I did this project solo to deepen my embedded systems skills.

Arduino AC final build -->

My role: end-to-end design & implementation — hardware wiring, scheduler integration, device drivers, UI logic, and documentation.

  • System Overview

    MCU: Arduino (AVR) • Preemptive task scheduling with FreeRTOS • Inputs: Potentiometer (setpoint), Temp/Humidity sensor • Outputs: 7-segment LED display (target value), DC fan (via driver/transistor) • On-board timers for periodic sensing & UI refresh.

  • Method (Brief)

    Implemented FreeRTOS tasks for sensing, UI update, and fan control; read the hardware specs to configure timers, multiplex the 7-segment display, and debounce user input.

  • Interactability

    The user turns a potentiometer to set a target temperature shown on the 7-segment display. If Tmeasured ≥ Tset, the controller signals the fan to activate; otherwise it remains off.

  • Implementation Notes

    • Learned and used AVR timer hardware for stable task periods and display refresh.
    • Mapped 7-segment pinouts and multiplexed digits to reduce I/O usage.
    • Wrote lightweight drivers for the sensor and display to fit tight memory.
    • Tuned stack/heap and task priorities to keep UI responsive near memory limits.

  • Outcome & Discussion

    The prototype reliably cools when the sensed temperature crosses the user-defined threshold, demonstrating end-to-end embedded control with scheduling, real-time I/O, and a minimal UI. The build nearly maxed out available Arduino memory, which helped me understand practical limits (RAM/flash, timing jitter, and I/O bandwidth). Next steps include adding hysteresis to prevent fan chatter, logging via UART, and migrating to a more capable MCU for richer UI or PID control.

Project Summary (Short)

Solo project: a FreeRTOS-based Arduino fan controller that lets users set a temperature on a 7-segment display and automatically switches the fan when the measured value exceeds the setpoint. Pushed Arduino close to memory limits, solidifying my embedded fundamentals.

Code & Report: Code

← Back to Home