Word Clock (German Layout)

by SebQu in Circuits > Arduino

5092 Views, 18 Favorites, 0 Comments

Word Clock (German Layout)

12_DSC_0782.JPG
1_DSC_0780.JPG
2_DSC_0779.JPG
3_DSC_0747.JPG
4_DSC_0750.JPG
5_DSC_0751.JPG
6_DSC_0753.JPG
7_DSC_0763.JPG
8_DSC_0774.JPG
9_DSC_0776.JPG
10_DSC_0772.JPG
11_DSC_0784.JPG

Hey,

ich möchte Euch hier mal mein letztes Projekt vorstellen. Ich habe eine Uhr gebaut. Allerdings keine "normale" Uhr, sondern eine Word Clock. Zu solchen Bastelprojekten gibt es hier zwar schon ein paar Artikel, aber trotzdem möchte ich mal zeigen was ich mir ausgedacht und gebaut habe. Vielleicht hilft es ja dem ein oder anderen ja bei seinem Projekt.

Auf die Idee hierzu hat mich vor ein paar Monaten ein Kollege gebracht, der mir ein bisschen etwas über seine Mikrocontroller-Projekte erzählt hat und das er unter anderem auch eine solche Uhr für seine Frau gebaut hat. Die Idee fand ich so cool, dass ich mich auch entschieden habe so eine Uhr zu bauen. Sollte ja für einen Informatikstudenten im vierten Semester wohl irgendwie machbar sein. Danke Jannes :D

Glücklicherweise hatte ich zu diesem Zeitpunkt noch genug Zeit (5 Monate) bis zum Geburtstag meiner Freundin, sodass ich das kombinieren konnte und sie dann die Uhr zum Geburtstag bekommen hat.

Da das hier mein erstes richtiges Projekt war, bin ich sicher, dass ich bestimmt nicht alles perfekt gemacht habe. Allerdings bin ich mit dem Ergebnis mehr als zufrieden (und meine Freundin auch :). Von daher falls ihr Anmerkungen und Tipps habt, gerne in die Kommentare.

Material

Baumaterialen:

  • MDF Holzplatte(n) (8mm und 12mm)
  • Frontplatte (Fotokarton)
  • Plexiglasplatte
  • Holzdübel
  • Schrauben:
    • Zylinderkopfschraube 25mm x M5
    • M5 Hülsenmutter
    • Schrauben 20mm x M4
    • Kleine Metallwinkel
    • Große Metallwinkel
    • Holzschrauben 40mm

Mikrocontroller:

  • Arduino Nano AtMega328p
  • RTC-Modul

Elektronik:

  • Netzteil (Extern, Output: 5V, 3A (15W), Hohlstecker 2,1x5,5mm)
  • WS2812b LEDs (60LED/m) (ca. 2m)
  • Kupferdraht
  • CR1220 Knopfzelle
  • Hohlsteckerbuchse 2,1x5,5mm
  • Hohlstecker-Verlängerungskabel
  • Verlegekabel 3x0,75mm^2
  • Infrarot-Fernbedienung (IR)
  • Schrumpfschläuche
  • Fotowiderstand
  • IR-Empfänger (TSOP4838 38 kHz)
  • Bauteile Platine:
    • Buchenleiste (1x15 polig)
    • Buchenleiste 90° gebogen (1x5 polig)
    • Widerstände (470 Ohm, 1k Ohm)
    • Kondensator (1000µF)
    • Klemmleiste (Schraubklemmblock):
      • 2-polig
      • 3-polig
      • 10-polig

Und das wichtigste:

  • Nerven und Geduld

Planung

IMG_0826.PNG
IMG_0827.PNG
IMG_0829.PNG
IMG_0828.PNG

Zu Beginn habe ich mir erstmal Gedanken gemacht welche Funktionen die Uhr nachher haben soll. Anhand der dafür benötigten Bauteile konnte ich die Planung machen. Ich habe mich auf folgende Funktionen festgelegt:

  • Anzeige der aktuellen Uhrzeit (minutengenau)
  • Speicherung der Zeit (für Spannungsausfall)
  • Steuerung der LED-Farben
  • Automatische Anpassung der Helligkeit an die Umgebung + manuelle Einstellung der Helligkeit
  • Automatische Umstellung auf Sommer-/Winterzeit
  • Funktion zum manuellen Einstellen der Zeit (für den Fall der Fälle)
  • Steuerung über eine Infrarot-Fernbedienung (Farbe, Helligkeit, Blinkeffekte, Zeiteinstellung)

Zudem soll die Uhr an der Wand montiert werden oder normal aufrecht hingestellt werden können.

Damit konnte ich mich an die Konstruktion wagen. Nachdem ich mit den ganzen Papierzetteln irgendwann dann fast den Überblick verloren hatte, bin ich auf eine CAD App (Shapr3D) fürs iPad umgestiegen. Die bekommt man als Student glücklicherweise kostenlos :). Damit konnte ich die Uhr als 3D-Modell aufbauen, was die Planung deutlich erleichtert hat (siehe Bilder)

Frontplatte

Layout_WordClock_V1_Julia_IR_Design_Black.png
IMG_2698.jpg
IMG_2699.jpg

Das wohl wichtigste Teil der Uhr ist die Frontplatte mit dem scheinbar wirren Buchstabenfeld. Entsprechend habe ich damit auch angefangen, da sich die ganze Konstruktion der Uhr daran orientiert.

Bei der Positionierung der Buchstaben bzw. Wörter habe ich ein Muster gewählt, bei dem der Name meiner Freundin senkrecht in der in Mitte des Buchstabenfeldes steht. Dazu musste ich ein bisschen rumprobieren, bis ein passendes Muster mit allen notwendigen Wörtern rauskam. Da aber nicht alle Buchstaben genutzt werden, hatte ich hier etwas Spielraum.

Die Frontplatte an sich besteht aus einem schwarzen Fotokarton. Diesen habe ich bei formulor.de fertigen lassen. Das größtmögliche bestellbare rechteckige Maß beträgt 384mm x 384mm. Dieses Maß liegt somit der gesamten Uhr zugrunde.

Die Buchstaben im Karton werden per Laser ausgeschnitten. Dazu muss eine Vektorgrafik-Datei auf der Formulor-Webseite hochgeladen werden, die genau das auszuschneidende Muster definiert.
Zur Erstellung einer Vektorgrafik eignet sich sehr gut das OpenSource-Tool InkScape. Auf der Formulor-Webseite lässt sich eine Art "Vorlage" herunterladen, in der die Maße des Fotokartons bereits eingezeichnet sind.

Mit dem Programm habe ich ein Raster für die Buchstaben erstellt und die Buchstaben entsprechend positioniert. Hierbei mussten einige Buchstaben allerdings extra bearbeitet werden, damit die Innenbereiche (sog. "Punzen") nicht herausfallen beim lasern. Dazu habe ich Pfade der betroffenen Buchstaben einzeln angepasst und "Stege" eingesetzt werden. Dabei entstand ein ziemlich schöner und passender Schriftstil wie ich finde.

Konstruktion Und Fertigung Der Holzteile

IMG_2885.jpg
IMG_2881.jpg
IMG_2883.jpg
IMG_2943.jpg
IMG_2948.jpg
IMG_2950.jpg
IMG_3026.jpg
IMG_2957.jpg
IMG_2965.jpg
IMG_2967.jpg
IMG_2974.jpg
IMG_2985.jpg
IMG_2988.jpg
IMG_3038.jpg
IMG_3041.jpg
IMG_3042.jpg
IMG_3044.jpg
IMG_3052.jpg
IMG_3045.jpg

Nachdem die Frontplatte fertig war, konnte ich mit der eigentlichen Konstruktion und dem Bau der Uhr beginnen.

Material:

Der Rahmen der Uhr besteht aus MDF-Platten (mitteldichte Holzfaserplatte). Die Holzbauteile habe ich im Internet mit den passenden Maßen bestellt. Kann man natürlich auch selbst zuschneiden, war aber einfacher :)

Rahmen:

Wie bereits erwähnt, orientiert sich die Größe der Uhr an der möglichen bestellbaren Größe der Frontplatte. Aus diesem Grund wurden die Rahmenteile entsprechend der Größe dimensioniert:

Die Ober-, Unter- und Seitenplatten sind gedübelt, verleimt und verschraubt. Damit wird eine optimale Stabilität gewährleistet, da die Uhr schon ein bisschen was wiegt.

Auf der Oberplatte ist neben den Löchern für die Befestigungsschrauben in der Mitte ein Loch gebohrt, in dem der Fotowiderstand für die automatische Helligkeitssteuerung eingesetzt ist. Die Unterplatte besitzt ebenfalls mittig ein Loch für die untere Hohlsteckerbuchse zur Spannungsversorgung.

Alle Rahmenteile wurden nach der Bearbeitung von außen und an den Rändern mit einer Grundierung schwarz lackiert (siehe spätere Bilder). Das habe ich von einem Malermeister aus dem Bekanntenkreis machen lassen. Vielen Dank an der Stelle nochmal Christoph :)

Mittelplatte:

Die Mittelplatte hält die Uhr im Grunde von innen zusammen. Hier sind alle Teile des Innenlebens befestigt. Die Mittelplatte besitzt vier äußere Bohrungen für die Hülsenmuttern zur Fixierung der Frontplatte. Zudem sind verteilt sieben Löcher gesetzt, durch die die Kabel für die LEDs und den IR-Empfänger durchgeführt sind.

Auf der Rückseite der Platte ist außerdem mittig mit einer Oberflächenfräse ein rechteckiger Bereich ausgefräst worden, in der später die Platine mit dem Arduino etc. eingelassen wurde. Hierdurch lässt sich die Uhr insgesamt etwas schmaler bauen. Die Fräse habe ich mir von einem Kollegen meines Vaters ausgeliehen. Vielen Dank auch an dieser Stelle nochmal :)

Lochplatte:

Die Lochplatte ist das aufwendigste Teil der Uhr. Sie hat die Aufgabe das Licht jeder einzelnen LEDs möglichst von den anderen abzuschirmen, damit die benachbarten Buchstaben nicht "mitleuchten". Dazu habe ich für jede LED ein 23mm breites Loch mit einem Forstnerbohrer gefertigt.

Zusammen sind dies 110 Löcher für die LEDs, vier kleinere Löcher für die Minuten-LEDs und nochmal vier weitere Löcher an den Ecken zur Fixierung der Platte.

Zudem sind auf der Rückseite dieser Platte Kerben für die LEDs und Kabel ausgefräst, damit die Platte möglichst bündig auf der Mittelplatte aufliegen kann und so eine gute Lichtabschirmung ermöglicht wird.
Außerdem ist im oberen Bereich der Lochplatte eine Einkerbung ausgefräst, in der der IR-Empfänger platziert ist.

Elektronik

IMG_0818.PNG
Eagle_Platine.PNG
IMG_3013.jpg
IMG_3014.jpg
IMG_3128.jpg
IMG_3066.jpg
IMG_3068.jpg
IMG_3099.jpg
IMG_3100.jpg
IMG_3103.jpg
IMG_3104.jpg
IMG_3129.jpg
IMG_3138.jpg
IMG_3186.jpg
IMG_3193.jpg
IMG_3197.jpg
IMG_3198.jpg
IMG_3248.jpg
IMG_3251.jpg

Schaltung und Platine

Die Steuerung der Uhr erfolgt über einen Arduino Nano. Der Mikrocontroller steuert die adressierbaren WS2812b LEDs hinter dem Buchstabenfeld. Die Uhrzeit für die Verarbeitung bezieht der Arduino aus einem RTC-Modul. Dieses besitzt eine Batterie und kann die Zeit speichern und "zählt weiter", auch wenn die Spannungsversorgung unterbrochen ist. Externe Steuerungssignale kann die Arduino über einen Infrarotempfänger (TSOP4838 38 kHz) empfangen. Informationen über die Umgebungshelligkeit bekommt er durch einen kleinen Fotowiderstand auf der Oberseite.

Zu beachten hierbei ist das die Datenleitung der WS2812b LEDs mit einem Widerstand zwischen 300 und 500 Ohm geschützt werden muss. Die Werte des Fotowiderstands werden über einen Spannungsteiler mit dem analogen Eingang des Mikrocontrollers ermittelt.

Zur besseren Handhabung (und zum besseren Aussehen ;)) habe ich für die Schaltung eine Platine entwickelt. Dazu habe ich EAGLE von Autodesk verwendet (ist für Hobbyanwender kostenlos und als Student bekommt man sogar die Vollversion). Hier wurde der Schaltplan nachgebaut und die Platine entsprechend designt. Die Platine an sich habe ich bei JLCPCB.com bestellt. Vielen Dank hier an Jonas, der mir mit EAGLE und der Bestellung geholfen hat :D

Die Spannungsversorgung für die LEDs läuft ebenfalls über die Platine. Die 10 (bzw. 11) LED Reihen sind in fünf zweier (bzw. die letzte in dreier) Parallelstränge aufgeteilt, damit die Strombelastung für die Leiterbahnen der ersten LEDs und der Spannungsabfall am Ende nicht zu groß wird.

Beim Netzteil habe ich mich für ein externes Netzteil entschieden, damit die Uhr etwas dünner gebaut werden kann. Die Dimensionierung basiert auf der Grundlage der erwarteten Leistungsaufnahme der LEDs. Pro LED sollte man mit 0,06A rechnen, die ungefähr benötigt werden wenn weißes Licht (alle 3 RGB LEDs an) leuchten soll. Bei 114 LEDs wären das theoretisch stolze 6,8A. Da allerdings bei der Anzeige der Zeit niemals alle LEDs gleichzeitig leuchten werden, kann hier ein deutlich kleineres Netzteil verwendet werden. Ich habe mich für ein 3A Netzteil entschieden, das somit immer noch genug Reserven hat. (Bei der Programmierung sollte man das aber im Hinterkopf behalten und evtl. Grenzen für die Helligkeit in der Software einbauen, damit das Netzteil nicht abraucht)

Bau

Nach der sehnsüchtig erwarteten Ankunft meiner ersten selbstdesignten Platinen und dem verlöten der Bauteile konnte ich die 114 LEDs auf der Mittelplatte platzieren und ebenfalls zusammenlöten. Definitiv die unschönste Arbeit an der ganzen Uhr. Aber was macht man nicht alles.... :) Dafür sollte man einige Abende einplanen. Zur Verbindung der LEDs innerhalb der Reihe eignet sich verzinnter Kupferdraht hervorragend.

Nach dem Verlöten der LEDs wurden die Kabel für die Spannungsversorgung der Reihen auf der Rückseite der Mittelplatte festgeklebt und an die Schraubklemmen der Platine geführt.

Der Fotowiderstand wurde oben in der Oberplatte ebenfalls festgeklebt und die Kabel zur Platine gelegt. Ebenso wie beim IR-Empfänger, der auf die 3D-gedruckte Halterung auf der Vorderseite an die Oberplatte geklebt wird (später mehr).

3D Druckteile

IMG_0824.PNG
IMG_2828.jpg
IMG_2829.jpg
IMG_2830.jpg
IMG_0825.PNG
IMG_2810.jpg

Zwei Teile der Uhr habe ich mit einem 3D-Drucker fertigen lassen. Da diese beiden Halterungen nur sehr kleine Bauteile tragen müssen und nicht viel Platz vorhanden ist, habe ich mich für einen 3D Druck entschieden:

  • Halterung der rückwärtigen Hohlsteckerbuchse
  • Halterung des IR-Empfängers

Den Entwurf habe wieder mit der Shapr3D-App erstellt. Die daraus generierte STL-Datei konnte ich an einen Freund senden, der ganz zufällig einen 3D-Drucker hat. Danke nochmal dafür Jonas :D

Die Halterung für die Hohlsteckerbuchse befindet sich in der Uhr auf der Unterplatte auf der Rückseite. Damit lässt sich die Uhr auch im Stand betreiben, obwohl die untere Buchse verdeckt ist. Die zweite Halterung ist an die Unterseite der Oberplatte geklebt und positioniert den IR-Empfänger genau hinter der entsprechenden Öffnung der Frontplatte.

Bau Der Uhr

IMG_3219.jpg
IMG_32202_klein.jpg
IMG_3258.jpg
IMG_3260.jpg
IMG_3263.jpg
IMG_3319.jpg
IMG_3264.jpg
IMG_3266.jpg
IMG_3268.jpg
IMG_3270.jpg
IMG_3271.jpg
IMG_3294.jpg
IMG_3313.jpg
IMG_3325.jpg
IMG_3321.jpg
1_DSC_0780.JPG

Nachdem alle notwendigen Teile gebaut waren, konnte endlich die Uhr vollständig zusammengebaut werden.

Der Rahmenteile sind wie anfangs erwähnt mit der Mittelplatte verschraubt und verleimt. Die Schrauben habe ich hier noch schwarz lackiert, damit sie nicht so in dem schwarzen Rahmen auffallen.

Mit dem zusammengebauten Rahmen konnte dann die Verkabelung für die Spannungsversorgung gemacht werden. Die beiden Hohlsteckerbuchsen sind dazu zusammengeführt (parallel) und gehen zusammen auf die Eingangsklemmen der Platine, damit die Uhr sowohl hängend an der Wand als auch aufrecht stehend betrieben werden kann. Außerdem konnte jetzt der Fotowiderstand und der IR-Empfänger mit der 3D-gedruckten Halterung verklebt und mit der Platine verkabelt werden.

Zur besseren Streuung des Lichtes und damit die LEDs hinter der Frontplatte nicht sichtbar sind, sind die Bohrungen der Lochplatte mit weißen, leicht transparentem Papier überdeckt. Dadurch leuchten die Buchstaben gleichmäßig.

Programmierung

Zur Programmierung der Uhr habe ich die Arduino IDE verwendet. Die Programmierung läuft daher vielleicht nachher zwar nicht so super effizient, aber man kann sich mehr auf sein Programm konzentrieren als auf das Handling des Chips. Die Bibliotheken für die eingebauten Funktionen und Bauteile sind die folgenden:

  • DS3231.h --> RTC-Modul
  • Adafruit_Neopixel.h --> Steuerung WS2812b-LEDs
  • IRremote.h und IRremoteInt.h --> IR-Receiver

Grundprinzip (einfach):
Über das RTC-Modul werden bei jedem Zyklus des Mikrocontrollers die Zeitdaten bezogen. Diese werden in 5-Minuten-Bereiche zerlegt und die entsprechenden, als Wörter definierte LEDs, aktiviert. Bei jedem Zyklus wird zusätzlich die Umgebungshelligkeit überprüft und es wird gecheckt, ob neue Signale über den IR-Empfänger empfangen wurden. Falls etwas davon zutrifft, wird in ausgelagerte Funktionen gesprungen um z.B. einen Helligkeits-Fading-Effekt zu erzeugen.
Hier kann man sich beliebig austoben. Meine über die Software realisierten Funktionen sind die folgenden:

  • "Julia"-Intro beim Start der Uhr und jeder vollen Stunde (mit Fadeout-Effekt)
  • Steuerung der Farbe über IR-Fernbedienung (interne Verwendung HSV-Farbsystem)
  • Manuelle Steuerung der Helligkeit über IR-Fernbedienung
  • Fading-Effekt der LED-Helligkeit bei Änderung der Umgebungshelligkeit oder manueller Änderung
  • Automatische Zeitumstellung (Sommer/Winter)
  • Manuelle Zeitstellung (durch blinkendes "Menü" zum Durchschalten der Minutenbereiche und anschließendes flashen ins RTC) über IR-Fernbedienung
  • Blinkeffekt mit zufällig vergebenen Farben über die aktiven Buchstaben
  • Rainbow-Effekt

Und damit ist die Uhr auch (schon) fertig. Vielen Dank fürs lesen :)

Cheers!