wordclock

Software

This section of the Wordclock project covers the software running on the clock’s ESP32. This page covers the basic features and how to build and deploy from source.

For detailed usage instructions, please refer to the User’s Manual.

Features

Demo video

Here’s a video showing the Wordclock with 1.0 firmware and its web interface in action. New features were added since, such as MQTT and Paint.

Flashing over USB with the Wordclock Flasher utility

Wordclock Flasher is a web based companion tool that can be used to flash the Wordclock over USB with a prebuilt release firmware.

If you have not flashed your clock before, it is the fastest and easiest way to get there. Once you have flashed your device for the first time, the recommended path for upgrading is to use OTA updates.

Wordclock Flasher instructions

Release binaries

If you are not interested in modifying the source code, you can find prebuilt binaries here that can be flashed on your ESP32 with esptool.py or even directly from Chrome browser with esptool-js

Use the firmware_esp32dev files if you have a custom built clock based on the ESP32 Dev board, or the firmware_nodo files if you purchased a nodo clock kit (which is powered by an ESP32-C3 chip and has the LEDs laid out in a different order).

Build with PlatformIO

This is the recommended method as it makes it easy to manage dependencies and build for a specific flavor of ESP32. If you do not want to use PlatformIO, see below for detailed instructions.

  1. Install PlatformIO and VS Code
  2. Load the project in VS Code (select the folder containing platformio.ini)
  3. Verify that the target board in platformio.ini matches your ESP32 hardware
  4. Build and upload

Important: Platform IO builds and flashes multiple bin files (bootloader, partition, firmware). To merge those into a single binary for flashing separately from e.g. esptool or the OTA updater, run pio run -t mergebin from a PlatformIO console and look for the file ending with “merged.bin” in the .pio/build folder.

OTA update

After the firwmare has been flashed over USB once, you can use the OTA feature to flash further updates: build the new binary file, then open the web portal of your clock, click the Firmware update link at the bottom and upload the new firmware.bin file. For OTA we don’t use the “merged” version mentioned in the previous section.

Warning: if the firmware config version displayed at the very bottom of the web interface changes, your settings will be reset. They should otherwise remain.

[Deprecated] Build with Arduino IDE

Note: this project now relies on PlatformIO features such as board-specific configurations and binary data embedding, and will therefore require changes in the code and project files to build with the Arduino IDE, which is why this section is considered deprecated.

Add ESP32 boards

If you want to use Arduino IDE only, you need to install the Arduino core for the ESP32. To do so, the preferred method is to use the Boards Manager and is detailed here.

Once installed, select the ESP32 board from Tools > Board > ESP32 Arduino > ESP32 Dev Module (or whatever is most appropriate for your specific board).

You will also need to rename the wordclock.cpp file to wordclock.ino.

Note: you might also need to install the appropriate USB driver for your ESP32 board (for example if it has a CP210x USB to UART bridge, it’s this one).

Add required dependencies

This project relies on several additional libraries that need to be installed in the Arduino IDE. Open the Library Manager (Tools > Manage Libraries...), then search an add the following:

You are now ready to compile and flash the wordclock.ino sketch.

Credits

A large part of this source was based on the code from these two projects (both of which were written for the same hardware) with their explicit permission: