Das Licht in bestimmten weniger frequentierten Zimmer mittels Bewegungsmelder zu steuern war schon länger ein Ziel von mir. Bei meinem letzten Ikea Besuch habe ich einen Tradfri Bewegungsmelder meinem Einkauf hinzugefügt. Dieser Batteriebetriebene Sensor lässt sich dank dem Zigbee Standart mit allen Möglichen Koordinatoren verwenden. In meinem Setup verfüge ich über einen Philips Hue, Ikea Tradfri und einen direkt über Homeassistant betriebenen ZHA Koordinator. Weil der Tradfri Gateway seit einem Homeassistant Release nicht mehr zuverlässig funktioniert habe ich den Tradfri Bewegunssensor über die ZHA Integration eingebunden. Nach ungefähr einem Monat im Kleiderzimmer war die Batterie leer und musste gewechselt werden. Zudem störte mich, dass ich keine Möglichkeit hatte die Automatisierung der Lichter mit der Lichtintensität im Zimmer zu koppeln. Also entschied ich mich selber einen Sensor, basierend auf einem Passive Infrared (PIR) und einer Fotowiderstand (LDR), zu bauen.
Schaltung
An die Domäne selbst gebaute batteriebetriebene Sensoren hatte ich mich bis jetzt, vorallem aus zeitlichen Gründen, noch nicht herangetraut. Auch bei dem in diesem Artikel gebauten Sensor war ich zum Glück nicht auf eine autonome Stromversorgung angewiesen. Das erleichtert das Design ungemein, weil ich aufgrund meiner grossen Restbestände an Micro USB Kabeln einfach auf einen Wemos D1 Mini als MCU zurückgreifen konnte. Gemäss meinen Recherchen gibt es bis dato noch keinen Shield, der meine Anforderungen (PIR + LDR) erfüllt. Also nahm ich einen Wemos Prototype Shield und habe selber etwas zusammengelötet.
Komponenten
- HC-SR505 (oben 3. von Links)
- LDR Fotowiderstand (oben 2. von Links)
- Wemos Prototype Shield (nicht auf dem Bild)
- Wemos D1 Mini (oben 4. von Links)
- Widerstand 10kΩ
Dieser Prototyp meines Sensors ist nun einige Zeit in Betrieb und erfüllt seine Aufgabe sehr gut. Ich wollte noch weitere dieser Sensoren für andere Zimmer bauen und überlegte wie ich ihn zusätzlich optimieren kann. Weil das Löten auf dem Prototyp Shield etwas Fummelarbeit ist und ich auf einen PCB Hersteller in China (welcher bereits ab Bestellmengen von 5 Stück liefert) gestossen bin, habe ich mich kurzum daran gemacht eine Platine selber zu entwerfen. Ich hatte früher bereits Leiterplatten in Fritzing und Eagle gezeichnet, habe mich aber dazu entschlossen mit KiCAD etwas neues auszuprobieren. Als nicht Hobby Elektroniker kann ich alle drei Programme empfehlen. Das Resultat sieht folgendermassen aus:
Das Schema habe ich als Gerber Datei exportiert und beim erwähnten PCB Hersteller JLCPCB herstellen lassen. Die fünf Platinen wurden innerhalb 14 Tagen erstellt und sauber verpackt geliefert. Ich war sehr zufrieden mit der Qualität.
Zusätzlich zu meinem geplanten Sensor habe ich noch drei Bohrungen für einen etwaigen WS2812 ähnlichen Ledstrip eingezeichnet, so dass der Sensor auch autonom funktionieren würde, falls ich mal das Bedürfnis dazu habe.
Bei diesem Hersteller gibt es die Möglichkeit SMD Komponenten direkt im Herstellungsprozess bereits auflöten zu lassen. Ich entschied mich aber dagegen, weil ich die entsprechenden Bauteile bereits besitze und das einzige Bauteil, was in Frage kommt der Widerstand R2 ist.
Firmware
Die Firmware erstelle ich, wie bei den meisten meiner Eigenentwicklugen, in ESPHome. Um die Konfiguration flexibel ändern zu können und ein wiederhohltes Flashen des Wemos zu vermeiden entschied ich mich den PIR und LDR einzeln als Sensoren zu präsentieren. Eine andere Möglichkeit wäre gewesen bereits auf dem Wemos Bewegungen nur über einem gewissen Lux zu melden. Durch die drei Bohrungen für den Ledstrip könnte der Sensor diesen so auch ohne Homeassistant steuern.
|
|
Gehäuse
Das Gehäuse besteht aus zwei zusammenklickbaren Teilen, die ich in FreeCAD entworfen und mit meinem 3D Drucker ausgedruckt habe. Es hat die Aussparungen für den Micro USB Anschluss des Wemos, den PIR Sensor, ein Loch um den LDR nach aussen zu führen und ein paar Lüftungsschlitze.
Homeassistant Blueprint
Um die Konfiguration des Sensors zu vereinfachen und ein Teilen mit der Community zu ermöglichen habe ich für die Einbindung in Homeassistant einen Blueprint erstellt. Dieser stellt dem/der BenutzerIn verschiedene Parameter für die Automatisierung zur Verfügung, so das keine Zeile Yaml selber geschrieben werden muss. Die Schwellwerte wie zum Beispiel Lichtintensität oder die Zeit nach der letzten Bewegung bis das Licht wieder ausgeht, können so bequem über einen Regler oder als Zahleingabe eingestellt werden.
|
|
Mit den zeitlichen Einschränkungen können zusätzliche Bedingungen gesetzt werden, in meinem Fall das die Katze in der Nacht nicht unabsichtlich die Lichter einschaltet 😁.