Skip to content

rogiervandenberg/pomodorotimer

Repository files navigation

Pomodoro Timer

2026 final product

A minimalist, single-button Pomodoro timer for focused work sessions. Originally created in 2013, now updated for modern low-power microcontrollers with deep sleep support.

Background

I built the original Pomodoro Timer in August 2013 as a way to have a dedicated, distraction-free focus timer on my desk. Unlike phone apps or computer timers, a physical device doesn't tempt you with notifications or other apps—it just does one thing well.

The design philosophy is intentionally minimalist: one button does everything. Press it to wake up, press again to cycle through duration options, and it automatically starts counting down. When you're in the zone, the big display shows remaining minutes at a glance without pulling you out of focus.

In 2026, I revisited the project with modern microcontrollers that support deep sleep modes, making it practical to run on battery power for months. The new versions remember your preferred timer duration even after going to sleep.

Read more about the original project: Arduino Pomodoro Timer (2013)

What is the Pomodoro Technique?

The Pomodoro Technique is a time management method that uses timed work intervals (traditionally 25 minutes) followed by short breaks. This timer helps you stay focused by counting down your work session and alerting you when it's time for a break.

Features

  • Selectable timer durations: 5, 15, 25, or 45 minutes
  • Single-button interface: Simple and distraction-free
  • Audio feedback: Tones for button presses and session completion
  • Deep sleep mode (2026 versions): Ultra-low power consumption when idle, for running on battery
  • Persistent settings (2026 versions): Remembers your last timer choice

Hardware Versions

This repository contains three versions of the timer, each targeting different hardware:

1. Original Arduino Uno (2013)

Original 2013 timer

File: pomodorotimer.ino

The classic version using a 7-segment LED display.

Component Pin
Button D2
Piezo Buzzer D7
LED Display Latch D8
LED Display Clock D3
LED Display Data D9

Parts needed:


2. ESP32 with Deep Sleep (2026)

File: pomodoro_2026_deepsleep_esp32.ino

Modern version with OLED display and deep sleep for battery-powered operation.

Component Pin
Button GPIO 25
Piezo Buzzer GPIO 27
I2C SDA GPIO 33
I2C SCL GPIO 32

Parts needed:

  • ESP32 development board
  • SSD1306 OLED display (128x64, I2C)
  • Push button
  • Piezo buzzer
  • LiPo battery (optional, for portable use)

Power features:

  • Deep sleep current: ~10µA
  • Settings stored in RTC memory (survives deep sleep)
  • Wake-on-button using EXT0 wakeup

3. Seeed XIAO nRF52840 with Deep Sleep (2026)

File: pomodoro_2026_deepsleep_nRF52840.ino

Ultra-compact version using the Seeed XIAO nRF52840 for minimal footprint.

Component Pin
Button D1
Piezo Buzzer D2
I2C SDA D4 (fixed)
I2C SCL D5 (fixed)

Parts needed:

  • Seeed XIAO nRF52840 (or nRF52840 Sense)
  • SSD1306 OLED display (128x64, I2C)
  • Push button
  • Piezo buzzer
  • LiPo battery (optional)

2026 materials

Power features:

  • System OFF mode current: ~1µA
  • Settings stored in GPREGRET register (survives sleep/reset)
  • Wake-on-button using GPIO sense

How to Use

  1. Power on: The timer displays an intro screen and plays a startup melody, then goes to sleep
  2. Wake/Start: Press the button to wake up and see the current timer selection
  3. Select duration: Press the button repeatedly (within 2 seconds) to cycle through: 5 → 15 → 25 → 45 minutes
  4. Timer starts: After 2 seconds with no button press, the countdown begins
  5. During countdown: The display shows remaining minutes. Press the button to cancel and select a new duration
  6. Session complete: A melody plays, "KLAAR!" (Done!) appears, then the timer goes to sleep

Dependencies

For the 2026 OLED versions, install these libraries via the Arduino Library Manager:

  • Adafruit GFX Library
  • Adafruit SSD1306

For ESP32, you'll also need the ESP32 board package installed in Arduino IDE.

For nRF52840, install the Seeed nRF52 Boards package.

Building Your Own

2026 prototyping

Wiring Diagram (ESP32 / nRF52840 versions)

┌─────────────────┐
│   OLED Display  │
│   (SSD1306)     │
│  ┌───────────┐  │      ┌─────────────────┐
│  │           │  │      │  Microcontroller │
│  │  128x64   │  │      │                  │
│  │           │  │      │  SDA ──────────────── SDA
│  └───────────┘  │      │  SCL ──────────────── SCL
│     VCC GND     │      │  3V3 ──────────────── VCC
│      │   │      │      │  GND ──────────────── GND
└──────┼───┼──────┘      │                  │
       │   │             │  D1/GPIO25 ─────┬──── Button ──── GND
       │   │             │                 │
       │   │             │  D2/GPIO27 ─────┬──── Buzzer ──── GND
       │   │             │                  │
       └───┼─────────────│─ 3V3             │
           └─────────────│─ GND             │
                         └─────────────────┘

Enclosure

Back Front Slice
3D enclosure 3D enclosure 3D enclosure

The enclosure/ folder contains 3D printable files for the case:

enclosure/
├── *.stl           # Ready-to-print files
└── source/         # Original CAD files

You can find the enclosure design on MakerWorld.

About

Arduino Pomodoro Timer, counts down to zero to facilitate a "Pomodoro Session". Including Display and 1-button interface.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages