Die Nixie Uhr(en)

Inhalt

Diese Seite dokumentiert Entwicklung und Aufbau meiner Nixie-Uhren über mehrere Generationen hinweg – von der ersten aufgebauten Uhr bis zur aktuellen Version mit Websteuerung und externer Zeitquelle. Ausgangspunkt war ein Projekt, das mich damals nachhaltig geprägt und letztlich den Weg in die Mikrocontroller-Welt geöffnet hat.

Der Bau meiner ersten Nixie-Uhr liegt inzwischen einige Jahre zurück. Es war gegen Ende 2005, als ich eher zufällig auf die Seite von Stefan Kneller gestoßen bin.
Mit dem dort hervorragend beschriebenen Projekt für seine Nixie-Röhren-Uhr wurde der Nachbau fast zum Kinderspiel. Damals war ich noch in der Ausbildung zum staatlich geprüften Techniker für Elektrotechnik. Aus Kostengründen entstand die Steuerung der ersten Uhr daher komplett auf einer Lochrasterplatine. Darauf habe ich die Schaltung von Stefan nahezu 1:1 nachgebildet, lediglich den Hochspannungsteil habe ich aus einem anderen Projekt entliehen – nicht weil Stefans Hochspannungsnetzteil schlechter gewesen wäre, sondern weil ich Respekt davor hatte, diesen einen sehr kleinen Widerstandswert exakt zu treffen.

Die Firmware des Controllers sowie die zugehörige PC-Anwendung wurden von Hans-Joachim Borchers entwickelt und sind Teil des auf der Seite von Stefan Kneller veröffentlichten Projekts. Im Folgenden spreche ich der Einfachheit halber von „Stefans Software“.

Im Nachhinein betrachtet bin ich wahrscheinlich genau durch diese Seite und den reibungslosen Nachbau zu den Mikrocontrollern gekommen. Während meiner ersten Ausbildung zum Elektroniker (Fachrichtung Informationstechnik) hatte ich noch mit dem 8085 zu tun – vielleicht kennt noch jemand den Mikrocomputer MFA. Dagegen kam mir ein Mikrocontroller wie der heilige Gral vor: Beim MFA brauchte man zahlreiche Platinen, Busse und Interfacekarten (für die allseits beliebte Ampelschaltung mit je drei LEDs). Im Mikrocontroller sind dagegen RAM, Flash, EEPROM und Schnittstellen wie UART, SPI oder I²C in einem einzigen Gehäuse integriert.



Die erste Nixie-Uhr (2005)

Die erste Uhr entstand vollständig auf Lochrasterbasis und begleitete mich viele Jahre. Auch wenn sie aus heutiger Sicht noch recht einfach aufgebaut war, hat sie zuverlässig funktioniert und war mein Einstieg in die Welt der Nixie-Röhren.

Oberseite
Platinenoberseite
Unterseite
Platinenunterseite
Netzteil
Netzteil
Gehäuse
Anprobe Gehäuse
Rückseite
Rückseite
Vorderseite
Vorderseite


Die zweite Nixie (2006)

Die zweite Nixie-Uhr entstand knapp ein Jahr später, da ich dann Zugriff auf eine Ätzanlage hatte. Allerdings hatte ich nie wirklich die Muße, ein passendes Gehäuse dafür zu bauen. Wie auch beim ersten Nachbau kam wieder ein anderer Hochspannungsteil zum Einsatz. Da das einer meiner ersten Layoutversuche war, wollte ich ihn vor dem Ätzen unbedingt testen. Deshalb gab es zunächst eine Papierplatine nur für den Netzteiltest.

Netzteiltest
Netzteil auf Papier
geätzt
frisch geätzt
Verzinnung
chemische Verzinnung
Basteltisch
ein recht aufgeräumter Basteltisch :-)
Bestückung
Bestückung
fertig
„fertig“


Die dritte Nixie-Uhr (aktuelles Projekt)

Der eigentliche Auslöser für das aktuelle Projekt war ein Fund auf dem Dachboden: ein Satz Nixie-Röhren vom Typ Z560M, die dort schon seit Jahren lagen. Damit war klar – daraus muss irgendwann wieder eine Uhr entstehen. Und dieses Mal habe ich tatsächlich mit dem Gehäuse begonnen. :-)


