{"id":24064808,"url":"https://github.com/techniccontroller/wordclock_esp8266","last_synced_at":"2026-04-04T13:31:53.972Z","repository":{"id":164838716,"uuid":"435622258","full_name":"techniccontroller/wordclock_esp8266","owner":"techniccontroller","description":"Wordclock 2.0 with ESP8266 and NTP time","archived":false,"fork":false,"pushed_at":"2025-03-24T19:31:01.000Z","size":3462,"stargazers_count":29,"open_issues_count":5,"forks_count":25,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-03-24T20:31:03.307Z","etag":null,"topics":["esp8266","led-strips","neopixel","ntp","pong","snake","tetris","wlan"],"latest_commit_sha":null,"homepage":"https://techniccontroller.com/word-clock-with-wifi-and-neopixel/","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/techniccontroller.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-12-06T19:30:47.000Z","updated_at":"2025-02-23T18:53:10.000Z","dependencies_parsed_at":"2023-05-22T19:45:18.236Z","dependency_job_id":"4da3cd02-e03e-4e62-a82b-24d6543ad0ea","html_url":"https://github.com/techniccontroller/wordclock_esp8266","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/techniccontroller%2Fwordclock_esp8266","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/techniccontroller%2Fwordclock_esp8266/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/techniccontroller%2Fwordclock_esp8266/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/techniccontroller%2Fwordclock_esp8266/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/techniccontroller","download_url":"https://codeload.github.com/techniccontroller/wordclock_esp8266/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250504456,"owners_count":21441588,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["esp8266","led-strips","neopixel","ntp","pong","snake","tetris","wlan"],"created_at":"2025-01-09T10:52:52.212Z","updated_at":"2026-01-03T17:15:42.675Z","avatar_url":"https://github.com/techniccontroller.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Wordclock 2.0\n![compile esp8266 workflow](https://github.com/techniccontroller/wordclock_esp8266/actions/workflows/compile_esp8266.yml/badge.svg?branch=main)\n\nA modern Wi-Fi Word Clock powered by the ESP8266 and synchronized via NTP (Network Time Protocol). \nDisplays time in words with support for multiple languages and colorful NeoPixel LED effects.\nAdditional gaming modes, such as PONG, SNAKE, and TETRIS, can be played via an interactive Web UI.\n\n**Project Details and Guide:**\n\nFull tutorial and build instructions on https://techniccontroller.com/word-clock-with-wifi-and-neopixel/ \n\n## Features\n- 6 modes\n  - Word Clock\n  - Digital Clock\n  - SPIRAL animation\n  - TETRIS (playable via web interface)\n  - SNAKE (playable via web interface)\n  - PONG (playable via web interface)\n- Interactive Web-Based Games: Control PONG, TETRIS, and SNAKE directly through the built-in web UI\n- Real-time clock synchronized over Wi-Fi using NTP\n- Automatic daylight saving time (summer/winter) switching\n- Automatic timezone detection\n- Easy Wi-Fi setup with WiFiManager\n- Configurable color themes\n- Customizable night mode (start/end time)\n- Adjustable brightness settings\n- Automatic mode rotation\n- Web interface for configuration and control\n- Physical button for quick mode change or night mode toggle\n- Intelligent current limiting of LEDs\n- Dynamic color shifting mode \n\n## Supported Languages\n\nThe WordClock currently supports the following languages:\n- **German (default)**\n- **English**\n- **Italian**\n- **French**\n- **Swiss German**\n- **Javanese**\n\n**How to Change the Language**\n\nTo switch to another language:\n1. Go to the `wordclockfunctions.ino_\u003clanguage\u003e` file (e.g., `wordclockfunctions.ino_english`)\n2. Rename it to `wordclockfunctions.ino`\n3. Replace the existing `wordclockfunctions.ino` file\n4. Compile and upload the code to your ESP8266\n\nOnly one language file should be named wordclockfunctions.ino at any time for successful compilation.\n\nThank you to everyone who provided feedback on adding new languages and testing their accuracy — your efforts have been invaluable in making this project truly inclusive and reliable!\n\n\n\n## Pictures of clock\n![modes_images2](https://user-images.githubusercontent.com/36072504/156947689-dd90874d-a887-4254-bede-4947152d85c1.png)\n\n## Screenshots of webserver UI\n![screenshots_UI](https://user-images.githubusercontent.com/36072504/158478447-d828e460-d4eb-489e-981e-216e08d4b129.png)\n\n## Quickstart\n\n1. Clone the project into the sketch folder of the Arduino IDE, \n2. Rename the file \"example_secrets.h\" to \"secrets.h\". You don't need to change anything in the file if you want to use the normal WiFi setup with WiFiManager (see section \"Remark about the WiFi setup\").\n3. Install the additional libraries and upload the program to the ESP8266 as usual (See section [*Upload program to ESP8266*](https://github.com/techniccontroller/wordclock_esp8266/blob/main/README.md#upload-program-to-esp8266-with-arduino-ide) below). \n4. The implemented WiFiManager helps you to set up a WiFi connection with your home WiFi -\u003e on the first startup it will create a WiFi access point named \"WordclockAP\". Connect your phone to this access point and follow the steps which will be shown to you. \n5. After a successful WiFi setup, open the browser and enter the IP address of your ESP8266 to access the interface of the webserver. \n6. Here you can upload all files located in the folder \"data\". Please make sure all icons stay in the folder \"icons\" also on the webserver.\n    - Open **http://\\\u003cip-address\\\u003e/fs.html** in a browser\n    - Upload **fs.html**\n    - Upload **style.css**\n    - Upload **index.html**\n    - Create a new folder **icons**\n    - Upload all icons into this new folder **icons**\n\n\n\u003cimg src=\"https://techniccontroller.com/wp-content/uploads/filemanager1-1.png\" height=\"300px\" /\u003e \u003cimg src=\"https://techniccontroller.com/wp-content/uploads/filemanager2-1.png\" height=\"300px\" /\u003e \u003cimg src=\"https://techniccontroller.com/wp-content/uploads/filemanager3-1.png\" height=\"300px\" /\u003e\n\n## Special Branches \n\nWe've got some interesting branches in this repo inspired by user feedback. These branches explore unique features and experimental ideas. Some will stay updated with the main branch's features.\n\n- [**hour_animation**](https://github.com/techniccontroller/wordclock_esp8266/tree/hour_animation): This branch replaces the spiral animation with some custom pattern animation defined as x/y coordinate pattern including custom color for each letter. Also, this animation is show ones per hour.  \n![compile esp8266 workflow](https://github.com/techniccontroller/wordclock_esp8266/actions/workflows/compile_esp8266.yml/badge.svg?branch=hour_animation)\n- [**mode_seconds**](https://github.com/techniccontroller/wordclock_esp8266/tree/mode_seconds): This branch adds one additional mode to show the seconds as numbers on the clock. Thanks to [@Bram](https://github.com/BramWerbrouck)\n![compile esp8266 workflow](https://github.com/techniccontroller/wordclock_esp8266/actions/workflows/compile_esp8266.yml/badge.svg?branch=mode_seconds)\n- [**rgbw_leds**](https://github.com/techniccontroller/wordclock_esp8266/tree/rgbw_leds): This branch uses RGBW LEDs instead of RGB LEDs.  \n![compile esp8266 workflow](https://github.com/techniccontroller/wordclock_esp8266/actions/workflows/compile_esp8266.yml/badge.svg?branch=rgbw_leds)\n- [**static_background_pattern**](https://github.com/techniccontroller/wordclock_esp8266/tree/static_background_pattern): This branch allows to light up specific letters always during clock mode. E.G., to display some special words in another color.  \n![compile esp8266 workflow](https://github.com/techniccontroller/wordclock_esp8266/actions/workflows/compile_esp8266.yml/badge.svg?branch=static_background_pattern)\n- [**frame_light**](https://github.com/techniccontroller/wordclock_esp8266/tree/frame_light): This branch allows to add an additional LEDs around the clock, as background/frame light it has the same color as the clock. Thanks to Sandro for the idea. \n![compile esp8266 workflow](https://github.com/techniccontroller/wordclock_esp8266/actions/workflows/compile_esp8266.yml/badge.svg?branch=frame_light)\n\n## Install needed Libraries\n\nPlease download all these libraries as ZIP from GitHub, and extract them in the *libraries* folder of your Sketchbook location (see **File -\u003e Preferences**):\n\n- https://github.com/adafruit/Adafruit-GFX-Library\n- https://github.com/adafruit/Adafruit_NeoMatrix\n- https://github.com/adafruit/Adafruit_NeoPixel\n- https://github.com/tzapu/WiFiManager\n- https://github.com/adafruit/Adafruit_BusIO\n\nYou can als install these libraries via the library manager in the Arduino IDE.\n\nThe folder structure should look like this:\n\n```\nMySketchbookLocation \n│\n└───libraries\n│   └───Adafruit-GFX-Library\n│   └───Adafruit_NeoMatrix\n│   └───Adafruit_NeoPixel\n│   └───WiFiManager\n│   └───Adafruit_BusIO\n│   \n└───wordclock_esp8266\n    │   wordclock_esp8266.ino\n    │   (...)\n    |\n    └───data\n        │   index.html\n        |   (...)\n        |\n        └───icons \n```\n\n\n## Upload program to ESP8266 with Arduino IDE\n\n#### STEP1: Installation of Arduino IDE\nFirst, the latest version of the Arduino IDE needs to be downloaded and installed from [here](https://www.arduino.cc/en/software).\n\n#### STEP2: Installation of ESP8266 Arduino Core\nTo program the ESP8266 with the Arduino IDE, you need to install the board information first in Arduino IDE. To do that follow the following instructions:\n\n- Start Arduino and open the File -\u003e Preferences window.\n\n- Enter http://arduino.esp8266.com/stable/package_esp8266com_index.json into the Additional Board Manager URLs field. You can add multiple URLs, separating them with commas.\n![image](https://user-images.githubusercontent.com/36072504/169649790-1b85660e-8c7d-4dfe-a63a-5dfd9862a5de.png)\n\n- Open Boards Manager from Tools \u003e Board menu and search for \"esp8266\".\n\n- Click the install button.\n\n- Don’t forget to select your ESP8266 board from Tools \u003e Board menu after installation (e.g NodeMCU 1.0)\n![image](https://user-images.githubusercontent.com/36072504/169649801-898c4819-9145-45c5-b65b-52f2689ab646.png)\n\n#### STEP3: Upload a program to ESP8266\n\n- Open wordclock_esp8266.ino in Arduino IDE\n- Connect ESP8266 board with Computer\n- Select right serial Port in Tools -\u003e Port\n- Click on the upload button in the Arduino IDE to upload the program to the ESP8266 Module.     \n![image](https://user-images.githubusercontent.com/36072504/169649810-1fda75c2-5f4d-4d71-98fe-30985d82f7f5.png)\n\n\n## Remark about the WiFi setup\n\nRegarding the WiFi setting, I have actually implemented two variants: \n1. By default the WifiManager is activated. That is, the word clock makes the first time its own WiFi (should be called \"WordclockAP\"). There you connect from a cell phone to `192.168.4.1`* and you can perform the configuration of the WiFi settings conveniently as with a SmartHome devices (Very elegant 😊)\n2. Another (traditional) variant is to define the wifi credentials in the code (in secrets.h). \n    - For this you have to comment out lines 230 to 251 in the code of the file *wordclock_esp8266.ino* (add /\\* before and \\*/ after) \n    - and comment out lines 257 to 305 (remove /\\* and \\*/)\n(* default IP provided by the WifiMAnager library.)\n\n## Resetting the WiFi configuration\n\nYou can clear the stored WiFi credentials and restart the WiFi setup described above with these steps:\n1. Open the settings panel in the web UI.\n2. Enable 'Reset WiFi' slider.\n3. Save settings.\n4. LED test should be performed.\n5. Disconnect and reconnect the power. WiFi credentials were removed. The setup should be restarted.\nResetting the wifi credentials does not delete uploaded files.\n\n## Remark about Logging\n\nThe wordclock sends continuous log messages to the serial port and via multicast UDP. If you want to see these messages, you have to \n\n- open the serial monitor in the Arduino IDE (Tools -\u003e Serial Monitor). The serial monitor must be set to 115200 baud.\n\nOR\n\n- run the following steps for the multicast UDP logging:\n\n1. Starting situation: wordclock is connected to WLAN, a computer with installed Python (https://www.python.org/downloads/) is in the same local area network (WLAN or LAN doesn't matter).\n3. Open the file **multicastUDP_receiver.py** in a text editor and in line 81 enter the IP address of the computer (not the wordclock!).\n```python\t\n# ip address of network interface\nMCAST_IF_IP = '192.168.0.7'\n```\n4. Execute the script with following command: \n\n```bash\npython multicastUDP_receiver.py\n```\n\n5. Now you should see the log messages of the word clock (every 5 seconds a heartbeat message and the currently displayed time). \nIf this is not the case, there could be a problem with the network settings of the computer, then recording is unfortunately not possible.\n\n6. If special events (failed NTP update, reboot) occur, a section of the log is saved in a file called *log.txt*. \nIn principle, the events are not critical and will occur from time to time, but should not be too frequent.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftechniccontroller%2Fwordclock_esp8266","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftechniccontroller%2Fwordclock_esp8266","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftechniccontroller%2Fwordclock_esp8266/lists"}