HowTo: pxlBlck – Die pxlBlck_RingClock aufbauen

Die pxlBlck_RingClock ist der pxlBlck_SlotClock sehr ähnlich. Sie ist auch mithilfe einer 1×60 LED-Matrix aufgebaut und kann die Uhrzeit nach dem gleichen Schema wie die pxlBlck_SlotClock darstellen.

Jedoch ist der LED-Streifen bei der pxlBlck_RingClock in einem Ring und nicht in einer Scheibe verbaut. Dies macht das Design der Uhr noch unaufdringlicher. Der Mikrocontroller zur Ansteuerung ist im Sockel der pxlBlck_RingClock verbaut.

Dabei habt Ihr die Wahl zwischen einem minimalistischem Sockel in dem der ESP8266 so kompakt wie möglich untergebracht ist. Wenn Ihr dagegen etwas mehr Standsicherheit wollt und vielleicht sogar noch Platz für eine RTC dann könnt Ihr die pxlBlck_RingClock auch mit dem größeren Sockel aufbauen. Falls Ihr auch die RTC verbaut, könnt Ihr die pxlBlck_RingClock auch ohne aktive WiFi Verbindung nutzen.

Alle Infos zum Aufbau der pxlBlck_RingClock findet Ihr im folgenden Artikel.


Sicherheitshinweise

Ich weiß die folgenden Hinweise sind immer irgendwie lästig und wirken unnötig. Aber leider haben schon viele Menschen die es "besser" wussten aus Leichtsinnigkeit Augen, Finger oder anderes verloren bzw. sich verletzt. Im Vergleich dazu ist ein Datenverlust fast nicht der Rede Wert, aber auch diese können echt ärgerlich sein. Deswegen nehmt Euch bitte fünf Minuten Zeit um die Sicherheitshinweise zu lesen. Denn auch das coolste Projekt ist keine Verletzung oder anderen Ärger wert.
https://www.nerdiy.de/sicherheitshinweise/

Affiliatelinks/Werbelinks

Die hier in aufgeführten Links zu Online-Shops sind sogenannte Affiliate-Links. Wenn Du auf so einen Affiliate-Link klickst und über diesen Link einkaufst, bekommt Nerdiy.de von dem betreffenden Online-Shop oder Anbieter eine Provision. Für Dich verändert sich der Preis nicht. Falls Du Deine Einkäufe über diese Links tätigst unterstützt Du Nerdiy.de dabei auch in Zukunft weitere nützliche Projekte anbieten zu können. 🙂 


Voraussetzungen

Für den Aufbau müsst ihr Lötaufgaben bewältigen. Die folgenden Artikel enthalten Tipps dazu.

Benötigtes Werkzeug:

Benötigtes Material:

In der folgenden Liste findet Ihr alle Teile die Ihr zum Aufbau benötigt.


Übersicht

Hier seht Ihr eine kleine Übersicht, wie die Anzeige der pxlBlck_RingClock aussehen kann. Wie üblich lassen sich die Farben der Minuten-, Sekunden-, Stundenzeiger und der Stundenmarkierung einstellen. Die Helligkeit der Stundenmarkierungen und der Zeiger lassen sich unabhängig voneinander einstellen.


Die benötigten Teile sammeln

Damit es mit dem Aufbau Eurer pxlBlck_RingClock losgehen kann solltet Ihr zunächst alle benötigten Teile zusammensuchen.

Für den Aufbau der pxlBlck_RingClock benötigt Ihr die folgenden Teile.

  • WS2812 LED Streifen 144LEDs/m 60LEDs lang
  • 3D gedruckter LED halter
  • 3D gedruckter Sockel (hiervon gibt es verschiedene Versionen)
  • 3x Leitung ca. 10cm lang
  • 1x Wemos D1 Mini
  • 2x selbstschneidende Schrauben 2×8
  • 1x Acylglas Ring Innendurchmesser: 130mm, Außendurchmesser: 141mm, Dicke: 3mm
  • 2x M8x40 Zylinderkopfschraube

Weitere Ansicht der Ringteile.

Die STL-Dateien zum ausdrucken auf Eurem 3D Drucker findet Ihr im Repository für die pxlBlck_RingClock unter folgendem Link.

Update 16.02.2021

Oliver hat eine STL erstellt mit der sich der LED-Ring aus transparenten PLA drucken lässt. Er hat freundlicherweise zugestimmt, dass diese hier verlinkt werden darf. Vielen Dank nochmal dafür. 🙂 Die STL findet Ihr auf Thingiverse unter folgendem Link.


LED-Ring mit der Mini-Basis verschrauben

Grundsätzlich gibt es verschiedene Versionen des Sockels. Der hier gezeigte Sockel ist der kleinste der verfügbaren Sockel. In ihm ist lediglich der ESP8266 untergebracht. (Mehr passt dort auch nicht hinein). Durch sein geringes Gewicht steht die pxlBlck_RingClock zwar aufrecht, aber kippt auch schnell Um. Ihr solltet diesen Sockel also nur verwenden, wenn der geplante Aufstellort eben ist. Als alternativer Sockel folgen weiter unten noch Sockel, welche sich zusätzlich mit Gewichten beschweren lassen. Zusätzlich ist in einem dieser Sockel auch etwas mehr Platz. So kann zum Beispiel auch eine RTC (Echtzeituhr) in den Sockel integriert werden.

Verschraubt den Sockel dazu wie abgebildet mit der LED-Halterung. Dazu könnt Ihr die abgebildeten M2 Schrauben inkl. Mutter oder Selbstschneidende 2×8 Schrauben verwenden.

Weitere Ansicht des verschraubten Sockel mit der LED–Halterung.

Weitere Ansicht des verschraubten Sockel mit der LED–Halterung.


LED-Streifen vorbereiten

Bevor Ihr den LED-Streifen in die Basis einlegen könnt solltet Ihr die Anschlussleitungen an diesen anlöten.

Entfernt dazu die Isolierungen an den Enden jeweils 5mm weit.

Legt dann…

,,,den LED Streifen so vor Euch hin, dass der Pfeil auf von Euch weg zeigt. Dies ist wichtig, da an dieser Seite der Dateneingang des LED-Streifens liegt.

Nun solltet Ihr die ersten Kontakte mit etwas Lötzinn vorbereiten. Dadurch fällt das Anlöten der Leitungen später etwas leichter.

Lötet die Leitungen, dann wie gezeigt…

… an die vorbereiteten Kontakte des LED-Streifens. Dabei werden Leitungen an die folgenden Kontakte angelötet.

  • G
  • 5V
  • DIN

Weitere Ansicht der angelöteten Leitungen.

Damit der LED-Streifen leichter in die LED-Halterung eingelegt werden kann, solltet Ihr nun die Rote Leitung vorsichtig umbiegen, sodass alle Leitungen in die selbe Richtung vom LED-Streifen wegführen.

Wichtig: Achtet darauf, dass Ihr die Kontakfläche des SMD-Streifens nicht zu sehr beansprucht. Ansonsten könnte es passieren, dass die Leitung inkl. der Kontakfläche abreißen.

Nahaufnahme der umgebogenen Leitung.


LED-Streifen in LED-Ring einlegen

Nachdem Ihr den LED-Streifen vorbereitet habt könnt Ihr diesen nun in die LED-Halterung einlegen.

Führt dazu die Leitungen wie abgebildet durch die LED-Halterung und den angeschraubten Sockel.

Dann könnt Ihr von der unteren “6-Uhr-Position” aus beginnen den LED-Streifen in die LED-Halterung einzustecken.

Der LED-Streifen sollte bis zum Anschlag in die LED-Halterung eingeschobene werden.

Weitere Ansicht des eingeschobenen LED-Streifens.

Weitere Ansicht des eingeschobenen LED-Streifens.


Acrylglas-Ring einlegen

Als Diffusor solltet Ihr nun noch einen passenden LED-Ring in die LED-Halterung einlegen.

Setzt den Diffusor dazu auf die LED-Halterung auf…

…und drückt Ihn gleichmäßig über den gesamten Umfang in die LED-Halterung.

Der Diffusor sollte letztendlich bündig in der LED-Halterung sitzen.

Ansicht des bisherigen Aufbaus.


ESP8266 mit dem LED-Streifen verbinden

Eure pxlBlck_RingClock sollte nun schon ziemlich fertig aussehen. Allerdings fehlt bisher noch das Herzstück – der ESP8266 – zum Betrieb der Uhr.

Dazu benötigt Ihr den ESP8266. Wie oft empfehle ich hier den Wemos D1 Mini zu verwenden. Auf diesem ist der ESP8266 verbaut.

Den Wemos D1 Mini könnt Ihr nun an die vorbereiteten Anschlussleitungen des LED-Streifens anschließen.

Dazu muss der LED-Streifen nach folgenden Schema angeschlossen werden.

ESP8266LED-Streifen
5V5V
GG
D4DIN

Weitere Ansicht des angeschlossenen ESP8266.


LDR an ESP8266 anschließen

Damit Eure pxlBlck-RingClock auch die Helligkeit des LED-Streifens automatisch an die Umgebungshelligkeit anpassen kann empfiehlt sich der Einbau eines LDRs. Dies ist aufgrund des geringen Platzes im Sockel etwas fummelig, aber letztendlich lohnt es sich. 🙂

Dazu benötigt Ihr einen LDR und einen “normalen” (1/W) 1k Widerstand.

Außerdem ist etwas Schrumpfschlauch (nicht auf dem Bild zu sehen) sehr hilfreich.

Lötet den 1k Widerstand dann…

…wie abgebildet an die gezeigten Kontakte des Wemos D1 MIni.

So wird der Widerstand zwischen GND und dem Eingang des ADCs verlötet. Er funktioniert so als Serienwiderstand zum LDR und bildet in Kombination mit dem LDR einen Spannungsteiler.

Nahaufnahme des verlöteten Widerstands.

Nahaufnahme des verlöteten Widerstands.

Den LDR müsst Ihr nun zwischen den Kontakten des Analog Digital Converters und 3V3 verlöten.

Dazu solltet Ihr mindestens einen der LDR-Kontakte mit einem Schrumpfschlauch gegen Kurzschlüsse schützen.

Der LDR selbst sollte dann ca. 5mm über das Ende der Platine des Wemos D1 Mini hinaus ragen.

Weitere Ansicht des verbauten LDRs.


ESP8266 in Mini-Basis einschieben

Nachdem Ihr den LDR an den Wemos D1 Mini angeschlossen habt kann dieser nun in die Basis eingeschoben werden. Wenn Ihr wollt könnt Ihr damit aber auch erst warten und zuerst die Funktion testen. Überspringt dazu einfach diesen Teil und programmiert und testet die pxlBlck_RingClock erst. Es ist aber auch kein Problem den Wemos D1 Mini später nochmal herauszunehmen.

Um den Wemos D1 Mini in den Sockel einzuschieben, solltet Ihr ihn wie gezeigt in den Sockel schieben.

Achtete dabei darauf, dass keine SMD Komponenten auf dem Wemos D1 Mini beschädigt oder abgerissen werden.

Ihr solltet ohne großen Kraftaufwand in der Lage sein den Wemos D1 Mini einzuschieben.

Der LDR sollte am Ende licht herausgucken.

Wenn Ihr wollt, könnt Ihr den LDR dann noch etwas hochbiegen und noch besser zum Umgebungslicht “ausrichten”.

Weitere Ansicht.

Weitere Ansicht der aufgebauten pxlBlck_RingClock.

Weitere Ansicht der aufgebauten pxlBlck_RingClock.

Weitere Ansicht der aufgebauten pxlBlck_RingClock.

Weitere Ansicht der aufgebauten pxlBlck_RingClock.

Weitere Ansicht der aufgebauten pxlBlck_RingClock.


Aufbau der pxlBlck-RingClock inklusive RTC (Real Time Clock)

Die pxlBlcks beziehen die korrekte Uhrzeit grundsätzlich über einen NTP-Server den sie mithilfe der WiFi-Verbindung erreichen. Manchmal möchte man die pxlBlcks aber auch an einem Ort aufstellen an dem keine WiFi-Verbindung verfügbar ist. In diesem Fall kann man die fehlende Quelle für eine korrekte Uhrzeit durch eine RTC ersetzen. Eine RTC (Real Time Clock) hält die eingestellte Uhrzeit Batteriegepuffert nach. So geht die Uhrzeit also auch ohne Stromversorgung nicht verloren.

Für den Aufbau der pxlBlck_RingClock inkl. Unterbringungsmöglichkeit für eine RTC benötigt Ihr die folgenden Teile.

  • WS2812 LED Streifen 144LEDs/m 60LEDs lang
  • 3D gedruckter LED halter
  • 3D gedruckter Sockel (nun die größere Version die ebenfalls im Git-Repository verfügbar ist.)
  • 3x Leitung ca. 10cm lang
  • 1x Wemos D1 Mini
  • 2x selbstschneidende Schrauben 2×8
  • 1x Acylglas Ring Innendurchmesser: 130mm, Außendurchmesser: 141mm
  • 2x M8x40 Zylinderkopfschraube

Falls Ihr auch den LDR anschließen wollt (Infos dazu unten) ebenfalls folgende Teile.

  • LDR
  • 1k Widerstand 1/4W
  • ca. 3cm Schrumfpschlauch

Weitere Ansicht der benötigten Bauteile ohne die “Ring-Teile”.


RTC mit dem ESP8266 verbinden

Für den Aufbau benötigt Ihr natürlich den Wemos D1 Mini und eine RTC.

Beginnt nun mit der Vorbereitung der RTC indem…

…Ihr die Wannenleiste vorsichtig umbiegt…

… und dann den Kunststoffteil abzieht.

Die blanken Kontaktzungen könnt Ihr nun als eine Art Montagehilfe missbrauchen.

Führt die RTC wie gezeigt mit dem Wemos D1 Mini zusammen…

… und verklebt die RTC mithilfe eines Tropfens Heißkleber mit dem Wemos D1 Mini.

Nun könnt Ihr die Kontaktzungen entfernen indem Ihr sie kurz mit einem Lötkolben erhitzt. Sehr hilfreich ist dabei eine Pinzette oder Zange mit der Ihr die Kontaktzungen herausziehen könnt während sie gleichzeitig mit dem Lötkolben erhitzt werden.

Die Kontakte der RTC sollten danach wie abgebildet aussehen.

Nun müsst Ihr die RTC noch an den I2C Bus des ESP8266 und die Versorgungsspannung anschließen.

Führt dazu eine erste Leitung vom Kontakt “D” der RTC zum Kontakt “D2” des ESP8266.

Wiederholt dies mit einer weiteren Leitung zwischen dem Kontakt “C” der RTC und Kontakt “D1” des ESP8266.

Nahansicht der verlöteten I2C Bus Verbindung.

Im weiteren könnt Ihr nun die Masseverbindung zwischen RTC und ESP8266 herstellen. Verlötet dazu eine Leitung…

… zwischen dem “-” Kontakt der RTC und dem “G” Kontakt des ESP8266.

Zu guter Letzt muss die RTC natürlich auch an die 3,3V Spannungsversorgung angeschlossen werden.

Lötet dazu eine Leitung zwischen den “+” Kontakt der RTC und dem “3V3” Kontakt des ESP8266.

Weitere Ansicht der fertig angeschlossenen RTC.


LDR an den ESP8266 anschließen

Dieser Schritt ist optional. Mithilfe eines angeschlossenen LDRs seid Ihr in der Lage Euren pxlBlck so zu konfigurieren, dass er die Helligkeit der angeschlossenen LED-Matrix der Umgebungshelligkeit anpasst. Das heißt die Helligkeit der angeschlossenen LED-Matrix wird gedimmt, wenn das Umgebungslicht dunkler wird und erhöht wenn die Umgebungshelligkeit heller wird.

Dazu müsst Ihr zunächst den gezeigten 1k Widerstand zwischen die Kontakte “GND” und “A0” des Wemos D1 Mini anschließen.

Eine Beispiel wie Ihr dies sehr Kompakt ermöglichen könnt ist im gezeigten Bild dargestellt.

Achtet dabei darauf, dass keine Kurzschlüsse zu den benachbarten Bauteilen entstehen.

Auf der Oberseite des Wemos D1 Mini müsst Ihr dann noch den LDR wie gezeigt verlöten.

Dabei empfiehlt es sich die blanken Anschlussbeinchen des LDRs mit etwas Schrumpfschlauch zu isolieren.

Der “Kopf” des LDR sollte so verlötet werden, dass er ca. fünf bis zehn Millimeter über das Ende der Platine des Wemos D1 Mini herausragt.


ESP8266 mit dem LED-Streifen verbinden

Nachdem Ihr den Wemos D1 Mini nun soweit vorbereitet habt, könnt Ihr mit dem Anschluss an den LED-Streifen fortfahren.

Lötet die Anschlussleitungen des LED-Streifens dazu wie gezeigt an den Wemos D1 Mini.

Dabei könnt Ihr die Kontakte des LED-Streifens nach folgendem Schema mit den Kontakten des Wemos D1 Mini verbinden.

ESP8266LED-Streifen
5V5V
GG
D4DIN

Weitere Ansicht.


ESP8266 in die Basis einschieben

Nachdem Ihr nun alle Teile an den ESP8266/Wemos D1 Mini angeschlossen habt könnt Ihr den Wemos D1 Mini in den Sockel einbauen.

Schiebt diesen dazu wie abgebildet – mit der RTC voraus – in die dargestellte Aussparung im Sockel.

Achtet dabei darauf, dass keine Bauteile auf dem PCB des Wemos D1 Mini abgerissen oder Leitungen eingeklemmt werden.

Der Wemos D1 Mini sollte ohne großen Kraftaufwand in die Aussparung geschoben werden können.


Gewichte in den Standfuß einbauen

Falls Ihr Eure pxlBlck_RingClock etwas Standsicherer machen wollt, könnt Ihr den Sockel mit zusätzlichen Gewichten ausstatten.

Dazu eignen sich zum Beispiel die gezeigten M8x40 Zylinderkopfschrauben recht gut.

Diese könnt Ihr dazu einfach…

…in die Aussparungen im Sockel der pxlBlck_RingClock schieben.

Damit diese an Ort und Stelle bleiben solltet Ihr sie mit einem Tropfen Heißkleber im Sockel fixieren. 🙂


Firmware programmieren

Nach dem Aufbau der pxlBlck_RingClock müsst Ihr nun noch ESPEasy inklusive pxlBlck-Plugin auf dem ESP8266 installieren. Wie Ihr dabei vorgehen könnt ist in folgendem Artikel beschrieben.


pxlBlck-Plugin konfigurieren

Nach der Installation der Firmware müsst Ihr das Plugin noch korrekt konfigurieren. Infos dazu findet Ihr ebenfalls in dem Artikel pxlBlck – Das pxlBlck-Plugin installieren und konfigurieren.

Als zusätzliche Orientierung könnt Ihr aber auch die Einstellungen aus dem hier gezeigten Screenshot übernehmen.


LDR zur Einstellung der Displayhelligkeit konfigurieren

Damit der LDR von ESPEasy ausgelesen und die aktuelle Helligkeit der LED-Matrix entsprechend aktualisiert wird, müsst Ihr zunächst noch ein paar Konfigurationen vornehmen. Wie Ihr dabei vorgehen könnt ist in dem folgenden Artikel beschrieben.


LED-Offset und Ausrichtung einstellen

Da die der LED-Streifen auf verschiedene Weisen verbaut werden kann, müsst Ihr die Anzeige ggf. anpassen.

Dazu könnt Ihr den Offset der “Zwölf-Uhr-Position” vom Anfang des Streifens einstellen. Diese Einstellung findet Ihr im Webmenü des Plugins in der Sektion “12 o’clock LED position”. Probiert hier am besten etwas rum, bis Ihr den korrekten Wert gefunden habt. Zur besseren Orientierung könnt Ihr dazu auch die Option “Thick 12 o’clock mark” aktivieren. So könnt Ihr leicht sehen, wo die 12 Uhr Position des Ziffernblatts ist und durch die Anpassung des Offsets so einstellen, dass sie an der obersten Position steht.

Für den Fall, dass Eure RingClock in die falsche Richtung läuft, könnt Ihr die “Drehrichtung” mithifle der “Direction Inversed” Option umkehren.


Konfiguration der RTC unter ESPEasy

Um die RTC in Kombination mit ESPEasy nutzen zu können, habe ich ein weiteres Plugin geschrieben. Dessen Konfiguration werde ich bald in einem gesonderten Artikel beschreiben und dann natürlich auch hier einfügen bzw. auf Nerdiy.de posten.

Alles was ihr wissen müsst um dieses korrekt zu konfigurieren findet ihr hier:


pxlBlck-Usecases

Unter dem Tag “pxlBlckUsecase” sind Artikel aufgelistet in denen Ihr Beispiele zur Verwendung findet. Darin ist auch erklärt wie Ihr Euren pxlBlck dazu konfigurieren müsst.


Animationen, Icons und Befehle

Weitere Infos zur Anzeige von Animationen, Icons und zu den möglichen Befehlen mit denen Ihr Euren pxlBlck konfigurieren könnt, findet Ihr auch in den folgenden Artikeln.


Viel Spaß mit dem Projekt

Ich hoffe bei euch hat alles wie beschrieben funktioniert. Falls nicht oder ihr Fragen oder Anregungen habt lasst es mich in den Kommentaren bitte wissen. Ich trage dies dann ggf. in den Artikel nach.
Auch Ideen für neue Projekte sind immer gerne willkommen. 🙂

P.S. Viele dieser Projekte - besonders die Hardwareprojekte - kosten viel Zeit und Geld. Natürlich mache ich das weil ich Spaß daran habe, aber wenn Du es cool findest, dass ich die Infos dazu mit Euch teile, würde ich mich über eine kleine Spende an die Kaffeekasse freuen. 🙂

Buy Me a Coffee at ko-fi.com       

53 Kommentare

  1. Hallo,
    danke für die ausführliche und sehr gute Beschreibung. Ich hab das ganze mal nachgebaut (hatte noch einen Streifen mit 60LED hier rumliegen), jedoch ist mit aufgefallen, das beim Sprung von dem einen Ende (Einspeisung) auf das andere Ende ein Sprung / Lücke von 1 Sekunde ist; hast Du eine Idee, woran das liegen könnte ?

    Ich schick mal ein kleines Vide per Mail..
    Joachim

    1. Guten Abend Joachim,
      hattest du die vor kompilierte binary geflasht? Ich hatte nämlich kürzlich einen bug gefixed der diesem sehr ähnlich sieht. Hatte den Fehler allerdings nur im Code behoben und die binary noch nicht aktualisiert. Daran arbeite ich gerade. Du kannst die Firmware also entweder mit der Arduino IDE flashen oder 10 Minuten warten. Bis dahin sollte ich die Binary aktualisiert haben.
      Lass mich gerne wissen, ob das den Fehler behoben hat. 🙂
      Beste Grüße
      Fabian

  2. Hallo und Danke für die sehr ausführliche Anleitung. Leider warte ich schon ne ganze weile auf den über Kickstarter finanzierten 3D-Drucker und sicher warte ich noch etwas länger. Hast Du eine Idee wo ich die 3D Teile drucken lassen kann oder gibt es vielleicht hier einen anderen Leser, der mir die Teile gegen Bezahlung drücken kann?

    Ich will trotzdem schon mal alle anderen fehlenden Komponenten bestellen und da ist mir aufgefallen, dass du nirgends die Stärke des Acrylrings angegeben hast. Da dieser ja bündig sitzen soll, wäre die Angabe sicher hilfreich. Danke!

    Freundliche Grüße vom Niederrhein
    Patrick

    1. Hey Patrick,
      danke für den Hinweis mit der Dicke für den Plexiglasring. Ich habe die Info (3mm) hinzugefügt.
      Was das Drucken der Teile angeht: Das kann ich auch gerne machen. Kontaktiere mich doch einfach über das Kontaktformular wenn du Interesse hast und dann können wir das abklären. 🙂
      Beste Grüße
      Fabian

  3. Hallo Fabian,

    Vielen Dank für die detailierte Anleitung!
    Zwei Fragen: wie dick ist dein Acrylglas für die Abdeckung? 3mm?
    Und noch interessanter: Wie hast du das Acrylglas geschnitten?

    Viele Grüße und ein “gutes Neues”!!
    Oliver.

    1. Hey Oliver,
      Danke und danke für den Hinweis mit der Dicke für den Plexiglasring. Ich habe die Info (3mm) hinzugefügt. Ich habe den Ring bei http://www.acrylformen.de/ per Laserzuschnitt zuschneiden lassen. Leider ist der Shop aktuell (soweit ich weiß aufgrund der hohen Nachfrage) geschlossen. Es gibt aber auch andere Shops die diesen Service anbieten. Ich kann dir nur leider keinen Konkreten empfehlen. 🙂
      Frohes neues und beste Grüße’
      Fabian

  4. Hallo Fabian,
    Ich habe mir überlegt, eine größere Variante der Uhr zu bauen (3D-Modell muss man dann ggfs. in mehreren Teilen drucken). Die LED-Streifen gibt es ja standardmässig in verschiedenen “Dichten” (Anzahl LED/m). Für die verschiedenen Varianten habe ich einen Rechner erstellt, der den Durchmesser und den Vergrößerungsfaktor (für den 3D-Druck) berechnet. Den Rechner habe ich freigegeben: https://docs.google.com/spreadsheets/d/1NKIeCsHsKDcRir4_VSnpM0GEaJx69tWigmRbGMM3S2I/edit?usp=sharing
    bzw.: https://bit.ly/2JAXHnR
    Du kannst ihn gerne im Artikel verlinken oder die Tabelle mit den gängigsten LED-Varianten übernehmen.

    Gruß,
    Oliver.

    1. Hey Oliver,
      super coole Sache! Vielen Dank dafür. Würde das in den Artikel mit einbauen. Soll ich dich/deinen blog/etc. iwie verlinken? 🙂
      Vielen dank und beste Grüße
      Fabian

  5. Hello !
    I’m trying to download your STL from the github link but when I open the downloaded files in Cura, I have an error anf It won’t load. I’m used to download stl files from “thingiverse” or “Cult3d” but here, there is something in the link I can’t figure out .
    Can you help me to get those files ?

    Thank you for your inspirating work !

    1. Hey Matt,
      Thanks for pointing that out. I got a similar complain in the past and investigated whats going on here. It looks like that gitHub does not delivering the STL file itself at downloading it but the page to display a preview of it. I have to find another way to offer the files here. Until then please download the complete repository (containing the stl files). The following link should work: https://github.com/Nerdiyde/pxlBlck/archive/main.zip
      The STL files should be located in pxlBlck\platform\pxlBlck_RingClock
      I hope this works for you. If possible please let me know. 🙂
      Thanks and Best regards
      Fabian

      1. Hello, thank you.
        The link worked as expected. And now I have to chose which round clock I’ll make 🙂

        I have a broken LCD TV and I was wondering what it yould like to use the TV “diffusor” or any of the different display layer between the panel and the LED . I got to try !

        Have a nice day.
        Matt from France

        1. Hey Matt,
          sounds good, thanks for letting me know. 🙂
          Good look with the diffusor. 🙂 Hope it works. If you like let me know how your build came out in the end.
          Thanks and best regards from germany
          Fabian

  6. He Fabian,

    erst mal vielen Dank für die tolle Anleitung hier. Ich hatte mit mal die Zeit genommen das ganze nach zu bauen. Dadurch, dass du das so detailliert beschrieben hast war das auch kein Problem.
    Auch wenn das hier kein Forum ist habe ne Frage / Problem.

    Bei mir zeigt es aktuell keine Markierung bei den Stunden an (22Uhr Ortszeit). Einen Defekt am LED Band kann ich ausschließen. Wenn ich die “Direction inversed:” Funktion aktiviere, dann funktioniert es, aber dann läuft es ja in die falsche Richtung.
    Hast du eine Idee was das sein kann?

    Danke
    Carsten

    1. Hey Carsten,
      Danke, freut mich zu hören. 🙂 Ach immer her mit den Fragen. Dafür ist der Kommentarbereich ja gedacht. 🙂
      Ich habe vor ca. drei Wochen einen Bug behoben der sehr ähnlich klingt. Es kann sein, dass der Fix noch nicht in den aktuellen binaries enthalten ist.
      Ich werde mal versuchen das nachzustellen und zu prüfen.
      Bis dahin: Hast du den Code selber kompiliert und programmiert oder die vorgefertigten bin-Dateien/binaries genutzt? Falls letzteres, welche hast du genommen? 🙂
      Danke und beste Grüße
      Fabian

  7. Danke dir für die schnelle Antwort. Ich habe das binary für den ESP8266 von der github Seite genommen.
    Heute konnte ich feststellen, dass es bei der Umschaltung auf 18Uhr (also wenn von LED 60 auf 1 geschallten wird) es dazu kommt, dass die Stunden nicht mehr dargestellt werden.

    Eventuell helfen dir ja die Infos aus dem System Page:
    Build:⋄ 20111 – Mega
    System Libraries:⋄ ESP82xx Core 2_7_2, NONOS SDK 2.2.2-dev(38a443e), LWIP: 2.1.2
    Git Build:⋄ (custom)
    Plugin Count:⋄ 48 [Normal]
    Build Origin: Self built
    Build Time:⋄ Jan 25 2021 18:41:50

    Carsten

    1. Hey Carsten,
      dann hast du auf jeden Fall die aktuellste Version. Möglicherweise ist da dann doch ein Bug im Code. :/
      Ich habe es gerade mal auf meiner Uhr versucht nachzustellen aber dort sieht alles gut aus.

      Kannst du mir noch deine Konfiguration schicken? Also welche Optionen du im Plugin wie konfiguriert hast. Gerne auch als Screenshot.
      Wenn du möchtest kannst du mir auch die Konfiguration deiner Uhr als Datei zukommen lassen. Dazu musst du auf den Tab “Tools” wechseln und mit dem Button “Save” in der Sektion “Settings” die Einstellungen exportieren.
      (Dadurch werden nur die Einstellungen und keine WiFi Daten o.ä exportiert. :))

      Vielen Dank und beste Grüße

    2. …vergiss meine Anfrage vom vorherigen Kommentar. Ich weiß jetzt was du meinst. Konnte es auf meiner uhr auch nachstellen. :/
      Ich behebe das und gebe dann hier bescheid.
      Danke fürs bescheid geben. Ist mir beim testen nicht aufgefallen. Da bin ich immer dankbar, wenn ich solche Hinweise bekomme. 🙂
      Beste Grüße
      Fabian

    3. Hey Carsten,
      habe den Fehler gefunden. (Hoffe ich) 😀
      Auf meiner Uhr taucht er jetzt auf jeden Fall nicht mehr auf. Bin mir aber auch nicht sicher ob ich alle Möglichkeiten abgetestet habe.
      Habe die aktualisierte binary hochgeladen.
      Ich hoffe es passt nun alles. Falls ja würde ich mich über eine kurze Rückmeldung freuen. 🙂
      Beste Grüße
      Fabian

      1. Vielen DANK,

        musste ich sofort ausprobieren.
        Hab die bin geflasht und die Konfiguration gemacht (hätte ich ja vorher mal Backupen können), aber war auch in 2min gemacht.
        Läuft 🙂
        Super, dass du so schnell ne neue Version bereitgestellt hast. Wenn ich die Plexiglas Abdeckung hab. Mach ich mal nen Bild.

  8. Hallo

    Ich habe keinen Laser-Cutter, und wollte die Uhr erstmal aufbauen, ohne auf den Plexiglas-Ring warten zu wollen. Deshalb habe ich einen Ring in OpenSCAD erstellt und mit transparentem PETG ausgedruckt.

    Ich habe mehrere Versuche gemacht: bei einer Materialstärke von 1 mm ist er schön transparent. Die Transparenz nimmt bei 2mm etwas ab. Wenn man den Ring so satiniert, wie im Foto haben möchte, kann man die Rückseite leicht mit feinem Schmirgelpapier anrauen, oder den Ring dicker drucken und mit dem Infill-Muster herumspielen….

    Für eine erhöhte Transparenz sollte das Material mit etwas höherer Temparatur gedruckt werden.

    Vorlagen in 1 mm und 2 mm, sowie der OpenSCAD-Quellcode sind auf Thingiverse:
    https://www.thingiverse.com/thing:4762684

  9. Hallo Fabian,

    klar. Gerne auch einen Link auf das Thingiverse-Repo, dann können Interessierte mit der OpenSCAD Source herumspielen 🙂

    Gruß,
    Oliver.

  10. Hi,

    First of this is a great project and the writeup is fantastic. Thank you.

    I have three questions:
    – They say that the D1 mini doesn’t have enough power for more that a few leds and you should power that separately. In your build I assume that you power the D1 from the usb and pass power to the strip from the 5v pin. Did you have issues with brightness and/or the D1 just failing by doing that?

    – Your stl for the ring assumes 144 leds/m and has the small dividers accordingly. I assume using a strip with less leds/m would produce dark spots. Can you share the original file so I can edit the spacing?

    – When you solder the wires on the led strip, why do you connect the power and ground after the first?

    Thanks again

    1. Hey Alexandros,
      thanks you 🙂

      Here three answers. 😀
      1. Yes and no. The max brightness is limited in software. So yes, the full brightness is not available. I’m actually working on a special PCB that should make it possible to make more brightness available on some pxlBlck plattforms 🙂
      2. The problem with LED stripes using less leds/m is also that it wouldnt fit in the ring anymore. Also the diameter would become a lot bigger. At least when you try to use an led stripe with 60 LEDs as well.
      3. Hm, I’m not really sure what order you are refering here to. Normally it doesnt matter in which order the wires are soldered. 🙂 Of course you should solder the wires without any power supplied to any component involved. 🙂

      Best regards
      Fabian

      1. Thank you for the reply,

        Regarding 1 my issue what they discuss here https://forum.arduino.cc/index.php?topic=492092.0 meaning that the D1 will fail if you use it to pass power to the led strip.

        Regarding 2 I was looking more to make a light display and less a clock that is why I was asking.

        Regarding 3 in this image https://i2.wp.com/nerdiy.de/wp-content/uploads/2020/11/www.nerdiy.de-howto-pxlblck-pxlblck_ringclock-aufbauen-20190408-144522.jpg?resize=1152%2C1536&ssl=1
        you wire the data at the start but the power and ground after the first led. why is that?

        Again thank you for the tutorials and the time
        Alexandros

        1. Hey Alexandros,
          you are welcome. 🙂
          Regarding 1. Yes basically this is right. What I did to prevent is to use the “setBrightness” function of the underlying adafruit library. The maximal setable brightness of the matrix can be set. For more infos please read here: https://learn.adafruit.com/adafruit-neopixel-uberguide/arduino-library-use and search for “setBrightness()”. I used this functionality in my plugin (here: https://github.com/Nerdiyde/pxlBlck/blob/42e9987a61903b12edaa7c0fea2a954ca326e1ee/plugin/ESPEasy/_P205_pxlBlck.ino#L111) to reduce the max setable brightness. So if you use the pxlBlck plugin it shouldnt be possible to overload the usb-connection since the max brigthness is limited in software. The reduced brightness also leads to a reduced current and therefore the wemos should be capable to deliver the needed current. But of course you could also choose the option to bypass this “problem” by wiring the led strip to an external 5V-power input. 🙂

          Regarding 3. Now I got what you are refering to. 🙂 Thats basically done for space reasons. Electrically it does not really matter if the power connections are wired to the first, second or 33rd LED. All LEDs are powered in parallel by the 5V source. So the energy is dsitributed to the whole LED strip independently from where it is connected. Since it is easier to solder the power wires at that area I decided to use the power terminal at the second LED. Only the data input has to be soldered to the first led-data input. 🙂

          Best regards
          Fab

  11. Alexandros,

    Re. 1: The “Neopixel” strips are different from “common” LED strips or single LEDs in the way that the power for lighting the LED comes only from the 5v connector.

    The D1 (or D4) is just a data pin that delivers color (and brightness) *information* to the LED pixels. Every LED regenerates that data signal and passes it on to the next neighbor. The amount of current on the data pin needed for a 10-pixel strip is (almost) identical to that of a 100-pixel strip. This current is no problem for the data pins of the ESP (or Arduino).

    Keep asking!
    Oliver.

  12. Hallo,
    erst einmal vielen Dank für das super tolle Projekt 😀
    Leider treten bei mir folgende Probleme auf:

    1. Die Sekunden-LED immer für 1 bis 3 sek an und springt dann weiter. Verdacht war, dass das Netzteil (2A) in die Knie geht, austausch war ohne Erfolg. Auch die Stromaufnahme der LEDs zu reduzieren brachte nichts.

    2. WLAN funktioniert im Easy Mega AP mit meinem Smartphone S20 5G FE nur sporadisch, d.h. die Seiten werden nicht oder teilweise geladen.

    Beides sieht sehr nach Überlastung des ESP aus? Könnte es sein, dass die auch entsteht, wenn der ESP den NTP nicht erreicht?

    Hast du eine Idee, wie man das Problem fixen kann?

    Firmware:
    Build:⋄ 20111 – Mega
    System Libraries:⋄ ESP82xx Core 2_7_2, NONOS SDK 2.2.2-dev(38a443e), LWIP: 2.1.2
    Git Build:⋄ (custom)
    Plugin Count:⋄ 48 [Normal]
    Build Origin: Self built
    Build Time:⋄ Feb 13 2021 10:53:33

    LG
    Anke

    PS: Gibt es schon einen Zeitplan, wenn du das RTC in die SW einbindest bzw. uns Jünger(innen) eine Konfig-Seite präsentierst 😉

    1. Hi Anke 🙂
      vielen Dank. 🙂
      1. Das liegt sehr wahrscheinlich an der Auslastung des ESP. Der ESP kann leider nur immer eine Aufgabe erledigen. Dabei haben vor allem das WiFi handling und die ganzen anderen Aufgaben die das ESPEasy Framework im Hintergrund erledigt Priorität (bzw. Verzögern andere Prozesse). Du kannst das sogar beobachten, wenn du die Debugausgabe für die serielle Schnittstelle aktivierst (Im Webmenü unter “Advanced”). Auf der seriellen Schnittstelle sollte ausgegeben welcher Prozess gerade bearbeitet wird und ggf. die anderen Prozesse verzögert. 🙂
      2. Das heißt du benutzt ESPEasy als Access Point und verbindest dein Handy direkt damit? Ich muss zugeben, dass ich da nicht viel Erfahrung habe. Ich habe meine ESPs mit meinem WiFi zuhause verbunden und greife darüber auf die ESPs zu. Hast du das schonmal probiert? 🙂 Wenn du den ESP in diesem Modus betreibst kann der ESP (normalerweise) auch den NTP Server nicht erreichen. Dann hast du vllt. ein ähnliches Problem wie im ersten Punkt mit der verzögerten Sekundenzeiger Aktualisierung. Der Verbindungsversuch mit dem NTP Server verzögert dabei vermutlich auch den Prozess der die Webseitendaten an dein verbundenes Handy ausliefert. Du könntest ja mal (nur zum Test) versuchen den NTP Abruf zu deaktivieren und dann gucken ob sich etwas verändert/verbessert. 🙂

      Zum RTC Plugin:
      Ich habe das gerad mal auf meiner ToDo Liste etwas nach oben geschoben. Geplant ist, dass ich die Sachen darauf bis Anfang April fertig mache. Ich hoffe das klappt. 🙂

      Beste Grüße
      Fabian

      1. Hallo Fabian,

        sorry das ich jetzt erst wieder antworte.

        Du hattest natürlich recht, es liegt an der Auslastung des ESP, der Wifi/NTP Prozess bei mir 80% Last wenn die WLAN Verbindung nicht zu stande kommt bzw. abbricht.
        Dies ist auch das Problem mit dem Handy, da der ESP ausgelastet ist. Vielleicht wird auch der AP resetiert? Ist aber nur eine Vermutung, da ich im programmieren und SW debuggen eine Anfängerin bin.

        Bzgl. RTC Plugins sag ich schon jetzt mal Danke für deine tolle Arbeit 🙂

        LG
        Anke

  13. Hallo Flo
    Du schreibst:
    > “Um die RTC in Kombination mit ESPEasy nutzen zu können,
    > habe ich ein weiteres Plugin geschrieben.
    > Dessen Konfiguration werde ich bald in einem gesonderten Artikel beschreiben
    > und dann natürlich auch hier einfügen bzw. auf Nerdiy.de posten.”

    Ich kann die Modulbeschreibung nirgends finden. Leider weisen die Hilfeseiten des Moduls auf dem ESPEasy ebenfalls ins Leere.

    Ich habe das Modul verbunden und die Kommunikation mit dem 8266 funktioniert auch (z.B. Modul-Temperatur wird angezeigt). Leider macht der Betrieb ohne WiFi massiv Probleme: der Sekundenzeiger der Uhr “springt” und verzögert immer wieder (etwa zur selben Minute). Ich denke, das könnte mit dem Update-Intervall zusammenhängen.

    Kannst du zur Konfiguration der RTC 3231 bitte noch etwas schreiben?

    Vielen Dank.

    1. Hey Oliver,
      uh das ist ein gruselig gutes Timing. 😀 Ich habe gerade in einem anderen Kommentar auch zu dem Thema etwas geschrieben.
      Ich versuche den Artikel bis Anfang April fertig zu bekommen. Der ganze Betrieb ohne WiFi ist generell etwas problematisch, aber ich versuche das auch mithilfe des Plugins zu lösen. 🙂
      Beste Grüße
      Fabian

  14. Hallo Flo,

    Habe eben gesehen, dass Anke auch schon gefragt hat 🙂
    BTW: Wenn der NTP Server verfügbar ist, habe ich den “Sekundensprung” nicht, auch wenn die RTC aktiv ist.

    1. Moin Björn,
      gibt es tatsächlich. 😀
      Das Plugin ist in dem letzten build in dem pxlBlck repository enthalten. (Wenn du möchtest schau gerne vorbei) Ich arbeite gerade an der Doku. Sollte (wenn alles klappt) noch diese Woche online gehen. 🙂
      Beste Grüße
      Fabian

  15. Updates on the RTC plugin? Also, I used your links and this version of ESP Easy doesn’t have the plugin for the analog input for the LDR. Thoughts? My clock is working, just without a working RTC or LDR.

    1. Hey Stephen,
      yes and no. :/ The plugin should be included in the git repository. I will check that and will also finish the work on the article about it (like it was promised some time ago.)
      Sorry for the delay. :/
      best regards
      Fab

  16. Hallo Fabian, in Ermangelung eines 3D-Druckers habe ich mir erst mal zum Testen einen 60 LED-Ring von Ali bestellt. Der Ring kommt in 4 Segmenten, die erst einmal zusammengelötet werden wollen. Ganz ehrlich, kein Spaß – die 3 Kontakte sind relativ nah beieinander, aber ich hab es trotzdem hinbekommen.
    Worum es mir jetzt erst mal geht, wie bekomme ich die RingClock dazu, so auszusehen, wie hier auf den ersten 2 Fotos auf der Seite? Ich habe die komplette Anleitung durch, die ESPeasy Configuration durchsucht, aber ich habe leider überhauptnix gefunden um auch nur zeitweise einen solchen Rainbow anzuzeigen. Am liebsten wäre mir ich könnte solch einen Rainbow als Clock-Hintergrund anzeigen und die Zeiger z.B durch ausgeschaltete LED anzeigen!? Geht das? In dem Zusammenhang dachte ich, wäre es praktisch, das Zifferblatt „einfach“ zu invertieren (mit einem Befehl) vielleicht zeitweise oder im Wechsel, also Hintergrund = schwarz, Zifferblatt = weiß -> Wechsel -> Hintergrund = Rainbow, Zifferblatt (invert) = schwarz -> etc

    1. Hey Patrick,
      ich glaube den Ring kenne ich. Habe auch schonmal damit gekämpft. 😀
      Ehrlich gesagt gibt es diese Anzeigemöglichkeit (noch) nicht. Aber ich finde die Idee cool (und wundere mich auch gerade, dass ich da noch nicht selbst drauf gekommen bin).
      Habe den Regenbogenhintergrund bisher immer nur für die Startanimation genutzt.
      Die Invertierung der Farben müsste durch eine entsprechende Konfiguration der Rules möglich sein. Hast du damit schonmal gearbeitet?
      Beste Grüße
      Fabian

  17. Hi Fabian,

    hab mir auch gedacht, dass es evtl. über die Rules geht, aber komm damit noch nicht so klar. Meinst Du, dass man auch den Regenbogen über die Rules erzeugen kann, oder geht das nur über die Programmierung direkt im Code? Ich werde erstmal schauen, was ich über die Rules so hinkriege.

    Ich hätte auch noch eine Idee für einen schönen Effekt der Zeiger. Statt einfach eine LED weiter zu springen, wäre es doch toll, wenn die Zeiger erst mal eine schnelle Runde ums ganze Zifferblatt drehen würden, bevor sie zur nächsten Stelle springen, beim Sekundenzeiger wäre der Effekt am besten zu beobachten – wäre auch toll, wenn man dabei die Drehrichtung der Umkreisung wählen könnte.

    Ein weiterer Effekt wäre, wenn der Sekundenzeiger das Zifferblatt (bis auf Marker und andere Zeiger) mit einer Umdrehung langsam füllen könnte, welche erst beim Sprung auf Sekunde 1 wieder aufgelöst wird – würde wohl am Besten ohne Marker aussehen.

    Nur mal so ein paar Ideen, falls Du Lust und Zeit dafür hast. 🙂

    Freundliche Grüße
    Patrick

    1. Hi Patrick,
      Ich habe die Regenbogenanimation letztens mal provisorisch implementiert. Du kannst sie mit der aktuellen Firmwareversion und dem pbani Befehl auslösen. Dazu musst du die Anmations-ID 7 benutzen. 🙂
      Danke für deine Ideen. Aktuell komme ich nicht so richtig dazu daran zu arbeiten, aber ich habe es mir aufgeschrieben. 🙂
      Beste Grüße
      Fabian

  18. Hallo Fabian,
    mein Bekannter hat sich bereit erklärt, mir die Uhr zu bauen, da mein handwerkliches Geschick bei solch diffizilen Sachen eher, na sagen wir mal, katastrophal ist.
    Da ich keinen 3D Drucker habe, frage ich mich ob Du mir die benötigten Teile drucken könntest und was es kostet?
    Kannst Du mir auch grob sagen, was die gesamten benötigten Teile ungefähr zusammen kosten?

    Mit lieben Grüßen
    Andy

Kommentar hinterlassen

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

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.