Gehäuse

Also zunächst Holz, Fräse und Leim – die Elektronik kam später.

Frisch gefräst
frisch aus der Fräse
Verleimen
Verleimen - Danke an Tobias für die Lamello Fräsungen
Kanten
Kanten gebrochen
geölt
und geölt
Deckel unten
atmungsaktiver Deckel für die Unterseite
fertig
fertig mit eingepassten Röhren


Schaltplan und Layout

Die Nixie-Elektronik basiert wieder auf dem Schaltplan von Stefan. Ich habe seinen Schaltplan in EAGLE nachgezeichnet und daraus ein neues Layout erstellt – dieses Mal größtenteils in SMD. Der Hochspannungsteil stammt wieder aus dem anderen Projekt.

Der Schaltplan

Schaltplan der Nixieplatine

Bilder der virtuellen Platine

Oberseite
Oberseite
Unterseite
Unterseite

Stückliste Nixiesteuerung

(Preise Stand: 02/2026)
Bauteil Bestellnummer Menge Einzelpreis Gesamtpreis
Lieferant: Reichelt
Anschlussklemme RM 5,08AKL 073-0210,570 €0,57 €
Stiftleiste 20pol. RM 2,54 (zuschneiden)BKL 1012050020,400 €0,80 €
Buchsenleiste 20pol. RM 2,54 (zuscheinden)MPE 115-1-02021,800 €3,60 €
Buchsenleiste Micromatch 6pol. RM 1,27mmMPE 369-1-00610,400 €0,40 €
Stiftwanne Micromatch 6pol. RM 1,27mmMPE 372-1-00610,300 €0,30 €
Sicherrungshalter für TR5 SicherungenLITT 5600000100910,970 €0,97 €
Sicherung T500mA TR5ESKA 887.11410,670 €0,67 €
SMD Widerstand 0805 1MSMD-0805 1,00M60,030 €0,18 €
SMD Widerstand 0805 33kSMD-0805 33,0K10,030 €0,03 €
SMD Widerstand 0805 10kSMD-0805 10,0K290,030 €0,87 €
SMD Widerstand 0805 1kSMD-0805 1,0K10,030 €0,03 €
SMD Widerstand 0805 560RSMD-0805 56010,030 €0,03 €
SMD Widerstand 0805 470RSMD-0805 47010,030 €0,03 €
SMD Widerstand 1206 1kSMD 1/4W 1,0K10,060 €0,06 €
SMD Widerstand MELF 207 100kVIT ZC207 330K10,130 €0,13 €
SMD Widerstand MELF 207 220kVIT ZC207 220K10,130 €0,13 €
SMD Widerstand MELF 207 100kVIT ZC207 100K10,130 €0,13 €
Spindeltrimmer 64Y 1kVIS M64Y102KB4011,750 €1,75 €
Elektrolytkondensator 470µ 8mm RM 5FR-A 470U 35-310,460 €0,46 €
Elektrolytkondensator 100µ 7mm RM 2.5EB-A 100U 2510,250 €0,25 €
Elektrolytkondensator 4µ7 350V axialAX 4,7/35010,550 €0,55 €
SMD Kerko 0805 100nX7R-G0805 100N130,070 €0,91 €
SMD Kerko 0805 5n6WAL 0805B562K50020,040 €0,08 €
SMD Kerko 0805 22pNPO-G0805 22P20,020 €0,04 €
Folienkondensator 47p RM 5FKP2-1000 47P10,240 €0,24 €
Power Induktivität 330µ min. 1AFAS 09HCP-331K-510,920 €0,92 €
Grundtonquartz 16MHz16,0000-HC1810,500 €0,50 €
SMD Diode MiniMelf BAV103BAV 103 SMD100,040 €0,40 €
Diode BYW 56BYW 5610,350 €0,35 €
TVS DiodeSM6T 15A STM10,230 €0,23 €
Transistor n-FET low RDSonIPP60R190P611,690 €1,69 €
Transistor npn BD139BD 139 STM10,220 €0,22 €
SMD Transistor npn TA42SMBTA 42 SMD190,050 €0,95 €
SMD Transistor pnp TA92SMBTA 92 SMD60,060 €0,36 €
Festspannungsregler 5V SOT-223 MCP 1703-5002MCP 1703-500210,900 €0,90 €
UART Treiber MAX202MAX 202 EESE11,700 €1,70 €
Timer NE555NE 555 D SMD10,330 €0,33 €
Controller ATMega16 TQFP-44ATMEGA 16-16 TQ111,540 €11,54 €
Signalgeber 5V RM 7,6AL-60SP05HT11,200 €1,20 €
Kühlkörper TO-220FK 237 SA 220 O11,100 €1,10 €
Bauteile außerhalb der Platine
Widerstand bedrahtet 1M Anoden DotsMETALL 1,00M40,070 €0,28 €
Widerstand bedrahtet 10k Anoden 0-9METALL 10,0K100,035 €0,35 €
Summe: 36,23 €




