Energie-
Verbrauch
Bewegungs-
melder
ioBroker-DHT22
ioBroker-
Laufschrift
ioBroker LED-
Thermometer
ioBroker-OLED
ioBroker
Multi-OLEDs
ioBroker
Mini-Mülltonne
Ball on Plate
Sonstige
Basteleien
| Voltmeter-Uhr (Zeit-Synchronisation via NTP) | 
|  3 Drehspulinstrumente als Uhr | 
| ... und noch eine Uhr ;-) Diese Uhr wurde aus ca. 20 Jahre alten Drehspulinstrumenten konstruiert, welche sich noch in der Bastelkiste gefunden haben. Es handelt sich dabei um 2 Voltmeter (Meßbereich 0-30V) und ein Amperemeter (Meßbereich 0-2A). Aus dem Schaltplan (Bild 0) ist ersichtlich, daß die Vorwiderstände angepasst werden mussten, um einen Meßbereich von ca. 0-6V zu erreichen. Diese müssen bei einem eventuellem Nachbau natürlich an die eigenen vorhandenen Drehspulinstrumente angepasst werden. Die vorhandenen Skalen wurden durch selbst gedruckte Skalen ersetzt ( ausgedruckt auf mattem Photopapier). Als Skalenbeleuchtung wurden die alten original vorhandenen Glimmlämpchen durch jeweils 2 RGB-LEDs pro Drehspulinstrument ersetzt. Angedacht war zuerst, diese RGB-LEDs z.B. alle 5 Sekunden in einer anderen Farbe leuchten zu lassen, allerdings war mir das dann doch zu bunt und ich habe nur die grünen LEDs für die Skalenbeleuchtung verwendet. Angesteuert werden die 3 Drehspulinstrumente (Stunden, Minuten, Sekunden) von einem NodeMCU V3.0, welcher seine Zeitinformationen via WLAN aus dem Internet bezieht ( via NTP). Über den zugehörigen Arduino-Sketch Voltmeteruhr-NTP-OTA.ino wird die Zeit alle 4 Std. (einstellbar) synchronisiert. Als zusätzlicher Gimmick wurde noch eine mittels warmweißem LED-Stripe beleuchtete Plexiglas-Scheibe verbaut. Der LED-Stripe leuchtet tagsüber bei jeder 0ten Sekunden kurz auf, abends zwischenn 20:00:00 und 23:59:59 leuchter der Stripe permanent und zwischen 00:00:00 Uhr bis 07:59:59 ist die Beleuchtung kpl. ausgeschaltet. Die normale Betriebsspannung (12 V) für den Stripe wurde mittels 4 in Reihe geschalteten Dioden auf ca. 10,4 V reduziert, was die Stromaufnahme verringert, sich in der Helligkeit aber kaum bemerkbar macht. | 
|  Mechanischer Aufbau | 
| Als Gehäuse wurden handelsübliche 18 mm Leimholzbretter (Baumarkt) verwendet. Diese wurden mittels Oberfräse und Lochsäge bearbeitet, um die entspr. Ausschnitte für die die 3 Drehspulinstrumente zu erstellen. Der obere Teil des Gehäuses besteht aus 2 Brettern und einer 5 mm dicken Plexiglasplatte, die -wie oben schon erwähnt- zeitabhängig beleuchtet wird. Der untere Teil besteht aus 2 Brettern, wobei in das obere Brett ein Längsauschnitt gesägt wurde, in den die Plexiglasplatte mitsamt dem Oberteil und den Instrumenten einfach eingesteckt wird. Der untere Überstand der Plexiglas-Platte ist genau 18 mm (=Brettstärke) hoch, d.h. die Plexiglasplatte schließt bündig mit der Unterseite des oberen Brettes ab. In das untere Brett wurde eine Nut gefräst, in die ein warmweißer LED-Stripe bündig mit der Oberseite des Brettes eingeklebt wird. Der LED-Stripe beleuchtet dann von unten die eingesteckte Plexiglas-Scheibe, wodurch das LED-Licht dann an den seitlichen Rändern und am oberen Rand der Scheibe reflektiert wird. Im unteren Brett wurde noch ein rechteckiger Ausschnitt gefräst, der die NodeMCU und die restliche Elektronik ( siehe Schaltplan, Bild 0) aufnimmt. Zusätzlich wurden noch Kabeldurchführungen in das obere Brett und die Rückwand des Oberteiles gebohrt/gefräst, um die Führung der Kabel von der Elektronik zu den Drehspulinstrumenten zu ermöglichen. | 
|  Zeitabhängig beleuchteter Rahmen | 
| Erläuterungen zum Arduino-Sketch: Da ich ein Freund statischer IP-Adressen bei nicht mobilen Geräten bin, müssen zuerst die eigenen Netzwerkparamater, sowie die WLAN-Zugangsdaten im Sketch eigetragen werden. Des weiteren kann man einen NTP-Server nach eigener Wahl eintragen (ich verwende de.pool.ntp.org). Dann muss noch die entsprechende Zeitzone am Standort eingetragen werden: In Deutschland gilt Central European Time +1. Sommer- und Winterzeitumstellung werden vom Sketch automatisch berücksichtigt. Nach dem erstmaligen Flashen der NodeMCU via USB, ist es fortan auch möglich weitere Flashvorgänge via OTA (Over the Air), d.h. über WLAN durchzuführen. Das ist von Vorteil, wenn die Elektronik bereits im Gehäuse verbaut ist, weil die Micro-USB-Buchse der NodeMCU dann nur noch schlecht erreichbar ist. Nach dem Booten wird zuerst versucht, sich mit dem lokalen WLAN zu verbinden und anschließend die Zeitsynchronisation via NTP durchzuführen. Schlägt eines von beiden fehl, wird solange automatisch ein Reboot durchgeführt, bis beide Verbindungen erfolgreich hergestellt wurden. Während der Verbindungsversuche pendeln die Zeiger aller 3 Instrumente zwischen den 20er- und 40er-Markierungen hin und her, so daß man eine optische Kontrolle hat, ob die Verbindungen hergestellt wurden. In der Subroutine void digitalClockDisplay() müssen die Zeigerstellungen noch genau auf die Skalen abgestimmt werden! Das war rel. zeitaufwändig, da es wohl Linearitätsprobleme zwischen dem Analogausgang der NodeMCU, den Drehspulinstrumenten und den ausgedruckten Skalen gibt. Ich habe das größtenteils kompensiert, in dem durch sog. Mappen die Gesamtskala in einzelne, kleinere Teilbereiche aufgeteilt wurde: if (msek <=5) { map_sek = map(msek, 0,5,0,75); } else if (msek >=6 & msek <=10) { map_sek = map(msek, 6,10,90,160); } else if (msek >=11 & msek <=20){ map_sek = map(msek, 11,20,175,340);} else if (msek >=21 & msek <=30){ map_sek = map(msek, 21,30,360,520);} else if (msek >=31 & msek <=40){ map_sek = map(msek, 31,40,540,705); } else if (msek >=41 & msek <=50){ map_sek = map(msek, 41,50,720,875); } else if (msek >=51 & msek <=55){ map_sek = map(msek, 51,55,890,960); } else if (msek >=56) { map_sek = map(msek, 56,59,975,1020);} Das bedeutet hier z.B., daß der Sekunden-Bereich von 0-5 auf die Werte 0-75 umgesetzt wird. Der Sekunden-Bereich von 6-10 auf 90-160, der Sekunden-Bereich von 11-20 auf 175-340, etc. Hier hilft leider nur geduldiges probieren und beobachten, ob die Zeiger genau über dem entspr. Zahlenwert zu liegen kommen. Man kann aber auch Glück haben, daß alles linear verläuft, so daß nur ein einmaliges Mappen erforderlich ist. In dieser Subroutine können ggf. auch die Zeiten für die Beleuchtung der Plexiglas-Scheibe an eigene Bedürfnisse angepasst werden: // Zwischen 00:00:00 und 07:59:59 Beleuchtung ausschalten (HIGH=Off) : if ( mstd >=0 && mstd <=7 ) {digitalWrite(plexi, HIGH); } // Zwischen 20:00:00 und 23:59:59 Beleuchtung einschalten: else if( (mstd >=20 && mstd <=23) ){ digitalWrite(plexi, LOW); } // Jede 0te-Sekunde Beleuchtung einschalten: else if ( msek ==0 ) {digitalWrite(plexi, LOW); } // Beleuchtung ausschalten: lse {digitalWrite(plexi, HIGH);} | 
| Downloads | |
| Sketch: | |
| Voltmeteruhr-NTP-OTA.ino | |