Wordclock with WS2812B RGB LED modules driven by an ESP8266 module
This is my adaptation of thoralt's interpretation of the popular wordclock project:

All credits for Thoralt!!!!
this fork has all the original features:
- runs on ESP8266 (ESP-07)
- using Arduino framework
- 114 WS2812B LEDs
- WiFi connected
- WiFiManager allows for easy configuration when WiFi network is not yet configured
- NTP client regularly fetches time
- integrated web server handles configuration interface for colors, time server etc.
- automatic brightness using LDR
plus several added features
- translated to dutch
- driven by neopixelbus to prevent watchdog timer resets! This restricts the data pin to be used to be GPIO3.
- better stability (fixes for several exceptions)
- added timers/alarms
- wakeuplight function
- nightmode
- plugin available for domoticz integration
- MQTT Autodiscovery for integration in Domoticz and home assistant (no need for above plugin anymore)
- Blue correction slider to compensate for worn blue LEDs in the "het is" letters (adjustable 0-100%, scales from 1x to 5x boost)
- Download and install Visual Studio Code
- Launch VSCode after installation
- Open VSCode
- Go to Extensions (Ctrl+Shift+X)
- Search for "PlatformIO IDE"
- Install the PlatformIO IDE extension by PlatformIO
- Restart VSCode when prompted
- Wemos D1 Mini (ESP8266)
- WS2812B LED Strip
- Additional components as needed
- Open VSCode
- Click "File" → "Open Folder"
- Navigate to and select the WordclockV3 project folder
- PlatformIO will automatically detect the project and install dependencies
- Connect your Wemos D1 Mini to your computer via USB
- Open PlatformIO Terminal (Terminal → New Terminal)
- Run the following command:
pio run -e d1_mini_serial -t uploadAfter the initial setup and when connected to WiFi:
pio run -e d1_mini -t upload- Click the PlatformIO icon in the left sidebar
- Expand "PROJECT TASKS"
- Select your environment (d1_mini_serial or d1_mini)
- Click "Upload" to build and upload
- Click "Upload and Monitor" to upload and view serial output
To view debug output and logs:
pio device monitorOr use the PlatformIO GUI: PROJECT TASKS → [environment] → Monitor
- Modify
include/config.hfor pin assignments and settings - Update
platformio.inifor different board configurations - Set your WiFi credentials in the code or use WiFiManager
All required libraries are automatically downloaded via PlatformIO when you first open the project.
Key features:
- runs on ESP8266 (ESP-07)
- using Arduino framework
- 114 WS2812B LEDs
- WiFi connected
- WiFiManager allows for easy configuration when WiFi network is not yet configured
- NTP client regularly fetches time
- integrated web server handles configuration interface for colors, time server etc.
- automatic brightness using LDR
The clock is built into an IKEA Ribba picture frame (€5), the front plate is screen printed to get fully opaque and sharp mask. The time is displayed using words with five minute resolution and the LEDs in the four corners display the minutes between the word changes. Seconds are visualized using the background slowly filling with an alternative color (configurable using the Web interface).
The configuration interface is accessible using any browser at the URL http://wordclock.local and allows to change foreground color, background color, the seconds progress color and other options.
The ESP8266 has been wired in dead bug style, I didn't bother to create a PCB for that. Modules with integrated voltage regulator, buttons, USB and LDR would have been a better option, but delivery from China is so slow and I didn't want to wait that long. The WS2812B LEDs are wired using thin copper wire. When fully powered, the voltage drop on the power wires is quite high and the last LEDs in the chain don't get enough voltage and stop responding. In the next version, I will use thicker wire for the power lines.
The base for the LEDs is made of MDF milled on my CNC mill. It consists of a 12 mm back plate with holes and small rims for the LEDs to rest on and a 12 mm front plate having holes with equal diameter. I added a first diffusor of thin paper between the two plates (to make the LED less visible) and painted the inside of the holes white. On top I added a second diffusor (plastic foil) so the light tunnel gets invisible.
