In an era of endless notifications and remote work, our greatest challenge isn't a lack of tools, it’s a lack of focus. We often turn to our smartphones for a simple timer or a to-do list, only to find ourselves sucked into social media ten minutes later. This "Digital Fatigue" is a real problem, I faced similar problems while studying for my exams. I realized that using a Pomodoro timer and a clear task list was one of the only way I could manage my workload, but I needed a device that lived on my desk, not on my phone.
Desk32 was my solution to this problem. It is a standalone productivity accessory designed to act as a "Focus Anchor". Built using the ESP32-S3-BOX-3, it provides essential tools: a specialized Pomodoro timer, a Dynamic task manager, and health reminders, all of which have been integrated into a sleek, professional interface. It isn't just a table clock; it’s a dedicated device in a smart home designed to reclaim your attention.
Circuit DiagramThe core innovation of Desk32 lies in its integrated hardware architecture, which completely eliminates the "spaghetti wiring" typically found in hobby projects and prototypes. Instead of using messy jumper wires and breadboards, the ESP32-S3-BOX-3 communicates with the Sensor Dock via a high-speed, internal PCIe x1expansion connector. This single, high-density header manages the entire interface for the LCD, the I2C bus for environmental sensors, and a robust power delivery path from the 18650 Li-ion battery. By utilizing this professional-grade interconnect, the device achieves a level of signal integrity and physical reliability impossible to reach with traditional wiring, resulting in a project that functions as a single, cohesive unit.
By docking the display module into the sensor base, we instantly establish a robust electrical path for both data and power without a single external cable.
Internal Architecture & ConnectionsThe above image provides a detailed technical reference for the internal connections and component layout of the sensor dock, highlighting the integrated power path and expansion headers. (Credit: Espressif Systems GitHub)
Modular Hardware IntegrationThe above image demonstrates the plug-and-play nature of the Desk32, where the display module is simply slotted into the sensor dock to establish a secure, wire-free hardware connection. (Credit: Espressif Systems GitHub)
Hardware AssemblyStep 1: Preparing the Sensor Dock BaseThe first step involves preparing the ESP32-S3-BOX-3-SENSOR dock. This dock serves as the electrical and physical foundation for the "Focus Anchor". Familiarize yourself with the layout, specifically the high-density expansion connector at the top and the battery compartment at the bottom. This dock is what enables the device to be completely wire-free, housing all the necessary power management and environmental sensors in one unit.
A technical overview of the sensor dock base, highlighting the integrated 18650 battery holder and the PCIe x1 expansion header. (Credit: Espressif Systems GitHub)
Step 2: Battery Installation for PortabilityTo achieve true portability, insert a high-quality 18650 Li-ion battery (2000-3000 mAh) into the holder located on the underside of the dock. This specific choice of hardware is what gives Desk32 its impressive 8-10 hour battery life. The onboard charging circuit allows you to keep the device plugged into USB-C while working, but the battery ensures that your Pomodoro cycle isn't broken if you need to move to a different room or a cafe.
CAUTION: Always double-check that the positive (+) and negative (-) terminals of your battery match the markings inside the sensor dock holder before switching the device on.
It was tested that
At 100% Brightness - 8 hours runtime
At 50% Brightness - 10 hours runtimeStep 3: Snap-Fit Module Integration
This is where the "magic" of the integrated architecture happens. Align the main ESP32-S3-BOX-3 display module with the expansion connector on the top of the sensor dock. Ensure the pins are centered and press down firmly but gently. This single "docking" action replaces dozens of jumper wires. This seamless connection is vital for maintaining the smooth UI experience we designed.
Once docked, toggle the physical power switch to the "ON" position. You should see the custom "Desk32" loading screen appear.
NOTE: If the device does not turn on instantly, don't worry this is a safety feature of the Power Management IC. Simply toggle the switch Off and then back On to turn on the device. (This happens when you are using a 18650 battery)Code Explanation1. Library Integration & System Porting
The code begins by including essential drivers for the display and touch interface. We utilize lvgl_v8_port.h to bridge the LVGL graphics library with the ESP32-S3's hardware.
You must also install the following libraries via the Library Manager with all dependencies:
- LVGL (v8.3.x) (by Kisvegabor) - The core graphics engine.
- ArduinoJson (by Benoit Blanchon) - For parsing weather data.
- ESP Panel (by Espressif)- For hardware-specific display and touch drivers.
- NTP Client (by Fabrice Weinberg) - For updating time via NTP servers.
Also you need to have the following delete the lvgl, ui folders and lv_conf.h file located at Documents\Arduino\libraries\ and paste the lvgl, ui folders and lv_conf.h file from the github page (Link).
After this you can upload the code by using Arduino IDE by choosing ESP32 S3 Box in the list of available boards.
The project relies on a stable internet connection to fetch real-time data. We use the WiFi.h and time.h libraries to connect to your local network and synchronize with NTP (Network Time Protocol) servers.
This ensures the Desk32 clock remains accurate to the second, which is also critical for the Pomodoro engine and the integrated calendar.
3. Real-Time Weather via JSON ParsingTo display environmental data, the device performs an HTTP GET request to the OpenWeatherMap API. We use ArduinoJson to parse the incoming data stream and extract temperature and humidity values.
The fetchWeather() function is executed every 15 minutes to prevent unnecessary network traffic and save battery power.
4. Dynamic Task ManagementThe Task List is highly interactive. When a user enters text, addTaskToUI() dynamically creates new LVGL objects (checkboxes and buttons) and attaches them to a scrollable container.
5. The Pomodoro EngineThe main loop monitors the pomoRunning state. If active, it decrements the timeLeft variable every 1000ms and updates the visual arc and labels.
Once the timer hits zero, the code automatically switches from "Focus Mode" to "Break Mode, " cycling the totalTime between 25 and 5 minutes respectively.
Designing the UI with Squareline StudioTo bridge the gap between high-level design and embedded C code, I utilized SquareLine Studio, a professional visual drag-and-drop UI editor specifically optimized for LVGL. This tool allowed me to focus on the Design Thinking aspect of the project—ensuring the "Focus Anchor" felt intuitive and minimalist—without getting bogged down in the manual coordinate-mapping of hundreds of UI elements. Once the design was finalized, SquareLine Studio generated the highly optimized C files that drive the animations on the ESP32-S3-BOX-3. All these generated UI files, along with the main project logic, are available for review in the Desk32 GitHub Repository
While the current version of Desk32 is a fully functional "Focus Anchor", the ESP32-S3-BOX-3 architecture provides a massive amount of untapped potential.
The current Arduino IDE based setup is good for quick and rapid development but by using ESP-IDF more features can be implemented. The hardware is designed to scale, and I have several planned upgrades to further enhance the user experience:
- Local Voice Control: Utilizing the integrated dual-microphone array and the ESP-SR framework, I aim to implement hands-free controls. This would allow users to start a Pomodoro session or add a task simply by speaking, keeping them in a "flow state" without needing to touch the screen.
- SD-Card Persistence: To ensure that your goals aren't lost during a reboot, I plan to leverage the Micro-SD slot on the sensor dock. This will allow the Task List to be saved into a local CSV or JSON file, providing non-volatile storage that survives power cycles.
- Context-Aware Environmental Logic: The onboard sensors for temperature and humidity offer a unique opportunity for indoor weather monitoring. Future firmware could automatically trigger a "Health Break" or "Ventilation Alert" if ambient air quality drops to levels that impair cognitive focus, truly making Desk32 an intelligent guardian of your workspace.
Building Desk32 was more than just a technical exercise; it was a personal mission to reclaim my focus. By moving away from a "distraction-first" workflow centered around smartphones and towards an "intent-first"workflow centered around this dedicated hardware anchor, I found a significant boost in my own productivity during my exam season. The physical presence of the device on my desk serves as a constant, silent reminder of my current goals.
This project is an Open Source Initiative released under the GPL v3 license. I believe that tools for self-improvement should be accessible to everyone. I invite fellow students, developers, and makers to visit the GitHub repository, and adapt Desk32 to their own unique study habits. Together, we can build better tools to navigate our increasingly distracted digital world.















Comments