ESP32 based DIY word clock project

Overview

Wordclock

ESP32 based DIY wordclock project

TL;DR: check out this demo video


Another take on the classic DIY word clock. This one requires a laser cutter but promises a very clean result and is quite cheap to make (about 50 €) while being feature packed with its 11x10 RGB LED matrix, RTC module (time setting survives power loss), light sensor, WiFi connectivity and more.

This project was designed for the tools available in our makerspace. The largest square that can be cut in an Epilog Mini laser cutter is approximately 30x30cm, so the clock is designed around that constraint.


Table of Contents

Project overview

Hardware

Building the clock from scratch involves mostly laser cutting and soldering. It is not technically challenging if you have basic soldering skills (and access to a laser cutter), but it does take time on both fronts. The project's hardware can be broken down in 3 major elements:

  • The faceplate is a glass panel from a cheap picture frame, that is spray painted on its back, then laser etched to mark the letters. The templates and instructions are located in the faceplate subdirectory.
  • The frame is a sandwich of laser-cut MDF boards. If could also be done with CEC or 3d printing. It holds everything together and most importantly the LED matrix. It has little wells for each LED to channel the light to the letters on the faceplate. The templates and assembly instructions are located in the frame subdirectory.
  • The electronics revolve around a WiFI enabled ESP32 development board and a matrix of 114 LEDs made from an LED strip. There is also an RTC module to keep track of time, and a light sensor (LDR). The schematics and instructions for assembly are located in the electronics subdirectory.

You can oviously choose to customize any of the provided templates to eg create a different faceplate, or adapt the frame to your specific needs (change the LED layout, add extra sensors, etc).

Software

The provided source code is using Arduino IDE with the arduino-esp32 library and a few others. It runs a web server though a WiFi captive portal in order to easily configure the clock from a computer or smartphone, and perform OTA firmware update (demo video).

It is, of course, possible to ditch that code entirely and use ESPHome or MicroPython instead.

Bill Of Materials

Electronics

Designation Sample purchase link Price
ESP32 (WROOM32) microcontroller amazon.fr 5,99 €
DS3231 RTC module amazon.fr 3,66 €
Level shifter 3.3 -> 5v amazon.fr 0,80 €
RGB addressable LEDs (WS2812), 60 per meter, 2 meters roll aliexpress.com 4,17 €
1000 uF capacitor amazon.fr 0,40 €
Power supply (5V, 6A) aliexpress.com 6,99 €
Female barrel plug amazon.fr 0,86 €
Light dependent resistor (LDR 5537) amazon.fr 0,08 €
Resistor 10k
Perfboard conrad.fr 3,36 €
Breakaway header pins amazon.fr 0,14 €
Wiring (silicon coating is recommended)
Solder
Kapton + Electrical tape
Heatshrink tubing
Hot glue gun + glue sticks

Frame

Designation Sample purchase link Price
MDF boards, ~30.5 cm by 30.5+ cm, 3mm and 6mm thick 615mm x 310mm boards, cut at Leroy Merlin 5€
Picture frame with glass panel, 30 by 30 cm leroymerlin.fr 2,99 €
Wood glue
Clamps
Spray paint (acrylic)
Edgeband
1mm black felt layer amazon.fr 1,11 €
Ultra low profile VELCRO® strip or similar amazon.fr 26 €
Black adhesive vinyl (just a small sheet)
Copper tape 51mm X 20m (optional) amazon.fr 18,98 €
You might also like...
A simple DIY project that will make oldschool POCSAG pagers/beepers work again
A simple DIY project that will make oldschool POCSAG pagers/beepers work again

Arduino POCSAG Transcoder Features Message types: Tone, Numeric, Alphanumeric 4 encodings: Latin, 2xLatin/Cyrillic, Cyrillic Data rates: 512, 1200, 24

My DIY 3 Axis Camera Slider Project
My DIY 3 Axis Camera Slider Project

3Axis Camera Slider My DIY 3 Axis Camera Slider Project Authors NEWTech-Creative * Myles Newton GitHub YouTube Original project inspiration from * Raj

ESP32 + GitHub Actions + Husarnet. A boilerplate project for ESP32 allowing in-field firmware update using GitHub Actions workflow.

esp32-internet-ota ESP32 + GitHub Actions + Husarnet. A boilerplate project for ESP32 allowing in-field firmware update using GitHub Actions workflow.

On-device wake word detection powered by deep learning.
On-device wake word detection powered by deep learning.

Porcupine Made in Vancouver, Canada by Picovoice Porcupine is a highly-accurate and lightweight wake word engine. It enables building always-listening

Import of the DIY Dynamic Template v2, retrieved from the Internet Archive
Import of the DIY Dynamic Template v2, retrieved from the Internet Archive

Dynamic Templates This is a copy of the D*I*Y Planner Dynamic Template application that was posted to diyplanner.com/node/6210 back in 2009,

DIY LCD touchscreen for Home Automation
DIY LCD touchscreen for Home Automation

HA SwitchPlate HASPone The HASPone is a DIY touchscreen controller you can mount into a standard North American work box. It connects to your home aut

Arduino firmware for DIY haptic gloves. Officially compatible with LucidVR gloves.

lucidgloves-firmware This repo contains the arduino firmware as well as the STL files for Prototype 3 of the LucidVR glove prototype. This is a finger

DIY Zigbee CC2530 Motion sensor (AM312/ AM412/ BS312/ BS412), Temperature /Humidity /Pressure sensor (BME280), Ambient Light sensor (BH1750), 2.9inch e-Paper Module
DIY Zigbee CC2530 Motion sensor (AM312/ AM412/ BS312/ BS412), Temperature /Humidity /Pressure sensor (BME280), Ambient Light sensor (BH1750), 2.9inch e-Paper Module

How to join: If device in FN(factory new) state: Press and hold button (1) for 2-3 seconds, until device start flashing led Wait, in case of successfu

DIY Zigbee CC2530 Motion sensor (AM312/ AM412/ BS312/ BS412), Temperature /Humidity /Pressure sensor (BME280), Ambient Light sensor (BH1750), 2.9/2.13/1.54 inch e-Paper Module
DIY Zigbee CC2530 Motion sensor (AM312/ AM412/ BS312/ BS412), Temperature /Humidity /Pressure sensor (BME280), Ambient Light sensor (BH1750), 2.9/2.13/1.54 inch e-Paper Module

How to join: If device in FN(factory new) state: Press and hold button (1) for 2-3 seconds, until device start flashing led Wait, in case of successfu

Comments
  • Only 3 Leds light up (5, 6 and 7 in the chain)

    Only 3 Leds light up (5, 6 and 7 in the chain)

    Hi,

    I flashed the code to a Wemos D1 mini ESP32. I was able to connect to the Webserver and integrate it into my local WIFI Network. However, the only thing that changes is the LED color (if changed over the Webserver page). All other changes (show am/pm, changing the time manually or retrieving it over a time server) remain without any effect. Always the same 3 LEDs light up.

    What could be the issue here?

    opened by gordonBimig 8
  • Can't compile the code.

    Can't compile the code.

    Great project, i like it a lot I can't get it to compile though... I get the following when i try to compile the provided code. I am probably missing something and not seeing it.

    In file included from /Users/rilindnuka/Documents/personal/wordclock/software/wordclock/wordclock.ino:9:0: /Users/rilindnuka/Documents/personal/wordclock/software/wordclock/src/Iot.h:64:3: error: 'IotWebConfParameter' does not name a type IotWebConfParameter ntp_enabled_param_; ^ /Users/rilindnuka/Documents/personal/wordclock/software/wordclock/src/Iot.h:69:3: error: 'IotWebConfParameter' does not name a type IotWebConfParameter timezone_param_; ^ /Users/rilindnuka/Documents/personal/wordclock/software/wordclock/src/Iot.h:74:3: error: 'IotWebConfParameter' does not name a type IotWebConfParameter manual_date_param_; ^ /Users/rilindnuka/Documents/personal/wordclock/software/wordclock/src/Iot.h:79:3: error: 'IotWebConfParameter' does not name a type IotWebConfParameter manual_time_param_; ^ /Users/rilindnuka/Documents/personal/wordclock/software/wordclock/src/Iot.h:84:3: error: 'IotWebConfParameter' does not name a type IotWebConfParameter show_ampm_param_; ^ /Users/rilindnuka/Documents/personal/wordclock/software/wordclock/src/Iot.h:89:3: error: 'IotWebConfParameter' does not name a type IotWebConfParameter ldr_sensitivity_param_; ^ /Users/rilindnuka/Documents/personal/wordclock/software/wordclock/src/Iot.h:94:3: error: 'IotWebConfParameter' does not name a type IotWebConfParameter color_param_; ^ /Users/rilindnuka/Documents/personal/wordclock/software/wordclock/src/Iot.h:99:3: error: 'IotWebConfSeparator' does not name a type IotWebConfSeparator time_separator_; ^ /Users/rilindnuka/Documents/personal/wordclock/software/wordclock/src/Iot.h:100:3: error: 'IotWebConfSeparator' does not name a type IotWebConfSeparator display_separator_; ^ exit status 1 Error compiling for board ESP32 Dev Module.

    opened by rilindnuka 2
Owner
null
Console game in which you are required to say the color of the word, not what the word says.

ENG УКР (ENG)Stroop - Train reaction and play at one time Desctiption Stroop - is a console game in which the user has to say color of the word, not t

Yura Shymon 2 Sep 22, 2022
It creates a random word by mixing two English common words into a single one, each one with the first character in capital letter. It also allow you to scroll down infinitely without repeating the same word twice.

startup_namer A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you started if

Samuel Cobas 2 Feb 3, 2022
Satellite clock/decoupled clock estimation and PPP-AR

Cube Cube is a secondary development based on RTKLIB and mainly composed of two modules, satellite clock/decoupled clock estimation (the server end) a

null 16 Sep 20, 2022
Flutter-Clock-and-Reminder-App - a highly functional clock and reminder app developed on flutter framework.

clock_app A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you started if thi

Umar Baloch 6 Aug 4, 2022
ESP32 based Desktop Clock

ESP32_Desktop_Clock ESP32 based Desktop Clock This ESP32 internet of things desktop clock is a project created for my home. School has started and fal

Mike Rankin 77 Jan 4, 2023
Arduino/ESP32 firmware for DIY haptic gloves. Officially compatible with LucidVR gloves.

Arduino/ESP32 firmware for DIY haptic gloves. Officially compatible with LucidVR gloves.

null 1.6k Jan 8, 2023
ESP32-Skid-Steer - Bruder Catepillar Skid Steer model converted to RC, controlled by an ESP32 with 2 analog joysticks and a receiver that is an ESP32 on the model.

ESP32-Skid-Steer Bruder Catepillar Skid Steer model converted to RC, controlled by an ESP32 with 2 analog joysticks and a receiver that is an ESP32 on

null 6 Oct 27, 2022
An NTSC/PAL version of the 80s Dali Clock for the ESP32

esp32-dali-clock This is an ESP32 recreation of the "Dali" digital clock where the digits "melt" into one another. Watch a full demonstration on YouTu

Marcio T. 97 Oct 31, 2022
A ESP32 clock / display using 64x32 HUB75 panels.

ESP32 HUB Panel A ESP32 clock / display using 64x32 HUB75 panels. This is a very hacky code that will display a clock in two 64x32 HUB75 LED Matrix Pa

Lucas Teske 20 Dec 12, 2022
An extremely basic Python script to split word-based data into high and low byte files.

An extremely basic Python script to split word-based data into high and low byte files. This is for use in programming 16 bit computer ROMs.

null 2 Dec 2, 2022