Blue PIR – MQTT Bewegunsmelder

Bau eines Arduino kompatiblen MQTT Bewegungsmelder und Multisensor (Temperatur, Feuchtigkeit, Helligkeit). Dateien sind bei Thingiverse erhältlich

Falls sich jemand beim lesen fragt, wie lange man für so etwas braucht. Ich habe etwa 2 Monate gebraucht. Nicht kontinuierlich sondern wen ich lust und Zeit hatte. Zwischendrin habe ich es auch weg gelegt weil es einfach nicht geklappt hat. Die Platine ist eigentlich immer noch Version 1.0. Das Innengehäuse wäre demnach Version 3.4 und das Außengehäuse mit der Halterung Version 4.x. Viele Teile habe ich mehrfach ausgedruckt bis wirklich alles gepasst hat. Außerdem glaubt man gar nicht wie viele unterschiedliche USB Stecker es gibt. Den Artikel habe ich jetzt an 3 Nachmittagen geschrieben. Die Bilder hatte ich schon nebenbei gemacht.
Noch eine bitte vorweg. Sollte jemand dies lesen und wirklich einen Bewegungsmelder nachbauen, wäre ich über ein Bild sehr dankbar. Ich bin gespannt wie Sie aussehen und ob wirklich welche benutzt werden. Am Ende erstelle ich dann eine Galerie.

Die Idee war es einen Bewegungsmelder mit MQTT Anbindung zu erstellen. Er sollte kompakt sein und per WLAN mit dem MQTT Server sprechen können. Am einfachsten war dies für mich mit einem ESP8266 möglich. Da ich in der Elektrotechnik nicht gerade ein Genie bin kommen vor allem fertige Module zum Einsatz. Ich habe Sie aber so gewählt und eingebaut, dass ein kompakter ansprechender Bewegungsmelder dabei raus gekommen ist. Zusätzlich zum PIR Modul besitzt er noch einen DHT22 für Temperatur und Feuchtigkeit, sowie ein Lichtwiderstand und ein WS2812b LED RGB Ring zur Signalisierung. Es soll so in einem Gehäuse verbaut sein, dass der Bewegungsmelder sowohl an der Decke und der Wand montiert und ausgerichtet werden kann. Dies ist vor allem für das erkennen der Bewegungen wichtig.

Die Schaltung habe ich in Fritzing geplant und auf einem Steckbrett getestet. Ich bin nicht perfekt was Planung von Schaltungen angeht. Falls jemand Tipps für eine Version 2.0 hat bin ich jederzeit offen für Verbesserungen. Sollte ich ein Fehler gemacht haben (auch in dieser Beschreibung) bin ich über Korrekturvorschläge froh.

  • Als Microcontroller ist ein Wemos D1 mini Clone im Einsatz. Er ist vor allem schön klein und hat eine Micro USB Buchse.
  • Den DHT22 habe ich wie üblich und wie in Dutzend Anleitungen beschrieben angeschlossen. Er verwendet den digitalen Anschluss D2. Spannungsversorgung sind 3,3V
  • Der PIR Bewegungsmelder hat als Spannungsversorgung 5V. Da die Eingänge des Wemos nur für 3,3V ausgelegt sind, ist der Signalausgang über einen Spannungsteiler an D0 angeschlossen.
  • Der Lichtwiderstand ist an 3,3V und mit einem Pulldown Widerstand an A0 angeschlossen.

1. Was wird also benötigt

Ich habe folgende Komponente bei Amazon bestellt. Generell funktionieren alle Module mit den selben Abmessungen

Da die beiden LED Ringe etwas unterschiedliche Abmessungen haben, habe ich für den transparenten Deckel und den Blend ring zwei Versionen erstellt. Die Materialkosten belaufen sich auf ca. 21€ aber nur wen man alles auf die wirklich benötigte Anzahl runter rechnet. Ich habe insgesamt 3 Stucke gebaut. Somit kommt man mit 25€ pro Stück etwa hin ohne das Plastik. Zum Herstellen der Platine wird natürlich auch noch Material benötigt. Aber genauso wie Kabel und die Widerstände sollte sowas ja in jedem gutem Haushalt vorhanden sein 😉

2. Herstellung Platine

Zur Herstellung der Platine habe ich in Fritzing ein grobes Leiterplatten Layout erstellt. Die späteren Abmessungen haben sich daraus ergeben. Das grösste Bauteil ist der Wemos D1 mini. Die Position war eigentlich vorgegeben. Die Buchse musste nach außen. Der Anschluss vom PIR und der LED Leiste mussten in der Mitte liegen. Der Lichtwiderstand und der DHT22 müssen dagegen weit außen sein um an der Gehäuse Seite zu liegen.

Diesen Entwurf habe ich wiederum als SVG exportiert und in Inkscape weiter bearbeitet. Daraus ist der Entwurf für die Leiterplatte entstanden. Dieser wird später Spiegelverkehrt gedruckt. Die SVG-Datei ist bei Thingiverse zu finden.

Die Platine kann man entweder Fräsen oder Ätzen. Ich habe beides gemacht. Für die erste Version habe ich die Platine gefräst. Für die weiteren habe ich die Platinen geätzt, da es bei der Massenherstellung einfach schneller geht.

2.1 Fräsen

Da es meine erste Platine war, die ich versucht habe zu fräsen, bin ich vorsichtig an die sache herangegangen. Man benötigt die Kupferbeschichtete Leiterplatte und ich habe einen Spiralfräser verwendet. Viele benutzen auch einen V-Stichel. Das habe ich bisher noch nicht versucht. Der Spiralfräser funktioniert ganz gut.

2.2 Platine Ätzen

Das Ätzen von Platinen scheint erst einmal aufwendiger aber es ist etwas genauer und für die Herstellung mehrere Platinen meiner Meinung nach besser geeignet. Das ätzen selber werde ich nicht beschreiben. Nur den Weg zur Platine selber. Ein hinweis dazu noch.

Ätzend

Warnung
Beim Ätzen werden aggressive Chemikalien verwendet, es können schwere Verletzungen wie Hautverätzungen, Schleimhautreizungen und auch viel schlimmeres entstehen. Deswegen weiße ich ausdrücklich darauf hin, dass ich keinerlei Haftung für eventuelle Schäden an Personen oder Materialien übernehme!
Beim Ätzen sollten Sicherheitsmaßnahmen, wie Schutzbrillen und dicke Gummihandschuhe verwendet werden! Weiterhin ist es wichtig, den Ätzvorgang nur in gut belüfteten Umgebungen durchzuführen, da giftige Gase entstehen können.
Desweiteren sind die Chemikalien aufzufangen und fachgerecht zu entsorgen!

Zur Herstellung der Platine verwende ich die Toner Transfer Methode. Als erstes Fräse ich mit meiner MPCNC die Rohlinge aus den Kupferplatten heraus. Die Rohlinge selber reinige ich mit Atzethon und lasse Sie trocknen. Manchmal hilft auch ein kleiner Topf Polierschwam.
Den Plan der Leiterbahnen drucke ich spiegelverkehrt auf Fotopapier aus. Bei manchen Druckern kann man den Toner verbrauch einstellen. Ich verwende ein HP Laserjet P1505 und konnte nur darauf achten das der Treiber nicht auf “Toner sparen” steht. Ich habe immer mehrere Leiterbahnen auf ein Papier gedruckt und diese dann passend zugeschnitten.
Danach habe ich den Ausdruck so gut es geht auf die Runden Platinen gelegt und etwa 5 Minuten auf höchster Stufe meines Bügeleisen druck auf das Papier ausgeübt. Natürlich alles auf einer Oberfläche die hohe Hitze verträgt. Nach den ersten Sekunden kann man das Bügeleisen auch vorsichtig bewegen. Der Toner haftet dann schon teilweise an der Kupferschicht und verrutscht nicht mehr.
Falls es nicht klappt einfach mit Azeton den Toner wieder entfernen und nochmal probieren.

Nach dem Bügeln haftet das Papier auf der Leiterplatte. Unter fließendem Wasser mit viel Geduld das Papier lösen. Wen man keine Geduld hat und zu schnell das Papier ablöst, wird der Toner auch mit entfernt. Das muss man auf jeden Fall verhindern. Danach kann man mit einem Permanent Stift Lücken oder sogar ganze Leiterbahnen nachzeichnen.
Sehr wichtig ist es zwischen engen Leiterbahnen die Fasern des Papiers zu entfernen. Wen die Leiterplatte trocken ist sieht man die Fasern am besten. Überall wo noch Fasern sind, kommt die Ätzflüssigkeit nicht hin und es entstehen brücken. Eine Wiche Zahnbürste funktioniert auch sehr gut unter fließendem Wasser.

Nach dem transfer des Toners, folgt das Ätzen. Dazu gibt es im Internet viele Anleitungen. Bitte immer vorsichtig mit den Chemikalien umgehen und vor allem weit weg von Kindern ätzen und auch die Chemikalien sicher aufbewahren! Die Chemikalien mit dem gelöstem Kupfer sind übrigens Sondermüll. Auch wenn nicht viel anfällt sollte man es bei den richtigen Abgabestellen abgeben. Bei uns in Schleswig Holstein und Hamburg gibt es auf den Recyclinghöfen Annahmestellen für Problemstoffe.

3. Bohren

Nach dem Ätzen kann man mit Azeton den Toner leicht entfernen. Danach sind die Platinen wieder schön sauber. Nun fehlen nur noch die Löcher. Dazu habe ich einen Dremel Bohrersatz und mache die Löcher frei Hand. Der Bohrer zentriert sich dabei automatisch in der kleinen Mulde die freigeätzt wurde.

4. Druck der Teile

Das Gehäuse habe ich in einer CAD Anwendung Konstruiert. Die Teile selber passen sehr gut in einander. Alle Teile sind ohne Support und Brim zu drucken. Ich habe einen Prusa i3 mk3 verwendet mit eine 0,4 Nozzle und 0,15mm Schicht höhe. Verwendet habe ich für das Gehäuse PLA und für den transparenten Deckel PLA.

Die 3D Daten sind in Thingiverse zu finden.
Es ist nur zu beachten ob man den Adafruit LED Ring hat oder die günstigeren Ringe. Am besten einmal ausmessen. Danach entscheidet sich welchen Deckel und Blendring man druckt. Alle anderen Teile sind identisch.

5. Löten

Eins vorweg … durch die geringe Abmessung sitzt nicht alles 100% gerade. Zum Beispiel muss die Stiftleiste zum Bewegungsmelder etwas schief stehen, da der Wemos D1 mini etwas zu lang ist. Da keine SMD Bausteine verwendet werden, ist der zusammenbau aber recht einfach. Anbei eine kurze Beschreibung der einzelnen Bauteile.

Als erstes den Wemos und die Widerstände. Am besten erst die Stiftleisten und den Wemos locker auf die Platine stecken und dann zusammenlöten. Wen man die Stiftleisten erst an den Wemos lötet steht alles unter Spannung und es ist schwer ihn auf die Platine zu stecken. Die Widerstände sind dann ganz einfach. Nur nicht zu dicht an der Platine anliegen lassen. Ein wenig spiel ist später ganz gut.

Als nächstes folgt der DHT22. Wenn man ihn schon in der Hand hat, gleich oben die Befestigung abschneiden. Mit der Nase passt er nicht in das Gehäuse.

Dann die Stiftleiste 1×3 und die Buchsenleiste 1×3. Ganz wichtig mit gedrucktem Abstandshalter zwischen Platine und Buchsenleiste. Die 1×8 Buchsenleisten mit langen Beinen liegen beim Wemos D1 mini meistens dabei. Ich kürze diese einfach auf 1×3.

Den Lichtwiderstand noch nicht festlöten oder besser gesagt nur wen man den Abstand kennt. Ansonsten erst einmal nur in die Platine stecken und unten die Beine umbiegen.

Damit ist das Löten auch schon abgeschlossen.

6. Zusammenbau

Der Zusammenbau erfolgt in mehreren Schritten. Im folgendem Video sieht man die einzelnen Komponenten.

6.1. Zusammenbau Teil 1

Am Anfang sollte der Lichtwiderstand nach oben zeigen. Dann den inneren Rahmen auf die Platine setzen. Der Widerstand zwischen Wemos und DHT22 muss ein wenig zurecht gedrückt werden. Die Bohrungen der Platine sollten genau über der Aussparung liegen am besten gleich die Schrauben mit den Scheiben durch stecken. Die Scheiben sind wichtig damit kein Brücke an den kontakten entsteht. Dann folgt das obere Gehäuseteil.

6.2. Zusammenbau Teil 2

Als erstes wird der RGB Ring vorbereitet. Dabei unterscheiden sich beide ein wenig. Anbei beide Varianten.
Die Lötstellen sichere ich in beiden Varianten mit Heißkleber.

Adafruit RGB Ring vorbereiten

Etwas günstigere RGB Ringe vorbereiten

Beim Deckel und beim Blendring ist es wichtig den passenden auszudrucken. Es gibt wie oben beschrieben zwei Versionen. Sollte der LED Ring nicht passen war es wahrscheinlich der falsche. Den LED Ring vorsichtig in den Deckel drücken. Beim Adafruit LED Ring gleich die Buchse auf die Platine stecken. Beim anderen Ring ist es nicht notwendig. Dort passiert der Anschluss beim einsetzen.

Danach den PIR Sensor vorsichtig einsetzen und prüfen ob auch die Buchsenleiste richtig gebogen ist und in die Stiftleiste des PIR Sensors greift. Danach den Deckel vorsichtig schließen und auf die Kabel achten. Beim Adafruit RGB Ring sollten die Kabel in den Kanälen liegen. Dann die Schrauben unten vorsichtig anziehen. Nicht zu fest, da sonst die Schrauben schnell durchdrehen und nicht im Plastik festsitzen. Es ist halt nur ein Standardgewinde in Plastik geschraubt.

Den Sitz des Gehäuses prüfen und gegebenenfalls etwas korrigieren.

6.3. Zusammenbau Teil 3

Am besten jetzt den Bewegungsmelder über die Schrauben einstellen. Dies kann man aber auch später noch machen. Das innere Gehäuse ist schnell ausgebaut. Nun kann das innere Gehäuse in die Kugel eingebaut werden und mit den drei Innensechskant-Schrauben durch den Deckel befestigt werden. Der USB Anschluss des Wemos ist gut sichtbar und sollte mittig ausgerichtet sein. Dann passen auch oben die Schrauben. Der Außenring wird einfach auf die Schrauben gedrückt. Er hält alleine durch die Spannung. Nach dem anbringen der Halterung ist der Bewegungsmelder fertig.

7. Programmierung

Ich habe ein Programm geschrieben. Der Sourcecode ist auf github zu finden. Ich versuche immer auf Delay zu verzichten und arbeite mit Timer-Variablen. Deswegen habe ich die LED Lichtleiste bisher kaum in Verwendung. Das Programm ist im Moment eher ein beweis das alles funktioniert. Es ist weit entfernt von schön, übersichtlich aber es ist funktionell. Es baut eine Verbindung zum MQTT Server auf und übermittelt erfolgreich und zuverlässig seine Werte. Problem habe ich bisher nur mit den Temperaturwerten. Diese sind immer 3-4 Grad zu hoch. Keine Ahnung ob es an meinen Sensoren liegt. Es sind alle aus einer Bestellung.
Todos sind noch:

  • Verwendung von einem Interrupt für die Bewegungserkennung
  • Anpassung der Temperatur.
  • Nachtlicht bei Bewegung und niedriger Helligkeit
  • Mehr Lichtefekte die per MQTT ausgelöst werden können. Zum Beispiel für Timer und Benachrichtigungen wie Waschmaschine fertig, Telefon etc.
  • Wenn es mit dem ESP8266 irgendwie möglich ist, eine Absicherung per SSL. Aber ich habe es mal versucht und es geht wohl nicht.

4 Comments

    1. blueAdmin

      Hallo Jürgen,

      ich habe die Schaltung in Fritzing erstellt aber dann mit Inkscape komplett überarbeitet. Die SVG Datei findest du bei Thingiverse. Diese einfach 1:1 verwenden. Was bei Fritzing raus gekommen war konnte man nicht wirklich benutzen. Ist ja alles rund.

      Viele Grüße,
      Jörg

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.