Pomodoro Timer: LED Strip Productivity Tool

Executive summary

A physical, LED-strip based Pomodoro timer using addressable LEDs to visually represent time remaining. Built around an ESP32, it provides an ambient, glanceable productivity tool that integrates via MQTT for remote configuration.

Business strategy & value proposition

The problem

  • Distracting interfaces: Screen-based timers require users to break focus and look at their phones or monitors.
  • Cognitive load: Reading exact numbers creates anxiety, whereas abstract visual representations of time are easier to process passively.

The solution

  • Ambient feedback: Uses a light-diffusing LED strip to represent time conceptually (e.g., color shifting).
  • Physical interactions: Tactile buttons provide satisfying physical feedback for starting and stopping focus sessions without screens.

Product features & UX

Visual time tracking

  • Detail: Addressable LEDs act as a progress bar, shrinking or changing color as the work session progresses.
  • Interaction: Smooth animations shift from Green (start) to Yellow (midway) to Red (ending), accompanied by a buzzer notification upon completion.

Remote configuration

  • Detail: Connects via Wi-Fi to receive/send state.
  • Interaction: Users can adjust timer settings (e.g., 25min vs 50min) from a server via MQTT without flashing new code.

Technical architecture

High-level stack

Component Technology Role
MCU ESP32 Controls LEDs, reads button inputs, handles Wi-Fi/MQTT.
Output Addressable LEDs + Buzzer Visual progress bar and audio alerts.
Software FastLED / NeoPixel Code libraries for smooth LED animations.
Comms MQTT Protocol for remote configuration and state tracking.

Core systems logic

  1. Input: Physical button triggers the start of a Pomodoro session.
  2. Timing: ESP32 hardware timer or RTC tracks elapsed time.
  3. Execution: LED strip dynamically updates color and length based on precise timing intervals.
  4. Completion: Buzzer sounds, and an MQTT message is published to log the session.

Handling edge cases

  • Timing accuracy: Loop blocking could delay timing.
    • Mitigation: Use the ESP32 internal hardware timer or an external RTC rather than delay().
  • Power supply: Powering many LEDs alongside the ESP32 can cause voltage drops or resets.
    • Mitigation: Use a high-quality 5V regulator array and separate power lines for the MCU and the LED strip.

Future roadmap

Phase 1 (MVP)

  • [ ] Connect LED strip and buttons to ESP32 on a breadboard.
  • [ ] Write core timing logic and basic LED control (FastLED/NeoPixel).
  • [ ] Implement physical button interrupts for start/stop/reset.

Phase 2

  • [ ] Refine visual feedback (Green -> Yellow -> Red smooth animations).
  • [ ] Add MQTT integration for remote control and data logging.
  • [ ] Incorporate the buzzer for session-end notifications.

Phase 3

  • [ ] Design and 3D print a light-diffusing, desk-friendly case.
  • [ ] Final assembly, soldering, and stability testing.