Elektronik_Header_3LŁftersteuerung mit ESP-01

 

Zeitschaltuhr mit Dämmerungssensor

F√ľr unsere Esszimmerleuchte verwende ich seit vielen Jahren eine programmierbare Zeitschaltuhr, die die Leuchte nachmittags automatisch einschaltet, wenn es anf√§ngt, d√§mmrig zu werden.

Der Knackpunkt bei dieser Konstruktion ist der √ľber das Jahr wandernde Zeitpunkt, zu dem es dunkel wird. Ich bin also alle paar Wochen damit besch√§ftigt, die Zeiten nachzuziehen. Die Umstellung auf Sommer- und Winterzeit kommt erschwerend hinzu.

Es ist also naheliegend, hier eine etwas cleverere Konstruktion zu installieren.

    Achtung!
    Die in der nachfolgenden Beschreibung aufgezeigte Schaltung arbeitet mit Netzspannung, die bei Missachtung von einschlägigen Sicherheitsmaßnahmen tödlich sein kann. Wer sich also mit dem Umgang mit Netzspannung nicht auskennt, sollte vom Nachbau absehen oder sich zumindest beim Aufbau des Teils der Schaltung, der sich unter Netzspannung befindet, sowie bei der Inbetriebnahme von jemandem helfen lassen, der die passende Ausbildung sein Eigen nennt.


Von einem anderen Projekt habe ich noch eine Handvoll ESP-01 Platinen rumliegen, die dringend eingesetzt werden wollen. √úber WLAN holt sich so ein Chip die aktuelle Uhrzeit, inklusive Sommer-/Winterzeit, das ist schon mal die halbe Miete.

Im Netz findet sich auf den Seiten von Jens Fleischer eine fertig ausprogrammierte Zeitschaltuhr f√ľr den ESP8266, die beim ersten Anschauen sofort gef√§llt. Jens hat sogar Sonnenauf- und Untergangszeiten implementiert, die wandernde D√§mmerung ist somit adressiert und hier w√§re ich prinzipiell schon fertig.

Leider schaltet die Uhr in der bei Jens vorliegenden Implementierung den Ausgang ausschließlich genau zu den eingestellten Schaltzeiten. Wenn die Uhr zu einem beliebigen Zeitpunkt Strom bekommt, werden die Zeiten ignoriert, auch wenn die aktuelle Uhrzeit innerhalb eines als aktiv gekennzeichneten Zeitfensters liegt - das Licht bleibt dann aus. Im Extremfall wird das Licht erst am nächsten Tag zur programmierten Zeit eingeschaltet.

Dieses Manko l√§sst sich relativ leicht beheben. Die in den Strukturen der Uhr als Strings der Form ‚ÄěHH:MM“ gespeicherten Uhrzeiten f√ľr Einschalten und Ausschalten werden einfach in Minuten ab Mitternacht umgerechnet und schon lassen sich die Zeiten prima auf kleiner/gr√∂√üer als die aktuelle Zeit vergleichen... Ok, wenn die Schaltzeiten an unterschiedlichen Tagen liegen, also Mitternacht dazwischen liegt, muss man noch ein wenig Gehirnschmalz investieren, aber auch das ist machbar und l√§sst sich relativ einfach in die vorhandene Programmstruktur integrieren.

Jens hat noch die M√∂glichkeit geschaffen, den Ausgang der Schaltuhr mit einem Taster am Ger√§t oder √ľber die Weboberfl√§che der Uhr zu beeinflussen. Damit diese Optionen weiterhin funktionieren, m√ľssen noch ein paar Flags und Merker eingebaut werden, die sich die Zust√§nde des Ausgangs merken.


Oben habe ich schon D√§mmerung als Begriff erw√§hnt. Ich will, zus√§tzlich zu den von Jens eingebauten M√∂glichkeiten, auch einen Helligkeitssensor ins Spiel bringen, der nachmittags eine eingestellte Einschaltzeit solange √ľbersteuert, bis eine festgelegte Helligkeit im Zimmer unterschritten wird. Nat√ľrlich darf das Licht nicht sofort wieder ausgeschaltet werden, wenn der Sensor dann von der Leuchte angestrahlt wird.

