ESP32 C6 Clock | Dual 8×8 Matrix + Button Controls
Obliczymy ostateczną cenę na podstawie wybranego pliku. Sprawdzisz ją i zaakceptujesz przed płatnością.
Zapisane na tym urządzeniu.
Compact ESP32-C6 bedside clock with dual MAX7219 matrices, one-button controls, Wi-Fi time sync and saved brightness.
- Ocena
- 0 / 5
- Polubienia
- 4
- Pobrania
- 10
- Wydruki
- 0
- Wyświetlenia
- 34
- Oceny
- 0
Aktualizacja u źródła:
Informacje o modelu
- Źródło
- Printables
- Kategoria
- Electronics
- Licencja
- Creative Commons — Attribution — Noncommercial — Share Alike
Minimal ESP32-C6 Bedside Clock
I designed this clock because I wanted something simple for the bedside: no permanently glowing screen, no unnecessary controls, and no bright display lighting up the room all night.
The clock uses two 8×8 MAX7219 LED matrix modules side-by-side to create a compact 16×8 display. Most of the time the matrices are completely switched off. When the button is pressed, the display wakes for a few seconds and then automatically goes dark again.
The electronics are deliberately minimal. The build uses an ESP32-C6-Zero, two MAX7219 matrix modules, one momentary metal push button, and jumper/soldered wiring. The ESP32 connects to Wi-Fi and synchronizes the time using NTP, so no separate RTC module is required.
The enclosure is designed so the wiring itself helps keep the ESP32 in place. There is no dedicated clip or screw mount for the ESP32; once the wiring is routed into the internal cable path, the cable tension and pressure hold the board securely enough in its intended location.
The included model photos show the intended cable routing and component placement and are useful during assembly.
Assembly note: The top cover slides into place and is held by a light friction fit. It is secure enough for normal use, but intentionally not too tight, so it can be removed easily for access to the electronics. The split sections of the main enclosure body should be permanently joined with glue during assembly.
Controls
Single press
Shows the current time.
Double press
Shows the current date in DD-MM format.
Press and hold for about 1.2 seconds
Enters brightness adjustment mode.
While in brightness mode, short presses cycle through four brightness presets. After a few seconds without input, the selected brightness is automatically saved to the ESP32's flash memory.
Keep holding for about 5 seconds
Forces the ESP32 to reconnect to Wi-Fi and manually synchronize the time using NTP.
Features
16×8 LED display made from two 8×8 MAX7219 modules
Display normally stays completely off
One-button interface
24-hour time display
Date display in DD-MM
Four selectable brightness levels
Brightness setting saved between power cycles
Automatic Wi-Fi/NTP time synchronization
Automatic daylight-saving-time handling
Manual NTP resynchronization
Automatic periodic resynchronization
Wi-Fi sync error indication
No RTC required
No external button resistor required
USB powered
Compact 3D-printed enclosure
ESP32 Wi-Fi disabled after synchronization
Internal cable-routing path
Pressure/tension-retained ESP32 placement
Parts list
Qty | Component | Model / specification |
|---|---|---|
1 | Microcontroller | Waveshare ESP32-C6-Zero |
2 | LED matrix modules | 8×8 red LED matrix module with MAX7219 driver |
2 | Matrix driver IC | MAX7219CNG, DIP-24 — already fitted to the modules |
1 | Push button | Momentary metal panel-mount push button, approximately 16 mm threaded mounting diameter |
1 | USB cable | USB-C cable |
— | Wiring | Jumper wire or soldered hookup wire |
1 | Enclosure | Included 3D-print files |
Important component dimensions
The model's button opening is:
16.5 mm
So the threaded/screwing section of the button should be approximately:
16 mm diameter
The display mounting-hole spacing used in the enclosure is approximately:
45 mm × 27 mm
Measure your own MAX7219 modules before printing if they are from a different manufacturer, because generic boards can vary slightly.
Wiring
ESP32-C6-Zero MAX7219 Display 1
--------------------------------------
5V / VBUS ---> VCC
GND ---> GND
GPIO 2 ---> DIN
GPIO 4 ---> CS
GPIO 3 ---> CLK
Display 1 OUT Display 2 IN
--------------------------------------
VCC ---> VCC
GND ---> GND
DOUT ---> DIN
CS ---> CS
CLK ---> CLK
Button
--------------------------------------
GPIO 5 ---- momentary button ---- GND
Assembly instructions
The order of assembly matters because the internal cable path and button mounting are easier to work with before everything is fully closed.
Mount the button to the top/front cover first. Insert the button through the 16.5 mm opening from the outside, then screw the supplied metal retaining part/nut onto the threaded section from the inside to lock the button securely in place.
Route the button wires into the main enclosure. Feed the button cables through the dedicated hole in the main enclosure. These wires pass through the enclosure and continue toward the ESP32.
Interconnect the two MAX7219 displays before placing them into the enclosure. It is easiest to connect the display-to-display wiring first, especially DOUT → DIN, along with VCC, GND, CS and CLK.
Connect the display assembly to the ESP32 before final cable routing. Once the two matrices are linked together, connect the first display to the ESP32-C6-Zero.
Route the wiring under the internal cable pathway. The model includes a pathway/channel intended to keep the wires low and organized. Arrange the wires underneath this section rather than letting them sit above the display modules.
Position the ESP32 in its intended area. The ESP32 does not have a dedicated screw mount or printed retaining clip. Instead, it sits in place due to the pressure and tension created by the routed wires. Once the wiring is arranged properly, the board should remain stable inside the enclosure.
Check the included model/reference photos if the cable routing or ESP32 position is unclear. The internal photos show the intended wiring layout and component orientation.
Test the clock before fully closing the enclosure.
Display mounting dimensions
The display modules are designed around mounting-hole center spacing of approximately:
45 mm vertically
27 mm horizontally
Check these dimensions against your modules before committing to a print if your boards are not the same style.
Printing notes
Recommended starting settings:
Material: PLA or PETG
Layer height: 0.20 mm
Walls: 3
Infill: 15–20%
Supports: depending on your slicer/orientation
Test-fit the button and display modules before final assembly
Generic MAX7219 modules can vary slightly in board dimensions and mounting-hole position, so verify your modules if they are not visually identical to the ones shown.
Firmware
The included Arduino/C++ firmware provides:
Short press → show time
Double press → show date
Hold ~1.2 sec → brightness settings
Short press in
brightness menu→ cycle brightness
No input ~3 sec → save brightness
Hold ~5 sec → manual Wi-Fi/NTP sync
The clock also automatically resynchronizes its time periodically.
Before flashing, enter your Wi-Fi details:
const char* WIFI_SSID = "YOUR_WIFI_NAME";
const char* WIFI_PASSWORD = "YOUR_WIFI_PASSWORD";
The included timezone configuration is for Greece:
const char* TIMEZONE =
"EET-2EEST,M3.5.0/3,M10.5.0/4";
If you are elsewhere, replace this with the appropriate POSIX timezone string for your location.