A highly optimized, gyroscope smart clock and Pomodoro timer built with the ESP32-C3 Mini and ESP-IDF. This project focuses on deep system optimization, dynamic power management, and a modern Web Serial interface for configuration.
![]() |
![]() |
|---|
- Gesture Control: Uses a BMI160 6-axis IMU to navigate menus and start timers simply by flipping device.
- Pomodoro Timer: Built-in 25-minute focus and 5-minute break timers with automated buzzer notifications.
- Internet Time & Weather: Real-time synchronization via SNTP and live weather updates via the OpenWeatherMap API.
- Web Serial Configuration: Configure WiFi credentials, buzzer volume, time formats, and screen timeouts directly via a secure USB Web Serial HTML interface.
- Ultra-Low Power Optimization:
- Adaptive Polling: The IMU polling rate dynamically drops when the screen is off to conserve battery.
- NVS Wear-Leveling: Device settings are safely stored in Non-Volatile Storage with optimized commit triggers.
- Microcontroller: ESP32-C3 Mini
- Display: 0.96" OLED Display
- IMU Sensor: BMI160
- Audio: Passive Buzzer
- Framework: ESP-IDF v5+
- Graphics: u8g2
- Networking:
esp_wifi,esp_http_client,esp_sntp
Clone this repository and build it using the ESP-IDF toolchain.
git clone https://github.com/quocbao8925/Pomodoro-ESP-Clock.git
cd Pomodoro-ESP-ClockSet target, build and flash.
idf.py set-target esp32c3
idf.py build flash monitorInstead of hardcoding your WiFi credentials, use the provided Web Interface:
- Open
config-web(located in the repo). - Connect the ESP32-C3 via USB.
- Click Connect Cable and select your COM port.
- On the watch, flip your device to navigate to the CONFIG screen.
- Enter your WiFi SSID, Password, and adjust system settings (Volume, Timeout, 24h format) on the webpage.
- Click Sync Data & Settings. The watch will automatically reboot and apply the changes.
To enable weather updates, you need to configure your OpenWeatherMap credentials via the ESP-IDF menu:
- Run
idf.py menuconfig. - Navigate to Project Configuration.
- Enter your Latitude, Longitude, and OpenWeatherMap API Key.
- Save (S) and exit (Q).
This firmware is designed to work with the configuration web and u8g2 library.
POMODORO Web's URL: Link to web
U8G2: u8g2 library
This project was heavily inspired by an amazing work of HuyVectorDIY.
Check out the original build here: Cyber Smart Clock V2.
This project is open-source and available under the MIT License.