Da der geplante Mikroprozessor ESP-01 keinen Analogeingang zur Verf√ľgung stellt, findet ein BH1750 Sensor Verwendung, der √ľber I¬≤C angesprochen wird. Auch hierf√ľr findet sich auf der Seite von Jens ein passendes (Teil-) Projekt, das sich in die Schaltuhrsoftware integrieren l√§sst. Ich muss nur noch eine Routine implementieren, die die Abfrage der aktuellen Helligkeit aus der Uhrensoftware heraus erlaubt.

Den erweiterten Code stelle ich als Download zur Verf√ľgung. Zum Code im weiteren Sinne geh√∂rt auch der im ZIP enthaltene Ordner HTML. Er enth√§lt die HTML Seiten zur Darstellung der verschiedenen Informationen auf der WEB-Oberfl√§che, die im Filesystem auf dem ESP8266 abgelegt werden m√ľssen. Hier enthaltener HTML-, CSS- und Script-Code arbeitet mit dem C++ Code im ESP-01 zusammen, alles muss zusammenpassen.

Damit sowohl das LittleFS Dateisystem Platz findet als auch die Firmwareaktualisierung OTA (over the air) funktioniert, muss in der IDE folgende Einstellungen f√ľr “Flash Size”getroffen werden: “1MB (FS: 160KB OTA:~422KB)”. Als “Board” ist “Generic ESP8266 Module” zu w√§hlen.

Hier noch der direkte Link auf die Originalsoftware von Jens. Dort gibt es eine Anleitung zur Inbetriebnahme sowie weitere Informationen zum Programm.

Hinweise

  • Im ZIP (siehe oben “Download”) sind mehrere Dateien enthalten, die f√ľr den Betrieb der Schaltuhr auf einem ESP-01 nicht ben√∂tigt werden. Die entsprechenden Aufrufe im Programm sind mit #ifdef Befehlen auskommentiert. Diese Ma√ünahme ist notwendig, da der ESP-01 nur 1 MB Flash hat und ich die M√∂glichkeit zum Update der Firmware √ľber WLAN erhalten wollte.
    Der zugeh√∂rige Preprozessor-Schalter hei√üt “ESP01” und steht in “Config.h”.
  • Die Festlegung, ab welcher Helligkeit die Leuchte eingeschaltet werden soll, muss im Code erfolgen, es gibt keine Einstellm√∂glichkeit √ľber die WEB-Oberfl√§che.
  • Ich habe fest zwei Schaltzeitp√§rchen eingestellt, Wochentags und Wochenende.
  • Die Erfassung der Verbrauchsdaten und deren Darstellung bei Klick auf die Uhrzeit ist deaktiviert.
  • Schaltvorg√§nge abh√§ngig von Morgen- oder Abendd√§mmerung stehen nicht zur Verf√ľgung.
  • Mit Klick auf das Sonnensymbol wird daf√ľr die Darstellung der aktuell gemessenen Helligkeit in Lux ein- bzw. ausgeblendet.

Die Oberfl√§che ist nat√ľrlich mehr oder weniger identisch zu der von Jens Vorgestellten.

Zeitschaltuhr mit Dämmerungsfunktion

Lediglich beim Klick auf das Sonnensymbol erscheint hier der Helligkeitswert anstelle der Dämmerungsfunktionen.

Zeitschaltuhr mit Dämmerungsfunktion

Uhrzeit und Helligkeitswert werden automatisch jede Sekunde aktualisiert. Wird der Schaltausgang aktiviert, färbt sich das Blitzsymbol gelb.


Die Zeitschaltuhr wird in ein Steckergeh√§use mit Steckdose, Typ “Strapubox SG 422” eingebaut, der Ausgang (die Steckdose) wird √ľber ein Solid State Relais (SSR) gesteuert.

Da die zu schaltende Leuchte mit einer Energiesparlampe best√ľckt ist, muss das SSR keine gro√üen Str√∂me schalten, ein preiswert im Netz zu findendes SSR f√ľr 2 A Dauerstrom zum Einl√∂ten tut es hier. Hersteller ist Omron, das Teil hei√üt G3MB-202P. Es gibt Typen mit unterschiedlicher Eingangsspannung, wir ben√∂tigen den 5 V Typ.

Die Angabe der minimalen Eingangsspannung k√∂nnte irritieren, ich habe deshalb √ľberpr√ľft, bei welcher Spannung am Eingang der Ausgang eingeschaltet wird. Entwarnung. Bereits ab 2,4 V schaltet beim 5V-Typ des SSR der Ausgangsthyristor voll durch, die Ansteuerung mit 3,3 V ist also problemlos m√∂glich.

Die Betriebsspannung f√ľr die Schaltung wird √ľber ein netzgetrenntes Schaltreglermodul 230 V ~ auf 3,3 V = erzeugt, erh√§ltlich z.B. bei AZdelivery unter der Bezeichung “220 zu 3,3 V Mini-Netzteil f√ľr Arduino und Raspberry Pi” (f√ľr Suchmaschine “220 zu 3,3 V Mini-Netzteil f√ľr ESP8266” verwenden).

Der Taster am Ger√§t ist ein TTP223 Sensormodul, das Geh√§use der Schaltung muss also nicht durchl√∂chert werden um einem mechanischen Taster zu montieren. Das hat dar√ľber hinaus den Charme, dass ich mich nicht um Ber√ľhrschutz k√ľmmern muss, die Netzspannung bleibt ber√ľhrungssicher im Innern des Steckergeh√§uses verkapselt.

Der oben erw√§hnte Helligkeitssensor ist ein sogenannter Ambient Light Sensor vom Typ BH1750. Den habe ich bereits in einem anderen Projekt mit ESP-01 eingesetzt, die dortige Implementierung zur Ansteuerung √ľber I¬≤C kann 1:1 √ľbernommen werden.

Leider existiert f√ľr den BH1750 in der Software von Jens keine GUI zur Einstellung der Schaltschwelle, hier wird also in erster N√§herung der Schwellwert manuell ermittelt und im Programm fest einprogrammiert werden m√ľssen. Nicht so schick wie der Rest der WEB-Oberfl√§che, aber immerhin machbar.


F√ľr die Schaltung habe ich eine einseitige Platine entworfen, die alle Komponenten tr√§gt und auf die im Geh√§use vorhandenen Befestigungspunkte passt. Ich habe darauf geachtet, dass gen√ľgend gro√üe Kriech- und Luftstrecken zwischen den Netzspannung f√ľhrenden Leitern und dem Niederspannungsteil vorhanden sind.

    Achtung
    Die Schaltung arbeitet teilweise mit Netzspannung. Die Ber√ľhrung von Netzspannung f√ľhrenden Teilen der Schaltung kann lebensgef√§hrlich sein. Der Nachbau sollte nur von jemandem durchgef√ľhrt werden, der eine entsprechende Ausbildung hat.

Im Prinzip schlie√üe ich mich also der Warnung von Jens an und empfehle dringend, die Verdrahtung im Innern des Steckergeh√§uses einem Fachmann zu √ľberlassen. Wenn die Schaltung aber wie vorgestellt aufgebaut und das Geh√§use geschlossen wird, bevor es in die Steckdose gesteckt wird, kann eigentlich nichts passieren. Aber das muss jeder f√ľr sich selbst entscheiden.

Hier also die Schaltung und das Layout der Platine.

D√§mmerungs-Uhr Schaltbild     (Click auf das Bild f√ľr gr√∂√üere Darstellung)

Bei der Beschaltung der IOs des ESP-01 m√ľssen bestimmte Vorgaben eingehalten werden, damit der ESP anlaufen kann. Sowohl GPIO2 als auch CH_PD, beides Signale, die auf den Stecker des ESP-01 gef√ľhrt sind, m√ľssen f√ľr den Start des Anwenderprogramms aus dem Flash auf HIGH Potential liegen.

Da GPIO2 als Schaltausgang f√ľr das SSR benutzt wird, muss die Ansteuerung des SSR also aktiv LOW erfolgen, damit die Startbedingung f√ľr den ESP nicht verletzt wird.

Der Taster wird an GPIO0 angeschlossen und arbeitet ebenfalls aktiv LOW.

Dämmerungs-Uhr Platine

Die vorgesehene LED parallel zum SSR ist eigentlich unn√∂tig, man sieht sie im geschlossenen Geh√§use ohnehin nicht. Sie hilft aber bei der Programmentwicklung, solange die Schaltung noch ohne Netzanschluss und ohne Leuchte arbeitet, als Indikator f√ľr den Schaltzustand des Ausgangs.

Eingebaut in das Gehäuse präsentiert sich die Schaltung so:

Innenansicht der Dämmerungs-Zeitschaltuhr

Links das SSR, oben in der Mitte der ESP-01, links daneben der Sensor TTP223, das verkapselte Schaltnetzteil in der Mitte.

Unter dem ESP-01 liegen noch 5 PullUp Widerstände.

Dämmerungs-Zeitschaltuhr

Der Helligkeitssensor BH1750 ist √ľber ein 4-poliges Kabel angeschlossen, das √ľber die ins Unterteil des Geh√§uses integrierte Zugentlastung gesichert wird. Leider sind im Lieferumfang des Geh√§uses weder passende Schrauben noch der eigentliche Sicherungsb√ľgel enthalten.

Die Platine muss mittels Beilagscheiben, ich habe solche aus Kunststoff verwendet, um ca. 2 mm angehoben eingebaut werden, da sonst die Schrauben der Zugentlastung Kontakt zu den Leiterbahnen und Lötpunkten bekommen.

Der Touch Sensor, die LED und das SSR.

2021-02-18_IMG_3218_resize

Auf dem Sensormodul muss der Kontakt “A” √ľberbr√ľckt werden, da der ESP-01 einen aktiv LOW Kontakt erwartet.

2021-02-18_IMG_3224_c_hell_resize

Interessanter Weise hat es diesmal nicht geklappt, einfach einen L√∂tzinnklecks √ľber die beiden Kontakte zu l√∂ten, ich musste ein St√ľck Draht bem√ľhen.

Da der Sensor aktiv LOW arbeitet, der Ausgang also im inaktiven Zustand HIGH ist, leuchtet die LED auf dem Sensorboard permanent und verlischt nur, wenn der Sensor aktiviert wird, um den Schaltzustand des Ausgangs zu ändern. Wenn das stört, muss die SMD LED auf dem Sensorboard entfernt werden.

Nachtrag
Es hat sich im Betrieb herausgestellt, dass der TTP223 Sensor offenbar f√ľr EMV -St√∂rungen empf√§nglich ist. Das √§u√üert sich so, dass die Leuchte morgens eingeschaltet ist, obwohl das Ausschalten um 23 Uhr funktioniert hat.
Um dem Ph√§nomen auf die Spur zu kommen, habe ich tempor√§r die von Jens vorgesehene Logging-Funktion aktiviert. So konnte ich in der Log-Datei sch√∂n sehen, dass zu unterschiedlichen Zeiten der Taster als Ursache f√ľr ein EIN-Event vermerkt ist.

Mit der von Jens implementierten Entprellroutine  funktioniert der TouchSensor nicht ordnungsgem√§√ü, hier habe ich also eine auf den TouchSensor abgestimmte Routine eingebracht. Erst wenn der Sensor l√§nger als 100 ms aktiviert ist, wird der Status des Ausgangs ge√§ndert. Das ZIP-Archiv enth√§lt die aktualisierten Routinen.


Die Dr√§hte zum Anschluss der Schaltung an den Steckerteil im Unterteil des Geh√§uses m√ľssen gel√∂tet werden. Die Bef√ľrchtung, dass das Kunststoffmaterial die Temperatur beim L√∂ten nicht aush√§lt, ist unbegr√ľndet, es ergaben sich keine Verformungen. Die Anschl√ľsse an der Steckdose im Oberteil des Geh√§uses werden geschraubt. Die Leitungen sind Litzenleitungen und erhalten zur sauberen Kontaktierung Aderendh√ľlsen.

L√∂tschl√ľsse am Stecker und Aderendh√ľlsen an der Platine.

Beim Ablängen der Leitungen lieber ein bisschen zugeben, es ist ausreichend Platz im Gehäuse um auch etwas längere Leitungen verstauen zu können. Man muss dann nur beim Schließen des Gehäuses darauf achten, die Leitungen nicht einzuklemmen.


    Achtung!
    Hier noch einmal der dringende Hinweis, dass bei Arbeiten mit Netzspannung die einschlägigen Vorschriften zu beachten sind und man sich im Zweifelsfall von jemandem helfen lässt, der die entsprechende Ausbildung hat.

 


Besucherzaehler

Besucher seit
25.11.2000

>