December 10, 2025
Description
NTP clock with ESP32 D1 Mini and two 2.42" oled display for additional temperature and humidity
required:
ESP32 D1 Mini
2x Heilega 2.42" SSD1309 I2C OLED display
3mm black tinted acrylic plate 150x50mm
13x M3 short melting thread
12x M3 5-6mm screws
1x M2.5 melting thread
1x M2.5 15-16mm screw for the Sensor (Ideally, use a nylon screw and spacer, as a metal screw comes very close to the sensor components)
1x GY-SHT31-D Sensor
Double-sided adhesive tape for ESP32
Cables for internal wiring and USB connection cables
The displays are connected to the ESP32's hardware I2C port, and the I2C addresses must first be read with an I2C scanner to verify them.
The GY-SHT31-D is connected via software I2C, as I couldn't get all three devices working on a single port.
Arduino sketch is attached with weekdays in German or English, just enter SSID and password.
the time zone is for Germany, which may need to be adjusted
I've added a wiring diagram.
The displays are just placeholders for the Heilega displays because I couldn't find their Fritzing file.
The Heilega displays have two connection terminals, so you can easily connect from one to the other.
A software reset is now performed on the first day of every month at midnight.
The reason for this is that every 49 days the millis function overflows and would then be reset to 0, causing the clock to freeze and requiring a manual restart.
This should prevent that problem.
a smaler version: https://www.thingiverse.com/thing:6917546
update 26.03.2026:
I've fixed the bug where the displayed time was getting increasingly inaccurate despite regular updates.
Now, the time is updated every day at 3:30 AM and reset on the first of every month.
License:
Creative Commons - Attribution - Non-Commercial - Share Alike