Implementation of the Pomodoro technique on the ESP-32 microcontroller.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Romain 17fffcd619 Snapshot 1444697
doc Snapshot 1444697
lib Snapshot 1444697
tool Snapshot 1444697
Licence note Snapshot 1444697
NTPSynchronisation.cpp Snapshot 1444697
NTPSynchronisation.h Snapshot 1444697
Pomodoro.cpp Snapshot 1444697
Pomodoro.h Snapshot 1444697
Pomodoro.ino Snapshot 1444697
README.md Snapshot 1444697
SegmentCharacter.h Snapshot 1444697
SegmentDisplay.cpp Snapshot 1444697
SegmentDisplay.h Snapshot 1444697
Timer.cpp Snapshot 1444697
Timer.h Snapshot 1444697
WifiConfig.cpp Snapshot 1444697
WifiConfig.h Snapshot 1444697

README.md

Pomodoro on ESP-32

Implementation of the Pomodoro technique on the ESP-32 microcontroller.

Each transition between work and rest cycle is indicated by one or multiple physical stimulus (melody and/or color).

A display indicates the progression of the timer and double as an NTP clock.

Table of content

Pomodoro

Pomodoro is a time management technique that use a timer to break down task and rest period.

Electronic circuit

Schematic

schematic picture

Materials

Type Designation Quantity
System on a chip ESP-WROOM-32 1
4 digit 7 segment display HS420561K-32 1
8-bit shift register SN74HC595N 1
Transistor PN2222 4
Diode 3
Passive buzzer 1
Momentary Switch 1
Resistor 220 Ω 11
Resistor 4.7 kΩ 4

Note on the seven-display segment and shift-register

You might have notice that it's not the prettiest way to use a 4-digits seven-segments display.

Initially I wanted to use one shift-register per digit, but as I found only one SN74HC595N on my parts bins, I ultimately decided to make do. The result is a bit messier but works.

Software

Design

This software make use of the two core of the ESP-32, and it's FreeRTOS implementation to have two tasks:

  1. Display the time remaining on the clock and use interrupt to count each second passed.
  2. Alarm the user of a transition between task and rest with the use of melody and visual cue.

Dependency

Ignoring the common library use in almost every project (like stdint.h, Arduino.h, esp32-hal-ledc.h or HardwareSerial.h), the code make use of:

Tool

Seven-segment display value

To ease the transition between physical segment and binary/hexadecimal code, I created a small HTML tool tool/SevenSegmentDisplayValue.html. segmentDisplayConverter.html in action