- Lötkolben + Lötzinn
- Philips-Kopf Schraubendreher
- Kleine Kabelbilder
- Heißkleber
- Glasreiniger
- Mikro-USB Kabel
- [OPTINAL] Holzkleber
-
LASERCUT TEILE
SVG - ./src/svg
oderDXF - ./src/dxf
-
- 4x
4x_numbers_2mm_set_300_200_simplified
- acrylglas gs 2mm, engrave (blue lines), cut (red lines)
- 4x
-
- 1x
4_digit_combined_set_1
- playwood 4mm, engrave (blue lines), cut (red lines)
- 1x
-
- 1x
4_digit_combined_set_2
- playwood 4mm, engrave (blue lines), cut (red lines)
- 1x
-
- 1x
4_digit_combined_set_3
- playwood 4mm, engrave (blue lines), cut (red lines)
- 1x
-
3D DRUCK
-
- [OPTINAL] 4x
./src/3d_print/4x_lixie_feet.stl
- 0.2mm PLA
- [OPTINAL] 4x
-
MISC
-
- 16x
M4x30 Philips Head Type PH2 - DIN7985
- 16x
-
- 16x
M4 Nut - DIN934
- 16x
-
- [OPTINAL] 4x
M4 THREAD INSERTS
- [OPTINAL] 4x
- 4x
LED_PCB
, SEE./src/pcb
, LED SEITE BESTÜCKT - 1x
ESP8266 D1 Mini
- 8*
1*3 2.54mm 90° MALE HEADERS
- 4x 3x
Jumperwires FEMALE<=>FEMALE
- Arduino IDE
Zum späteren Funktionstest wird hier zuerst der ESP8266 D1 Mini
programmiert.
Somit kann die vollständige Funktionalität vor dem finalen Zusammenbau überprüft werden.
Hierzu sollte die Arduino IDE installiert und dieses Git-Repository heruntergeladen sein. Unter Linux kann dies wie folgt geschehen:
# ###### LINUX INSTALL ######
$ sudo apt update && sudo apt install -y git xz-utils
# CLONE REPOSITORY
$ cd ~ && git clone https://github.com/RBEGamer/LixieClock ./LixieClock
# INSTALL ARDUINO IDE
# # sudo snap install arduino => SEE NOTE!
$ wget https://downloads.arduino.cc/arduino-1.8.19-linux64.tar.xz
$ tar -xf arduino-1.8.19-linux64.tar.xz
$ cd arduino-1.8.19-linux64 && bash ./install.sh
# ALLOW USB COMMUNICATION
$ sudo usermod -a -G dialout $USER
$ sudo reboot
Nach dem Neustart kann der ESP8266 D1 MINI
per USB Kabel mit dem Computer verbunden werden.
Das Demo-Programm der Uhr, welches eine vollständige über NTP Synchronisierte Uhr darstellt, benötigt einige Bibliotheken.
Diese könne über den Library-Manager der Arduino IDE installiert werden oder aus diesem Repository kopiert werden.
Unter Windows wird der Inhalt des Ordners ./src/required_libs
nach BENUTZER_VERZEICHNIS/Dokumente/Arduino/libraries
kopiert.
Unter MacOS und Linux befindet sich der Arduino
-Ordner direkt im Benutzer-Ordner ~/
.
Unter Linux muss aufgepasst werden, wie die Arduino IDE installiert wurde.
Wurde snap install arduino
verwendet, befindet sich der Library-Order im Snap Verzeichnis ~/.snap/arduino/current/library
.
# ###### LINUX LIB COPY ######
$ cd ~
$ cp -Rf ./LixieClock/src/required_libs ~/Arduino/libraries
Anschließend kann die Arduino IDE geöffnet werden.
Unter Datei -> Öffnen
kann das Programm geöffnet werden, dies befindet sich in diesem Repository unter dem Pfad ./src/lixieclock/lixieclock.ino
Unter den Einstellungen muss danach zuerst der Support für den ESP8266
geladen werden.
Hierzu wird unter dem Punkt Zusätzliche Boardverwalter-URLs
die folgende Zeile hinzugefügt:
https://arduino.esp8266.com/stable/package_esp8266com_index.json
Falls ein ESP32
verwendet wird muss diese hinzugefügt werden:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_dev_index.json
Allgemein ist die Software mit dem ESP6266
(nicht ESP6266-01
) und dem ESP32
kompatibel.
Nach dem Speichern der Einstellungen muss das Board noch installiert werden.
Dazu wird unter Werkzeuge -> Board -> Boardverwalter
der ESP8266
installiert.
Anschlißend kann das LOLIN (WEMOS) D1 MINI (CLONE)
als Board ausgewählt werden.
Unter Port
wird der Serielle-Port ausgewählt, an welchem sich das Board befindet.
- Windows
COMx
- MacOS
/dev/ttyXXxxxXXxxx
- Linux
/dev/ttyUSBx
Anschließend kann über Sketch -> Hochladen
das Programm hochgeladen werden.
Im Verzeichnis ./src/lixieclock__base
befindet sich ein Demo-Programm, welches nur die einzelne Segmente ansteuert.
Dies kann als Basis für eigene Projekte verwendet werden.
Mittels der Funktion update_clock_display
können alle Segmente der Uhr einzeln verändert werden.
Zur Bestimmung der Farbe können die Funktionen Wheel
und digit_color
verwendet werden.
void update_clock_display(int h, int m, int s, int col, int _bright, bool _disable_leading_zero);
uint32_t Wheel(int WheelPos, int _bright);
uint32_t digit_color(int _val,int _index, bool _banked, int _base_color, int _bright);
HINWEIS: Alle Sperrholzteile sind mit deren Namen markiert. Soweit nicht anders angegeben, zeigt diese nach oben.
Jedes LED Modul besteht aus drei Schichten:
- 4x jeweils 10x Acryglas Ziffern
- 4x jeweils 1x Sperrholz Ziffern-Halter
- 4x jeweils 1x Sperrholz Lightguide
Zuerst wird die Schutzfolien von den einzelnen Ziffern entfernt und ließend mit Glasreiniger entfettet. Ab jetzt dürfen die Ziffern nur noch an den Seiten angefasst werden, denn nach der Montage in der Halterung kommt man nur noch sehr schwer an die inneren Flächen der Ziffern.
Jetzt werden sie einzelnen Ziffern in den Ziffern-Halter
eingesetzt. Dabei müssen diese mit der gravierten Seite alle in die gleiche Richtung zeigen.
Auch ist die Reihenfolge wichtig, von hinten nach vorne, sind die Ziffern in dieser Reihenfolge einzusetzen:
0
- 9
- 8
- 7
- 6
- 5
- 4
- 3
- 2
- 1
Anschließend werden die Ziffern auf den Lighguide
gesetzt.
Dabei muss die gravierte Seite der Ziffern in Richtung der FRONT
Markierung zeigen und die Markierungen auf dem Lightguide
müssen mit den Ziffern übereinstimmen.
Dieser Prozess, wird für alle vier Ziffern-Blöcke wiederholt.
Sollte bei den vier LED-PCB
s die zwei Stiftleisten nicht bestückt sein, muss dies zuerst geschehen.
Dazu werden diese in die beiden vorgesehenen 1x3 Pin Bohrungen gesteckt. Diese sind auf der Platine mit H1
und H2
beschriftet.
Die lange Seite der Stiftleisten zeigt dabei von der LED Seite weg.
Nachdem alle vier Module vorbereitet wurden, können diese nun mit der oberen Bodenplatte zusammengeschraubt werden.
Dabei wird zusätzlich auch die LED_PCB
und der PCB Spacer
benötigt.
- 4x PCB Spacer
- 4x LED_PCB mit Bestückter LED Seite
- 4x Top-Cover
Für den Zusammenbau wird das TOP_COVER
mit der Beschriftung nach oben gelegt und die LED-PCB
s jeweils mit den Stiftleisten in die Aussparungen des TOP_COVER
gelegt, sodass die Platine flach aufliegt.
WICHTIG Die FRONT
Markierung auf dem TOP_COVER
und der Pfeil zeigt dabei zur Tischkante!
Diese werden dadurch nicht flach auf dem Tisch liegen, es empfiehlt sich das TOP_COVER
dafür auf eine Tasse zu stellen.
Anschließend wird auf jede LED_PCB
der Sperrholz PCB_SPACER
gelegt, hier ist die Ausrichtung nicht relevant.
Als letztes, wird das im ersten Schritt zusammengebaute Ziffern-Modul auf den PCB_Spacer
gesetzt.
Dabei ist die Ziffer 1
die vorderste Ziffer (richtung der FRONT
Markierung).
Nach dem Platzieren der vier Ziffern-Module, sollten diese jeweils mit einer der M40x30
Schrauben und M4
Mutter gesichert werden.
Hier reicht es diese nicht fest anzuziehen. Dieser Schritt erleichtert die Montage im folgenden Schritt.
Für diesen Schritt, wird alles umgedreht, sodass die LED Module mit der runden Seite auf der Tischplatte stehen.
Die FRONT
Markierung sollte jetzt in die andere Richtung Zeigen und somit das LED-Modul welches die Zehner-Stunden darstellen auf der linken Seite befindet.
Hier werden die folgenden Sperrholzteile benötigt:
- 1x
SPACER_TOP
- 1x
SPACER_BOTTOM
Diese dienen als Abstandshalter zwischen des TOP_COVERS
und der Bodenplatte BOTTOM_COVER
.
Am SPACER_BOTTOM
befindet sich eine Aussparung für den ESP8266 D1 MINI
.
Da diese beiden Teile leicht zerbrechlich sind bietet es sich an, diese mit etwas Holzleim zu verkleben.
Dabei wird der SPACER_TOP
auf den SPACER_BOTTOM
geklebt und zu einfachen Arretierung dieser mit zwei Schrauben (oder Wäscheklammern) für 5 Minuten fixiert.
Nach dieser Zeit können diese wieder gelöst werden.
Die Schrauben (aus Schritt 2), welche die Module gehalten haben können jetzt wieder gelößt werden.
Die beiden Spacer (geklebt oder nicht), werden anschließend auf das TOP_COVER
gesetzt, sodass sich die Aussparung unten links in der Ecke befindet und sich somit auf der Rückseite der Uhr befindet.
Anschließend können die Module wieder mit je einer Schraube fixiert werden. Somit sollten auch die beiden Spacer fixiert sein.
Für die Verkabelung und Montage der Elektronik, wird alles umgedreht, sodass die LED Module mit der runden Seite auf der Tischplatte stehen.
Die FRONT
Markierung sollte jetzt in die andere Richtung Zeigen und somit das LED-Modul welches die Zehner-Stunden darstellen auf der linken Seite befinden.
Für diesen Schritt werden die Jumper-Wires
, sowie der ESP8266 D1 MINI
benötigt.
Jetzt werden mit den 4x drei Jumper-Wires
die einzelnen Module miteinander Verbunden. Auf den LED-PCB
s sollten die Stiftleisten durch das TOP_COVER
zugänglich sein. Bei diesen sind die einzelnen Pins beschriftet. Für H1 => 5V D0 GND
und für H2 => 5V DIN GND
.
Das Ziel ist es die einzelnen Platinen zu einer Kette zu verbinden.
Angefangen von der Zehner-Stunden, wird die H2
-Stiftleiste über drei Jumper-Wires
mit der H1
-Stiftleiste des Stunden-Einer-Moduls verbunden.
Dabei wird 5V->5V
, GND->GND
und DI->D0
verbunden.
Dieser Prozess wird anschließend noch zweimal wiederholt:
- Stunden-Zehner
H2
=> Stunden-EinerH1
- Stunden-Einer
H2
=> Minuten-ZehnerH1
- Minuten-Zehner
H2
=> Minuten-EinerH1
Nach diesem Schritt sind die Stiftleisten Stunden-Zehner H1
und Minuten-Einer H2
nicht verbunden.
Im letzten Schritt wird der ESP8266 D1 Mini
mit der Stunden-Zehner H1
verbunden.
Dabei werden die folgenden Pins am ESP8266 D1 Mini
verbunden:
(ESP8266 D1 MINI) 5V
=>(Zehner Stunden H1) 5V
(ESP8266 D1 MINI) D8
=>(Zehner Stunden H1) DIN
(ESP8266 D1 MINI) GND
=>(Zehner Stunden H1) GND
Anschließend kann vor dem finalen Zusammenbau die Funktion getestet werden.
Mit einem USB-Kabel wird der ESP8266 D1 Mini
verbunden. Jede Ziffer sollte einmal aufleuchten.
Falls dies nicht der Fall ist, ist die Verkabelung zu Prüfen.
Um den Zusammenbau zu vereinfachen, werden die einzelnen Stiftleisten mit dem Jumperwires
leicht zueinander (ca. 45°) gebogen und mit Heisskleber fixiert.
Auch die Kabel zwischen den Elementen werden mit Kabelbindern und/oder Heißkleber an der TOP_PLATE
fixiert.
Im letzten Schritt wird der ESP8266 D1 Mini
in die Aussparung des Spacers mit Heißkleber geklebt, sodass der USB-Anschluss nach aussen zeigt.
Geklebt wird auf der glatten Seite des ESP8266 D1 Mini
(auf der gegenüberliegenden Seite des USB-Anschluss).
Final kann die Bodenplatte BOTTOM_COVER
montiert werden. Dazu werden die zuvor zur Montage genutzten Schrauben wieder gelöst und das BOTTOM_COVER
auf die Spacer gelegt. Alle Schrauben werden dann handfest angezogen.
Anstatt der vier M4 Muttern an den Ecken können auch die 3D gedruckten Füße angeschraubt werden.
Dazu werden die M4 THREAD INSERTS
mit dem Lötkolben erwärmt und in die Bohrung des Fußes bündig einschmelzen.
Nach dem Abkühlen können die Muttern an den Ecken ersetzt werden.
Wenn die Uhr mit dem Basis-Programm programmiert wurde, agiert diese nach dem Starten als NTP-Synchronisierte Uhr. Hierzu wird ein WLAN benötigt, mit welchem die Uhr einen Zeitserver abgragen kann. Um dieses WLAN festzulegen, wird die Uhr normal mit Spannung versorgt. Mit einem anderen Endgerät z.B. dem Handy kann sich mit dem WLAN-Access-Point der Uhr verbunden werden.
Die WLAN-Konfigurations-Website ist nach dem Start der Uhr für 120 Sekunden sichtbar.
Der aktive Access-Point wir vonder Uhr mit 00:00:00
angezeigt!
Dieses heißt LixieClockConfiguration_xxXXxxXX
. Nach dem Verbinden mit diesem öffnet sich eine Konfigurationsübersicht, in der das WLAN gesetzt werden kann.
Falls sich die Konfigutationsseite nicht automatisch öffnet (z.B. auf einem PC), kann die IP http://192.168.4.1/
in einem Browser angegeben werden.
Achtung Nur 2.4 Ghz Netzwerke werden vom ESP8266
und ESP32
unterstützt.
Bei einer fehlerhaften Verbindungsaufbau zeigt das Display der Uhr 42:42:42
an.
Wenn dies der Fall ist, kann die Uhr neugstartet werden und die Konfiguration kann erneut durchgeführt werden.
Nach einer erfolgreichen Verbindung, zeigt die Uhr ihre IP-Adresse auf den einzelnen Ziffern per Laufschrift an. Wird diese Adresse in einem Browser aus dem gleichen Netz aufgerufen, kann diese umfassend konfiguriert werden.
Dann hast du eine Platine der ersten Version verwendet. Diese hat einen Fehler in der Platzierung der LEDs bzw. deren Reihenfolge.
Dieser Fehler kann einfach per Software behoben werden.
In der beigliegenden Demo-Software /src/lixieclock
und /src/lixieclock_base
gibt es ein passendes Makro welches gesetzt werden kann.
10 | #define PCB_V1_FIX //FIX DIGIT 3,4 and 7,8 SWAPPING ERROR ON PCB_V1
Wenn alle Ziffern um eine Stelle nach hinten verschoben ist, dann ist die Entwicklungsversion der Uhr bevor diese als Bausatz konzepiert wurde. Hier existiert eine Error-LED auf der Platine, somit gibt es eine zusätzliche LED bei der Berechnung des LED-Index. Hierzu bietet die Software ein Define, welches diesen Fehler behebt.
9 | #define PCB_V0_FIX //ON THE ESP8266 VERSION OF PCB V0 IS THE ERROR LED PRESENT
Die Software-Version >=2.0
unterstützt zusätzlich die Anordnung der LEDs als Wordclock
.
Wenn nicht die richtigen Wörter aufleuchten, muss die Software für die Verwendung als Wordclock angepasst werden.
11 | #define WORDCLOCK_V0 // german wordclock layout
Falls keine Internetverbindung bestehen sollte, kann die Uhr auch im Offline-Modus verwendet werden.
Dazu wird eine RTC Modul DS1307
oder DS3231
am I2C Bus des Controllers angeschlossen.
Zusätzlich muss der Software-Support aktiviert werden.
Die RTC wird automatisch durch den NTP-Server gestellt/aktualisiert, wenn eine Internetverbindung vorhanden ist.
14 | #define ENABLE_RTC
Je nach verwendeter Arduino-IDE Version, sowie der verwendeten Libraries kann es bei der ESP32 Software zu Fehlern mit dem Dateisystem FS kommen.
Hierzu gib es eine neue Version LitteFS
, welche die Default-Version Filesystem
ersetzt.
Mittels Flag kann erzwungen werden, dass die neue LittleFS
Bibliothek verwendet werden soll.
7 | #define USE_LITTLEFS