Inhaltsverzeichnis:

Batteriebetriebener Türsensor mit Heimautomatisierungsintegration, WiFi und ESP-NOW - Gunook
Batteriebetriebener Türsensor mit Heimautomatisierungsintegration, WiFi und ESP-NOW - Gunook

Video: Batteriebetriebener Türsensor mit Heimautomatisierungsintegration, WiFi und ESP-NOW - Gunook

Video: Batteriebetriebener Türsensor mit Heimautomatisierungsintegration, WiFi und ESP-NOW - Gunook
Video: Dein Zuhause wird noch smarter 2024, Juli
Anonim
Image
Image

In diesem anweisbaren zeige ich Ihnen, wie ich einen batteriebetriebenen Türsensor mit Heimautomatisierungsintegration gemacht habe. Ich habe einige andere schöne Sensoren und Alarmsysteme gesehen, aber ich wollte selbst eine machen.

Meine Ziele:

  • Ein Sensor, der eine Türöffnung schnell erkennt und meldet (<5 Sekunden)
  • Ein Sensor, der das Schließen der Tür erkennt
  • Ein Sensor, der batteriebetrieben ist und einige Monate mit einer Batterie läuft

Die Hard- und Software ist inspiriert von

  • Das Trigboard von Kevin Darrah (TPL5111 und TPS73733).
  • Dieses Video

Ich habe einen Sensor für meine Vorder- und meine Hintertür gemacht. Der einzige Unterschied ist die LED-Position und der externe Netzschalter (am Hintertürsensor).

Ich habe während der Entwicklung in Hard- und Software einige Verbesserungen vorgenommen, dies ist auf den Fotos zu sehen.

Lieferungen

Ich habe die elektronischen Komponenten von Aliexpress gekauft, die Hauptteile:

  • LiPo-Akku
  • TPS73733 LDO
  • TPL5111
  • Reed-Schalter
  • P-Kanal-Mosfet: IRLML6401TRPBF
  • Magnet
  • PCB-Adapterplatte für SMD-Bauteile und andere.

Schritt 1: Hardware - Schaltung

Hardware - Schaltung
Hardware - Schaltung
Hardware - Schaltung
Hardware - Schaltung
Hardware - Schaltung
Hardware - Schaltung

Siehe die beigefügten Schemata für die Schaltung. Ich habe die SMD-Teile auf eine Adapterplatine gelötet und alle Komponenten auf ein doppelseitiges Perfboard gelötet. Ich verband das ESP-01 über Buchsenleisten, so dass ich es entfernen konnte, um es über den in Schritt 3 dieser Anleitung gezeigten Adapter zu programmieren.

Die Schaltung funktioniert wie folgt:

  • Wenn die Tür geöffnet wird, erhält der TPL5111 einen Schuss auf den DELAY/M_DRV-Pin und aktiviert den TPS73733 LDO, der das ESP-01 mit Strom versorgt. Für diesen Vorgang muss EN/ONE_SHOT auf Low gezogen werden, siehe Datenblatt des TPL5111.
  • Nachdem das Programm ausgeführt wurde (siehe Schritt Software), sendet der ESP-01 ein Done-Signal an den TPL5111, der dann den TPS73733 deaktiviert, was zu einem sehr niedrigen Energiestatus für den TPL5111 und den TPS73733 führt.

Ich verwende Reedschalter mit NO- und NC-Anschlüssen. Ich habe das NC-Kabel angeschlossen, da der Reedschalter den Stromkreis schließen muss, wenn der Magnet entfernt wird (Tür offen) und geöffnet werden muss, wenn der Magnet in der Nähe ist (Tür geschlossen).

Für den Hintertürsensor habe ich einige Kondensatoren und Widerstände hinzugefügt, als ich einige Instabilitäten entdeckte, die Instabilität wurde jedoch durch die Software (esp_now_init) verursacht, wie ich später entdeckte.

Schritt 2: Hardware - Gehäuse

Hardware - Gehäuse
Hardware - Gehäuse
Hardware - Gehäuse
Hardware - Gehäuse
Hardware - Gehäuse
Hardware - Gehäuse

Das Gehäuse habe ich in Autodesk Fusion360 entworfen, inspiriert von diesem Video von 'the guy with the schweizer Akzent'.

Die STL-Dateien der drei Teile:

  • Kasten
  • Deckel
  • Magnethalter

werden auf meiner Thingiverse-Seite veröffentlicht.

Schritt 3: Software

Software
Software

Das Programm ist in meinem Github.

Der Ablauf des Programms ist im Bild dargestellt. Siehe mein anderes Instructable für die Erklärung, wie ich ESP-NOW verwende.

Wenn das Modul eingeschaltet ist, versucht es zuerst die 'OPEN'-Nachricht über ESP-NOW zu senden. Gelingt dies nicht, wird auf eine WLAN- und MQTT-Verbindung umgeschaltet.

Ich habe festgestellt, dass zumindest in meinem Setup die 'CLOSED'-Nachricht nicht erfolgreich über ESP-NOW gesendet wurde, also habe ich diese aus dem Programm entfernt und nur WiFi und MQTT verwendet.

Während die Tür geöffnet ist und das Modul auf das Schließen der Tür wartet, nutzt es diese Zeit, um sich mit WiFi und MQTT zu verbinden, so dass beim Schließen der Tür nur die gemessene Spannung und eine GESCHLOSSEN-Nachricht gesendet werden muss und dann es geht direkt schlafen.

Das Programm überprüft, ob die geschlossene Nachricht vom Empfänger über ein Abhören einer MQTT-Nachricht zum richtigen Thema empfangen wird.

Schritt 4: Hausautomation und Telegramm

Hausautomation und Telegramm
Hausautomation und Telegramm
Hausautomation und Telegramm
Hausautomation und Telegramm
Hausautomation und Telegramm
Hausautomation und Telegramm

Meine Türsensoren kommunizieren mit meiner Openhab Home Automation auf meinem Raspberry Pi Zero.

Hauptanwendungen:

  • Lesen Sie den Zustand der Tür ab: OFFEN oder GESCHLOSSEN.
  • Alarmieren Sie mich per Telegramm, wenn eine Tür geöffnet wird (Wenn der Alarm eingeschaltet oder die Überwachungsfunktion eingeschaltet ist).
  • Lesen Sie, wann das letzte Mal eine Tür geöffnet oder geschlossen wurde.
  • Zählen Sie die Anzahl der Öffnungen, die ein Türsensor verarbeiten kann, bevor die Batterie leer ist.

Wenn wir zum Beispiel im Urlaub sind und der Nachbar kommt, um die Pflanzen zu gießen, bekomme ich eine Nachricht. Sehen Sie sich das Video im Intro an.

Meine Openhab-Elemente, Regeln und Sitemap-Dateien befinden sich in meinem Github. In diesen Dateien sehen Sie auch meinen Türsensor des Schuppens, der einen normalen kabelgebundenen Reed-Schalter und einen kleinen Kontakt-(End-)Schalter aus einem 3D-Drucker in der Schlossöffnung verwendet (siehe Bilder).

Wie Sie die Telegram-Aktion in Openhab verwenden, wird hier beschrieben.

Schritt 5: Verbesserungen und weitere Verbesserungen

Verbesserungen und weitere Verbesserungen
Verbesserungen und weitere Verbesserungen
Verbesserungen und weitere Verbesserungen
Verbesserungen und weitere Verbesserungen

In den letzten Monaten habe ich folgende Verbesserung vorgenommen.

Behandeln Sie lange Türöffnungen über ein selbstschaltendes Impulssignal

Im Sommer lassen wir die Hintertür für einige Stunden geöffnet, wenn wir zu Hause sind. Das laufende ESP-01 mit WLAN-Verbindung würde dann den Akku unnötig entladen. Deshalb habe ich einen Ein-/Ausschalter eingebaut, um das Modul in diesen Situationen ausschalten zu können.

Dies führte jedoch manchmal zu einem dauerhaft ausgeschalteten Modul (wenn ich vergaß, es einzuschalten) und einer leeren Batterie nach ein paar Nachmittagen einer geöffneten Tür und einem laufenden Modul (wenn ich vergaß, es auszuschalten).

Daher wollte ich das Modul über die Software ausschalten können, nachdem das Modul für eine vordefinierte Zeit (1 Minute) eingeschaltet war.

Wo jedoch der 'DONE'-Puls des ESP-01 den TPL5111 beim Schließen der Tür ausschaltete, stellte ich fest, dass der TPL5111 nicht durch einen 'DONE'-Puls ausgeschaltet wurde, während der DELAY/M_DRV-Pin HIGH war. Dieses HIGH-Signal am Pin DELAY/M_DRV wurde durch die geöffnete Tür und den an die Batteriespannung angeschlossenen Öffner des Reedschalters verursacht.

Das Signal zum DELAY/M_DRV-Pin sollte also nicht dauerhaft HIGH sein, sondern gepulst sein. Im Datenblatt des TPL5111 steht, dass es ein Impuls von > 20 ms sein sollte. Ich habe dieses selbstschaltende Signal über einen P-Kanal-Mosfet, einen Kondensator und einen 10K- und 300K-Widerstand erstellt, siehe das mitgelieferte Schema.

Es funktioniert wie folgt:

  • Wenn der NC-Kontakt des Reed-Schalters geschlossen ist, ist das Gate LOW und der Mosfet eingeschaltet, was zu einem HIGH-Signal am DELAY/M_DRV-Pin führt, das das Modul aktiviert.
  • Der Kondensator wird schnell aufgeladen, was zu einer steigenden Spannung am Gate führt.
  • Nach ca. 20 ms beträgt die Spannung am Gate 97% der Batteriespannung (300K/(300K+10K), die HIGH ist und der Mosfet ausgeschaltet ist, was zu einem LOW-Signal am DELAY/M_DRV-Pin führt.
  • Wenn der DELAY/M_DRV-Pin LOW ist, führt das DONE-Signal des ESP-01 zum Herunterfahren des Moduls.

Dies ist in der Software implementiert; Eine while-Schleife prüft nicht nur, ob die Tür noch geöffnet ist, sondern prüft auch, ob das Modul nicht zu lange eingeschaltet ist. Bei zu langem Einschalten gibt es einen NULL-Wert aus (undefinierter Zustand der Tür). In diesem Fall weiß ich nicht, ob die Tür geöffnet oder geschlossen ist und erreiche nicht alle im Intro genannten Ziele, aber die Akkulaufzeit ist wichtiger und meistens öffnen wir die Tür später am Tag wieder, was zu einem bestätigten geschlossenen Zustand führt der Tür.

Es ist wichtig, einen P-Kanal-Mosfet zu verwenden, der für den hier verwendeten Spannungsbereich geeignet ist. Der Mosfet muss bei einer VGS von etwa -3,8 V vollständig eingeschaltet und bei einer VGS von etwa -0,2 V vollständig ausgeschaltet sein. Ich habe mehrere Mosfets ausprobiert und festgestellt, dass ein IRLML6401TRPBF in Kombination mit den 10K- und 300K-Widerständen für dieses Ziel gut funktioniert. Ein Kondensator von 1 uF funktioniert gut, um eine Pulslänge von etwa 20 ms zu erhalten. Ein größerer Kondensator führt zu einem längeren Impuls, der nicht notwendig ist, da der TPL5111 aktiviert wurde. Ich habe mein DSO150-Oszilloskop verwendet, um die Spannungen und die Pulslänge zu überprüfen.

Geplante Verbesserung: OTA-Update

Ich plane, ein OTA-Update über folgende Vorgehensweise einzuspielen, die teilweise bereits in der aktuellen Software enthalten ist

  • Über Openhab von NodeRed veröffentliche ich eine beibehaltene 'Update'-Nachricht ein 'Update-Thema'.
  • Ist das Modul eingeschaltet und mit dem MQTT-Server verbunden und abonniert das 'Update-Topic', erhält es die Update-Nachricht.
  • Die Update-Nachricht verhindert das Abschalten des Moduls und startet den
  • Über die Website des HTTPUpdateServers können Sie die Software aktualisieren.
  • Über Openhab von NodeRed veröffentliche ich eine beibehaltene 'leere' Nachricht als 'Update-Thema'.

Geplante Verbesserung: Hardware-Shutdown nach einer vordefinierten Zeit

Im aktuellen Schema verwende ich einen 200K-Widerstand zwischen DELAY/M_DRV und GND des TPL5111. Dadurch wird das Modul für mehr als 2 Stunden eingeschaltet (siehe 7.5.3. des TPL5111 Datenblatts). Allerdings möchte ich das Modul nicht so lange eingeschaltet lassen, weil dann der Akku leer ist. Wenn die Softwarelösung (siehe oben) das Modul nicht abschaltet oder die Update-Meldung das Modul unbeabsichtigt in den Update-Modus versetzt, bleibt das Modul lange eingeschaltet.

Daher ist es besser, einen kleineren Widerstand zwischen DELAY/M_DRV und GND des TPL5111 zu verwenden, damit das Modul nach kurzer Zeit ausgeschaltet wird, zB ein 50K-Widerstand, was eine Einschaltzeit von 7 Minuten ergibt.

Empfohlen: