EMB-03 Team project

Smart-home appliance controller

An Arduino climate/appliance controller with sensor-driven fan control, a four-mode state machine, and an over-temperature safety cutoff — built as a two-person university team.

Role
Team member (with Paola Dorado Galicia) — design, firmware, testing; documentation, schematics & repo maintainer
Timeframe
Spring 2026 · FIU EEL 4730
Stack
C++ · Arduino UNO · DHT11 · PWM · State machine
Links
FIG 04.0 Hardware photograph The complete assembly — a two-person university team project with Paola Dorado Galicia for EEL 4730.

Recruiter summary

Problem
Exercise the core embedded-systems toolkit — ADC sampling, PWM actuation, debounced GPIO, a single-wire sensor protocol, UART logging — as one coherent appliance controller on real hardware.
Contribution
A two-person team project with Paola Dorado Galicia: both of us are credited for design, firmware, and testing; I maintain the repository, documentation, and schematics.
Result
A working four-mode controller with a 35 °C safety cutoff, eight documented build states, a schematic in three formats, and a candid limitations list.

The four-mode state machine

State diagram: power-on starts in AUTO; button 1 cycles AUTO, MANUAL, SLEEP; ALARM overrides any mode at 35 degrees and releases when the temperature falls.

  1. The power-on mode. The DHT11 reading maps to a PWM fan curve: off below 24 °C, then low and medium bands, full from 28 °C.

  2. Button 1 moves from AUTO to MANUAL; button 2 cycles the fan OFF → LOW → MEDIUM → FULL.

  3. Fan off; the blue LED becomes an adaptive nightlight driven by the LDR reading.

  4. At ≥ 35 °C the alarm overrides any mode: the fan is cut, the buzzer sounds, and the red LED stays lit until the temperature falls.

Select a stage to inspect it

What it does

DHT11 temperature/humidity and an LDR light divider feed a four-mode state machine (AUTO / MANUAL / SLEEP / ALARM). AUTO maps temperature bands to fan speed through a PN2222 low-side PWM driver with a flyback diode; at 35 °C an ALARM override cuts the fan and sounds the buzzer. An LCD1602 shows state; everything logs over UART.

Credit, precisely

This was a team project for EEL 4730 (Programming Embedded Systems) at FIU, built with Paola Dorado Galicia. The repository preserves the team’s original commit history — the original firmware commits are hers — and adds my later documentation, reorganization, and schematics on top. Both of us are credited for design, firmware, and testing, as the project was actually done.

Why it’s here

It demonstrates the unglamorous fundamentals on real hardware: ADC sampling, PWM actuation, debounced GPIO, a single-wire sensor protocol, UART logging, and a state machine — with eight build photos across its modes, a schematic in three formats, and a video walkthrough. The README’s limitations section is candid: a blocking main loop that can miss button presses, coarse ±2 °C sensor resolution, compile-time thresholds, uncalibrated LDR values.

Evidence

FIG 04.7 Architecture diagram The wiring schematic — from the repository. Source — opens in a new context