Nachdem die Platinen in China gefertigt wurden, und den weiten Weg zu mir gefunden hatten, konnte endlich mit dem Löten begonnen werden.

Bilder der realen Platine

Oberseite
Oberseite
Unterseite
Unterseite


Vorbereitung der Nixie-Matrix

Vorbereitung
Vorbereitung
gelötet
gelötet
erstes Licht
first light :-)
Eingepasst
eingepasst


Zusammenbau der Komponenten

Löcher für die Taster
Taster leicht versenkt
Taster eingebaut
Taster eingebaut
Einbau der Platine
Einbau und Anschluss der Platine


Inbetriebnahme

Dank der bewährten Schaltung von Stefan verlief die Inbetriebnahme erfreulich unspektakulär. Größere Überraschungen blieben aus,
und die Uhr lief im Grunde auf Anhieb.

Lediglich am Hochspannungsnetzteil habe ich einige Anpassungen vorgenommen. Drossel und MOSFET wurden im Betrieb deutlich wärmer als erwartet. Daher habe ich beide durch besser geeignete Typen ersetzt und das Timing des NE555 experimentell angepasst. Dadurch ließ sich die Effizienz des Netzteils spürbar verbessern. Die entsprechenden Änderungen sind bereits im Schaltplan und in der Stückliste berücksichtigt. Der Drosseltyp wurde von axial auf radial geändert – das erforderte etwas Kreativität beim Einlöten. (Auf den Bildern ist noch die ursprüngliche Drossel zu sehen.)



Stefan’s Nixie Clock goes Webinterface

Für die Zeitsynchronisation hat Stefan in seiner Software mehrere Möglichkeiten vorgesehen, unter anderem DCF77. Das hat bei meinen beiden vorherigen Uhren problemlos funktioniert und wäre auch hier naheliegend gewesen. Dieses Mal wollte ich jedoch bewusst einen anderen Weg ausprobieren.

Alternativ unterstützt die Software auch die Synchronisation über ein NMEA-RMC-Telegramm, wie es typischerweise von GPS-Empfängern geliefert wird. Ein echter GPS-Empfänger kommt hier allerdings nicht zum Einsatz. Stattdessen übernimmt ein ESP8266 diese Rolle und „tut so“, als wäre er einer: Er holt sich die aktuelle Zeit über das heimische WLAN von einem NTP-Server aus dem Internet und erzeugt daraus passende NMEA-Telegramme, die anschließend an den eigentlichen Controller der Uhr weitergegeben werden. Damit wird die Uhr letztlich über das Netzwerk synchronisiert – nur eben über den Umweg eines simulierten GPS-Empfängers. Der Vorteil: keine zusätzliche DCF-Hardware, keine Empfangsprobleme und trotzdem eine saubere, von der Uhrsoftware bereits unterstützte Schnittstelle.

Mit dem Webinterface beginnt ein neuer Abschnitt des Projekts – und wie so oft startet auch dieser wieder mit einer eigenen Platine.
Zunächst geht es darum, die Anforderungen an die Webinterface-Hardware zu definieren.

  • Die Platine stellt die Hardwarebasis für das Webinterface bereit und bindet dieses funktional in die Nixie-Uhr ein.
  • Bereitstellung zweier Betriebsspannungen aus der 12V Versorgung.
    • 3,3V für den ESP8266
    • 5V für die Sensorplatine -> (Der von mir eingesetzte 5V Linearregler auf der Nixie-Platine ist mit der dortigen Logik bereits ausgelastet.)
  • Auswertung des von der Sensorplatine kommenden Signals.
  • Über zwei Optokoppler ist der ESP mit den Tastern der Uhr verbunden und kann diese quasi „fernsteuern“. Das wird später benötigt, um den Wecker der Nixie-Uhr automatisch zu quittieren und stattdessen den eigenen Alarm auszugeben.
  • Ein weiterer Optokoppler ist mit dem Signalgeber(Buzzer) der Uhr verbunden. So erkennt der ESP, wann ein Alarm der Nixie-Clock aktiv ist. Die Unterscheidung zwischen Tastenton und echtem Alarm erfolgt über die Impulslänge und Impulsfolge des Signals. (Impulsdauer[1] - Pause[1] - Impulsdauer[2] müssen innerhalb gewisser Toleranzen liegen.)
  • Ein MOSFET steuert die externe „Klingel“ später über eine in der Weboberfläche anpassbare PWM.
  • Eine UART-Leitung liefert die NMEA-Zeitdaten an den Controller der Uhr.
  • Ein zusätzlicher, derzeit nicht angesteuerter Optokoppler ist mit dem Reset-Pin des ATmega16 verbunden, um bei Bedarf auch hier eingreifen zu können.


Der Schaltplan

Schaltplan der Webinterface-Platine

Bilder der virtuellen Platine

Oberseite
Oberseite
Unterseite
Unterseite

Stückliste Webinterface-Platine

(Preise Stand: 02/2026)
Bauteil Bestellnummer Menge Einzelpreis Gesamtpreis
Lieferant: Reichelt
JST Crimpkontakt für PHJST PH CKB100,05 €0,50 €
JST Buchsengehäuse 4pol.JST PH4P BU10,05 €0,05 €
JST Stiftleiste 4pol.JST PH4P ST10,15 €0,15 €
JST Buchsengehäuse 2pol.JST PH2P BU30,05 €0,15 €
JST Stiftleiste 2pol.JST PH2P ST30,13 €0,39 €
Buchsenleiste Micromatch 6pol. RM 1,27mmMPE 369-1-00610,400 €0,40 €
Stiftwanne Micromatch 6pol. RM 1,27mmMPE 372-1-00610,300 €0,30 €
Buchsenleiste Micromatch 4pol. RM 1,27mmMPE 369-1-00410,550 €0,55 €
Stiftwanne Micromatch 4pol. RM 1,27mmMPE 372-1-00410,250 €0,25 €
Stiftleiste 8pol. RM 2,0mmBKL 1012073220,520 €1,04 €
Buchsenleiste 8pol. RM 2,0mmBKL 1012072120,790 €1,58 €
IC Sockel DIL 8pol.MPE 001-1-008-320,350 €0,70 €
SMD Widerstand 0805 10kSMD-0805 10,0K60,030 €0,18 €
SMD Widerstand 0805 1kSMD-0805 1,0K60,030 €0,18 €
SMD Widerstand 0805 560RSMD-0805 56050,030 €0,15 €
Elko Tantal 220µ RM5TANTAL 220/1011,850 €1,85 €
SMD Elko Tantal 22µSMD TAN.22/2020,490 €0,98 €
SMD Kerko 0805 100nX7R-G0805 100N60,070 €0,42 €
SMD Drossel PIS2816 330µL-PISA2816 330µ10,990 €0,99 €
SMD Diode MBRS 360MBRS 360 SMD10,240 €0,24 €
SMD Diode MBRS 140MBRS 140 SMD10,160 €0,16 €
SMD Diode 1N41481N 4148 SMD20,020 €0,04 €
Transistor n-FET ITLL 024N SOT-223IRLL 024N10,490 €0,49 €
Optokoppler SFH615SFH 615A-340,290 €1,16 €
Festspannungsregler 3,3V SOT-223 MCP1703-3302MCP 1703-330210,900 €0,90 €
Schaltregler 5V LM2574-5.0LM 2574 N511,850 €1,85 €
SMD LED 1206 rotKBT KP-3216SURC20,170 €0,34 €
SMD LED 1206 gelbKBT KP-3216SYC10,170 €0,17 €
SMD LED 1206 grünKBT KP-3216MGC10,240 €0,24 €
SMD LED 1206 blauLED EL 1206 BL10,120 €0,12 €
ESP8266 ESP12F (auf eBay vermutlich günstiger)DEBO ESP8266-12F16,300 €6,30 €
Summe: 22,82 €

Bilder der realen Platine

Oberseite
Oberseite nur SMD bestückt
Unterseite
Unterseite nur SMD bestückt
Oberseite
Oberseite voll bestückt
Unterseite
Oberseite ESP8266 gesteckt


Einbau in die Uhr

Platine in der Uhr
in der Uhr
Platine angeschlossen
und angeschlossen

Stefan's NCC-Software (NixieClockControl)

Mit der NCC-Software lassen sich eine Vielzahl von Einstellungen vornehmen.
Ich betreibe die Uhr aktuell mit den Einstellungen wie sie im nächsten Bild zu sehen sind.
Außerdem sieht man in dem Bild, dass die Uhr das NMEA Telegram "verstanden" hat :-).

EInstellungen NCC


Die Sensorplatine

Ergänzend zur Webinterface-Platine entstand eine kleine Sensorplatine, über die sich der vom Webinterface erzeugte Alarm per Handbewegung abschalten lässt.

Als Sensorelement dient eine Mini-Reflexlichtschranke vom Typ CNY70, die Bewegungen im Nahbereich vor der Uhr erkennt und ein entsprechendes Signal an den ESP weitergibt. Die Schaltung basiert auf einem ELV-Bauvorschlag, wurde jedoch auf ein für dieses Projekt notwendige Minimum reduziert. Neben dem CNY70 arbeitet ein Ton-Decoder vom Typ NE567, der das Empfangssignal frequenzselektiv auswertet. Durch dieses Prinzip reagiert die Schaltung weitgehend unempfindlich auf Tageslicht oder allgemeine Helligkeitsänderungen. Nur wenn die vom Sensor empfangene Frequenz mit der erzeugten Referenzfrequenz übereinstimmt, schaltet der Ausgang. Zufällige Reflexionen oder konstantes Umgebungslicht führen somit nicht zu einer Fehlauslösung.


Der Schaltplan

Schaltplan der Sensorplatine

Bilder der virtuellen Platine

Oberseite
Oberseite
Unterseite
Unterseite

Stückliste Sensorplatine

(Preise Stand: 02/2026)
Bauteil Bestellnummer Menge Einzelpreis Gesamtpreis
Lieferant: Reichelt
Buchsenleiste Micromatch 4pol. RM 1,27mmMPE 369-1-00410,550 €0,55 €
Stiftwanne Micromatch 4pol. RM 1,27mmMPE 372-1-00410,250 €0,25 €
SMD Widerstand 0805 1MSMD-0805 1,00M10,030 €0,03 €
SMD Widerstand 0805 47kSMD-0805 47,0K20,030 €0,06 €
SMD Widerstand 0805 10kSMD-0805 10,0K10,030 €0,03 €
SMD Widerstand 0805 1kSMD-0805 1,0K20,030 €0,06 €
SMD Widerstand 0805 470RSMD-0805 47050,030 €0,15 €
Spindeltrimmer 50k liegendBOU 3006P-7-50311,950 €1,95 €
SMD Elko Tantal 22µSMD TAN.22/2020,490 €0,98 €
SMD Elko Tantal 2µ2SMD TAN.2,2/2010,200 €0,20 €
SMD Elko Tantal 1µSMD TAN.1,0/1610,200 €0,20 €
SMD Kerko 0805 100nX7R-G0805 100N20,070 €0,14 €
SMD Kerko 0805 47nX7R-G0805 47N10,020 €0,02 €
SMD Kerko 0805 10nX7R-G0805 10N10,020 €0,02 €
SMD Transistor pnp BC856BC 856A SMD10,020 €0,02 €
Reflexlichtschranke CNY70CNY 7010,750 €0,75 €
SMD Tondecoder NE567NE 567 D SMD10,990 €0,99 €
SMD LED 1206 rotKBT KP-3216SURC10,170 €0,17 €
Summe: 6,57 €

