element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet & Tria Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • About Us
    About the element14 Community
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Japan
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      •  Vietnam
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
Spring Clean!
  • Challenges & Projects
  • Project14
  • Spring Clean!
  • More
  • Cancel
Spring Clean!
Spring Clean Projects 2026 From Forgotten Parts to a Daily Tool
  • News and Projects
  • Forum
  • Members
  • More
  • Cancel
  • New
Join Spring Clean! to participate - click to join for free!
  • Share
  • More
  • Cancel
Group Actions
  • Group RSS
  • More
  • Cancel
Engagement
  • Author Author: AngelSoto
  • Date Created: 31 May 2026 10:11 PM Date Created
  • Views 371 views
  • Likes 6 likes
  • Comments 13 comments
  • esp32
  • oled
  • wifi
  • reuse
  • 3D Printing
  • spring-clean
Related
Recommended

From Forgotten Parts to a Daily Tool

AngelSoto
AngelSoto
31 May 2026
Time Tracker

Spring Clean 2026 - From Forgotten Parts to a Daily Tool

Presentation

Figure 1: Final desktop workday tracker built from previously unused hardware.

You don't have permission to edit metadata of this video.
Edit media
x
image
Upload Preview
image

Figure 2: Demonstration of the finished device registering workday events.

1. Introduction

As an engineer, I could build many things just for the sake of building them: Robots, gadgets, sensors, IoT devices... But the projects that give me the most satisfaction are always the ones that solve a real problem the moment it appears. This project was born from a very simple need: keeping track of my working hours.

I wanted something permanently available on my desk. No apps. No subscriptions. No cloud services. No distractions.

Just a dedicated device where I could quickly register the key events of my workday.

At the same time, I had several forgotten components sitting unused in drawers:

  • A matrix keypad that I had bought years ago and never used.
  • A small SPI OLED display that I had unsuccessfully experimented with using Arduino.
  • An ESP32 development board that had recently become my playground for learning Embedded C and FreeRTOS.

Individually, all of them worked. Together, they had never become a real project.

When the Spring Clean competition appeared, it felt like the perfect excuse to revisit this forgotten hardware and finally give it a purpose.

What started as a cleanup exercise ended up becoming a fully functional embedded product that I now use every day.

ForgottenSPIOLEDForgottenHW

Figure 3: The forgotten hardware that inspired this project — an SPI OLED display, a matrix keypad and an ESP32 development board waiting for a real purpose.

2. The Original Situation

Like many engineering projects, this one started with enthusiasm and then slowly stopped evolving.

The hardware existed.
The ideas existed.
The software partially existed.
But nothing was truly finished.

The OLED display had been tested.
The keypad had been connected.
The ESP32 was already running various experiments.

Everything was scattered across multiple unfinished tests and temporary code.

The project suffered from:

  • Messy firmware architecture
  • Tight coupling between modules
  • Experimental OLED code
  • Fragile storage handling
  • Temporary wiring
  • No enclosure
  • Large numbers of compiler warnings
  • Inconsistent code quality

Eventually, it became another abandoned prototype.

Spring Clean gave me the motivation to finally finish it properly.

3. The Goal

The objective was intentionally simple.

Create a dedicated desktop device capable of recording the main events of a workday.

The keypad allows registering:

  • Start of workday: A key (Spanish message: "Entrada")
  • Start of lunch break: B key (Spanish message: "Salida Comida")
  • End of lunch break: C key (Spanish message: "Entrada Comida")
  • End of workday: D key (Spanish message: "Salida")

Every event is timestamped automatically and stored permanently.

No phone.
No browser.
No notifications.
No distractions.

Just a purpose-built tool.

The device also includes a manual correction mode for situations where I forget to register an event at the correct time.

Manual mode is activated using the E key.

The workflow is intentionally simple:

  1. Press E to enter manual mode.
  2. Press the event key (A, B, C or D).
  3. Enter the desired time using four digits in HHMM format.

For example, entering:

E A 0800

creates a manual "Entrada" event at 08:00 even if it was entered later in the day.

This feature allows correcting forgotten entries while keeping the device simple and entirely keypad-driven.

4. Reused Hardware

One of the things I like most about this project is that it was built almost entirely from hardware I already owned.

4.1. Main Components

The hardware used in this project was intentionally simple:

  • ESP32 DevKit
  • Matrix keypad
  • SPI OLED display
  • Existing cables and connectors
  • Custom 3D printed enclosure

No new electronics were purchased specifically for this build.

The challenge was transforming forgotten hardware into something genuinely useful.

BreadBoard

Figure 4: Early breadboard prototype used for firmware and hardware validation.

5. Hardware Integration

The final step was designing and printing a dedicated enclosure.

The enclosure integrates:

  • OLED display
  • Matrix keypad
  • ESP32 board
  • Internal wiring

This transformed the project from a collection of development boards into a standalone embedded device.

Several iterations were required to:

  • Align the OLED correctly
  • Fit the keypad dimensions
  • Improve cable routing
  • Simplify assembly

The result is compact, portable and robust enough for daily use.

EnclosureDesignBase

Figure 5: Initial enclosure design used to define the overall mechanical layout.

EnclosureDesignBaseKeyPadFitting

Figure 6: Keypad integration and dimensional validation during enclosure development.

EnclosureDesignWithLid

Figure 7: Complete enclosure design including the removable top cover.

AssembledWithoutLid

