Inhoudsopgave:

Batterij-aangedreven deursensor met integratie van domotica, WiFi en ESP-NOW - Ajarnpa
Batterij-aangedreven deursensor met integratie van domotica, WiFi en ESP-NOW - Ajarnpa

Video: Batterij-aangedreven deursensor met integratie van domotica, WiFi en ESP-NOW - Ajarnpa

Video: Batterij-aangedreven deursensor met integratie van domotica, WiFi en ESP-NOW - Ajarnpa
Video: Voet energy solutions emissieloos boren aangedreven door batterijen 2024, November
Anonim
Image
Image

In deze instructable laat ik je zien hoe ik een deursensor op batterijen heb gemaakt met integratie van domotica. Ik heb nog wat andere leuke sensoren en alarmsystemen gezien, maar ik wilde er zelf een maken.

Mijn doelen:

  • Een sensor die het openen van een deur snel detecteert en meldt (<5 seconden)
  • Een sensor die het sluiten van de deur detecteert
  • Een sensor die op batterijen werkt en een paar maanden op een batterij werkt

De hardware en software is geïnspireerd op:

  • Het trigboard van Kevin Darrah (TPL5111 en TPS73733).
  • Deze video

Ik heb een sensor gemaakt voor mijn voordeur en mijn achterdeur. Het enige verschil is de led-positie en de externe stroomschakelaar (op achterdeursensor).

Tijdens de ontwikkeling heb ik verschillende verbeteringen aangebracht in hard- en software, dit is te zien op de foto's.

Benodigdheden

Ik kocht de elektronische componenten van Aliexpress, de belangrijkste onderdelen:

  • LiPo-batterij
  • TPS73733 LDO
  • TPL5111
  • Reed-schakelaar
  • P-kanaal mosfet: IRLML6401TRPBF
  • Magneet
  • PCB-adapterplaat voor SMD-componenten en andere.

Stap 1: Hardware - Circuit

Hardware - Circuit
Hardware - Circuit
Hardware - Circuit
Hardware - Circuit
Hardware - Circuit
Hardware - Circuit

Zie de bijgevoegde schema's voor het circuit. Ik heb de SMD-onderdelen op een adapter-PCB-plaat gesoldeerd en alle componenten op een dubbelzijdig geperforeerd bord gesoldeerd. Ik heb de ESP-01 aangesloten via vrouwelijke headers, zodat ik hem kon verwijderen om hem te programmeren via de adapter die wordt weergegeven in stap 3 van deze Instructable.

De schakeling werkt als volgt:

  • Wanneer de deur wordt geopend, ontvangt de TPL5111 een schot op de DELAY/M_DRV-pin en schakelt de TPS73733 LDO in die de ESP-01 aandrijft. Voor deze operatie moet de EN/ONE_SHOT laag worden getrokken, zie de datasheet van de TPL5111.
  • Nadat het programma is uitgevoerd (zie stap Software), stuurt de ESP-01 een Done-signaal naar de TPL5111 die vervolgens de TPS73733 uitschakelt, wat resulteert in een zeer lage energiestatus voor de TPL5111 en de TPS73733.

Ik gebruik reed-schakelaars met zowel NO- als NC-aansluitingen. Ik heb de NC-kabel aangesloten, omdat de reed-schakelaar het circuit moet sluiten wanneer de magneet wordt verwijderd (deur open) en openen wanneer de magneet in de buurt is (deur gesloten).

Voor de achterdeursensor heb ik wat condensatoren en weerstanden toegevoegd toen ik wat instabiliteiten ontdekte, maar de instabiliteit werd veroorzaakt door de software (esp_now_init) zoals ik later ontdekte.

Stap 2: Hardware - Behuizing

Hardware - Behuizing
Hardware - Behuizing
Hardware - Behuizing
Hardware - Behuizing
Hardware - Behuizing
Hardware - Behuizing

Ik ontwierp de behuizing in Autodesk Fusion360, geïnspireerd op deze video van 'de man met het zwitserse accent'.

De STL-bestanden van de drie delen:

  • Doos
  • Deksel
  • Magneet houder

worden gepubliceerd op mijn Thingiverse-pagina.

Stap 3: Software

Software
Software

Het programma staat in mijn Github.

Het verloop van het programma wordt weergegeven in de afbeelding. Zie mijn andere Instructable voor de uitleg van hoe ik ESP-NOW gebruik.

Wanneer de module wordt ingeschakeld, probeert deze eerst het 'OPEN'-bericht te verzenden via ESP-NOW. Lukt dit niet, dan schakelt hij over naar een wifi- en MQTT-verbinding.

Ik kwam erachter dat, althans in mijn setup, het 'CLOSED'-bericht niet succesvol via ESP-NOW werd verzonden, dus ik heb dit uit het programma verwijderd en alleen WiFi en MQTT gebruikt.

Gedurende de tijd dat de deur wordt geopend en de module wacht tot de deur sluit, gebruikt deze deze tijd om verbinding te maken met WiFi en MQTT, dus wanneer de deur gesloten is, hoeft deze alleen de gemeten spanning en een DICHT-bericht te verzenden en dan het gaat direct slapen.

Het programma controleert of het gesloten bericht door de ontvanger wordt ontvangen via het beluisteren van een MQTT-bericht over het juiste onderwerp.

Stap 4: Domotica en Telegram

Domotica en Telegram
Domotica en Telegram
Domotica en Telegram
Domotica en Telegram
Domotica en Telegram
Domotica en Telegram

Mijn deursensoren communiceren met mijn Openhab Home Automation op mijn Raspberry Pi Zero.

Belangrijkste toepassingen:

  • Lees de toestand van de deur af: OPEN of DICHT.
  • Alarmeer mij via telegram als een deur wordt geopend (Als het alarm is ingeschakeld of de monitorfunctie is ingeschakeld).
  • Lees de laatste keer dat een deur werd geopend of gesloten.
  • Tel het aantal openingen dat een deursensor aankan voordat de batterij leeg is.

Als we bijvoorbeeld op vakantie zijn en de buurman komt de plantjes water geven, krijg ik een melding. Zie de video in de inleiding.

Mijn Openhab-items, regels en sitemapbestanden staan in mijn Github. In deze bestanden zie je ook mijn deursensor van de schuur, die gebruik maakt van een gewone bedrade reed-schakelaar en een klein contact (eind)schakelaar van een 3D-printer in de slotopening (zie de foto's).

Hier wordt beschreven hoe u de Telegram-actie in Openhab kunt gebruiken.

Stap 5: Verbeteringen en verdere verbeteringen

Verbeteringen en verdere verbeteringen
Verbeteringen en verdere verbeteringen
Verbeteringen en verdere verbeteringen
Verbeteringen en verdere verbeteringen

In de afgelopen maanden heb ik de volgende verbetering doorgevoerd.

Lange deuropeningen afhandelen via een zelfschakelend pulssignaal

In de zomer laten we de achterdeur een paar uur open staan als we thuis zijn. De draaiende ESP-01 met een wifi-verbinding zou dan de batterij onnodig leegtrekken. Daarom heb ik een aan/uit schakelaar meegeleverd om de module in deze situaties uit te kunnen zetten.

Dit resulteerde echter soms in een permanent uitgeschakelde module (als ik hem vergat aan te zetten) en een lege batterij na een paar middagen van een geopende deur en een draaiende module (toen ik vergat hem uit te schakelen).

Daarom wilde ik de module via de software kunnen uitschakelen nadat de module een vooraf gedefinieerde tijd (1 minuut) aan heeft gestaan.

Echter, waar de ‘KLAAR’ puls van de ESP-01 de TPL5111 uitschakelde bij het sluiten van de deur, kwam ik erachter dat de TPL5111 niet werd uitgeschakeld door een ‘KLAAR’ puls terwijl de DELAY/M_DRV pin HOOG was. Dit HIGH-signaal op de DELAY/M_DRV-pin werd veroorzaakt door de geopende deur en het NC-contact van de reed-schakelaar aangesloten op de accuspanning.

Het signaal naar de DELAY/M_DRV-pin mag dus niet continu HOOG zijn, maar moet gepulseerd zijn. In de TPL5111 datasheet kun je vinden dat het een puls van > 20 ms moet zijn. Dit zelfschakelend signaal heb ik gemaakt via een P-kanaal mosfet, een condensator en een 10K en 300K weerstand, zie het bijgevoegde schema.

Het werkt als volgt:

  • Als het NC-contact van de reed-schakelaar gesloten is, is de Gate LAAG en staat de Mosfet AAN, wat resulteert in een HOOG signaal op de DELAY/M_DRV-pin die de module activeert.
  • De condensator wordt snel opgeladen, wat resulteert in een stijgende spanning op de Gate.
  • Na ongeveer 20 ms is de spanning op de Gate 97% van de accuspanning (300K/(300K+10K) wat HOOG is en wordt de Mosfet uitgeschakeld, wat resulteert in een LAAG signaal op de DELAY/M_DRV-pin.
  • Wanneer de DELAY/M_DRV-pin LAAG is, resulteert het DONE-signaal van de ESP-01 in een uitschakeling van de module.

Dit is geïmplementeerd in de software; een while-loop controleert niet alleen of de deur nog open staat, maar controleert ook of de module niet te lang aanstaat. Als het te lang wordt ingeschakeld, wordt een NULL-waarde gepubliceerd (ongedefinieerde status van de deur). In dit geval weet ik niet of de deur open of gesloten is en bereik ik niet alle doelen die in de intro worden genoemd, maar de levensduur van de batterij is belangrijker en meestal openen we de deur later die dag weer, wat resulteert in een bevestigde gesloten toestand van de deur.

Het is belangrijk om een P-kanaal Mosfet te gebruiken die geschikt is voor het hier gebruikte spanningsbereik. De Mosfet moet volledig aan staan bij een VGS van ongeveer -3,8V en helemaal uit bij een VGS van ongeveer -0,2 V. Ik heb verschillende Mosfets geprobeerd en kwam erachter dat een IRLML6401TRPBF hiervoor prima werkt in combinatie met de 10K en 300K weerstanden. Een condensator van 1 uF werkt prima om een pulslengte van ongeveer 20 ms te krijgen. Een grotere condensator resulteert in een langere puls, wat niet nodig is, aangezien de TPL5111 is geactiveerd. Ik gebruikte mijn DSO150-oscilloscoop om de spanningen en de pulslengte te controleren.

Geplande verbetering: OTA-update

Ik ben van plan een OTA-update op te nemen via de volgende procedure, die al gedeeltelijk in de huidige software zit

  • Via Openhab van NodeRed publiceer ik een behouden 'update' bericht en een 'update topic'.
  • Als de module is ingeschakeld en is verbonden met de MQTT-server en is geabonneerd op het 'update-onderwerp', ontvangt deze het updatebericht.
  • Het updatebericht voorkomt dat de module uitschakelt en start de
  • Via de website van de HTTPUpdateServer kun je de software updaten.
  • Via Openhab van NodeRed publiceer ik een behouden 'leeg' bericht en een 'update topic'.

Geplande verbetering: hardware-uitschakeling na een vooraf bepaalde tijd

In het huidige schema gebruik ik een weerstand van 200K tussen de DELAY/M_DRV en GND van de TPL5111. Hierdoor wordt de module langer dan 2 uur ingeschakeld (zie 7.5.3. van de TPL5111 datasheet). Ik wil echter niet dat de module zo lang aan staat, omdat de batterij dan leeg is. Als de software-oplossing (zie hierboven) de module niet uitschakelt, of de update-melding onbedoeld de module in de update-modus zet, blijft de module lange tijd ingeschakeld.

Daarom is het beter om een kleinere weerstand te gebruiken tussen de DELAY/M_DRV en GND van de TPL5111, zodat de module na korte tijd wordt uitgeschakeld, bijvoorbeeld een weerstand van 50K wat resulteert in een aan-tijd van 7 minuten.

Aanbevolen: