DIY RGB-Strip Wordclock (UPDATE 8)

Da ich einen Grund gesucht habe die bekannten LED Stripes mit Controller auszuprobieren, habe ich angefangen eine Wortuhr (Wordclock) zu bauen. Die meisten DIY Wordclocks werden mit einer LED Matrix aufgebaut. Ich bin gespannt wo die Vor- und Nachteile bei der hier gewählten LED Strip Variante liegen.

Geplant ist folgender Aufbau:

Begonnen habe nun mit dem inneren Gitterrahmen. Dazu im Baumarkt eine 500x500x22mm Spanplatte und eine Lochfräse für die Bohrmaschine. Der Durchmesser der Lochfräse beträgt 25mm. Die Maße für die Bohrungen habe ich aus der Anleitung „Komplettbausatz für 50er LED-Leuchtbild“ von www[dot]leuchtbildshop[dot]net.

IMG_20140201_173235
Erst alles nach Vorlage anzeichnen
IMG_20140201_185203
Dann geht es weiter mit dem Bohren. Ich habe unterschätzt wie viel denn eigentlich 114 Löcher sind ;-)
IMG_20140201_192133
Das Endergebnis kann sich sehen lassen.
IMG_20140201_193907
Hier sieht man wie sauber die LED auf 22mm Abstand das Papier ausleuchtet.

Soweit so gut, im nächsten Schritt werden nun die LEDs von hinten an der Platte befestigt. Dazu werde ich Bastelplastik verwenden (Hartschaumplastik 3mm).

Update 04.02.2014:

Heute habe ich die 114 LEDs auf eine 500x500mm große Hartschaumplastikplatte geklebt. Ich hoffe bis zum Wochenende bin ich fertig mit löten.

IMG_20140204_204812 IMG_20140204_204827

Update 06.02.2014:

IMG_20140206_214614
Fertig mit den Lötarbeiten!
IMG_20140206_221641
Folie zum testen aufgelegt. Sieht doch schon gut aus!
IMG_20140206_221855
Nur mit Diffusionsfolie

Update 08.02.2014:

Anzeige der Texte in richtiger Reihenfolge funktioniert schon mal.

IMG_20140207_221439

 

Update 09.02.2014:

Da mir im Moment der IKEA Ribba Rahmen und auch das DCF77 Modul noch fehlen habe ich heute den Sourcecode und die Schaltung um einen IR-Empfänger erweitert (Den IR Empfänger habe ich aus einem alten DVD-Player ausgebaut ;-) ). Die Steuerung der Uhr funktioniert jetzt auch mit meiner Logitech Harmony 700.

Zuerst wollte ich eine dieser 24/44 Tasten IR Fernbedienungen nutzen welche bei den meisten steuerbaren RGB LED Streifen enthalten sind und die Harmony dann anlernen. Dann habe ich aber einen Hersteller (Starwire) gefunden der diese 44 Tasten IR Fernbedienung (SW-IRC-D) anbietet und welchen ich in der Konfigurationsoberfläche von Logitech auswählen kann. So war die Konfiguration der Harmony auch ohne original Fernbedienung möglich. Das Gerät findet man unter: „Automatisierung im Haushalt“ -> „Beleuchtungssteuerung“. Dort dann nur noch Starwire SW-IRC-D eingeben.

Zur Ansteuerung des IR Empfänger habe ich die Library „Arduino-IRremote“ genutzt. Funktioniert wunderbar.

Update 28.02.2014

So scheibe fertig verklebt. Sieht sehr sauber aus. Jetzt fehlt eigentlich nur noch Feinschliff…

IMG_20140219_183306 IMG_20140219_183233

Update 31.03.2014

Da nun mehrere Anfragen zum Sourcecode kamen, habe ich mich entschlossen nun doch eine unfertige Version zu veröffentlichen. Da ich in meinem normalen Leben hauptsächlich mit Java Entwickele freue ich mich über Feedback meines C-Codes. Pull Requests sind natürlich auch herzlich willkommen.

https://github.com/bagges/rgb_wordclock

Update 12.04.2014

Ich habe nun in meinem github Repo die erste BETA1 veröffentlicht. Funktionsumfang:

  • ON/OFF über Fernbedienung
  • 10 verschiedene Farben über Harmony umschaltbar. Standardfarbe: Weiß
  • DCF77 Zeitsynchronisation (beim ersten Start dauert es mindestens 2 Minuten bis die Uhr was anzeigt).
  • Automatische Helligkeitsanpassung mittels LDR (Umschaltbar mit Fernbedienung)
  • Wessi und Rhein-Ruhr Mode. Standard: Rhein-Ruhr (Umschaltbar: WIP)
  • Fun-Modes (Herz, Party, Fast-Test. Matrix: WIP)

Update 08.09.2014

Hier ein auf die schnelle zusammen geklickter Anschlussplan: Wordclock_Steckplatine (Erstellt mit Fritzing)

Alle Angaben und Daten wurden nach bestem Wissen und Gewissen erstellt, es wird jedoch keine Gewähr für deren Vollständigkeit und Richtigkeit übernommen :-)

108 Gedanken zu „DIY RGB-Strip Wordclock (UPDATE 8)“

  1. Hi,

    sieht viel versprechend aus. wo hast du die einzelnen LEDs mit chip und die Folie bestellt?

    Auch schreibst du, dass du den sourcecode veröffentlichen willst. gibt es hier schon einen Zeitplan?

    Grüße,
    Kai

    1. Hi Kai,

      danke für deine Nachricht!

      Die Folie gibt es bei: www[dot]plottflott[dot]de. Die LEDs habe ich hier gekauft: http://ebay.eu/1mKJ8Ly

      Ich werde mich jetzt an den Sourcecode machen. Ich wollte das ganze erst veröffentlichen, wenn es denn auch wirklich sauber funktioniert. Ich denke, dass ich in den nächsten 2-6 Wochen eine erste Version fertigstellen werde.
      Aktuell fehlt noch die Integration von DCF-Modul und Fotodiode.

      Grüße
      Markus

  2. Ah. Das update sieht auch shon sehr cool aus.

    Ich seh gerade du hast jede led nochmal gelötet. war der durchgehende strip vom Abstand der LEDs falsch?

    Wieviele Stunden hast du fürs verlöten der Käbelchen gebraucht? :D

    Grüße,
    Kai

    1. Ja, ich habe alle LEDs nochmal gelötet. Ich habe leider keinen Strip gefunden bei dem die LEDs den richtigen Abstand hatten. Ich will gar nicht mehr daran denken was das für eine verdammte Arbeit war ;-). Ich habe nicht auf die Uhr geschaut, aber so 6-8 Stunden hab ich schon daran gesessen. Zum Glück hatte ich mir in weiser Voraussicht wenigstens eine Abisolierzange besorgt :-D.

      1. Klasse !

        genau daran arbeite ich auch, hatte mich auch für Stripes entschieden weil es einfacher ist als eine Matrix aufzubauen.
        Auch ist meine Wahl auf den Arduino nano gefallen, ich mag nicht mehr komplette MC Platinen aufbauen, wird nur teurer und dauert.

        Ich bin aus Preisgründen auch bei den WS2812 gelandet, die gibt es ja in 60LED/m Ribba 25 schon gekauft und 30 LEDs/m für Ribba 50

        bevor ich mir einen Wolf suche welche Wortkombinationen welche Stripeansteuerung per Matrix generieren freue ich mich das du deinen Code hier zur Verfügung stellst.

        Allerdings habe ich mich (noch) gegen DCF77 enschieden, hier habe ich nur noch einen vernünftigen der funktioniert aus einer alten Lieferung. Mit neueren habe ich richtige Empfangsprobleme. Ich denke darüber noch nach oder nehme ein wlan Empfänger auf serieller Basis der NTP befragt.

        Eine RTC kommt auf jeden Fall dazu, das erste Muster läuft mit RTC mit DS1307, Nokia 5110 LCD, einen Stripe Abschnitt mit 8 LEDs, I2C Tastatur (PCF8574) und TSOP und einer LED Fernbedienung im Scheckkartenformat die ich mit Label selber bedrucke, ein 2tes Muster mit Atmel pur mit 40 LEDs.

        Für den Abstand habe ich mich entschieden die Stripes nicht einzeln zu schneiden, der kleine Ribba 25 bekommt Stripes mit 60 LEDs/m macht den 1,6cm Abstand, der große Ribba 50 bekommt Stripes mit 30 LEDs/m macht den 3,2 cm Abstand.

        LG jar

        1. BTW warum geht dein LDR an einen D Port ?

          ich habe den gleich mal auf A0 umgelegt um je nach Umgebungshelligkeit die LED Intensität zu steuern.

          erwähnte ich das ich wlan serielle Module bestellt hatte ? für NTP falls DCF77 nicht empfängt ?

          wäre halt nur das Problem zu lösen wie man den stack bekommt und das NTP noch unterbringt, kann aber billigst in einen Arduin micro ausgelagert werden

          1. Kann sein, dass ich einfach falsch gezeichnet habe. Ich nutze den LDR ja auch um die Intensität zu steuern.
            Das mit dem NTP Modul ist auch interessant, mir aber schon fast zu Overkill. Ich habe mit dem DCF77 bisher sehr gute Erfahrungen gemacht.

          2. Die Ansteuerung für die LED Stripes musste ich eh selber bauen, deswegen war mir auch das Layout egal. Außerdem war die Variante mit der Folie um einiges günstiger. Leider gibt es diese Folie wohl nicht mehr zu kaufen.
            Ich habe kein Oszi und weiß auch nicht wie schnell FastLED schreibt. Wenn ich mich nicht verrechnet habe müssten es ~292fps sein ((800kHz / 24 Bit) / 114 Pixel). Man sieht jedenfalls kein Delay o.ä.

          3. diesen Wert habe ich auch ausgerechnet, aber gemessen nur 3 FPS

            ich glaube ich muss von ws2811 LIB auf fastLIB umstellen.

        2. Hallo jar,
          ich hab schon eine wordclock vor ca. 1 Jahr gebaut, aber bei mir funktioniert die Sync über Funkuhr auch nicht richtig, da das WLan in unserer Wohnung immer stört.
          Hast du das mit dem WLan-sync (NTP) schon hinbekommen und könntest du bitte, wenn ja, evtl. mal den Code hier veröffentlichen?
          Ich probier zwar schon die ganze Zeit, bekomme das aber nicht hin.
          Danke schon mal im Voraus.
          Christoph

        1. PS, egal ob fastLIB oder ws2811/12 LIB

          es dauert gemessene 300ms für 117 LEDs +-5% aber das ist ja auch egal. Jedenfalls für 117 LEDs wird mitnichten 4ms Updatezeit erreicht, egal mit welcher LED LIB

          CRTL_LED_ON;
          #ifndef USE_FASTLED
          LED.sync(); // Sends the value to the LED
          #else
          FastLED.show();
          #endif
          CRTL_LED_OFF;

          mit Oszi vermessen

    2. du schreibst FASTled ist bei dir Echtzeit

      verstehe ich nicht, bei mir liefert Fastled gerade 10% Vorteil

      statt 460ms für 117 LEDs 430ms !

      ich wüsste auch nicht wo da der Fehler sein soll:

      CRTL_LED_ON;
      #ifndef USE_FASTLED
      LED.sync(); // Sends the value to the LED // ws2811 LIB -> 460ms
      #else
      FastLED.show(); // FAST led LIB -> 430ms
      #endif
      CRTL_LED_OFF;
      gemessen an der Control_led

      und eine halbe Sekunde sieht man bei 117 Dioden deutlich wie die LED Stripes einzeln durchfahren werden…..

      bei der FASTled LIB sind die high Bits etwas länger 500ns (ws2812 LIB 400ns), die Pause etwas kürzer 800ns (ws2812 LIB 1ms) so das sich rund 10% Geschwindigkeitsvorteil ergibt, aber bei 117 LEDs kaum hilfreich

      an meinen Interrupts liegt es nicht, beide LIBs sperren ja während der Übertragung die IRQ

      1. so umprogrammiert

        alle Bits zu übertragen dauert nun knapp 4ms !

        das passt bei 1,5µs pro Bit x 117 LEDs x 24 Bit

        nur warum sieht man den Farbwechsel bis die letzte LED erreicht ist ?

        ist die Verarbeitung in den LEDs so langsam ?

        1. Farbwechsel? Hast du nur am Anfang des Streifens Spannung angelegt? An jeder LED fällt was ab, so dass du zwischendurch auch noch Spannung anlegen solltest. Das hatte bei mir auch zu einem „Farbverlauf“ geführt. Ich habe bei mir am Anfang, Mitte und Ende jeweils 5V direkt vom Netzteil angelegt.

          1. du hast Farbwechsel falsch verstanden…..

            Rot nach Grün dauert von der ersten bis zur letzten LED 300ms +- egal welche LIB

            klar von warmweiss zu kaltweiss sieht man das nicht so…..

    1. DS1307: eBay. Habe ich aber nicht verbaut, nutze doch nur die interne Clock.
      DCF77: pollin.de (Gibt es aber auch bei reichelt.de oder conrad.de)
      Logitech Harmony: logitech.de (Das 700er Modell gibt es glaube ich nicht mehr, nur noch die 650)

      1. gehe lieber auf eine DS3231, die soll genauer sein, meine DS1307 rennt immer etwas vor, ich warte auf die DS3231 Lieferung und werde tauschen.

        Das Gitter ist fertig, die Trägerplatte auch für den Aufbau im Ribba25, wenn du willst zeige ich den Aufbau

          1. so bin gerade dabei einen nano vorzubereiten,

            ich hatte ja testweise mal die ws2811 lib mit alle 117 LED angesteuert, aber der Aufbau ist lahm

            obwohl rechnerisch nach 800kHz Taktrate 300/s Frames kömmen müsste.

            nun werden die die FastLED probieren

            Ich hoffe es liegt nicht an meinen Timer Interrupts oder IRMP als Decoder.

            Bilder kommen, ich bin so gepannt wie der erste Entwurf aussieht

            Die Maske hatte ein Freund geschnitten, mussten ja für den LED Streifen alle Abstände der Beschriftung neu machen, ich habe mir nicht die Mühe gemacht den Stripe vollständig zu zerschneiden, mit 60 LEDs/m passt das hervorragend in den Ribba25 die 30 LEDs/m Streifen für Ribba50 sind bestellt.

            Ein 4A Steckernetzteil passt komischerweise auch bei voll programmierter Helligkeit obwohl nur 4A fliessen, sollten doch bei 117 LEDs über 6A sein, egal evtl. geht die Spannung runter.
            Ach ja habe die Kette um 3 LED verlängert,

            1 soll DCF blinken im Sekundentakt machen Farbe nach sync
            2 soll NTP OK machen Farbe nach Statuss, letzter, vorletzter, kein Sync
            3 soll IR Quitt LED sein

            LG jar

            wie gesagt Bilder kommen!

    1. Hallo Rainer, ich hatte mal einen kleinen Plan mit ‚Fritzing‘ zusammen geklickt. Ich schaue mal ob ich den noch irgendwo finde.
      EDIT: Habe den Plan hochgeladen.

  3. ich habe den rahmenlosen CLT Bausatz vom leuchtbildshop.de genommen – da ist alles drin bis auf die Front (die lässt der Typ aus Designschutzgründen weg). Den Bausatz hat man in einem Tag zusammen gelötet. Meine Frau ist immer noch total begeistert – ich auch :)

  4. Hey super Projekt!
    Ich habe die Uhr schon mit einer Art Matrix gebaut. War aber leider nicht ganz so der Renner und beim reparieren ist sie mir in die Luft geflogen…
    Du bist ja noch an der Uhr dran oder sehe ich das Falsch? Ich bin leider nicht ganz so fit und würde eine etwas ausführlichere Anleitung benötigen. Natürlich gegen ein paar Bier ;-)

    Gruß Marcel

  5. Hey, super !
    Auf die Stripes Version hab ich gewartet – der Matrix Ansatz mit Einzeldioden hat mich bisher abgeschreckt.
    2 Fragen:
    a) Warum hast du keine fertigen 30LED/m Stripes verwendet ?
    (mit angepasstem Frontdesign wäre das 30×30 LED Fläche plus 2x 5 Rand =40x40cm Größe ?
    Wolltest du unbedingt auf 50×50 kommen ?
    b) Wo hast du die Frontfolie fertigen lassen ?

    Danke und schönen Sonntag
    /Ijobs

    1. Danke für dein Kommentar.
      Ich wollte keine Anpassungen am Rahmen und der Folie machen. 50×50 ist auch eine schöne Größe. Leider darf der Shop bei dem ich die Folie bestellt hatte diese aus rechtlichen Gründen nicht mehr vertreiben (www[dot]plottflott[dot]de).
      Viele Grüße

  6. Hallo,
    ich bin gegeistert von der Anleitung hier. Aber schon kommen die ersten Fragen auf. Wie kann ich die Uhr Ohne dcf77 betreiben? Was wird benötigt? Code anpassen?
    Vielleicht kannst Du mir helfen. Strippe WS2812b und Arduino Mega sind schon da. :-), habe gerade meinen Pixelstick fertig bekommen.
    Danke schon mal im voraus.
    Gruß Nic

    1. Hi Nic,
      danke für dein Kommentar.
      Wo möchtest du denn die Uhrzeit her nehmen? NTP? Bluetooth? Der Code müsste definitiv angepasst werden.
      Gruß Markus

  7. Hallo…

    Ich verfolge das Thema schon eine ganze Weile und bin jetz soweit auch eine Wordclock bauen zu wollen. So wie hier in der Stripe Variante. Mein grösstes Problem ist dabei die elektronische Komponente. Das Gehäuse plus Front und Rahmen stellt für mich das kleinere Problem dar da ich das in ähnlicher Form beruflich mache. Daher wäre für mich eine GENAUE Einkaufsliste für alle elektronischen Bauteile wichtig um die hier vorgestelle Variante bauen zu können. Und ein GENAUER Anschlussplan wäre auch hilfreich um einfach die Elektrik zum laufen zu bekommen. Die vielen techn. Begriffe in diversen anderen Foren verwirren einen Laien wie mich leider. Danke und MfG

    1. Hi Andy,
      danke für dein Kommentar. Ich werde sehen was sich machen lässt. Ich weiß selbst nicht mehr genau was ich alles verbaut habe :-P . Ich muss meine Uhr aber demnächst nochmal öffnen, dann werde ich mal versuchen das aktuelle Innenleben zu Dokumentieren.
      VG

      1. Das wäre nett ja. Eine Frage kannst du mir vielleicht jetzt schon beantworten. Und zwar welches Netzteil du genommen hast. Reicht ein 5V mit 2A ? Mit 2,1er Hohlstecker aus ? Danke und MfG

        1. Im normalen Uhr betrieb (bei 20-30 LEDs gleichzeitig) reichen 2A vielleicht aus. Ich habe in meiner Software noch andere „nicht-Uhr“-Programme bei denen alle 114 LEDs leuchten, da werden 2A definitiv nicht ausreichen. Ich würde ein stärkeres Netzteil empfehlen. Ich habe ein 5V 4A Netzteil von Amazon (http://amzn.to/1BdLl8o) verwendet. 2,1er Hohlstecker ist ok.

          1. So ich schon wieder :) Hab da noch paar Fragen. Hoffe du kannst mir helfen. Wenn ich die Uhr ohne Fernbedienung bauen will muss das dann im Sketch rauskommentiert werden ? Oder „sucht“ er dann immer nach dem Empfänger wenn mans drin lässt. Hat deine Uhr eine Nachtabschaltung ? Wenn ja wird das softwäreseitig gelöst oder benötigt man da noch extra Hardware ? Danke und MfG

  8. Hallo.
    Gibt es irgendwo eine Bezugsquelle wo man die Platine bekommen kann.
    Gibt es auch eine Anleitung wie man die Stripes zusammen setzen muss und wie man die an der Platine anschliesst.
    Gibt es auch einen Bohrplan dafür, z.b. für eine MD Platte ?
    Danke

    1. Hallo Reimund,
      welche Platine meinst du? Ich habe einen Arduino benutzt und alle weiteren Teile „lose“ dazu gelötet.
      Ganz am Ende des Beitrages gibt es einen Anschlussplan. Dort müsste alles nötige zu sehen sein.
      Die Bohrschablone findest du auf Seite 52 dieses PDFs „Anleitung-leuchtbildbau-niko-v3-Rev1.pdf“ (Name einfach bei Google eingeben).
      Ich hoffe das hilft dir. VG

  9. Hmmm ok. Danke.
    Das ist natürlich auch eine Idee.

    Hast DU auch eine Quelle bzw. Anleitung von dem Arduino mit den Teilen die Du dran gemacht hast.

    1. Auf dem Schaltplan sollte eigentlich alles nötige zu sehen sein. Welchen Kondensator und Widerstand ich in der Schaltung verwendet habe weiß ich nicht mehr genau. Dazu müsste ich die Uhr nochmal öffnen. Solltest du immer noch nicht weiter wissen, schreib mir am besten eine E-Mail.

  10. Hallo,

    ich habe mir deine Uhr angeschaut. Sehr schön umgesetzt ist diese :) Habe aber noch Fragen:
    1. Hast Du den ESP8266 schon implementiert?
    2. Auf github schreibst Du was von einem Bug (The clock is fast by exactly one minute) soll bedeuten das die Uhr 1 Minute vor geht? Ist dieser Bug schon behoben?
    3. Muss es die Harmony FB sein oder kann man jede anlernen?

    1. 1) Es gibt in dem github Repository einen Branch esp8266_support. Dort habe ich bereits die Codeänderungen gemacht, aber bisher noch nicht getestet. Du darfst es aber gerne mal versuchen ;-).
      2) Ja, die Uhr geht genau eine Minute vor und nein der Bug ist leider noch nicht behoben.
      3) Nein, es kann eigentlich fast jede beliebige FB genutzt werden. Man muss dann nur die HEX-Codes im Code anpassen.

      Ich hoffe das hilft dir weiter :-).

  11. Hallo und Danke für dein Post. Eine weitere Frage habe ich noch: Kann man den ESP auch zum setzen neuer Variablen nutzen? Also quasi das man die Fernbedienung durch en ESP ersetzt?

    1. Ja könnte man natürlich auch nutzen. Dazu noch eine schöne Android App ;-). Habe mir aber bisher noch nicht angeschaut, was das an Aufwand bedeuten würde.

  12. Hallo Markus,

    schau was ich gefunden habe: http://allaboutee.com/2015/01/02/esp8266-arduino-led-control-from-webpage/
    Evtl. bringt Dich das auf eine Idee. :) Bin leider nicht so fit, ich Bastle immer noch am ESP rum. Habe gestern den ESP erst mal geflashed und bekomme nun zumindest mal die Zeit. Dein Code konnte ich leider noch nicht ausprobieren weil, bedingt durch dem Streik von DHL meine „China“ Importe noch unterwegs sind ;)

    Grüße Thomas

  13. Hallo Markus,

    gäbe es die Möglichkeit deine bestehende NTP Library zu erweitern auf den Modus „AT+CWMODE=3“ das der ESP8266 auch als AP läuft? Damit man dann auf dem Port 80 Daten schicken könnte? Ziel wäre es auf den IR zu verzichten und statt dessen die Farbe als Hex Wert zu übergeben. Könntest Du, vorausgesetzt Du hast Zeit und selber Interesse daran, Dir mal die Geschichte ansehen? Ich versuche selber so gut es geht, mache aber kaum bis gar nicht fortschritte. Genre können wir auch per E-Mail in Kontakt treten. E-Mail sollte Dir ja bekannt sein :)
    Grüße Thomas

  14. Hallo,
    vorerst mal ein klasse Projekt, dass mich inspiriert hat, es nachzubauen. Vom Aufbau her habe ich es etwas anders gemacht, aber das Prinzip ist komplett gleich (Strip). Ich habe aber folgendes Problem: Dein Programm erhält keine Uhrzeit über DCF-77 bei mir. Im DEBUG Mode komme nur Punkte auf der Konsole und ich bekomme keinen Sync. Ich habe noch rien gar nichts an dem Sketch geändert.
    Wenn ich das Beispielsketch „InternalClockSync“ aus der „DCF77“ Lib verwende, bekomme ich die Zeit innerhalb von 3 Minuten sofort angezeigt.
    Der Aufbau ist dabei komplett identisch (Netzteil & Wordclock weiterhin angeschlossen). Wenn ich dann dein Sketch flashe, bekomme ich wieder keinen Sync.
    Ich weiß nun ehrlich gesagt nicht weiter…
    Ich nutze das DCF-Empfangsmodul DCF1 von Pollin.
    Wenn jemand irgendetwas weiß, oder mir helfen kann wäre das genial.
    Viele Grüße aus Franken,
    Rolf

    1. Nochmal eine kurze Rückmeldung:
      Also nach 2-3 Stunden wird endlich eine Uhrzeit vom DCF-77 Modul empfangen bzw. wohl ehr vom Programm verarbeitet. Mir ist das zu langsam, schließlich empfängt der Beispielssketch der DCF77-Lib die Uhrzeit schon nach 3 Minuten.
      Ist das bei allen anderen auch so?
      Wie das jetzt mit der stündlichen Synchronisation klappt, weiß ich noch nicht. Ich werde nochmals berichten.

        1. Aber klaro :)
          Zur Synchronisierung:
          Ich habe den Verdacht, dass das nicht komplett so hinhaut wie es sollte. Mal geht die Uhr >5 Minuten nach. Dann wiederum passt es.
          Weiterhin bemerke ich gerade bei bspw. der Uhrzeit 19:37 Uhr, dass die zwei weiteren Punkte nicht leuchten. An meinem veränderten Layout kann es nicht liegen, denn manchmal zeigt es alle Punkte richtig an.
          Ich komme aber noch nciht dahinter, wann exakt das auftritt und wann nicht.
          Muss ich wohl länger beobachten…

    2. Hallo, ich hatte auch Probleme mit dem Pollin DCF Dingens. Ich hab mir dann das teurere von Conrad gekauft und die Uhrzeit war quasi sofort da. Auch in meiner, von Frankfurt abgewandten, Kellerwohnung. Zum Rest kann ich nix sagen, sorry.

  15. Ich wäre auch an Erkenntnissen zum Einsatz des DCF77-Moduls von Pollin interessiert. Bei mir liefert das Modul auch keine Zeit. Bei Deinem Sketch sehe ich nur die Punkte stetig voranschreiten. Bei einem anderen Sketch von http://arduino-hannover.de/2012/06/14/dcf77-empfanger-mit-arduino-betreiben/ blinkt die LED etwa im Sekundentakt und ich sehe auf dem seriellen Monitor auch Werte, aber der Minutenwechsel wird nie richtig erkannt und es gibt auch kein Uhrzeit. Ich verwende ein Netzteil zur Stromversorgung und habe einen 47µF Kondensator zur Entstörung eingebsetzt.

  16. Hi Markus,

    ich bin seit einigen Tagen an einer Wordclock dran, die Testfiles der FastLED-library laufen auch schon schön bunt über die Matrix. Wenn ich aber dann dein Wordclock.ino kompilieren will, kommen ne Handvoll seltsame Fehler:
    Arduino: 1.6.5 (Windows 7), Platine: „Arduino/Genuino Uno“

    In file included from rgb_wordclock.ino:4:0:
    C:\Users\Thomas\Documents\Arduino\libraries\FastLED/FastLED.h:12:2: warning: #warning FastLED version 3.001.000 (Not really a warning, just telling you here.) [-Wcpp]
    #warning FastLED version 3.001.000 (Not really a warning, just telling you here.)
    ^
    rgb_wordclock.ino:19:14: warning: overflow in implicit constant conversion [-Woverflow]
    rgb_wordclock.ino:59:19: note: in expansion of macro ‚DIY1‘
    rgb_wordclock.ino: In function ‚void loop()‘:
    rgb_wordclock.ino:13:15: warning: overflow in implicit constant conversion [-Woverflow]

    Die verflow-Problematik kommt dann noch mit fast allen Variablen.
    Ich nutze die IDE 1.6.5. und die letzten DCF77, FastLED und IRemote-Libraries.

    Hast Du nen tipp für mich, wo das Problem liegen könnte?

    LG
    Thomas

    1. Hi Thomas,

      versuch doch mal genau das Setup wie es in der README beschrieben ist. Mit neueren Arduino IDE Versionen habe ich es bisher noch nicht getestet. Ich sehe jetzt auch nur WARNINGS kommt irgendwo auch noch ein ERROR?

      VG Markus

  17. Ist es möglich den Code (mit möglichst wenig Aufwand und Ahnung) so anzupassen, dass es anstatt mit dem „DCF77“-Modul mit einem „DS3232RTC“-Modul die Uhrzeit erhält?

    Viele Grüße
    Eugen

    1. Hi Eugen, ich denke es sollte kein Problem sein den Code anzupassen. Ich hatte damals angefangen mit einer DS1307RTC und der Code war nicht komplizierter. Wenn du weitere Fragen hast, schreib mir einfach eine Mail. Viele Grüße Markus

  18. Hallo Markus,

    ich möchte die Uhr auch gerne bauen,
    allerdings anstatt DCF eine RTC1307 und anstatt ne IR-Fernbedienung per Taster gesteuert.

    enthalten die Variablen
    testMinutes = minute();
    testHours = hour();
    die DCF Uhrzeit und könnte ich diese durch die Werte von der RTC ersetzen?

    Die IR-Befehle durch Tastendrücke ersetzen, kriege ich so hin.

    Da ich einen Folienschneidplotter habe, werde ich die Frontfolie selber plotten.
    Wer Interesse an einer solchen Folie hat, schreibt mir am Besten ne Email!

    Wolfram.

    1. Hi Wolfram,

      die DCF Uhrzeit durch RTC ersetzen sollte gar kein Problem sein. Ich glaube man kann sogar weiterhin die minute() und hour() Funktionen nutzen und du müsstest nur die setup() Routine anpassen. Ich hatte Anfangs ja auch eine 1307 eingeplant und auch damit angefangen zu coden. Kannst auch auf Github mal in eine der ersten Versionen reinschauen, vielleicht findest du dort noch was an Code. Wenn du noch was wissen willst schreib mir ne Mail.

      Viele Grüße, Markus

    2. Hallo Wolfram, ich hätte interesse an solch ner Folie. Können sie sich bei mir per mail kontaktieren. ich finde gard keine von Ihnen.
      Gruß nic

    3. Hallo Wolfram,

      Auch ich hätte interesse an einer Folie. So wie ich es gelesen habe willst du die Fernbedienung durch einen oder mehrer taster ersetzen. Wenn du den Code dafür rausrücken würdest wäre auch super, dann spare ich mir die Arbeit mich wieder in C rein zu arbeiten.

      Dankeschön.

      Gruß, Thomas

      @Markus

      Danke für die tolle Anleitung!

  19. Hallo Markus,

    mal ne ganz blöde Frage, bevor ich anfange die LEDs aufzukleben:

    Wo ist die erste LED, an der die Verbindung zum Arduino rankommt?
    Auf deinen Fotos ist das nicht klar zu erkennen…

    Habe gestern eine MDF-Platte gefräst und möchte anfangen, die Uhr zu bauen.

    Wolfram.

  20. Habe übrigens nun den DCF-Kram rausgeschmissen und gegen DS1307 Routinen ersetzt.
    Die IR-Kommandos werden z.Z. nicht ausgewertet.
    Das Stellen der Uhr mache ich nun doch nicht über Taster, sondern per serielle. Wenn man einen Taster an der Uhr drückt, kommt man über die serielle in einen „Stellmodus“, in dem auch das Datum eingestellt wird.
    „2016-01-28 14:45:01“
    Ich denke das sollte für das (normalerweise einmalige) stellen der Uhr reichen!
    Was ich noch einplane:

    #Uhrzeitabhänge Farben
    #Sylvester Countdown

  21. Puh, nachdem ich die LED Stripes geschnitten und aufgeklebt habe, sind locker 2Std. vergangen.
    Nix für eine Serienfertigung….
    Man kennt das ja, Verwandte oder Bekannte sehen die Uhr und wollen auch haben….
    Die nächste Version wird 16×16 und im Rastermaß der LED Stripes sein, dann auch minutengenau.

  22. Hallo zusammen,
    ich kämpfe auch schon ewig mit der Software. Ich habe recht schlechten Funkempfang und bin deshalb vorerst auf ein einfaches Uhrstellen mit Tastern zurückgegangen. Außerdem brauche ich keine Fernbedienung, will also nur die einfachste Variante umsetzen. Habt Ihr vielleicht noch ein ino aus Euren Anfangstagen, wo nur das Anzeigen der Zeit programmiert ist, damit ich mich mit der Funktion der einzelnen Codezeile erstmal vertraut machen kann?
    Wäre toll

    LG
    Thomas

  23. Hi Markus,

    supi, läuft soweit. Sag mal, ich wollte mit einer der folgenden Codezeilen jeder „LED-Gruppe“ einen Zufallsfarbwert geben. es kommt aber immer wieder Default-weiß raus. das Default will ich aber nicht ändern, weil ja alle unterschiedlich sein sollen.

    void pushES_IST() {
    displayStripRandomColor();
    oder
    // displayStrip(CRGB::Red);
    oder
    //CRGB = CHSV(random(0, 255), 255, 255);

    pushToStrip(L9);
    pushToStrip(L10);
    pushToStrip(L30);
    pushToStrip(L49);
    pushToStrip(L50);

    geht das in den push-Funktionen gar nicht?
    Danke
    Thomas

  24. CRGB = CHSV(random(0, 255), 255, 255);
    pushToStrip(L9);
    CRGB = CHSV(random(0, 255), 255, 255);
    pushToStrip(L10);
    CRGB = CHSV(random(0, 255), 255, 255);
    pushToStrip(L30);
    CRGB = CHSV(random(0, 255), 255, 255);
    pushToStrip(L49);
    CRGB = CHSV(random(0, 255), 255, 255);
    pushToStrip(L50);

    so sollte es gehen!

    1. Hallo Wolfram,
      tut leider nicht, offenbar werden CRGB-Anweisungen in der Funktion komplett ignoriert.
      Bin grad noch bissl am experiementieren …

      LG
      Thomas

  25. Moinsen,

    Ich habe heute die LED Matrix fertig gelötet und wollte sie natürlich direkt mal testen. Ich habe jetzt folgendes Problem:

    Das DCF Modul funktioniert anscheinend nicht, also habe ich die Zeit mit setTime(12,00,00,01,01,98); auf 12 Uhr am 1.1.98 gesetzt. Das Datum sollte ja erstmal keine Rolle spielen ( oder doch? ).

    Problem ist, ich bekomme trotzdem keine passende Zeit angezeigt. Genauer gesagt gehen immer wieder verschiedene LED´s an, allerdings auch in verschiedenen Farben ( meistens allerdings weiß ). Ich hab nicht den geringsten Hauch einer Ahnung warum es nicht funktioniert.

    Ich kann unter anderem die komplette Matrix leuchten lassen indem ich meine Schreibtischlampe einschalte.

    Ich hoffe ich habe mein Problem halbwegs verständlich formuliert und es kann mir jemand dabei helfen.

    Danke.

    Gruß Tomy

    1. Manchmal hilft es wenn man mal einen Schritt zurück geht und sich das Gesamtbild anschaut.

      Fehler 1: Masse Leitung vom Arduino zum Netzteil vergessen
      Fehler 2: Falsches Layout.

      :)

  26. Hallo zusammen

    Vorerst vielen Dank Markus für Deine super Anleitung.
    Meine Wordclock läuft seit gut 2 Monaten auf Schweizerdeutsch und fast ohne Probleme.
    Die Fernbedienung habe ich nicht mehr im Programm dafür kann ich mit vier Darlington-Schaltungen wie in einem Menu alles auswählen.
    Mein einziges Problem welches einfach nicht gelöst werden kann ist, dass die Uhr per DCF77 nur beim Einschalten einmal synchronisiert und dann nicht mehr.
    Genau aus diesem Grund geht die Uhr auch immer 1Minute vor.
    sobald ich aber im void clockLogic, displayStrip (defaultColor); ausblende funktioniert alles wie es soll und die Uhr durchläuft beim 2. sync nach dem Einschalten 2x die selbe Minute und somit stimmt die Zeit wieder.
    void clockLogic() {
    if(millis() >= waitUntilRtc) {
    DEBUG_PRINT(„doing clock logic“);
    waitUntilRtc = millis();
    digitalClockDisplay();
    if(testMinutes != minute() || testHours != hour()) {
    testMinutes = minute();
    testHours = hour();
    resetAndBlack();
    timeToStrip(testHours, testMinutes);
    //displayStrip(defaultColor);
    }
    waitUntilRtc += oneSecondDelay;
    }
    }
    Ich bin mit meinen bescheidenen Kenntnissen am Ende und bin nun auf Eure Unterstützung angewiesen.
    Besten Dank für Eure Hilfe
    Gruess Manuel

  27. Ich habe nun alles nachgestellt und bekomme auch keinen Fehler beim Upload. Zeigt die Matrix denn etwas an, sobald das Programm hochgeladen ist oder muss man mit der Fernbedienung die Uhr erst einschalten? die Fast LED Beispiele funktionieren in jedem Fall.

    Eine Vermutung habe ich dann und zwar reagiert der Arduino nicht auf die FB. In einem Testprogramm wurde als HEX Wert: 1FE21DE ausgegeben und über eine Switchabfrage bekam ich den IR mittels „0x1FE21DE“ angesprochen. Bei dem Wordclock Script jedoch nicht mehr.

    Wo kann man ansetzen, wenn es keine Fehlermeldung gibt?

    Vielen Dank für jeden hilfreichen Tipp!

    1. Hallo, die Uhr zeigt erst etwas an, sobald die Zeit einmal synchronisiert wurde, dies dauert mindestens 2 Minuten. Du könntest auch noch weitere DEBUG Meldungen ausgeben, dann weißt du eher wo du dran bist. Ferndiagnose ist immer schwierig… VG Markus

      1. Die Fernbedienung DEFINES habe ich entsprechend angepasst.

        Wie kann ich die DEBUG Meldungen denn einsehen?
        Der Fast LED Check lief auf einwandfrei.

        Wofür steht DCF_INTERRUPT und LDR_PIN?

        Vielen Dank und Grüße!

      2. Ich habe jetzt einfach das Testprogramm InternalClockSync ausprobiert und bekomme nur 0:05:24 1 1 1970 als Datum zurück. Irgendwie bekomme ich da kein Signal.

        1. Signal lag am Standort, das habe ich nun bekommen.
          Der serielle Monitor zeigt jedoch nichts, muss ich für das Debug irgendetwas auskommentieren?
          LDR PIN hat sich auch erledigt. Mit ankommendem Signal läuft die Uhr jedoch leider immer noch nicht. Gibt es andere Fallstricke? ;)

          1. Wenn man vor: #ifdef DEBUG
            ein: #define DEBUG 1

            setzt, aktiviert man dadurch den DEBUG Modus.
            Das gibt mir aus, dass (obwohl ein Testprogramm nach 3 Min. die Zeit hat) die Zeit hier selbst nach 5 Min. nicht geholt wird. Wo kann ich nun ansetzen?

            Bin dankbar für jeden Hinweis :)

  28. OK dann habe ich das übersehen. Im ersten Post sind das ja alle nur einzelne.
    Ist es richtig , dass oben links angefangen wird und am Schluss der Schlange kommen dann die Minuten LED`S

    1. Ja, der Strip wurde zerschnitten damit die Abstände passen. Wo angefangen wird ist egal, kann über default_layout.h angepasst werden. Ich habe unten links beim Z angefangen.

  29. Ich habe einen Strip genommen mit 3,3cm Abstand und da brauchte ich nur nach 11 LEDs jeweils trennen – damit spart man sich einiges an Lötarbeit.

    1. Nachdem ich setSyncInterval(3600); auf 30 reduziert habe klappt das mit dem „sync“ nun.
      Jetzt bekomme ich ständig ein:
      doing clock logic
      doing LDR logic
      41

      im seriellen Monitor. Der Wert 41 ist aber nicht beeinflussbar, egal ob ich den Sensor in die Hand nehme oder mit der Lampe anstrahle.

      Die LEDs sind alle schön bunt nur eine Uhrzeit erkennt man nicht :(

      1. Ich habe den Fehler gefunden, eine Leitung steckte nicht in GND. Jetzt läuft es nur zwischendurch blinkt es unterschiedlich einmal auf und kann mir jemand erklären, welche Werte ich von der Fernbedienung übernehmen bzw. wie ich die in der 0xFFFFFF Format bekomme?

        Vielen Dank!

        1. Du musst die Werte der Fernbedinung nicht in HEX umwandeln sondern kannst sie auch so definieren wie sie die Fernbedienung ausspuckt. Welche Taste welchen Wert ausgibt kannst du dir hiermit anzeigen lassen:
          DEBUG_PRINT(irDecodeResults.value);

          Hoffe ich konnte dir etwas weiter helfen.

          Gruß Tomy

  30. Hallo zusammen,
    ich habe meine Uhr nun auch mit Hilfe von Markus aufgebaut.
    Tipps;
    In der DCF77 Lib-> utilitiy -> Utils.cpp : „#define VERBOSE_DEBUG 1 // Verbose“
    Damit kommen im seriellen Monitor Angaben ob die Pulse rejected werden (rCT, rPW) oder der Buffer gefüllt werden konnte (BF). So kann man seine Antenne richtig ausrichten, was tricky sein kann.

    Oder man schliesst noch ne LED an, bei mir Digital 12 und ;
    bei void setup; pinMode(12, OUTPUT);
    In DCF77.cpp;
    LogLn(„rCT“); digitalWrite(12, HIGH); und
    LogLn(„rPW“);digitalWrite(12, HIGH); und
    Up = true;digitalWrite(12, LOW);

    dann leuchtet die LED bei falschen Flanken.

    Der erste DCF77 Empfang kommt erst nach 3 Minuten.

    Wiederholende IR Befehle werden nicht ausgewertet. Bei dieser Fernbedienung wird nur noch „#define repeat 0xFFFFFFFF“ geschickt“ wenn die Tasten gedrückt gehalten werden. Also müsste man da was umschreiben um dies zu nutzen.

    Um den LDR Eingang zu testen, habe ich ein Potentiometer genommen, aussen je + und -, Mitte den analog in Pin.
    Bei void doLDRLogic() {
    DEBUG_PRINT(„LDR:“);
    DEBUG_PRINT(ldrVal); um den Wert zu sehen im Seriellen Monitor.

    Beim Arduino Leonardo;
    #define DCF_PIN 3 // Connection pin to DCF 77 device
    #define DCF_INTERRUPT 0 // Interrupt number associated with pin
    und DCF77 output zu digital 3

    Gruss Martin

  31. Kurze Frage,

    Hat es einen Grund warum du den LDR von 0 bis 150 Mapst und dann vom Helligkeitswert abziehst? Du könntest doch auch einfach von 255-0 ( oder besser von 255-20 damit das Licht nie ganz aus ist ) mappen lassen und den Wert direkt übernehmen.

    Falls das einen tieferen Sinn hat würde ich mich freuen diesen zu erfahren.

    Grüße Tomy

    1. Hi Tomy, einen tieferen Sinn würde ich in den Werten nicht suchen ;-) . Ich habe mit den Werten gespielt bis es für mich gepasst hat. Du kannst die Werte ja mal anpassen und mir deine Erfahrungen mitteilen.

    1. Bisher werden alle von mir gewünschten Features unterstützt und deshalb gibt es hier auch keine weiteren Updates. Sobald mir was tolles begegnet was fehlt, wird das auch nachgerüstet :-)

      1. Hallo Markus,
        hast Du evtl. schon was mit Bluetooth implementiert? Wäre doch schön, wenn man die Zeit bei fehlendem DCF77 Signal per BT stellen könnte oder die ganzen IR Geschichten per BT steuern könnte.
        Gruß,
        Thomas

        1. Hallo Thomas,

          daran überlegt hatte ich. Gerade die Übertragung der Zeit über BT fand ich anfangs sehr interessant. Da die DCF Synchronisation bei mir aber störungsfrei funktioniert hatte ich das nochmal verworfen. Die IR Geschichten fand ich praktisch, da ich die Uhr so mit meiner Harmony steuern kann. Implementiert hatte ich dazu bisher nichts. Fühl dich frei mein Sourcen zu clonen und zu erweitern :-). Für Fragen stehe ich gerne zur Verfügung.

          Viele Grüße
          Markus

  32. Hallo Markus,
    vielen Dank für das Teilen deines Projektes. Ich habe meine alte Wörteuhr mit LED´s jetzt nach diesem Vorbild mit den LED Stripes und Arduino nano umgebaut.
    Läuft alles soweit auch super, bis auf ein Problem: nach dem einmaligen Stellen der Uhr am Anfang nach knapp 2 Minuten erfolgt kein Sync mehr.
    Ich habe folgende Funktion mit „NON Sync“ erweiter um Klarheit zu haben:

    unsigned long getDCFTime() {
    time_t DCFtime = DCF.getTime();
    // Indicator that a time check is done
    if (DCFtime != 0) {
    DEBUG_PRINT(„sync…………………………………………………………………………..“);
    }
    DEBUG_PRINT(„NON sync……………………………………………………………………….“);
    return DCFtime;
    }

    Ich kann beim debuggen stundenlang zuschauen, ich kriege immer nur den NON Sync, sprich: DCFTime ist immer 0.
    Das führt bereits nach ~3 Tagen zu 5 Minuten Vorlauf.

    Hast Du, oder jemand in der Truppe hier vielleicht eine Idee ?
    Bin für jeden Tip dankbar
    Danke vorab
    Peter

    1. Gelöst: es lag an der Ausrichtung/Positionierung der Antenne. Tangential Richtung Frankfurt hatte ich zwar den initialen Sync, nachdem die Stipes angesteuert wurden kamen nur noch Schrottsignale…
      Pollin DCF Antenne samt Platine, LDR und IR in Extragehäuse und auf die Oberseite der Uhr Montiert. Abgeschirmtes Kabel zum Arduino, Schirm auf Masse…
      …. und es sync und synct und synct… :)
      Die Antenne ist drehbar montiert, erstaunlicherweise habe ich den besten Empfang wenn ich mit dem Ferritstab direkt nach Frankfurt zeige…
      Grüße & nochmals Danke fürs Teilen
      Peter

Schreibe einen Kommentar

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