Skip to main content
Version: FILS English

Study Assistant with Pomodoro

A system that helps users structure their study time by automatically managing focus and breack intervals, while also providing real-time feedback about the enviroment and system status to support better concentration.

info

Author: Scarlat Andra-Nicole
Group: 1221EA
GitHub Project Link: https://github.com/UPB-PMRust-Students/fils-project-2026-Nykole25

Description

This project is an embedded study assistant built around the Pomodoro technique, implemented on an ESP32 microcontroller using Rust. Its main purpose is to support structured study sessions by combining a countdown timer with visual cues, sound alerts and environmental sensing.

The current session status and remaining time are shown on an OLED display, while a buzzer and LEDs provide clear feedback for events such as sessions start, completions and transitions between focus and break periods. In addition, it integrates environmental sensors to track conditions such as ambient light and air quality, which can help users understand and adjust their study environment for better focus.

The overall design focuses on creating a simple and distraction-free interactions flow, where the user only needs to use a few physical controls to manage their study sessions, while the system handels timing, feedback, and state transitions automatically in the background.

Motivation

The main motivation behind this project comes from my own experience with studying and focus. I found that the Pomodoro technique genuinely helped me stay more productive, especially during long study sessions where it is easy to lose concentration or burn out. At the same time, I also realized that my study environment often had a big impact on how effective I actually was.

Architecture

                        +----------------------------------+
| ESP32 |
| (Central Controller) |
| Rust Embedded Firmware |
+---------+-----------+----------+
| |
| |
+---------+ +-------------------+
| |
v v

+---------------------+ +----------------------+
| OLED SSD1306 | | USB Power / PC |
| (I2C Display) | | (Optional Serial) |
| SDA / SCL | | Debug / Logging |
+----------+----------+ +----------+-----------+
| |
| |
v v

+----------------+----------------+ +--------------------------+
| | | |
v v v v

+------------------+ +------------------+ +------------------+
| LDR LIGHT SENSOR | | MQ-135 GAS | | BUTTON INPUTS |
| (Ambient Light) | | SENSOR | | Start / Reset |
| ADC INPUT | | (Air Quality) | | GPIO + Pull-down |
+--------+---------+ +--------+---------+ +--------+---------+
| | |
| | |
+--------------+---------------+----------------------------+
|
v

+-----------------------------+
| SENSOR PROCESSING LAYER |
| (Sampling + Filtering ADC) |
+--------------+--------------+
|
v

+-----------------------------+
| POMODORO STATE MACHINE |
| Focus / Break / Idle |
+------+-----------+----------+
| |
| |
+-----------+ +-------------------+
| |
v v

+----------------------+ +----------------------+
| BUZZER (ACTIVE) | | LED INDICATORS |
| GPIO OUTPUT | | Focus / Break |
+----------+----------+ +----------+----------+
| |
| |
+-------------------+--------------------+
|
v

+---------------------------+
| SYSTEM FEEDBACK LOOP |
| OLED + BUZZER + LEDs |
+---------------------------+

Log

Week 13 - 19 April

I discussed the idea of the project and based on the feedback I improved the initial design by adding the air quality and light sensors. Also I added the OLED display in order to make the system more complete.

Week 20 - 26 May

I did my reserch for all the necessary hardware components and ordered them. Once parts arrived, I started testing the basic functionality of individual components to ensure everything was working correctly.

Week 27 - 3 May

Hardware

The system uses an ESP32 board as the main processing unit, responsible for running the Pomodoro logic and coordinating all connected peripherals. Time tracking and system status are shown on an SSD1306 OLED screen, while alerts are handled through a 5V active buzzer and LED indicators that signal different states of the study session.

Interaction with the device is done using a few physical push buttons connected to GPIO pins, giving control over the timer flow. To enrich the experience the setup includes a LDR sensor for measuring ambient light and an MQ-135 sensor for monitoring air quality, providing context about the surrounding environment. Communication with peripherals is handled through standard ESP32 interfaces such as GPIO and I2C.

Hardware components:

Microcontroller: ESP32-WROOM-32D

Input: LDR light sensor + MQ-135 air quality sensor + Push Buttons

Output: SSD1306 OLED Display + Active Buzzer +LED Indicators

Interface: GPIO/I2C

Schematics

The KiCad schematic will be added here.

Bill of Materials

DeviceUsagePrice
ESP32-WROOM-32The microcontroller68 RON
OLED SSD1306 1C2 0.96 inch displyOLED display32 RON
25 LEDs 5mm SetVisual Feedback5 RON
5V Active BuzzerSound notifications7 RON
LDR Light SensorMeasures ambient light level7 RON
MQ-135 Air quality sensorMeasures the air quality20 RON
[Jumper Wires + Breadboard + MicroUSB cable]Conecting the hardware components 33RON

Software

LibraryDescriptionUsage
esp-idf-halHardware abstraction layer for ESP32Used for GPIO, ADC and peripheral control
embedded-halGeneric embedded Rust traitsProvides standard interface for hardware drivers
ssd1306OLED display driverUsed to control the SSD1306 display
embedded-graphics2D graphics libraryUsed for drawing text and UI on the OLED
anyhowError handling librarySimplifies runtime error management
logLogging frameworkUsed for debugging and system logs
  1. ESP32-WROOM-32 documentation
  2. ESP-IDF Programming Guide
  3. SSD1306 OLED Display Driver Documentation
  4. Embedded Graphics Library
  5. Embedded HAL