Bilder der realen Platine

Oberseite
Oberseite
Unterseite
Unterseite

Funktionstest vor dem Einbau

Die Klingel

Die Klingel ist wohl das kurioseste Bauteil dieser Uhr. Zum Einsatz kommt der Zylinder eines Simson S51 Motors inklusive Kolben, der über ein Solenoid (Tauchspulenmagnet) mechanisch bewegt wird. Die Grundidee dazu stammt nicht von mir selbst, sondern aus einem YouTube-Video von FLAGconnection alias Gunter Brecher, welches mich zu dieser Umsetzung inspiriert hat:

Trotz intensiver Recherche konnte ich eindeutig nachvollziehen, wie Gunter Brecher in seinem Aufbau die Bewegung des Kolbens konkret realisiert hat und auf welche Weise dort das Abschalten des Weckers mit dem Zuhalten des Zylinderauslasses funktioniert. Im Internet finden sich zwar verschiedene Nachbauten und eigene Interpretationen dieser Idee, eine Umsetzung, die für mich technisch und konzeptionell wirklich an das Original heranreicht, konnte ich jedoch nicht entdecken. So entstand schließlich meine eigene Lösung.

Adapter aus Aluminium
Adapter für die Laufbuchse
zusammengeschraubt mit Solenoid
mit Solenoid verschraubt
Adapter für Mikrotaster
Adapterplatte für einen Mikrotaster (Licht)
direkt unter dem Choke
eingebaut
Anprobe noch im Holzrohbau

Für diesen Zweck wurde der Vergaser vollständig entkernt: Sämtliche demontierbaren Bauteile wurden entfernt, Messingkomponenten ausgeschlagen und störende Elemente gezielt abgefräst, sodass nur das für den weiteren Aufbau notwendige Grundgehäuse übrig blieb. Die gesamte Verdrahtung wird quasi unsichtbar über den Ansaugstutzen durch den Vergaser in das Holzgehäuse geführt.

Um auch akustisch möglichst nah an das Original heranzukommen, habe ich zunächst die Ansteuerfrequenz aus dem Video von Gunter Brecher ermittelt.

Tonspur in Audacity

Dazu wurde die gekürzte Tonspur in Audacity importiert und die Impulse über einen möglichst großen Zeitraum ausgezählt.
Die Frequenz ergibt sich anschließend aus der Anzahl der Impulse dividiert durch die betrachtete Zeitspanne:

$\frac{\text{Impulsanzahl}\,\text{[dimensionslos]}}{(\text{Zeitmarke}_2 \;-\; \text{Zeitmarke}_1)\,\text{[s]}} = \text{Frequenz}\,\text{[Hz]}$

mit Werten z.B:

$\frac{40}{(4{,}071 \;-\; 0{,}666)\,\text{s}} \approx \underline{\underline{11{,}75\,\text{Hz}}}$


Test des Ansteuerkonzeptes

Bevor ich mit der Herstellung der ESP-Platine begonnen habe, stand zunächst der obligatorische Test an, ob das geplante Ansteuerkonzept überhaupt funktioniert.
Im Video unten erfolgt die Ansteuerung des Elektromagneten noch von Hand – später wird diese Aufgabe ein Halbleiter (FET) übernehmen.




ESP8266-Software

Die Software im ESP8266 hat die Aufgabe, alle Komponenten miteinander zu verknüpfen. Die ESP-Platine interagiert dazu mit der Uhr, der Sensorplatine und der Klingel.

interaktive Demo des Webinterfaces

Das Webinterface besteht derzeit aus vier Seiten. Je nachdem, ob der ESP mit dem Internet verbunden ist, kann der dargestellte Inhalt variieren. Im iFrame links wird der STA-Mode simuliert, also die Ansicht bei bestehender Internetverbindung. Viel Spaß beim Klicken. :-)

  • 1. Startseite
    • Hier werden die aktuelle lokale Zeit, die UTC-Zeit sowie die Weckzeit des ESP angezeigt.
    • Über einen Timepicker kann man die Weckzeit stellen.
    • Der Slider legt die maximale Alarmdauer fest.
    • Über Checkboxen können die Wochentage ausgewählt werden, an denen ein Alarm stattfinden soll.
  • 2. Einstellungen
    • SSID: Name des Heim-WLANs
    • Passwort: Passwort zum Heim-WLAN
    • Hostname: Netzwerkname des ESP + eindeutige [ChipID]
    • Timeserver: Zeitquelle, normalerweise aus dem Internet
    • SSID AP: Name des eigenen Accesspoints. (Ist keine Internetverbindung möglich, stellt der ESP einen eigenen Hotspot bereit, über den die Zugangsdaten eingegeben werden können.)
    • Die anderen Einstellungen werden in einem späteren Absatz erklärt.
  • 3. Admin-Seite
    • Diese Seite ist in der realen Version nur über ein separates Admin-Passwort erreichbar, in der Demo jedoch dauerhaft freigeschaltet.
    • Login: Login zur Admin-Seite
    • Passwort: Passwort zur Admin-Seite
    • OTA-Server: Update-Server → hier liegen evtl. neue Firmwarefiles. Die dort gefundenen Firmwarefiles werden unter „select Firmware“ angezeigt.
    • EEPROM löschen und Reboot:
      Dabei wird der individuelle EEPROM-Inhalt gelöscht und beim nächsten Start werden die „Werkseinstellungen“ geladen.
    • Flash: Damit beginnt der Updateprozess. In der echten Version erfolgt noch eine Prüfung mit diversen Sicherheitsabfragen.
  • 4. OTA-Seite
    • Hier kann man den Updateprozess beobachten. Zu dieser Seite gelangt man automatisch, wenn der Updateprozess gestartet wurde.
    • Nach dem Update wird der ESP automatisch rebootet.


Softwarebeschreibung

Wird der ESP mit Spannung versorgt, startet die Software darin.
Bevor das Hauptprogramm in einer Endlosschleife startet, wird eine Initialisierungsroutine ausgeführt, die folgende Aufgaben übernimmt:

  • Ein- und Ausgänge definieren und ggf. Pullups setzen
  • Baudrate der seriellen Schnittstelle passend für den Controller der Uhr einstellen (4800 Baud 8N1)
  • virtuellen EEProm im Flash prüfen -> wenn korrupt -> Werkseinstellungen wiederherstellen.
  • diverse Variablen mit den Werten aus dem EEProm befüllen
  • Verbindungsversuch mit den gespeicherten WLAN-Daten (SSID und Passwort)

Kann auch nach zehn Versuchen keine Verbindung mit dem gespeicherten Heimnetz hergestellt werden, wird automatisch ein eigener Access-Point (AP) gestartet. Verbindet man sich mit diesem AP (Mobiltelefon oder PC) und gibt danach folgende Adresse in den Browser ein:
http://192.168.4.1 (Default IP Adresse des ESP im AP-Mode)
gelangt man auf das (reduzierte) Webinterface des ESPs und kann dort u.a. die Zugangsdaten seines WLANs eintragen. Sind diese Daten gespeichert und gültig, kann sich der ESP nach einem Reboot mit dem Heimnetz verbinden.

Dieses Verhalten führt jedoch zu einem neuen Problem, etwa nach einem Spannungsausfall:
Der ESP benötigt nur Sekunden um zu booten, eine FritzBox o.ä. üblicherweise deutlich länger. Dadurch würde der ESP nach einem Spannungsausfall dauerhaft im AP-Mode verbleiben. In diesem Zustand kann die Uhr nicht mit der Internetzeit versorgt werden. Daher wird der ESP automatisch alle 15 Minuten rebootet, sollte er im AP-Modus betrieben werden.

Sollte sich der ESP erfolgreich mit dem heimischen WLAN verbunden haben, synchronisiert er zunächst seine Uhrzeit und Datum und führt anschließend das Hauptprogramm aus. Darin passiert Folgendes:

  • Zeitsynchronisierung mit dem NTP-Server im vorgegebenen Intervall -> derzeit alle 15 min.
  • Ausgänge nach Bedarf mit vorgegebenen Impulsdauern schalten (T1, T2, µC-Reset)
  • Eingänge pollen (Uhren-Buzzer und CNY-Sensor)
  • Berechnung der Uptime für die Darstellung im Webinterface
  • Bei Erkennung einer neuen Sekunde wird ein NMEA-RMC-Telegramm seriell übertragen
  • interne Weckzeit (Alarm) überwachen
  • einen anstehenden Alarm nach der eingestellten Maximalzeit deaktivieren (extern oder intern ausgelöst)
  • OTA-Steuerung nach Bedarf
Alle Webserver-Routinen laufen asynchron zur Hauptschleife.
Die Routine zur Ansteuerung des FETs für die Klingel arbeitet ebenfalls asynchron und wird über einen Timer-Interrupt gesteuert.


WLAN- und AP-Settings

WLAN und AP Einstellungen
In diesem Bereich werden die Zugangsdaten für das WLAN sowie für den integrierten Access-Point konfiguriert. Zusätzlich lassen sich hier Hostname und Timeserver festlegen.

Die Eingaben werden bereits während der Konfiguration auf Plausibilität geprüft. Dazu kommt eine einfache RegEx-Validierung zum Einsatz, die typische Fehleingaben erkennen soll.

Eine vollständige Fehlererkennung ist damit bewusst nicht verbunden. Bei ungültigen oder unvollständigen Eingaben wird das jeweilige Feld visuell hervorgehoben, sodass Korrekturen direkt möglich sind.


Parametrierung der PWM-Ansteuerung

PWM Settings Webinterface
Die Klingel wird über eine PWM-Ansteuerung des Solenoids betrieben, deren Verhalten vollständig über das Webinterface konfigurierbar ist.

Die mechanische Grundabstimmung erfolgt über den Parameter „On Time“, der die Einschaltzeit des Magneten festlegt. Dieser Wert bleibt während eines aktiven Alarms konstant und dient primär der Anpassung an Kolben, Feder und Mechanik.

Die eigentliche Dynamik des Alarms entsteht über die Abschaltzeiten. Mit „Off Time“ wird die Grundfrequenz der Kolbenbewegung definiert, während „Off Time max“ die maximal mögliche Verlängerung im Fading festlegt.

Wie lange das Ausklingen insgesamt dauert, bestimmt „Fade Time“. Der Verlauf selbst kann über „Fading Curve“ gewählt werden. Zur Verfügung stehen lineare, quadratische, logarithmische sowie umgekehrt logarithmische Kennlinien.

Wird während des Alarms der Auslass verdeckt, beginnt das Fade. Wird die Hand zu früh entfernt, kehrt die Ansteuerung sofort zur ursprünglichen Frequenz zurück. Erst wenn der Auslass lange genug verdeckt bleibt, endet der Alarm – signalisiert durch zwei abschließende, deutlich erkennbare Kolbenbewegungen.

Über „PWM Test“ lässt sich das Verhalten unabhängig vom Weckvorgang direkt prüfen und einstellen.


External Clock-Settings

External Clock Einstellungen
Die ESP-Platine besitzt keinen PPS-Ausgang (Pulse per Second). Stattdessen wird der hier eingestellte ppm-Offset direkt in das erzeugte NMEA-RMC-Telegram eingerechnet. An der entsprechenden Zeitstelle erscheint dies im Format „hhmmss.sss“.

Mit „ext. Alarm“ wird festgelegt, ob der ESP auf Alarme der Nixie-Platine reagieren soll. Ist diese Funktion deaktiviert, erfolgt keine automatische Quittierung über die Optokoppler – der Alarm der Nixie-Platine arbeitet dann vollständig autark.

Wird „NMEA RMC“ deaktiviert, sendet die ESP-Platine kein NMEA-Telegram mehr. Die Uhr läuft in diesem Fall ohne Synchronisation durch den ESP weiter.