Eigene Word-Clock bauen

Hier zeige ich euch, wie man günstig und einfach eine eigene Wort-Uhr bauen kann.


Einige von euch haben die bestimmt schonmal gesehen – die Word-Clocks oder Wort-Uhren. Anstatt die Uhrzeit in Zahlen auszudrücken, zeigen die Word-Clocks die Uhrzeit (wer hätte es auch anders gedacht) in Wörtern. Dazu wird kein Display verwendet, sondern eine Platte mit ausgestanzten Buchstaben, die von hinten mit LEDs beleuchtet wird. Verbaut wird die Uhr in einem 23×23 RIBBA-Bilderrahmen von IKEA.

Das Projekt befindet sich aktuell noch ziemlich am Anfang (zumindest was die Software angeht). Die Hardware kann man jedoch selbst einfach nachbauen. Das man jedoch benötigt ist ein Laser-Cutter. Dazu muss man keinen eigenen besitzen, sondern kann entweder einen der zahlreichen Dienstleister anfragen oder nach einem MakerSpace oder FabLab o.ä. in der Nähe suchen. Also einfach in der Suchmaschine eurer Wahl z.B. „MakerSpace [MEINE_STADT]“ eingeben und schauen ob was in der Nähe ist.

Die Vorlagen für die Platte und das Gerüst habe ich auf GitHub bereitgestellt. Was ihr zusätzlich benötigt wären ein Wemos D1 mini (oder eine Alternative) und ein LED-Band mit 60 LEDs pro Meter mit WS2812b LEDs. Ich verlinke euch hier mal einige Quellen:

Word-Clock – Die WLAN Wort-Uhr zum selber bauen

Wie das dann montiert wird habe ich in einem Video zusammengefasst.

Den Quellcode zum Flashen stelle ich auch im GitHub-Repository bereit.

Die aktuelle Uhrzeit bezieht die Uhr über einen NTP-Server. Geplant ist jedoch ein RTC-Modul (bereits bestellt 🙂 ) um die Uhr auch ohne Internet-Anbindung synchron zu halten. Über MQTT kann man die Farbe der LEDs anpassen.

Vorstellbar für die Zukunft wären auch Animationen. Es lässt sich quasi jede Grafik im Format 11×11 Pixel darstellen. Vielleicht kann man das verwenden um z.B. Notifications darzustellen.

Updates

2.0.0

Ich habe gemerkt, dass MQTT bei der Word-Clock sehr wenig Sinn macht. Es gab auch häufiger Probleme bei der Installation und Nutzung der ersten Version, weshalb ich mich entschlossen habe eine neue Version zu programmieren, die ohne MQTT auskommt und einfach über den Webbrowser gesteuert werden kann.

Neue Funktionen für die Word-Clock

In dem Zuge habe ich die Uhr auch noch um weitere Funktionen ergänzt. Es gibt jetzt die Möglichkeit auch eine Hintergrundfarbe zu setzen und Icons sowie Temperatur-Werte anzuzeigen. Über eine HTTP-Schnittstelle lässt sich das Ganze über ein Hausautomatisierungsprogramm wie z.B. Home-Assistant konfigurieren, dass in einem bestimmten Intervall die aktuelle Temperatur und ein Wetter-Icon dargestellt werden. Ich werde vermutlich für Home-Assistant noch eine Component schreiben, die dann auch auf GitHub zur Verfügung gestellt wird. Die Icons sind zwar aktuell noch nicht die hübschesten, jedoch werde ich da schauen, dass ich die noch etwas besser hinbekomme. Es ist leider nicht ganz so einfach, wenn man nur 11×11 Pixel zur Verfügung hat 🙂

Das GitHub-Repository ist noch das selbe geblieben. Der alte Code ist über den Tag „1.0.1“ abzurufen. Die neue Version findet man im Master-Branch. Dort finden sich auch weitere Informationen zur Installation und Nutzung der Word-clock. Der Code ist zwar noch etwas unaufgeräumt, jedoch wird sich das in Zukunft auch noch ändern. Mir war es jetzt ersteinmal wichtig eine funktionierende Version fertigzustellen. Wer sich am Code oder an den Icons stört darf gerne einen Pull-Request erstellen 🙂 Jeder ist herzlich dazu eingeladen an der Uhr mitzuentwickeln.

Ich hoffe, dass euch der Ansatz für die neue Version gefällt. Vorschläge sind gerne Willkommen und sogar erwünscht.

3.0.0

  • WiFi Hotspot zur Einrichting der WLAN-Verbingung (keine Zugangsdaten im Code mehr nötig).
  • 10-zeilige Layouts sind möglich.
  • LEDs für einzelne Minuten sind möglich.

4.0.0

  • Code aufgeräumt ( zumindest etwas 🙂 )
  • neues Web-Interface.
  • Web-Interface als PWA-App nutzbar ( im Browser aufrufen und in den Einstellungen „Zum Startbildschirm zufügen“ klicken (zumindest auf Android 🙂 )).
  • Mehrschprachigkeit hinzugefügt (aktuell „deutsch“ und „deutsch alternativ (Ossi-Modus)“).
  • Auswählbar ob LEDs für einzelne Minuten am Anfang oder am Ende angeschlossen sind.

4.0.1

  • de_DE_alt gefixt
  • Fehler gefixt, dass die Konfiguration aus der user_config.h nicht geladen wurde

 

Wenn ihr Vorschläge für weitere Funktionalität für die Version 5 der Wort-Uhr habt, könnt ihr die gerne hier oder auf GitHub posten 🙂

162 Antworten auf „Eigene Word-Clock bauen“

  1. Gefällt mir, sehr einfach gehalten. Will mir auch eine bauen, jedoch will ich eine möglichst flache, größere Uhr (45x45cm) mit Glasfront.
    Die zu bauen ist kein Problem, aber von der Software verstehe ich nichts. Glaubst du der Wemos funktioniert auch mit einem anderen Layout?

    1. Seitens der Software wäre das mit dem Wemos auf jeden Fall möglich auch ein anderes Layout anzusprechen. Es müsste in der Software nur angegeben werden welche LED zu welcher Uhrzeit leuchten sollen.

      1. Ich werde es mal versuchen 🙂 Als Anregung könnte man das Holz noch schwarz lackieren und vielleicht eine Batterie als Stromversorgung verwenden damit die Uhr komplett kabellos ist. Und den Wemos finde ich echt genial da man mit dem echt viel rumspielen kann..

  2. Hallo,

    ich habe auch Interesse an einer Wortuhr.

    Allerdings auch in einer Größe von etwa 45×45 cm.

    Die Front könnte man auch aus einem Edelstahlblech machen.

    René K., bist du mit deiner Wortuhr schon angefangen?

  3. Hi!
    ich baue auch hin und wieder mal Wordclocks. Ich habe für meine letzten auch den WS2812B benutzt.
    Kann man die komplette Kette an den Wemos anschließen? Also bei voller Helligkeit sind es bei 100 LEDs schon 6 Ampere.
    Ich nutze immer einen MSP430 als Controller, und habe die Helligkeit auf unter 2A begrenzt. Zusätzlich habe ich eine Schmelzsicherung eingebaut, falls mal durch einen Fehler die komplette Matrix auf 100% geht.
    Wie stellst Du sicher, dass dir da nichts abbrennt?
    Gruß, Steffen

    1. Hi, ich nutze nur 15% der Helligkeit und habe höchstens 22 LEDs gleichzeitig an. Dürfte (gerechnet und nicht gemessen) bei etwa 200mA sein. Wenn alle LEDs (bei mir 121) an sind, komme ich auf etwas über 1A. Für mich reichen die 15% Helligkeit vollkommen aus. Eine Sicherung (außer der softwareseitige Begrenzung) habe ich nicht verbaut.

      Mit dem MSP430 habe ich bislang noch nichts gemacht. Mit dem Wemos hatte ich noch keine Probleme bis jetzt. Das komplette LED-Band über den Wemos laufen zu lassen würde ich nicht machen. Die Stromversorgung des LEDs würde ich seperat machen und über wen Wemos nur die LEDs steuern.

        1. Hi,

          sorry für die späte Antwort. In meinem Fall ist Plus vom LED-Band an 5V vom Wemos, Minus vom LED-Band an G vom Wemos und die Datenleitung vom LED-Band an D4 vom Wemos angeschlossen. Wo du die Datenleitung am Wemos anschließt ist im Code unter „DATA_PIN“ definiert.

          Beste Grüße

  4. Hi, tolles Projekt und es klingt ja so einfach 🙂

    Allerdings ist es da wohl doch nicht ganz. Ich bekomme ständig folgende Fehlermeldung :
    homie.h: No such file or directory

    Wie binde ich denn diesen Ordner korrekt ein?
    Meine Ordnerstruktur sieht momentan wie folgt aus:
    wordclock(ordner) {
    wordclock(sketch) + data(ordner) {
    homie(ordner) {
    config(json) + ui_bundle(gz)
    } } }

    Kannst du mir da nochmal einen Tipp geben?

    P.S. ich bin totaler Anfänger und bin schon froh, dass ich es es mittlerweile (nach ca. 4 Wochen) geschafft habe, die config Datei inklusive MQTT aufzuspielen 😉

    Danke dir!

  5. Tolles Projekt, Super erklärt!!

    Meine Frage zu dem ganzen… Wo kann man sich so ein gerüst bauen oder besser kaufen??
    Das mit der Ribba ist echt toll, will jetzt auch so ein project anstarten allerdings mit eoner 45*45 cm Ribba.

    Welche Batterie oder Akku kann man da einbauen?

    Will ein bisschen mobil sein 🙂

    Danke nochmal für die tolle Anleitung

    1. Hi,

      freut mich, dass Dir das Projekt gefällt. Das Gerüst habe ich mit einem Lasercutter gemacht. In jeder größeren Stadt gibt es ein Makerspace in dem man für kleines Geld den Lasercutter verwenden kann. Einfach mal nach „Makerspace [STADT]“ oder „Fablab [STADT]“ googeln. Mit Batterien oder Akku habe ich dahingehend noch nichts gemacht. Du kannst aber z.B. eine Powerbank verwenden. Die kosten auch nicht mehr soo viel.

  6. Hallo!
    Super Tutorial!! Habe jetzt vor mir diese Uhr nachzubauen.
    Die Platten bekomme ich auf Blech gelasert 😉
    habe nur leider ständig Probleme beim Upload des Sketches. Hoffe mir kann da jemand helfen…
    Fehler:

    WARNUNG: Unberechtigter Ordner .circleci in der Bibliothek ‚Homie‘
    In file included from C:\Users\dirkl\Documents\Arduino\libraries\homie-esp8266-master\src/Homie.hpp:13:0,

    from C:\Users\dirkl\Documents\Arduino\libraries\homie-esp8266-master\src/Homie.h:4,

    from C:\Users\dirkl\Desktop\Arduino\wordclock-master\wordclock-master\src\wordclock\wordclock.ino:1:

    C:\Users\dirkl\Documents\Arduino\libraries\homie-esp8266-master\src/Homie/Boot/BootConfig.hpp:9:31: fatal error: ESPAsyncWebServer.h: No such file or directory

    #include

    ^

    compilation terminated.

    exit status 1
    Fehler beim Kompilieren für das Board LOLIN(WEMOS) D1 R2 & mini.

    LG Dirk

  7. Hallo!
    Super Tutorial!! Habe jetzt vor mir diese Uhr nachzubauen.
    Die Platten bekomme ich auf Blech gelasert 😉
    habe nur leider ständig Probleme beim Upload des Sketches. Hoffe mir kann da jemand helfen…
    Fehler:

    WARNUNG: Unberechtigter Ordner .circleci in der Bibliothek ‚Homie‘
    In file included from C:\Users\dirkl\Documents\Arduino\libraries\homie-esp8266-master\src/Homie.hpp:13:0,

    from C:\Users\dirkl\Documents\Arduino\libraries\homie-esp8266-master\src/Homie.h:4,

    from C:\Users\dirkl\Desktop\Arduino\wordclock-master\wordclock-master\src\wordclock\wordclock.ino:1:

    C:\Users\dirkl\Documents\Arduino\libraries\homie-esp8266-master\src/Homie/Boot/BootConfig.hpp:9:31: fatal error: ESPAsyncWebServer.h: No such file or directory

    #include

    ^

    compilation terminated.

    exit status 1
    Fehler beim Kompilieren für das Board LOLIN(WEMOS) D1 R2 & mini.

    LG Dirk

    1. Hallo Dirk,

      die Warnung (.circleci) kann ignoriert werden. Der Kompilierungsfehler wird aber wohl damit zusammenhängen, dass nicht alle Bibliotheken, die Homie benötigt installiert wurden. Unter https://homieiot.github.io/homie-esp8266/docs/stable/quickstart/getting-started/ gibt es eine Übersicht aller Bibliotheken und eine Anleitung wie diese installiert werden können. Dazu gibt es auch ein Video auf Youtube: https://www.youtube.com/watch?v=bH3KfFfYUvg

      Ich hoffe, dass dir das weiterhelfen konnte 🙂

      Beste Grüße

  8. Guten Morgen,
    ich habe alle Libaries mit den passenden Versionen installiert .
    Bekomme jetzt aber endlose Fehlermeldungen mit der Aduinojson.
    Hatte das schon jemand oder kann mir noch jemand tipps geben?
    Liegts an der Arduino IDE 1.8.5? Oder sollte ich am besten alles noch mal neu installieren???

    LG Dirk

  9. Hi. Also diese Fehlermeldung kommt:

    Arduino: 1.8.5 (Windows 10), Board: „LOLIN(WEMOS) D1 R2 & mini, 80 MHz, Flash, Disabled, 4M (no SPIFFS), v2 Lower Memory, Disabled, None, Only Sketch, 921600“

    WARNUNG: Unberechtigter Ordner .circleci in der Bibliothek ‚Homie‘
    In file included from C:\Users\dirkl\Documents\Arduino\Projects\wordclock-master\src\wordclock\wordclock.ino:2:0:

    C:\Users\dirkl\Documents\Arduino\libraries\FastLED/FastLED.h:14:21: note: #pragma message: FastLED version 3.002.006

    # pragma message „FastLED version 3.002.006“

    ^

    In file included from C:\Users\dirkl\Documents\Arduino\libraries\FastLED/FastLED.h:65:0,

    from C:\Users\dirkl\Documents\Arduino\Projects\wordclock-master\src\wordclock\wordclock.ino:2:

    C:\Users\dirkl\Documents\Arduino\libraries\FastLED/fastspi.h:110:23: note: #pragma message: No hardware SPI pins defined. All SPI access will default to bitbanged output

    # pragma message „No hardware SPI pins defined. All SPI access will default to bitbanged output“

    ^

    C:\Users\dirkl\Documents\Arduino\libraries\homie-esp8266-develop\src\Homie\Config.cpp: In member function ‚bool HomieInternals::Config::load()‘:

    C:\Users\dirkl\Documents\Arduino\libraries\homie-esp8266-develop\src\Homie\Config.cpp:71:56: error: no matching function for call to ‚ArduinoJson::JsonObject::containsKey(const __FlashStringHelper*)‘

    if (parsedJson.containsKey(F(„device_stats_interval“))) {

    ^

    C:\Users\dirkl\Documents\Arduino\libraries\homie-esp8266-develop\src\Homie\Config.cpp:71:56: note: candidate is:

    In file included from C:\Users\dirkl\Documents\Arduino\libraries\ArduinoJson\src/../include/ArduinoJson/JsonObject.hpp:148:0,

    from C:\Users\dirkl\Documents\Arduino\libraries\ArduinoJson\src/../include/ArduinoJson/JsonArray.ipp:11,

    from C:\Users\dirkl\Documents\Arduino\libraries\ArduinoJson\src/../include/ArduinoJson/JsonArray.hpp:175,

    from C:\Users\dirkl\Documents\Arduino\libraries\ArduinoJson\src/../include/ArduinoJson.h:9,

    from C:\Users\dirkl\Documents\Arduino\libraries\ArduinoJson\src/ArduinoJson.h:14,

    from C:\Users\dirkl\Documents\Arduino\libraries\homie-esp8266-develop\src\Homie\Config.hpp:5,

    from C:\Users\dirkl\Documents\Arduino\libraries\homie-esp8266-develop\src\Homie\Config.cpp:1:

    C:\Users\dirkl\Documents\Arduino\libraries\ArduinoJson\src/../include/ArduinoJson/JsonObject.ipp:47:13: note: bool ArduinoJson::JsonObject::containsKey(ArduinoJson::JsonObjectKey) const

    inline bool JsonObject::containsKey(JsonObjectKey key) const {

    ^

    C:\Users\dirkl\Documents\Arduino\libraries\ArduinoJson\src/../include/ArduinoJson/JsonObject.ipp:47:13: note: no known conversion for argument 1 from ‚const __FlashStringHelper*‘ to ‚ArduinoJson::JsonObjectKey‘

    exit status 1
    Fehler beim Kompilieren für das Board LOLIN(WEMOS) D1 R2 & mini.

    Dieser Bericht wäre detaillierter, wenn die Option
    „Ausführliche Ausgabe während der Kompilierung“
    in Datei -> Voreinstellungen aktiviert wäre.

    1. Hast du es mit der aktuellsten 5er Version probiert? Also der 5.13.2? Ich hab aktuell nicht im Kopf welche Version ich verwendet habe, werde das aber heute Abend einmal prüfen und posten.

  10. Kommen jetzt noch mehr Fehler.

    C:\Users\dirkl\Documents\Arduino\libraries\ESPAsyncTCP-c8ed544fd867361c4620889b4a582246a16a9913\src\ESPAsyncTCP.cpp:66:31: error: invalid conversion from ‚int8_t (*)(void*, tcp_pcb*) {aka signed char (*)(void*, tcp_pcb*)}‘ to ‚tcp_poll_fn {aka long int (*)(void*, tcp_pcb*)}‘ [-fpermissive]

    tcp_poll(_pcb, &_s_poll, 1);

    ^

    In file included from C:\Users\dirkl\Documents\Arduino\libraries\ESPAsyncTCP-c8ed544fd867361c4620889b4a582246a16a9913\src\ESPAsyncTCP.cpp:27:0:

    C:\Users\dirkl\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.0/tools/sdk/lwip2/include/lwip/tcp.h:421:18: error: initializing argument 2 of ‚void tcp_poll(tcp_pcb*, tcp_poll_fn, u8_t)‘ [-fpermissive]

    void tcp_poll (struct tcp_pcb *pcb, tcp_poll_fn poll, u8_t interval);

    ^

    C:\Users\dirkl\Documents\Arduino\libraries\ESPAsyncTCP-c8ed544fd867361c4620889b4a582246a16a9913\src\ESPAsyncTCP.cpp: In member function ‚bool AsyncClient::connect(IPAddress, uint16_t)‘:

    C:\Users\dirkl\Documents\Arduino\libraries\ESPAsyncTCP-c8ed544fd867361c4620889b4a582246a16a9913\src\ESPAsyncTCP.cpp:81:22: error: ‚ip_route‘ was not declared in this scope

    netif* interface = ip_route(&addr);
    …..

  11. Es sieht so aus als ob die Kompelierung mit der 1.2 Version geklappt hat. ?
    D.h. jetzt den Sketch hochladen und die Daten mit der geänderten config hochladen? Ich bin so gespannt.

    1. Ja genau. Ich werde es evtl. schaffen an den Ostertagen eine neue Version zu programmieren, die dann auch etwas simpler zu installieren ist und auch ohne MQTT auskommt.

  12. OK. Da bin ich dann mal gespannt. Ist das denn normal das jetzt der wemos D1 Mini am blinken ist?
    Auf dem Router ist ja auf jeden Fall angemeldet, da zeigt er sich schon.

    1. Guten Morgen, MQTT und Hassio ist im Prinzip ganz simpel. Wenn du den MQTT-Broker von Hassio noch nicht aktiviert hast musst du in deiner configuration.yaml bloß folgenden Code hinzufügen:

      mqtt:
        password: HIER_DEIN_GEWÄHLTES_PASSWORT

      Nach einem Neustart starten Hassio einen MQTT-Broker auf den du dich dann mit dem Benutzernamen „homeassistant“ und dem gewählten Passwort anmelden kannst. Dazu nutzt du dann die IP-Adresse von Hassio und den Port 1883.

      Wenn du die Daten dann in der Wordclock-Konfiguration eingegeben und hochgeladen hast verbindet sich die Wordclock mit dem MQTT-Broker.

      Ob das funktioniert hat kannst du dann im Hassio testen. Dazu gibt es im linken Menü von Hassio unten ein Icon (bei mir das zweite von rechts). Von dort aus kannst du Pakete an die Uhr senden.

      Dazu sind zwei Werte aus der Wordclock-Konfiguration wichtig. Die „device_id“ und „base_topic“.

      Du kannst dann im Hassio bei „topic“ folgendes eingeben: [base_topic]/[device_id]/offset/offset/set (standardmäßig wäre das wordclock/c01/offset/offset/set) und als Payload dann die Anzahl an Stunden, die verstellt werden sollen, z.B. 1

      Dadurch kannst du dann schonmal testen ob die Stunden angepasst werden können.

      Sollte das geklappt haben kannst du mit dem Topic: wordclock/c01/color/rgb/set und einem Hexadezimalen Farbcode als Payload die Farbe ändern. Für weiß wäre das z.B. ffffff

      Ich hoffe ich konnte dir einwenig weiterhelfen.

  13. Super. . hab es jetzt über den Mosquitto Broker geschafft. World Clock ist verbunden. Nur leider läuft es nicht mit dem setzern der Farben:
    Node color: rgb property not settable

    Wie hast du es eigentlich mit dem RTC Modul vor? Kommen da noch Buttons zu, für Einstellungen?

    1. Ach, mein Fehler. Das Topic müsste wordclock/c01/color/color/set lauten. Aber genau, wenn ich das RTC Modul integriere wollte ich Buttons für die Zeiteinstellung und evtl. Farbwahl einbauen. Muss mir da noch was genaueres überlegen. 🙂

  14. Das ist sehr gut. Dann ist sie Uhr auch völlig unabhängig vom Internet. Nicht jeder hat einen homeserver…
    Habe es jetzt mit der genannten topic versucht. Bekomme aber immer noch die gleiche fehlermeldung. Woran kann das liegen?

    1. Ich kann dir da aktuell auch nicht sagen wo das Problem ist, aber dieses Wochenende lade ich eine neue Version auf GitHub hoch, die ohne MQTT auskommt.

    2. Hattest du die neuen Version schon ausprobiert? RTC Modul ist zwar noch nicht integriert, jedoch gibt es ein paar neue Funktionen und kein MQTT mehr, da die Uhr dann über den Webbrowser eingestellt werden kann.

  15. Hey, ich bin etwas am verzweifeln, an der ganzen MQTT Geschichte . Hab davon 0 Ahnung. Uhr ist soweit fertig, healthcheak läuft auch.

    Wäre super, wenn mir jemand erklären kann, wie es jetzt weiter geht. Am besten in „Babysteps“

    LG Jan

    1. Ich habe ein neuen Code geschrieben, der ohne MQTT auskommt. Die Steuerung läuft dann über einen beliebigen Webbrowser. Ich muss noch die Doku fertigschreiben und lade dann die neue Version auf GitHub hoch. Das wird im Laufe des Wochenendes passieren. Da ist es dann deutlich einfacher die Uhr zu nutzen und es gibt auch weitere neue Funktionen. Aber dazu am Wochenende mehr.

  16. Hi und erst mal ein dickes Lob für die tollen Vorlagen und Beschreibungen. Habe mir entsprechende Wortuhr nachgebaut und sie funktioniert sogar (war ich schon begeistert Neuling auf diesem Gebiet).

    Habe nur ein Problem und ich hoffe es kann mir geholfen werden. Meine Uhr läuft, warum auch immer 15 min vor … hat jemand eine Idee?

    1. Hi, vielen Dank für das Lob 🙂 Ich hatte auch ab und zu das Problem, dass die Zeit falsch angezeigt wird. Das kommt darauf an auf welchen NTP-Server (Zeitserver) sich die Uhr verbindet, da es wohl einige Zeitserver gibt, die die falsche Uhrzeit ausliefern. In der Zeile 190 (https://github.com/panbachi/wordclock/blob/master/wordclock/wordclock.ino#L190) ist ein Zeitserver-Pool (pool.ntp.org) angegeben. Dort kannst du mal versuchen „de.pool.ntp.org“ anzugeben. Viele Router sind auch als NTP-Server konfiguriert. Wenn du eine FritzBox verwendest kann du versuchen „fritz.box“ als NTP-Server anzugeben.

      Beste Grüße

  17. Hallo noch mal und Danke für die fixe Antwort. Bringt leider nichts oder habe ich das bisher falsch gesehen? Muss man die Uhr um Zwölf Uhr in Betrieb nehmen, damit die läuft? habe sie bis jetzt mehr mal vom Strom genommen und wieder angeschlossen. In Zeile 190 entsprechen de.pool.ntp.org eingetragen, auch ein Test mit „1.de.pool.ntp.org“ hat nichts gebracht. Der letzte Versuch ist jetzt mit „ptbtime1.ptb.de“ (wohl der Zeitserver von Nürnberg).

    Ansonsten fürs Verständnis, für einen Anfänger wie mich: die Daten welche in den einzelnen libraries hinterlegt sind, lässt man immer in ruhe oder werden daten vom entsprechenden Sketch, wenn man ihn hochlädt mit eingelesen?

    Gruß, Daniel

        1. Da muss ich dann nochmal schauen woran das liegen könnte, dass der die Uhrzeit falsch darstellt, bzw. das der bei dir immer bei zwölf Uhr anfängt.

          Und noch zu der anderen Frage: Ansonsten fürs Verständnis, für einen Anfänger wie mich: die Daten welche in den einzelnen libraries hinterlegt sind, lässt man immer in ruhe oder werden daten vom entsprechenden Sketch, wenn man ihn hochlädt mit eingelesen?

          Genau. In der Arduino installierst du die Bibliotheken einfach über den Bibliotheksverwalter und die werden dann beim Kompilieren des Sketches eingebunden.

  18. Konntest du das schon probieren? Ansonten Versuch ich mal ob Version 1.0 läuft. Der Quelltext ist meines Erachtens anders aufgebaut, werde berichten ob der läuft

    1. Ich hatte jetzt am Wochenende nochmal den Quellcode überprüft um herauszufinden woran das liegen könnte. Der einzige Fall womit ich das Problem bislang reproduzieren konnte war, wenn keine Verbindung zum NTP-Server aufgebaut werden konnte, also wenn ich in dem Router der Uhr den Internetzugriff gesperrt hatte. Ist das bei dir der Fall?

      1. Hm, Problem bei der Geschichte ist, dass ich einen Vodafone Router, die „Vodafone Station“ habe… Bin ehrlich gesagt nicht gerade zufrieden mit der Kiste, da man zu wenig Einstellungsmöglichkeiten hat und einem die W-LAN-Geräte, die sich mit dem Router verbinden nicht automatisch angezeigt werden, man muss jedes Gerät selber „umbenennen“, aber Probleme habe ich mit keinem, dass die Internetverbindung untersagt wird, außer mit meinem Repeater, aber das ist sicher noch einmal etwas anderes…

        Hilft es, wenn ich bestimmte Ports freigebe?

  19. Ich hätte zwei Fragen:
    1. Läuft die Uhr standardmäßig (bei Sommerzeit) 2 Stunden hinterher (was ja am Server liegt). – Gibt es eine Möglichkeit, standardmäßig auf Winterzeit einzustellen, sodass man nur noch für Sommerzeit umstellen muss?

    2. Gibt es denn auch einen Code, bei dem wie bei der Originalversion in den Ecken noch die einzelnen Minuten angezeigt werden kann?

    Vielen Dank 🙂

    1. Hi,

      sorry für die späte Antwort, war die letzten Wochen im Urlaub 🙂

      1. Du kannst über die Weboberfläche die Zeitzone anpassen. Im Code ließe sich jedoch fix eine bestimmte Zeitzone einstellen. Dazu musst du den Wert in Sekunden in Zeile 183 (https://github.com/panbachi/wordclock/blob/master/wordclock/wordclock.ino#L183) anpassen. Also offset auf 3600 für eine Stunde bzw. 7200 für 2 Stunden setzen.

      2. Der Code ließe sich dahingehend erweitern. Wenn ich die Zeit finde würde ich schauen ob ich da was ergänze. Ansonsten kann jeder der Interesse hat an dem Code mitwirken.

      Beste Grüße

  20. Hi, habe versucht die Uhr nachzubauen und habe imemr wieder kleine Hürden die ich bewältigt bekommen.

    Programme runterladen
    hier ganz gut erklärt mit den Wemos Treibern, etc.
    https://www.youtube.com/watch?v=F6jAs4W8nn4
    Achtung, dass man ein USB Micro Datenkabel verwendet und nicht nur ein USB Kabel mit Ladefunktuion -.- 😀
    Libraries einbinden, die zusätzlich benötigten „FastLED.h“ und „NTPClient.h“ runterladen,….

    und dann häng ich hier bei der Fehlermeldung beim rüberschieben des Programms:

    wordclock:480:18: error: ‚class NTPClient‘ has no member named ’setTimeOffset‘
    exit status 1
    ‚class NTPClient‘ has no member named ’setTimeOffset‘

    kein plan was ich jetzt noch ändern muss 🙁

      1. Hallo, hatte eine heruntergeladen, aber die hatte wohl nicht funktioniert. Habe die NTPClient Bibliothek nochmal neu runtergeladen, die Wlan Zugangsdaten im Code eingetragen, jetzt funktioniert es!!! 🙂
        Finde den Wemos auch im Wlan und komme über die IP auf die Weboberfläche und Einstellungen

        Cool wäre noch ein Regenbogenverlauf wie bei dieser Version: https://www.thingiverse.com/thing:3269526

        warte noch auf meine LED Streifen, dann bin ich total gespannt ob es klappt.
        Ist mein erstes Adruinoprojekt. Vielen lieben Dank für die Anleitung 🙂

  21. Hi,

    zuerst ein großes Lob für Dein tolles Projekt, welches auch mich zum Nachbau inspiriert hat, mein Aufbau unterscheidet sich wie folgt:
    Frontplatte aus 3mm schwarzem Plexiglas, dahinter weißes Blatt Papier als Diffusor, Gitter für LED-Unterteilung mittels 3D-Drucker erstellt, LED werden von der Rückseite direkt auf das Gitter geklebt.
    Fazit: Frontplatte dürfte etwas dünner sein, damit verbessert sich der Blickwinkel auf die Uhr – sonst top!

    Dank & Gruß, Thorsten

  22. Das DXF für die plate scheint nicht i.O. zu sein.
    Könntest Du noch mal ein dxf mit nur einem Layer erstellen?
    Beim Import erscheint nämlich nur ein Liniengitter.
    Danke.
    makertobi

  23. Hi,
    super Projekt, hatte mir eine Word-Clock schon lange vorgenommen und jetzt über dein Tutorial gestolpert und direkt alles bestellt. Jetzt verzweifel ich an dem „Bare minimum sketch“.

    Kannst du vielleicht erkennen woran es liegt?

    Die gesamte Fehlermeldung wäre zu lang. Das ist der letzte Part:

    C:\Users\Marvin\Documents\Arduino\libraries\ArduinoJson\src/ArduinoJson/Variant/VariantAsImpl.hpp:32:65: note: template argument deduction/substitution failed:

    C:\Users\Marvin\Documents\Arduino\libraries\ArduinoJson\src/ArduinoJson/Variant/VariantAsImpl.hpp: In substitution of ‚template typename ArduinoJson6120_000001::enable_if<ArduinoJson6120_000001::IsWriteableString< >::value, T>::type ArduinoJson6120_000001::variantAs(const ArduinoJson6120_000001::VariantData*) [with T = ArduinoJson6120_000001::ObjectRef&]‘:

    C:\Users\Marvin\Documents\Arduino\libraries\ArduinoJson\src/ArduinoJson/Variant/VariantRef.hpp:240:30: required from ‚typename ArduinoJson6120_000001::enable_if<(((! ArduinoJson6120_000001::is_same::value) && (! ArduinoJson6120_000001::is_same::value)) && (! ArduinoJson6120_000001::is_same::value)), typename ArduinoJson6120_000001::VariantAs::type>::type ArduinoJson6120_000001::VariantRef::as() const [with T = ArduinoJson6120_000001::ObjectRef&; typename ArduinoJson6120_000001::enable_if<(((! ArduinoJson6120_000001::is_same::value) && (! ArduinoJson6120_000001::is_same::value)) && (! ArduinoJson6120_000001::is_same::value)), typename ArduinoJson6120_000001::VariantAs::type>::type = ArduinoJson6120_000001::ObjectRef&]‘

    C:\Users\Marvin\Documents\Arduino\libraries\ArduinoJson\src/ArduinoJson/Object/MemberProxy.hpp:70:52: required from ‚typename ArduinoJson6120_000001::VariantAs::type ArduinoJson6120_000001::MemberProxy::as() const [with TValue = ArduinoJson6120_000001::ObjectRef&; TObject = const ArduinoJson6120_000001::ObjectRef&; TStringRef = const char*; typename ArduinoJson6120_000001::VariantAs::type = ArduinoJson6120_000001::ObjectRef&]‘

    C:\Users\Marvin\Documents\Arduino\libraries\homie-esp8266-develop\src\Homie\Config.cpp:76:42: required from here

    C:\Users\Marvin\Documents\Arduino\libraries\ArduinoJson\src/ArduinoJson/Variant/VariantAsImpl.hpp:32:65: error: no type named ‚type‘ in ’struct ArduinoJson6120_000001::enable_if‘

    exit status 1
    Fehler beim Kompilieren für das Board LOLIN(WEMOS) D1 R2 & mini.

    Danke dir.

    1. Schau dir am besten die zweite Version der Word-Clock an (ganz oben im Beitrag in dem grünen Kästchen verlinkt). Die ist deutlich einfacher zu installieren, da dort kein Homie mehr eingesetzt wird.

  24. Super Anleitung,
    meine erste Wordclock hatte ich von Hand mit Stichsäge und Bohrmaschiene gebaut, allerdings schon mit WS2812. Das war eine Qual. Mit Folie plotten etc. und Arduino + RTC.

    Als Hochzeitsgeschenk habe ich das gleich gemacht, allerdings Nachbau von „WordClock mit WS2812“ aus mikrocontroller. Hat echt super geklappt und braucht keine Wartung von mir, wegen der Android Bedienung.

    Neuerdings habe ich zugang zu einem Lasercutter!!!
    Das macht das leben echt einfach, kein Bohren und Sähen ,mehr 😉
    Deshalb habe ich auch schon 2 kleine 8×8 Matrix Uhren gebaut und bin da schon auf dem WEMOS umgestiegen. Super Board, da man sonst nix weitere braucht, wenn man NTP nutzt.

    So nun wollte ich wieder eine Ribba bauen und habe deine Anleitung gefunden.
    Für die Schablone werde ich schwarze Pappe nehmen, das ist eigentlich auch ganz schön.

    Nun zu dem Gridelementen.
    Du hast 3mm genutzt oder?

  25. Klasse Beschreibung und ein echt tolles Projekt! Ich habe eine Edelstahlplatte gelasert geschenkt bekommen und würde es gerne nun nachbauen. Leider fehlt auf dieser die letzte Buchstabenzeile. Wie müsste ich den Code anpassen um dies zu berücksichtigen? Die Anzahl der LED müsste angepasst werden und was noch?

    vielen Dank schon mal für den kleinen Denkanstoß!

    Viele Grüße

    1. Hi, freut mich, dass dir das Projekt gefällt 🙂

      Das Problem hierbei ist, dass die IDs der LEDs in der letzten Zeit anfangen. Also die unterste, linke LED (wenn man auf die Uhr von vorne schaut, also das „E“) hat den Wert 0, da dort die Kabel angeschlossen werden. Anschließend geht es im Zick-Zack nach oben. Du müsstest das bei dir anders machen. Du müsstest bei dir die LEDs mit umgekehrter Pfeilrichtung anbringen, also so, dass du dann in der letzten Zeit die Kabel nicht links sondern rechts anschließt also auf das „R“ von „UHR“. Damit ersparst du dir dann sehr viel Arbeit was den Code angeht. Beim Code hast du dann zwei Möglichkeiten.

      Entweder (was aber lange dauert und lästig ist) in den Zeilen von 31 bis 177 überall die IDs der LEDs um 11 verringern.

      Oder du nimmst die einfachere Lösung, indem du nur bei dem Zugriff auf die LEDs den Wert um 11 verringerst. Also in den Zeilen:

      264, 285, 290, 296, 313, 318, 329, 333, 337, 341, 347, 351, 355, 359, 363, 367, 371, 375, 379, 383, wenn du alle Funktionen der Uhr verwenden möchtest oder in den Zeilen:
      285, 290, 296, wenn du nur die Uhr verwenden möchtest.

      Wenn du die zweite Variante nimmst, dann solltest du auch die Zeilen 543 und 544 auskommentieren. Wenn du die erste Variante nimmst musst du darauf achten, dass der Index auch existiert. Also überall noch eine If-Bedingung drum machen, wie z.B.:


      if((degree_symbol[i] - 11) >= 0) {
      leds[degree_symbol[i] - 11].setRGB(255, 255, 255);
      }

      Ich würde dir aber zu der zweiten Variante raten, da die anderen Module (Temperatur und Icons) auf 11 Zeilen ausgelegt sind.

      Hoffentlich konnte ich dir weiterhelfen.

  26. Hallo und Gute Arbeit gekeistet.
    Würde gerne in html einen button hinzufügen um eine funktion zu tätigen, wie mache ich das?
    das ist die void die ausgelöst werden soll:

    void Test() {
    matrix.begin();
    matrix.setTextWrap(false);
    matrix.setBrightness(40);
    matrix.setTextColor(colors[0]);
    int x = matrix.width();
    int pass = 0;
    matrix.fillScreen(0);
    matrix.setCursor(x, 2);
    matrix.print(F(„Lauftext“));
    if(–x = 3) pass = 0;
    matrix.setTextColor(colors[pass]);
    }
    matrix.show();
    delay(100);
    }

    1. Puh, das ist eine sehr komplizierte Frage. Zum einen ist „void“ nur ein Datentyp, der zurückgegeben wird und „leer“ bedeutet. Was du meinst ist wohl eine Funktion. Aber im Weiteren kommen wir zu einem anderen Problem und zwar, dass ich keine Ahnung habe womit die globale Variable „matrix“ deklariert ist. Es wäre hilfreich, wenn du mir den Link zuschicken könntest wo du den Code-Schnipsel her hast. Dann kann ich schauen in wie weit das in die Software einbaubar ist, da leider sehr viel Kontext feht 🙁

      Beste Grüße

      1. Leider muss ich dich enttäuschen. Für die Uhr nutze ich die FastLED-Bibliothek und nicht die Adafruit-NeoPixel- bzw. -NeoMatrix -Bibliothek. Die „print“-Funktion existiert so nicht in der FastLED-Bibliothek und müsste programmiert werden. Zum aktuellen Stand wäre das für dich jedoch eine entweder-oder Sache. Also entweder die Laufschrift oder die Uhr. Ich habe es mir jedoch notiert und werde schauen ob ich demnächst mal dazu komme eine Laufschrift für die Uhr einzubauen. Kann da jedoch leider nichts versprechen, da ich zeitlich etwas eingespannt bin 🙁

  27. Hallo, super Arbeit.
    Frage , wie füge ich ein html button um eine funktion auszulösen?
    Das ist die void funktion:
    void setTest() {
    matrix.begin();
    matrix.setTextWrap(false);
    matrix.setBrightness(40);
    matrix.setTextColor(colors[0]);
    int x = matrix.width();
    int pass = 0;
    matrix.fillScreen(0);
    matrix.setCursor(x, 2);
    matrix.print(F(„Lauftext“));
    if(–x = 3) pass = 0;
    matrix.setTextColor(colors[pass]);
    }
    matrix.show();
    delay(100);
    }

    1. Das wäre echt klasse wenn man das inplementieren könnte,
      das ist aus dem snipsel Adafruit_NeoPixel
      ———————————————————————–
      #include
      #include
      #include
      #define PIN D4

      Adafruit_NeoMatrix matrix = Adafruit_NeoMatrix(11, 10, 2, 5, PIN,
      NEO_MATRIX_BOTTOM + NEO_MATRIX_RIGHT +
      NEO_MATRIX_ROWS + NEO_MATRIX_ZIGZAG,
      NEO_GRB + NEO_KHZ800);

      const uint16_t colors[] = {
      matrix.Color(255, 0, 0), matrix.Color(0, 255, 0), matrix.Color(0, 0, 255) };

      void setup() {
      matrix.begin();
      matrix.setTextWrap(false);
      matrix.setBrightness(40);
      matrix.setTextColor(colors[0]);
      }

      int x = matrix.width();
      int pass = 0;

      void loop() {
      matrix.fillScreen(0);
      matrix.setCursor(x, 2);
      matrix.print(F(„Ich Liebe Dich mein Schatz“));
      if(–x = 3) pass = 0;
      matrix.setTextColor(colors[pass]);
      }
      matrix.show();
      delay(100);
      }

  28. Hallo,
    ich habe ein Problem mit der Wlan Verbindung.
    wenn ich die Wlan Funktion auskommentiere läuft die Uhr. natürlich startet die dann um 12 Uhr. Sobald ich die Funktion aber wieder mit rein nehme läuft Garnichts mehr.
    SSID und Passwort sind im Programm hinterlegt.
    Hoffe das du mir vielleicht helfen kannst.

    MfG
    Janik

  29. Hallo und herzlichen Dank für die Anleitung. Ich habe bereits eine große Wordclock gebastelt, da waren aber die Lötarbeiten um ein Vielfaches umfangreicher.

    Inzwischen habe ich die notwendigen Materialien bestellt und versuche auch, die Deckplatte gelasert zu bekommen. Bei der Materialbestellung fiel mir auf, dass drei Stegformate beschreiben sind: small, medium und large. Wofür sind die Mediumstege gedacht? In dem Videotutorial konnte ich sie nicht entdecken.

    Schöne Grüße Detlef

    1. Hallo Detlef,

      die Medien-Stege sind jeweils zur optionalen Nutzung gedacht. Eigentlich braucht man nur vier von den großen und den Rest kann mit den kleinen ausfüllen. Wenn man aber nur die Aussparung dort haben möchte wo der Wemos D1 Mini hinkommt oder möchte man noch zusätzliche LEDs einbauen (z.B. für die einzelnen Minuten) kann man die LEDs über die Medium-Stege trennen.

      Beste Grüße
      Goran

      1. Hallo Detlef,

        finde es schön, dass dir das Projekt gefällt. Bzgl. der Zugangsdaten hat mich vor kurzem ein User aus der Community angeschrieben, der den Code soweit angepasst hat, dass die Uhr ein WLAN-Accesspoint zur Verfügung stellt, wenn noch kein WLAN-Zugang existiert. Ich hatte es bislang leider zeitlich noch nicht geschafft den Code zu übernehmen, hoffe jedoch, dass das in den nächsten Wochen der Fall sein wird. Zu dem Accesspoint kommt noch die Funktionalität, dass die Zeitzone und die Farben gespeichert werden und nicht neu eingestellt werden müssen, wenn man der Uhr den Strom kappt.

        Beste Grüße
        Goran

  30. Hallo und guten Abend!

    Nur mal kurz die Frage, an welchem Pin die Steuerung für die LEDs abgegriffen wird. Habe ich den Pin D4 richtig erkannt?

    Die Spannung für die LED kann ich doch bestimmt parallel vom Netzteil bzw. der Spannungsversorgung abgreifen, oder?

    1. Hi,

      D4 ist richtig. Wenn du einen anderen Pin verwenden möchtest, dann musst du das in Zeile 8 bei DATA_PIN angeben. Die Spannung kannst du auch von der Stromversorgung nehmen. Achte aber darauf, dass du auch eine 5V Spannungsversorgung verwendest, wenn du ein 5V LED-Band hast.

      Beste Grüße
      Goran

    2. Meine Frage hat sich erledigt. Die Uhr läuft!

      Eine Anmerkung hab eich jedoch noch: Bei der Angabe „Es ist ein Uhr“ mogelt sich ein „s“ mit in den Text, wahrscheinlich abgleitet von den anderen Urzeitangaben z. B. „Es ist fünf vor eins“.

      Wenn es mal passt, fände iche ine Anpassungd er Routine nicht schlecht.

      Liebe Grüße Detlef

  31. Hallo,

    ich melde mich noch einmal zur Version 2.0, die ich inzwischen erfolgreich installiert habe.

    Die Angabe der Wlan-Daten im Programmcode stellt nicht unbedingt für Jedermann eine befriedigende Lösung dar. Will man eine gebastelte Uhr verschenken, wäre es toll, wenn der Beschenkte seine Wlan-Daten selbst vorgeben könnte. Dazu müsste das Programm bei fehlendem Wlannetz einen Access Point zur Verfügung stellen, über den dann eine Anmeldung im heimischen Netz möglich wäre.

    Da ich selbst über so gut wie keine Programmierkenntnisse verfüge, kann ich daher nur Anregungen geben. Vielleicht kann ja der Autor oder Jemand anderes das Programm entsprechend erweitern

    Ansonsten finde ich die ganze Sache total cool und bedanke mich noch einmal bei dem Autor für die viele Arbeit, die in dem Projekt steckt.

    Viele Grüße Detlef

    1. Danke für den Hinweis.

      Die Minuten-LEDs finde ich auch gut, und würde mich freuen, wenn die prgrammtechnisch noch eingebaut werden. Die Uhr kann ja dann auch noch problemlos erweitert werden.

      Liebe Grüße Detlef

  32. Hallo, tolles Projekt! Habe da mal eine Frage hat das schon jemand mit einer 45×45 großen Uhr gelöst?
    Ich habe mal eine gebaut war von mikrocontroller damals nur die macht jetzt zicken. Ich würde gerne deine Nachbauen aber den alten Rahmen weiter nutzen.
    Würde mich freuen wenn mir da jemand helfen kann. Programmier Kenntnisse habe ich keine. Kann nur etwas Löten
    Gruß Jakob

    1. Ich bins nochmal, meine Version hat auch nur die 10 Zeilen, ich werde es wie du schon oben geschrieben hast versuchen abzuändern. Mich würde es freuen wenn du die Minuten anzeige mit einbauen könntest das wäre echt Super. Sobald die sachen angekommen sind und ich alles Platziert und verlötet habe werde ich versuchen es umzusetzen. Ich hoffe ich bekomme es mit der Installation hin, den es ist mein erstes Projekt mit solchen sachen.
      Ich werde berichten!
      Ich danke dir für dieses tolle Projekt

      Gruß Jakob

  33. irgendwas stimmt da mit dem Code nicht,
    ich bekomme in Zeile 605 error missing terminating “
    ich habe Leider keine keine Ahnung vom Programmieren, worauf deutet das hin?
    Gruß Jakob

  34. Oh Sry, ich hatte den Code nicht in einer Code Sektion erstellt, also wurden darauf Formatierungen angewendet, was dann zu den Problemen geführt hat. Ich habe meinen Kommentar angepasst, probier es doch bitte nochmal.

    1. Hallo Christian,

      hast Du die Minuten-LED nummerisch angehängt, also erste Minute = LED 122, zweite Minute = LED 123 etc? Dann könnte ich meine schon fertige Uhr relativ schnell anpassen.

      Frage an napsio: Hattest Du schon Gelegenheit, Dich um den Accesspoint zu kümmern? Es macht mir immer noch Sorge, Menschen, denen ich die Uhr schenken möchte (Weihachten steht vor der Tür), nach ihren Wlan-Daten zu fragen…

      Schöne Grüße Detlef

  35. Hi Christian, super danke dir das hat jetzt geklappt. Habe die 5 Zeilen angepasst hoffentlich klappt das dann mit meinem 10 Zeilen Matrix! Werde berichten sobald ich es alles fertig gelötet habe und ausprobiert. Danke dir nochmals und auch Danke an Naspio für den Super Code. Wenn ihr vielleicht wisst was ich genau ändern muss für mein 10 Zeilen Format könnt ihr mir gern tips geben, wie gesagt bin anfänger.
    Gruß Jakob

    1. Sorry, wer lesen kann, ist klar im Vorteil.

      Man muss nur einfach den Code mal lesen, danne rgibt sich das von selbst.

      In den nächsten Tagen werde ich es testen.

      LG Detlef

      1. Hallo Jakob,

        zur Einstellung der Helligkeit schau mal in Christians Code Zeile 625:
        FastLED.setBrightness(50);

        Wenn Du den Wert (hier 50) änderst, veränderst Du auch die Helligkeit.

        Napsio ging immer von einem viel geringerem Wert aus (ich glaube 15 war es). Hat was mit der Stromstärke zu tun, die die LEDs brauchen (mA), wenn sie leuchten. Der Wemos Mini kann nur begrenzt Stromstärke zur Verfügung stellen. Ich bin leider kein Elektrikfachmann und kenne mich nicht so sehr aus. Im Zweifelsfall muss halt die Stromversorgung der LEDs gesondert sichergestellt werden. Siehe auch die Kommentare zur Ursprungsuhr:
        https://www.panbachi.de/eigene-word-clock-bauen/

        LG Detlef

        1. Hallo Detlef, und allen anderen danke euch, ich hatte auch vor die Leds gesondert mit einem Netzteil anzuschließen. Fühle mich dabei sicherer. Ich bin auch kein Fachmann. Bin im vom Beruf her ein Maschinenführer aber Hobby mässig macht mir sowas viel Spaß vor allem wenn einem so Stark geholfen wird. Top Projekt

          1. Hallo allerseits, ich habe gestern alles zu Ende gelötet und verbaut. Es Funktioniert alles wie gewollt. Danke nochmals an alle auch die Minuten funktionieren habe wie oben geschrieben die 4 Zeilen mit – 11 geändert. Bei mir läuft das ganze jetzt auf 10 Zeilen. Die Icons und Grad anzeige brauche ich nicht. Hauptsache die Uhr läuft wieder.
            Habe eine 5m WS21812b Band gekauft und dann halt die 114 Leds abgeschnitten. Habe mir dann von einer Lochrasterplatine streifen geschnitten und darauf dann im gewollten abstand die Stücke aufgeklebt und das alles dann mit 0.6mm Kupfer draht verlötet. Falls jemand Fotos brauch kann ich diese zur Verfügung stellen. Als Netzteil habe ich ein 5V 3a vom alten Raspberry genommen meint ihr das reicht dafür? Ich habe die Helligkeit auf 50 gelassen. Wie hoch kann man da gehen was meint ihr?
            Was mir ein bisschen an der Uhr noch fehlt wäre wenn man vielleicht einen Befehl einbauen könnte das z.B. um 23:30 die Leds abschalten und um 06:00 wieder einschalten. Ist sowas realisierbar?
            Gruß Jakob und danke nochmal an alle für das Super Projekt.
            Gruß Jakob

          2. Hi,

            sorry für die späte Antwort, aber ich hatte an einer neuen Version gearbeitet, die jetzt online ist. Die neue Version funktioniert jetzt mit einer 11×11 und 11×10 Matrix und hat auch einen WiFi-Hotspot mit dabei um das WLAN einfacher zu konfigurieren. Zusätzlich gibt es jetzt auch eine „Zeitschaltuhr“ in der man einstellen kann von wann bis wann die Uhr aus sein soll.

            Beste Grüße

          3. Hallo Goran,

            wo findet sich die neue Version? Oder hat die neue Version keine neue Versionsnummer?

            Liebe Grüße Detlef

          4. Schön, dass dus gefunden hast 🙂 Hab es noch nicht als Release getaggt, da ich noch nicht alles durchgetestet hab und dabei eher auf euch angewiesen bin. Hoffe aber, dass alles soweit funktioniert 🙂 Werde demnächst auch mal ein Forum starten, da ich nicht gedacht habe, dass das Feedback so positiv wird. Ich bin sehr gespannt auf eure Umsetzungen, die ihr dann auch posten könnt.

            Beste Grüße

  36. ach so, wie stellt man den die Helligkeit ein?
    anbei noch die Zeilen die ich geändert habe

    Zeile 300
    leds[time_it_is[i] – 11].setRGB(fgColor.r, fgColor.g, fgColor.b);
    Zeile 305,311 und 316.

    Meint ihr das ist so Richtig?

  37. Halo Allerseits!

    Nachdem jetzt meine Uhr anstandslos läuft, habe ich festgestellt, dass der Arduino einen eigenen Hotspot zur Verfügung stellt. Das Problem ist hier auf dieser Seite beschrieben: https://de.switch-case.com/57691801

    Es ist auch eine Lösung beschrieben, nur weiß ich nicht, wo der Befehl

    WiFi.mode (WIFI_STA);

    eingebaut werden muss. Dazu reichen meine Programmierkenntnisse leider nicht aus. Wenn ich den Befehl unter der Zeile, in der die Wlan-Daten eingetragen werden, einfüge, kommt die Fehlermeldung

    ‚WiFi‘ does not name a type

    Kann Jemand helfen?

    Herzlichen Dank schon einmal und schöne Grüße Detlef

  38. Ich melde mich noch einmal mit einer Nachfrage. Die Uhr läuft, auch die Einbindung ins Netzwerk funktioniert, wobei die Netzwerkeinstellungen von der V2.0 erhalten bleiben, wenn die V3.0 geflasht wird.
    Ich möchte gerne die Uhr ohne die Angabe „Es ist“ laufen lassen. Dazu habe ich in der Zeile 67 die angesprochenen LEDs auf -1 gesetzt. „Es ist“ wird dann nicht mehr angezeigt, allerdings die LED 11 (das „Z“ in der 2. Reihe) leuchtet dann konstant. Irgendwie muss es einen Zusammenhang zwischen dieser LED 11 und dem Text „Es ist“ geben, den ich leider nicht erkenne.

    Kann mir geholfen werden?

    Das fühere Problem mit „Es ist Eins Uhr“ konnte ich noch nicht testen, da ich genau um diese Uhrzeit die neue Programmversion noch nicht beobachten konnte.

    Herzlichen Dank und schöne Grüße

    Detlef

  39. Irgendwas klappt bei mir den 10 Zeilen nicht, man muss doch das
    #define GRID_ROWS 11 // supported 10 and 11
    auf 10 ändern oder verstehe ich da was Falsch?
    Gruß Jakob

  40. Hallo, ich verfolge mit Begeisterung dieses Projekt, vielen Dank für eure tolle Arbeit!

    Habe bis jetzt drei Uhren fertig, die leider noch nicht ganz perfekt funktionieren.
    Verbaut wurden 114 LED in dieser Reihenfolge:
    104 114
    103 93
    82 92
    81 71
    60 70
    59 49
    38 48
    37 27
    16 26
    15 5
    1-4

    In der Version 2.0 ließen sie die LEDs auf meine Anordnung ändern und es funktionierte soweit, nur leider fehlten die vier Punkte der Minutenanzeige. Außerdem ging die Zeit eine Minute nach.

    In der Version von „Christian vom 2.12.2019“ funktioniert fast alles perfekt, bis auf:
    z.B. „es ist fünf vor elf, 4 Minutenpunkte leuchten“ beim umschalten der nächsten Minute:
    „es ist um zehn“ erst beim erneuten umschalten der nächsten Minute: „es ist um elf, 1 Minutenpunkt leuchtet.
    Diese Eigenart tritt nicht bei jedem Stundenwechsel und bei jeder von den Uhren gleichzeitig auf.
    Woran könnte das liegen, lässt sich dieser Fehler noch beheben???

    Version 3.0 gefällt mir erstmal sehr gut, leider leuchtet mit meiner Anordnung alles versetzt.
    Egal welche „ GRID_FIRST“ Anordnung (0-3) und „GRID_ROWS“ (10oder11) ich auch benutze, es leuchten alle LEDs anders versetzt. Die Minutenpunkte lassen sich leider auch nicht einzeln definieren, sondern sind wie ich es verstehe hinten angehängt. In meiner LED Anordnung sind die Minutenanzeigen die ersten vier LEDs.

    Grüße Andre

    1. Hi,

      schön, dass dir das Projekt gefällt 🙂 Das freut mich sehr.

      Das einfachste wäre die Minuten-LEDs ans Ende anzulöten. Bei drei Uhren kann das aber nervig sein. Damit wärst du jedoch updatesicher und müsstest die Software nicht bei jeder neuen Version anpassen.

      Ich schaue aber mal, dass ich dafür einen Workaround erarbeite und poste denn dann hier sobald der fertig ist.

      Beste Grüße

      1. Ich glaube ich habe eine Lösung für dich. Ändere die Zeile 236 in folgendes um:

        led = (row % 2 == 1) ? ((GRID_ROWS * 11) - 1) - ((row * 11) + col) + 4: ((GRID_ROWS * 11) - 1) - (((row + 1) * 11) - col) + 1 + 4;

        und die Zeilen 353 folgendes:

        for(int s = 0; s < singleMinute; s++) {

        Der Code ist jedoch nicht getestet, wäre aber schön, wenn du posten würdest, ob es geklappt hat.

        Beste Grüße

  41. Deine Lösung mit den Minutenpunkten am Anfang (1-4) funktioniert bei meiner Konfiguration, mit den beschriebenen Änderungen unter den Einstellungen:
    „GRID_ROWS“10
    „ GRID_FIRST“3

    Allerdings besteht das gleiche Problem beim Wechsel der vollen Stunde, dass gelegentlich eine Minute lang die falsche Stundenzeit angezeigt wird (wie bei Version von Christian vom 2.12.2019).
    Kann es vielleicht auch an meinem alten Router liegen (FRITZ!Box Fon WLAN)?

    Die WIFI Einstellungen sind natürlich super, um eine Uhr z.B. als Geschenk in einem anderen Wlan in Betrieb zu nehmen.

    Vielen Dank
    Andre

  42. Hallo, gibt es vielleicht eine Lösung wegen der gelegentlich falsch angezeigten Stundenwerte?

    Ist es auch möglich den sogenannten „Ossi Modus“ statt dem jetzigen „Rhein-Ruhr-Modus“ anzeigen zu lassen?

    Ossi-Modus:

    es ist ein Uhr
    es ist fünf nach eins
    es ist zehn nach eins
    es ist viertel zwei
    es ist zehn vor halb zwei
    es ist fünf vor halb zwei
    es ist halb zwei
    es ist fünf nach halb zwei
    es ist zehn nach halb zwei
    es ist dreiviertel zwei
    es ist zehn vor zwei
    es ist fünf vor zwei

    Mfg Andre

    1. Hi, ich denke, dass das Problem mit den falschen Stundenwerten am NTP-Server liegt. Ich werde in den nächsten Tagen ein Update bereitstellen mit dem das Problem hoffentlich behoben wird.

      Prinzipiell lässt sich ein „Ossi Modus“ anzeigen, jedoch bräuchte man dafür ein neues Layout für die Uhr, da die jetzige kein „dreiviertel“ hat.

      Beste Grüße

  43. Das hört sich sehr gut an mit dem Update, bei einer Uhr laufen die Stundenwerte jetzt eine Stunde dauerhaft nach.

    Im jetzigen Layout ist die komplette dritte Zeile von oben „Dreiviertel“.

    Hier nochmal ein Vergleich:

    Ossi-Modus:
    es ist ein Uhr
    es ist fünf nach eins
    es ist zehn nach eins
    es ist viertel zwei
    es ist zehn vor halb zwei
    es ist fünf vor halb zwei
    es ist halb zwei
    es ist fünf nach halb zwei
    es ist zehn nach halb zwei
    es ist dreiviertel zwei
    es ist zehn vor zwei
    es ist fünf vor zwei

    Rhein-Ruhr-Modus:
    es ist ein Uhr
    es ist fünf nach eins
    es ist zehn nach eins
    es ist viertel nach eins
    es ist zwanzig nach eins
    es ist fünf vor halb zwei
    es ist halb zwei
    es ist fünf nach halb zwei
    es ist zwanzig vor zwei
    es ist viertel vor zwei
    es ist zehn vor zwei
    es ist fünf vor zwei

    Grüße Andre

  44. Moin zusammen,
    ich bin vom Funktionsumfang und den umgesetzten Ideen wirklich beeindruckt! Hierfür schon mal vielen Dank!
    Ich habe mir die neueste Version des Codes gestern geladen und versucht auf meinen Mini zu spielen. Leider kommt es hier immer zu Kompilierungsfehlern.
    Es werden immer mehrere Bibliotheken gefunden und der Fehler „exit status 1“ wird ausgegeben.
    Für welche Versionen der einzelnen Sketche wurde denn Programmiert?
    Lade ich den Code von Christian bekomme ich keine Fehler. Woran kann das liegen?

  45. Hallo zusammen,
    ich habe gerade ein Verständnisproblem,
    In der Grid Beschreibung werden 3 Längen angegeben.
    Wenn ich mir das Video anschaue werden nur 2 Längen verwendet
    230 mm und 213 mm.
    Ist das korrekt oder verstehe ich was nicht?
    Meine Stückliste wäre
    4x 230mm
    20x 213mm

    Danke für eure Hilfe.
    Frank

    1. Deine Stückliste ist soweit korrekt. Die dritte Länge kannst du verwenden, wenn du noch LEDs für einzelne Minuten einbauen möchtest um die zu seperieren. Aber im Normalfall brauchst du nur die, die ich auch in dem Video verwende.

      Beste Grüße

  46. Hallo Goran,

    Du schreibst oben : „Die aktuelle Uhrzeit bezieht die Uhr über einen NTP-Server. Geplant ist jedoch ein RTC-Modul (bereits bestellt 🙂 ) um die Uhr auch ohne Internet-Anbindung synchron zu halten. Über MQTT kann man die Farbe der LEDs anpassen.“

    Ich habe bereits seit einigen Jahren eine Uhr über ein RTC-Modul laufen und bin eigentlich froh, dass es jetzt eine Version gibt, die die Uhrzeit über Wlan bezieht. Die Uhrzeit der „alten“ Wörteruhr wird einmal die Nacht synchronisiert und geht über den Tag ein wenig verkehrt. Da die Synchronisierung nicht immer zuverlässig erfolgt – ist auch abhängig vom Standort und der Qualität des Funksignals – habe ich auf eine häufigere Synchronisation verzichtet. Außerdem benötigt die Wlan-Version weniger Platz im Gehäuse.

    Wenn Du eine Funkversion planst, dann wirf bitte die Wlan-Version nicht über den Haufen….

    Noch eine Frage: Ich plane, die alte Funk-Uhr auf Wlan umzubauen. Die 10-Zeilen dürften ja kein Problem darstellen, das lässt deine aktuelle Wlan-Version ja zu. Allerdings sind die Buchstbenpositionen nicht alle identisch. Meinst Du, dass es möglich ist, das Layout durch Anpassung der Buchstaben- bzw. Wortdefinitionen in der Version 3.0 bei den Zeilen 70-81 und 85 – 96 zu übertragen? Sollte ich an anderer Stelle im Code noch etwas berücksichtigen?

    Schöne Grüße Detlef

    1. Ich habe es einfach mal versucht und es hat geklappt. Ist nur ein Puzzlespiel, um die richtigen LED-Nummern herauszufinden.

      Sehe ich das eigentlich richtig, dass das Programm die Nummernfolge umkehrt? Eigentlich wäre ja die erste LED unten links (das E) die LED Nr. 0, oder?

    2. In der neuen Version können zusätzliche Layouts definiert werden. Die Position der LEDs wird geht oben links bei 0 los und dann jeweils immer von links nach rechts. Also erste Zeile 0-10, zweite Zeile 11-21 etc.

      WLAN Funktion wird nicht verschwinden. Es wird bloß irgendwann zusätzlich das Funk-Modul möglich sein.

      Beste Grüße

  47. Hallo Leute,

    ich brauche noch einmal Unterstützung. Ich habe die Uhr auf den Ossi-Modus umgestellt. Im großen und ganzen ist es mir auch gelungen. Allerdings gibt es ein Problem: Die Uhrzeit „Es ist zwanzig nach“ bezieht sich immer auf die abgelaufene volle Stunde. Z. B. „Es ist zwanzig nach acht“. Im Ossi-Modus wird bei der entsprechenden Zeitangabe bereits auf die nächste volle Stunde Bezug genommen: „Es ist zehn vor halb neun“. Wenn ich nur den Text „zwanzig nach“ gegen „zehn vor halb“ ersetze, stimmt bei dieser Anzeige die Stunde nicht.

    Kannst Du mir bitte einen Tipp geben, an welcher Stelle im Programm eine entsprechende Anpassung vorgenommen werden kann?

    Herzlichen Dank und schöne Grüße Detlef

    1. Hi, der Tipp, den ich dir geben kann ist dich noch einwenig zu gedulden 🙂 Ich denke, dass ich morgen Abend die neue Version der WordClock auf GitHub hochladen werde. Da ist der „Ossi-Modus“ mit dabei. Teste aktuell noch ob der Fehler mit der falschen Uhrzeit zum Stundenwechsel auftritt, jedoch denke ich, dass ich den beseitigt habe.

      Beste Grüße

      1. Hallo Goran,

        der „Fehler“ tritt nicht mit dem Studenwechsel auf. Das ist alles in Ordnung. Es ist lediglich der falsche Bezug.

        Vielen Dank für Deine schnelle Reaktion. Ich freue mich schon auf die neue Version.

        Schöne Grüße Detlef

        1. Ich meinte den Fehler der oft beim Stundenwechsel auftritt, dass die erste Minute manchmal die falsche Uhrzeit angezeigt wurde 🙂 War nicht im Bezug auf deinen Kommentar 🙂

          1. Also mir ist noch nichts aufgefallen. Ich bin nicht mehr der Jüngste und mit den Minuten relativ tolerant… 🙂

  48. Ich habe heut die aktuelle Version auf meinen Node Mcu hochgeladen. Die Uhrzeit wird angezeigt….. allerdings um 1 Stunde zurück. Und es wird auch kein WLAN Access Point erstellt. Kann mit da jemand weiterhelfen ?

    1. Das ist komisch. Ohne Access Point keine (erstmalige) Wlan-Einbindung. Das geht nur über den Access Point.

      Schau mal nach, ob sich Deine Uhr in Deinem Wlannetz befindet und von Deinem Router eine IP bekommen hat. Wenn ja, dann ruf diese IP einmal auf. Ansonsten könnte auch die IP 192.168.4.1 weiterhelfen.

      Wenn die Uhr eine Uhrzeit ausgibt, aber eine Stunde zurück, dann kann das daran liegen, dass die Uhr auf Zeitzone 0 eingestellt ist (ist die Grundeinstellung bei Erstinbetriebnahme). Im Webinterface kann – neben anderen Dingen – die richtige Zeitzone (+1,= MESZ) eingestellt werden.

      Gruß

      1. Hallo Goran,

        da hast Du Dir ja mit der V4 richtig Mühe gegeben. Chapeau! Meine individuellen Änderungen habe ich bereits zu einem Teil eingebaut.

        Ein kleiner Fehler ist mir dabei aufgefallen: Im alternativen Modus wird bereits zehn Minuten nach der vollen Stunde auf die nächste volle Stunde umgeschaltet. Das hat dann zur Folge, dass bereits um zehn nach die nächste volle Stunde angegeben wird (z. B. „zehn nach elf“ statt „zehn nach zehn“.

        if(minute >= 10) {
        hour += 1;

        Ich denke, da müsste es heissen

        if(minute >= 15) {
        hour += 1;

        Außedrem: Die Umstellung auf 10 Rows funktioniert nicht.

        Ansonsten: Großen Respekt!

        Liebe Grüße Detlef

        P.S.: Falls mir noch etwas auffällt, melde ich mich natürlich.

          1. Die gefixte Version ist jetzt verfügbar. „if(minute >= 15)“ war richtig. Das ist jetzt so drin. Die Konfiguration aus der user_config.h müsste jetzt auch korrekt geladen werden. Bitte einmal testen =)

    2. war bei mir auch der Fall, da der verwendete NodeMCU noch meine WLAN-Daten aus einem anderen Projekt gespeichert hat, wenn man im WEB-Interface die WiFi-Einstellungen rücksetzt, erscheint beim nächsten Start des NodeMCU auch wieder der
      Access Point.
      In der Arduino-IDE findet man unter Werkzeuge bei Board NodeMCU den Parameter „Erase Flash“: only Sketch oder
      Sketch + WiFi settings.
      Hier kann man auch die WiFi -Einstellungen löschen

    1. Hallo Goran,

      habe versehentlich meinen ersten Kommentar zur V4 an den vorhergehenden Post angehängt. Sorry. Hoffentlich gerät jetzt nicht einiges durcheinander…

      Gruß Detlef

  49. Hallo, vielen Dank erstmal für die neue Version 4.0, mit „Ossi Modus“

    Leider kommen bei meiner Konfiguration (114 LED, Minutenpunte am Anfang):
    Grid 11, Row 10, 4 Minutenpunten am Anfang, keine ordentliche Anzeige raus.
    Es ist alles versetzt, egal in welcher Grid_first Position (0-3)
    Bei der Version3.0 hat es mit GRID_ROWS 10, GRID_FIRST 3 einwandfrei funktioniert.

    Kann es sein, dass wie Detlef schreibt, die Umstellung in Row 10 nicht richtig funktioniert?

    Grüße Andre

      1. Hallo napsio,

        herzlichen Dank. Der Fix funktioniert.

        Ich musste mich heute übrigens belehren lassen, dass es in der alternativen Form tatsächlich „viertel drei“ heisst, wenn es „viertel nach zwei“ ist. Wer soll das verstehen. Von daher ist die 15 (s. oben) vollkommen richtig.

        Tolle Arbeit.

        Viele Grüße

    1. Hallo Andre,
      ich habe das gleiche Problem, ich habe z.Z nur einen LED-Streifen mit 125 LED´s (11 x 11 +4 x Minute). In der User-Config habe ich
      GRID-First =0 und in GRID_SINGLE_MINUTES=1 eingetragen.
      Data_Pin 4 ist an der ersten LED (oben links) angeschlossen.
      Eigertlich müsste LED1,2, 4, 5, und 6 für ES_IST leuchten,
      es leuchten aber LED 115, 116 118,119, 120 (also ganz am Ende
      vor den MinutenLED). Die Stunden und Minuten sind natürlich auch versetzt.
      Es Sie so aus, als würde die Verschaltung der 11er -LED Streifen nur funktionieren, wenn es wie im Video gemacht wird ( LED 1 links unten und dann immer immer im Wechsel nach oben, die LED 125 ist dann das F von FÜNF) Mit dem Eintrag der verschiedenen Optionen in GRIT_FIRST habe ich nichts erreicht.
      Wie ist Deine Matrix geschaltet?

        1. Hallo Goran,
          ich habe heute die v4.0.1. geladen und einige Funktionen getestet. (11×11, 11x 10, deutsch und deutsch alternativ)
          Alles super, vielen Dank für Dein tolles Programm.
          Ich hätte noch zwei kleine Fragen?
          1. in welchem Unterprogramm wird in der V4 die Helligkeit eingesellt?
          2. Gibt es Anwendungsbeispiele, wo Buchstaben der 11. Zeile angesteuert werden, oder ist 11×11 eine reine Designfrage?
          Viele Grüße

  50. Hallo Zusammen. Ich habe meine 4 Minuten LEDs ans Ende des Stripes gehängt also an led 111/112/113/114 wobei 114 die Minute 1 darstellt und oben links sitzt. Der Stripe fängt ebenfalls oben links an. Kann man das im Sketch anpassen sodass ich nicht löten muss? Wäre danke für eure Unterstützung.

    1. Schau dir mal die user_config.h an. Dort kannst du definieren wie viele Zeilen deine Anzeige hat, wo die erste LED sitzt und wo deine Minuten LEDs sitzen. Voraussetzung ist jedoch, dass alle deine Minuten-LEDs aneinander gelötet sind.

      1. Das mit der Konfig ist mir klar und gelötet hab ich das natürlich auch..Aber in einer anderen Reihenfolge. Ich habe die Minuten LED hinten angehängt. also 111 112 113 114 …….Mit dem aktuellen sketch fängt die erste minute unten links aufzuleuchten …… die zweite unten rechts usw. Das ganze möchte ich gerne softwareseitig anpassen …
        .Also
        Minute 1 = LED 114
        Minute 2= LED 113
        Minute 3= LED 112
        Minute 4=LED 111

  51. Hallo,

    ich habe jetzt meine große Uhr erfolgreich umgebaut und mit der neuen Software versehen. Tolle Geschichte. Noch einmal herzlichen Dank an napsio für die tolle Arbeit.

    Vielleicht ‚mal eine Anregung für die Zukunft: Wenn die ein oder anderen Dinge, wie z. B. die Einstellung der Helligkeit, über das Webinterface regelbar wären, hätte das auch seinen Charme.

    Schöne Grüße

    1. Hi,

      es gab diesbezüglich ein Pull-Request auf GitHub, jedoch auf Basis des alten Codes der WordClock. Ich weiß nicht ob da noch ein weiterer Pull-Request kommt, ansonsten würde ich das einbauen. Aber du kannst die Helligkeit auch über die Farbe angeben, da du ja alle 16,7Mio Farben verwenden kannst. Und da sind auch sämtliche Helligkeitsstufen enthalten.

      Beste Grüße

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.