Figure 8: Internal assembly showing component placement and wiring.

Final

Figure 9: Finished device ready for daily operation.

6. Firmware Architecture

The firmware was completely reorganized using a modular architecture.

6.1. Main Modules

The firmware was organized into independent modules:

  • wifi
  • keypad
  • oled
  • storage
  • ntp
  • httpServer
  • common

The system runs on FreeRTOS and uses tasks and synchronization primitives to keep the application responsive.

6.2. Features

  • Event-driven Wi-Fi management
  • Automatic network retry
  • Persistent CSV logging
  • HTTP log download
  • OLED framebuffer rendering
  • NTP synchronization
  • Concurrent task execution

Modules

Figure 10: High-level firmware architecture showing the main software modules.

7. Wi-Fi System

One of the largest improvements was the Wi-Fi subsystem.

The device now:

  • Tries multiple configured networks
  • Automatically reconnects
  • Handles disconnect events
  • Waits for valid IP acquisition
  • Uses FreeRTOS event groups

This transformed what was once a fragile connection mechanism into a reliable subsystem suitable for daily use.

8. The Unexpected OLED Challenge

One of the most interesting surprises came from the OLED display.

The display was not fully functional. Part of the visible area was damaged and unusable. Replacing it would have been the easiest solution.

Instead, I decided to adapt the software. I mapped the remaining functional area of the display and redesigned the rendering layer so that all drawing functions automatically respect the usable region.

As a result:

  • The application never attempts to draw outside the valid area.
  • The OLED abstraction hides the hardware limitation.
  • The rest of the firmware remains completely unaware of the display damage.

This ended up becoming one of the most satisfying engineering challenges of the entire project.

DamagedOLED

Figure 11: Damaged OLED display used during development. The software was adapted to operate only within the functional display area.

FunctionalOLED1

Figure 12: Functional OLED rendering after adapting the software to the usable display region (Example 1).

FunctionalOLED2

Figure 13: Functional OLED rendering after adapting the software to the usable display region (Example 2).

FunctionalOLED3

Figure 14: Functional OLED rendering after adapting the software to the usable display region (Example 3).

9. Storage and HTTP Logging

Events are stored inside SPIFFS as CSV files.

Example:

2026-05-22 08:01:00,Entrada
2026-05-22 13:12:00,Salida comida
2026-05-22 14:05:00,Entrada comida
2026-05-22 18:10:00,Fin jornada

The device also includes a lightweight HTTP server exposing:

  • Current status
  • Downloadable logs
  • JSON information

This allows the device to be monitored directly from a browser.

Log.csv

Figure 15: CSV event log generated and stored in SPIFFS.

10. Software Quality Improvements

One of my goals was not only making the device work, but making the code maintainable. During development I spent a considerable amount of time improving software quality.

Actions included:

  • Refactoring modules
  • Improving naming consistency
  • Reducing compiler warnings
  • Cleaning legacy code
  • Adding Doxygen documentation
  • Improving API separation
  • Running static analysis

The project now builds with aggressive warning levels enabled and has a much cleaner structure than the original prototype.

11. Results

What began as a collection of forgotten components became a complete embedded product.

The project now provides:

  • Dedicated hardware interface
  • Reliable Wi-Fi connectivity
  • Persistent storage
  • HTTP access to records
  • OLED user interface
  • Custom enclosure
  • Maintainable firmware architecture

Most importantly:

I actually use it.
And for me, that is the best indicator of success.
A project stopped being a prototype and became a useful tool.

12. Final Thoughts

Spring Clean 2026 gave me the excuse to revisit hardware that had been sitting unused for years.

The keypad finally got a purpose.
The OLED finally became useful.
The ESP32 evolved from a development platform into a finished product.

More than cleaning a drawer, this project was about finishing something that deserved to be finished. Sometimes the most rewarding engineering projects are not the most complex ones. They are the ones that solve a real problem and end up being used every day.

Thanks for reading.

  • Sign in to reply

Top Comments

  • dang74
    dang74 2 months ago +1
    I like how you built something tactile as opposed to an app... that is a movement I can get behind.
  • AngelSoto
    AngelSoto 2 months ago in reply to dougw

    Exactly. As I mentioned to colporteur, it's more about simplicity and convenience than precise time tracking. I just wanted a quick and dedicated way to record events without reaching for my phone or opening another app.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • AngelSoto
    AngelSoto 2 months ago in reply to colporteur

    That's a fair question.

    In my case, the objective is not productivity monitoring or performance measurement. I simply need a convenient way to record my workday events accurately, especially when working with flexible schedules.

    The project started from a personal need rather than a management initiative. I don't use it to optimize every minute of my day or analyze productivity. It is mainly a practical tool that helps me keep reliable records without depending on a phone, a browser or external services.

    What made the project interesting for me was not the time tracking itself, but turning a collection of forgotten components into something that I genuinely use every day.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • AngelSoto
    AngelSoto 2 months ago in reply to afernandez

    Thanks, Alejandro! I appreciate it.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • AngelSoto
    AngelSoto 2 months ago in reply to dang74

    Thank you!

    That was actually one of the main goals of the project. I spend enough time looking at screens during the day, so I wanted something physical that sits on my desk and does one job well. Sometimes a dedicated device is simply more convenient than opening another app.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • dougw
    dougw 2 months ago

    When time is important, you don't want to waste time with time-tracking overhead, this gizmo is a good solution...

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
<>
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2026 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube