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 69 views
  • Likes 4 likes
  • Comments 3 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 1 day ago +1
    I like how you built something tactile as opposed to an app... that is a movement I can get behind.
  • colporteur
    colporteur 10 hours ago

    Why the need to for minutia time tracking?

    Ok let me frame the question before I get off on the wrong foot for a discussion.

    I recall in one career the employer came out with a time recording system that promised great results. After two years of recording data, the exercise was abandoned. The reported results of time to complete projects was not acceptable. The data proved the time requirements but did little to help them improve time. Many of the issues to reduce time to completion they didn't want to address. They just wanted projects completed faster.

    Another example was around booking resources. Let's day it take 10 minutes to book a boardroom and equipment. They centralized and automated the system to reduce the time to 5 minutes. Wow 5min for 12 people, that is an hour savings. If you cut off one finger from ten people, does that make a hand.

    I'm extremely cynical when it comes to time management initiatives. Some people manage time well, others not so well. If those in the others group adapt change to improve time management, it can improve. I have discovered for others it is an exercise in frustration. They don't believe they have a time management issue.

    Do you see yourself as one of the people who will change if you find 15minutes of unproductive time?

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • afernandez
    afernandez 12 hours ago

    Nice project and great results!

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • dang74
    dang74 1 day ago

    I like how you built something tactile as opposed to an app... that is a movement I can get behind.  Thumbsup 

    • Cancel
    • Vote Up +1 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.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube