When transforming a simple mechanical kitchen timer into a smart device using an ESP32 microcontroller, OLED display, rotary encoder, and Home Assistant integration, the added features like preset times, internet connectivity, and motion sensor automation can technically replace the original device's functionality, but the increased complexity of wiring, configuration, and additional components may not justify the effort for such a simple everyday object, demonstrating that smart home projects should carefully weigh feature benefits against implementation complexity.
Deep Dive
Prerequisite Knowledge
- No data available.
Where to go next
- No data available.
Deep Dive
I tried over-engineering a 100-year old device... and I FAILED?!?
Added:This is a mechanical kitchen timer invented 100 years ago in 1926 and today I'll show you how I transformed it into a smart device that can truly simplify our lives even though building it wasn't easy.
Hi, I am Nicer Giovanni and welcome back to my channel.
If we think about it from 1926 to today, timers have remained practically the same. You set a time and once those minutes have passed the timer rings, nothing more. Even digital timers basically work the same way without any additional features. But today we could do much more. For example, having a preset times that we can start by simply pressing a button or showing the current time taken from the internet and even other data like the outdoor temperature.
This way a simple kitchen timer becomes a useful device in everyday life giving us information and interacting with our home.
Normally the display shows the time, date and temperature along with the welcome message. As soon as we turn the knob one of our preset times shown on the display is selected and all it takes is just one click to start the timer. If instead we want to set a different time, we just need to turn the knob a few more clicks.
That's all. It's extremely simple to use and with the preset times we have our favorite pasta cooked to perfection with just one click.
The integration with Home Assistant then makes the timer integrated with our home and controllable from the app on our phone.
For example, we can receive a notification when the time is up or Alexa can announce that the dinner is ready. Today we'll see how I made this project and how maybe I failed. But now let's get started.
The heart of this project is the display where we see the remaining time and other information like the current time and temperature.
I decided between e-paper and LCD. In the end I ordered a new LED display.
The one I chose is 256 by 64 pixels. A bit more expensive than the classic Arduino displays, but much larger and therefore highly visible.
Thinking back, it wasn't a good choice, but we'll get to that in a moment.
To manage the timer and show the information on the display, a microcontroller was needed.
The easiest choice seemed to be an Arduino, but having little memory it would have been difficult to manage such a large display.
So, I chose an ESP32, which is faster and has integrated Wi-Fi connection.
Very useful for getting the time from the internet and showing data from other sensors. For example, the temperature from a weather station.
To do a first test, I had to connect the display to the ESP32.
First, I connected the power with 3.3 volts and GND.
To communicate with the display, the ESP32 uses the SPI protocol. So, I connected five of the ESP32 pins to the display connector following this diagram.
Once the connections were made, I connected the ESP32 to the computer and uploaded an example from the U8g2 library.
The code uploaded without any problems, but the display wouldn't turn on.
After hours spent checking the connections and the code, I saw the jumpers behind the display. From the table, we see that to use the SPI protocol, you need to bridge the pads of R5 and R8 leaving R6 and R7 open.
This time, the display worked perfectly showing this nice message "Hello World".
At this point I could start thinking about an enclosure to mount the ESP32 and the display.
As usual I made a 3D design in Fusion and when I was happy with the result I sent it to the 3D printer.
The timer consists of two parts, a base which I printed in grey PLA and a front part for which I used a red PLA.
In the base we have a two holes where I placed the two threaded inserts which will be used to screw on the front part.
On the front we have a space to mount the display which I secured with hot glue.
Still we were missing a way to set the timer.
Using buttons like plus and minus to set the minutes would have forced us to press a button many times to reach the desired time.
We needed a system that was more immediate to use so I chose an encoder.
To connect it to the ESP32 we need to provide the 3.3 volts power and two pins for the signal.
With a few lines of code on the serial monitor we see the value read by the encoder which is increased or decreased with every click.
The encoder also has a button which I connected to another pin of the ESP32.
Before mounting it on the front panel I removed the jumper connectors from the encoder's PCB and I directly soldered five wires.
Now it was finally time to connect the various components to the ESP32 and that's where my sponsor JLCPCB comes into play.
JLCPCB is a professional manufacturer of custom printed circuit boards producing one to eight layer PCBs starting at just $2 and ready in as little as 24 hours.
Once the PCB was designed, placing the order was very simple. I just had to upload the Gerber files and select the different parameters such as color or finish to get an instant quote and proceed with the purchase.
In less than a week, the PCBs were at my home, ready to be assembled.
The build quality is truly excellent and the finish on the words is perfect.
For my project, I chose a two-layer PCB, but for more advanced project, JLCPCB also manufactures six-layer PCBs and beyond.
Right now, by clicking on the link in the description, you can get a $30 discount code on your first order of six-layer PCBs, which then start at just at $2.
At this point, I could assemble the PCB.
So, I positioned the ESP32 and some JST connectors to connect the display, the encoder, and the power, and then soldered all the components from the back of the board.
To connect the display, I used the jumper connectors, to which I soldered the wires necessary for the SPI connection.
On the display and encoder cables, I mounted JST connectors following the connections shown on the PCB.
To do this, I used a crimping tool made specifically for these connectors, which gives a very professional result.
At this point, I could secure the PCB into the base of the timer using four M3 screws.
Yet, what is perhaps the most important part of a timer was still missing, the ringtone.
To make it, I used a passive buzzer, which can play different sounds based on the frequency it is driven with.
This way, we can even play very simple tunes. And remembering my middle school music lessons, I managed to get these.
I also mounted a connector on the buzzer wires to connect it to the PCB, and then I fixed it into the base of the timer with hot glue.
The last free connector is the one for the USB C port, from which the timer will get the power.
In addition to the positive and negative of the 5-V power supply, I also connected two wires to the D+ and D- pins, and later we will see what they are for.
I then connected the USB C port to the circuit board, and then I fixed it with two screws.
At this point, the timer was 99% ready, so it was time to write the code for the ESP32.
The code has to handle managing the display and the encoder, the basic functions of a timer, and the Wi-Fi connection to get the current time.
To this, I also added the MQTT integration with Home Assistant, which allows us to create automations based on the state of the timer, and also to control it from Home Assistant.
Once the code was written with a lot of help from AI, I uploaded it to the ESP32. But before testing it, we have to close the 3D printed enclosure, and well, it doesn't close.
The sides of the base, in fact, collide with the display, but luckily I could just slightly modify the part and managed to close everything without problems.
At this point, the timer seemed completed, but a small accessory was still missing.
In fact, choosing an OLED display may not have been a good idea, because of display wear out the quickly if they stay on all the time.
So, we needed a way to turn off the display when it's not needed, meaning when there's no one in the room.
If you remember to the USB-C port, I also brought the 3.3 volts and a pin of the ESP32.
My idea is to use them to connect a motion sensor using the cable that also carries the power supply.
This sensor will be exposed in Home Assistant, which through an automation will be able to turn off the display if the room is empty.
To connect the sensor to the USB cable, I made another PCB on which I soldered a three-pin JST connector.
To the PCB, I also connected the USB type A port and the USB cable that I cut to get the 5-V power supply.
Then, I designed and 3D printed a box for mounting the USB port and this circuit board, which I secured with a JST connector matching the hole.
I closed the box with two screws, and now it was time to prepare the PIR sensor.
Do you remember this project? I had used the same exact sensor, so I just needed to reprint its adjustable support and assemble it.
I soldered a three-pin cable to the sensor, and on the other end I mounted the JST connector.
I connected the sensor to the PCB, and then I connected the timer using a USB-C cable.
Finally, I powered the circuit with a 5-V USB charger.
Immediately, the display turns on, and after a few seconds, the time, date, and outdoor temperature taken from Home Assistant are shown.
By turning the encoder, we can set a timer, but first, it's time to bring everything into the kitchen.
To fix the timer to the wall, I used a double-sided tape, and then I run the USB cable behind the cabinets until reaching the box where the sensor connects, which I positioned up high.
I also installed the motion sensor above the cabinets, where it will be able to detect when someone enters the kitchen.
Finally, I turn on the power, and everything seems to work great.
So, I tried setting a timer.
By turning the encoder, we can select one of four preset times. While going further, we can set a custom time.
By holding down the button, we enter a settings page, where we can overwrite one of the preset time with the one we chose.
Instead, with a single click, the timer is started, and we go to the countdown page, where we also see the end time.
When the time finishes, the buzzer sounds, and yet fun programming a few musical tunes.
>> [bell] >> From Home Assistant, we can manage all functions, like setting a timer or turning off the display.
Even more interesting is the fact that we can make automations based on the state of the timer, like receiving a notification or an announcement on an Amazon Echo when the time is up.
Everything works great, but can it really replace the old mechanical timer?
Well, if we look at the features, the answer is definitely yes. But, if we think about practicality, maybe that's exactly where I failed.
To replace such a simple object, I had to run cables, configure Home Assistant, and add a motion sensor just to avoid destroying the display.
This, however, applies to almost all smart home devices. They simplify something but bring along a huge complexity which maybe is exactly the fun part.
Meanwhile, this video has come to an end and as always I thank you for watching it to the end. If you have any ideas on how to improve this project, leave them in the comments and I'll see you in the next video.
Related Videos

Setting up a curved screen with Immersive Calibration Pro 4 and multiple cameras (P3D v4)
FlyerOneZero
23K views•2019-07-21

Robot Learning with Sparsity and Scarcity
allenai
379 views•2025-10-14

Jorge Mendez-Mendez: Unlocking Lifelong Robot Learning With Modularity (2023-10-05)
umassmlfl
237 views•2024-01-06

Northwestern’s MS in Robotics: Student Robotics Projects, 2023
NorthwesternEngineering
1K views•2024-05-31

"Perfect" Turns: Turning by the Gyro - FIRST LEGO League (FLL) SPIKE Prime + EV3 RePlay Programming
ZacharyTrautwein
94K views•2020-10-02

Gorkem Secer: TSLIP-based Deadbeat Running Control of Bipedal Robot ATRIAS
DynamicWalking-wv6qm
298 views•2018-06-22

Self-Driving Cars Need Lessons On Human Drivers | Maddie About Science
skunkbear
26K views•2018-08-21

Milrem Robotics’ THeMIS UGVs used in a live-fire manned-unmanned teaming exercise
MilremRobotics
99K views•2021-05-20
Trending

2.4 BILLION Records Got Leaked...
DeepHumor
15K views•2026-07-22

Playstation NO DISC/NO BUY Fight Is Over...
DavidJaffeGames
4K views•2026-07-23

Should I buy a Sawmill?
essentialcraftsman
29K views•2026-07-22

Americans Confused in Australia for 17 Minutes Straight
IWrocker
17K views•2026-07-23