Table des matières:

Capteur de porte à piles avec intégration domotique, WiFi et ESP-NOW : 5 étapes (avec photos)
Capteur de porte à piles avec intégration domotique, WiFi et ESP-NOW : 5 étapes (avec photos)

Vidéo: Capteur de porte à piles avec intégration domotique, WiFi et ESP-NOW : 5 étapes (avec photos)

Vidéo: Capteur de porte à piles avec intégration domotique, WiFi et ESP-NOW : 5 étapes (avec photos)
Vidéo: Test d'un capteur d'ouverture de porte Zigbee pas cher à moins de 9€ 2024, Juillet
Anonim
Image
Image

Dans ce instructable je vous montre comment j'ai fait un capteur de porte alimenté par batterie avec intégration domotique. J'ai vu d'autres capteurs et systèmes d'alarme sympas, mais je voulais en fabriquer un moi-même.

Mes objectifs:

  • Un capteur qui détecte et signale une ouverture de porte rapide (<5 secondes)
  • Un capteur qui détecte la fermeture de la porte
  • Un capteur qui fonctionne sur batterie et fonctionne pendant quelques mois sur batterie

Le matériel et le logiciel sont inspirés de

  • Le trigboard de Kevin Darrah (TPL5111 et TPS73733).
  • Cette vidéo

J'ai fait un capteur pour ma porte d'entrée et ma porte arrière. La seule différence est la position de la led et l'interrupteur d'alimentation externe (sur le capteur de porte dérobée).

J'ai apporté plusieurs améliorations au cours du développement matériel et logiciel, cela se voit sur les photos.

Fournitures

J'ai acheté les composants électroniques chez Aliexpress, les pièces principales:

  • batterie LiPo
  • TPS73733 LDO
  • TPL5111
  • Interrupteur à lames
  • Mosfet du canal P: IRLML6401TRPBF
  • Aimant
  • Plaque d'adaptation PCB pour composants SMD et autre.

Étape 1: Matériel - Circuit

Matériel - Circuit
Matériel - Circuit
Matériel - Circuit
Matériel - Circuit
Matériel - Circuit
Matériel - Circuit

Voir les schémas ci-joints pour le circuit. J'ai soudé les pièces SMD sur une plaque de carte PCB adaptatrice et soudé tous les composants sur une carte perforée double face. J'ai connecté l'ESP-01 via des en-têtes femelles, afin que je puisse le retirer pour le programmer via l'adaptateur illustré à l'étape 3 de ce Instructable.

Le circuit fonctionne comme suit:

  • Lorsque la porte est ouverte, le TPL5111 reçoit un tir sur la broche DELAY/M_DRV et active le LDO TPS73733 qui alimente l'ESP-01. Pour cette opération, le EN/ONE_SHOT doit être tiré vers le bas, Voir la fiche technique du TPL5111.
  • Une fois le programme exécuté (voir l'étape Logiciel), l'ESP-01 envoie un signal Terminé au TPL5111 qui désactive ensuite le TPS73733, ce qui entraîne un état de très faible puissance pour le TPL5111 et le TPS73733.

J'utilise des commutateurs à lames avec des connexions NO et NC. J'ai connecté le fil NC, car le commutateur à lames doit fermer le circuit lorsque l'aimant est retiré (porte ouverte) et s'ouvrir lorsque l'aimant est proche (porte fermée).

Pour le capteur de porte dérobée, j'ai ajouté des condensateurs et des résistances lorsque j'ai découvert des instabilités, mais l'instabilité a été causée par le logiciel (esp_now_init) comme je l'ai découvert plus tard.

Étape 2: Matériel - Boîtier

Quincaillerie - Boîtier
Quincaillerie - Boîtier
Quincaillerie - Boîtier
Quincaillerie - Boîtier
Quincaillerie - Boîtier
Quincaillerie - Boîtier

J'ai conçu le boîtier dans Autodesk Fusion360, inspiré par cette vidéo de « le gars à l'accent suisse ».

Les fichiers STL des trois parties:

  • Boîte
  • Couvercle
  • Support d'aimant

sont publiés sur ma page Thingiverse.

Étape 3: Logiciel

Logiciel
Logiciel

Le programme est dans mon Github.

Le déroulement du programme est montré dans l'image. Voir mon autre Instructable pour l'explication de la façon dont j'utilise ESP-NOW.

Lorsque le module est sous tension, il essaie d'abord d'envoyer le message 'OPEN' via ESP-NOW. Si cela ne réussit pas, il bascule vers une connexion WiFi et MQTT.

J'ai découvert que, au moins dans ma configuration, le message "FERMÉ" n'avait pas été envoyé avec succès via ESP-NOW, alors je l'ai supprimé du programme et n'utilise que le WiFi et MQTT.

Pendant le temps que la porte est ouverte et que le module attend que la porte se ferme, il utilise ce temps pour se connecter au WiFi et au MQTT, donc lorsque la porte est fermée, il n'a qu'à envoyer la tension mesurée et un message CLOSED puis il s'endort directement.

Le programme vérifie si le message fermé est reçu par le récepteur via une écoute d'un message MQTT sur le bon sujet.

Étape 4: Domotique et télégramme

Domotique et télégramme
Domotique et télégramme
Domotique et télégramme
Domotique et télégramme
Domotique et télégramme
Domotique et télégramme

Mes capteurs de porte communiquent avec mon Openhab Home Automation sur mon Raspberry Pi Zero.

Principales applications:

  • Lire l'état de la porte: OUVERTE ou FERMEE.
  • Me prévenir par télégramme si une porte est ouverte (si l'alarme est activée ou si la fonction de surveillance est activée).
  • Lire la dernière fois qu'une porte a été ouverte ou fermée.
  • Comptez le nombre d'ouvertures qu'un capteur de porte peut gérer avant que la batterie ne s'épuise.

Par exemple, si nous sommes en vacances et que le voisin vient arroser les plantes, je reçois un message. Voir la vidéo dans l'intro.

Mes éléments, règles et fichiers de plan de site Openhab sont dans mon Github. Dans ces fichiers, vous pouvez également voir mon capteur de porte du hangar, qui utilise un interrupteur à lames filaire ordinaire et un petit interrupteur de contact (fin) d'une imprimante 3D dans l'ouverture de la serrure (voir les photos).

Comment utiliser l'action Telegram dans Openhab est décrit ici.

Étape 5: Améliorations et améliorations supplémentaires

Améliorations et améliorations supplémentaires
Améliorations et améliorations supplémentaires
Améliorations et améliorations supplémentaires
Améliorations et améliorations supplémentaires

Au cours des derniers mois, j'ai apporté l'amélioration suivante.

Gérer les longues ouvertures de porte via un signal d'impulsion à commutation automatique

En été, nous laissons la porte dérobée ouverte pendant quelques heures lorsque nous sommes à la maison. L'ESP-01 en cours d'exécution avec une connexion WiFi viderait alors inutilement la batterie. C'est pourquoi j'ai inclus un interrupteur marche/arrêt pour pouvoir éteindre le module dans ces situations.

Cependant, cela a parfois entraîné un module éteint en permanence (lorsque j'ai oublié de l'allumer) et une batterie épuisée après quelques après-midi d'une porte ouverte et d'un module en marche (lorsque j'ai oublié de l'éteindre).

Par conséquent, je voulais pouvoir éteindre le module via le logiciel après que le module ait été allumé pendant une durée prédéfinie (1 minute).

Cependant, lorsque l'impulsion « DONE » de l'ESP-01 a éteint le TPL5111 lorsque la porte était fermée, j'ai découvert que le TPL5111 n'était pas éteint par une impulsion « DONE » alors que la broche DELAY/M_DRV était HIGH. Ce signal HAUT sur la broche DELAY/M_DRV a été causé par la porte ouverte et le contact NC du commutateur Reed connecté à la tension de la batterie.

Ainsi, le signal vers la broche DELAY/M_DRV ne doit pas être continuellement HAUT, mais doit être pulsé. Dans la fiche technique du TPL5111, vous pouvez constater qu'il doit s'agir d'une impulsion > 20 ms. J'ai créé ce signal à commutation automatique via un mosfet à canal P, un condensateur et une résistance de 10K et 300K, voir le schéma inclus.

Cela fonctionne comme suit:

  • Si le contact NC du commutateur Reed est fermé, la porte est LOW et le Mosfet est allumé, ce qui entraîne un signal HIGH sur la broche DELAY/M_DRV qui active le module.
  • Le condensateur est rapidement chargé, ce qui entraîne une augmentation de la tension sur la porte.
  • Après environ 20 ms, la tension sur le Gate est de 97% de la tension de la batterie (300K/(300K+10K) qui est HAUTE et le Mosfet est éteint, ce qui entraîne un signal BAS sur la broche DELAY/M_DRV.
  • Lorsque la broche DELAY/M_DRV est LOW, le signal DONE de l'ESP-01 entraîne un arrêt du module.

Ceci est implémenté dans le logiciel; une boucle while vérifie non seulement si la porte est toujours ouverte, mais aussi si le module n'est pas allumé trop longtemps. S'il est allumé trop longtemps, il publie une valeur NULL (état indéfini de la porte). Dans ce cas, je ne sais pas si la porte est ouverte ou fermée et je n'atteigne pas tous les objectifs mentionnés dans l'intro, mais la durée de vie de la batterie est plus importante et la plupart du temps, nous ouvrons à nouveau la porte plus tard dans la journée, ce qui entraîne un état fermé confirmé de la porte.

Il est important d'utiliser un Mosfet à canal P adapté à la plage de tension utilisée ici. Le Mosfet doit être complètement allumé à un VGS d'environ - 3,8 V et complètement éteint à un VGS d'environ -0,2 V. J'ai essayé plusieurs Mosfets et j'ai découvert qu'un IRLML6401TRPBF fonctionnait bien pour cet objectif en combinaison avec les résistances 10K et 300K. Un condensateur de 1 uF fonctionne très bien pour obtenir une longueur d'impulsion d'environ 20 ms. Un condensateur plus grand entraîne une impulsion plus longue, ce qui n'est pas nécessaire, puisque le TPL5111 a été activé. J'ai utilisé mon oscilloscope DSO150 pour vérifier les tensions et la longueur d'impulsion.

Amélioration prévue: mise à jour OTA

J'envisage d'intégrer une mise à jour OTA via la procédure suivante, qui est déjà en partie incluse dans le logiciel actuel

  • Via Openhab de NodeRed, je publie un message de « mise à jour » conservé et un « sujet de mise à jour ».
  • Si le module est allumé et connecté au serveur MQTT et abonné au 'sujet de mise à jour', il reçoit le message de mise à jour.
  • Le message de mise à jour empêchera le module de s'éteindre et démarrera le
  • Via le site Web du HTTPUpdateServer, vous pouvez mettre à jour le logiciel.
  • Via Openhab de NodeRed, je publie un message "vide" conservé et un "sujet de mise à jour".

Amélioration prévue: arrêt du matériel après un temps prédéfini

Dans le schéma actuel, j'utilise une résistance de 200K entre le DELAY/M_DRV et GND du TPL5111. Ceci allume le module pendant plus de 2 heures (voir 7.5.3. de la fiche technique TPL5111). Cependant, je ne veux pas que le module soit allumé aussi longtemps, car la batterie est alors épuisée. Si la solution logicielle (voir ci-dessus) ne parvient pas à éteindre le module, ou si le message de mise à jour met involontairement le module en mode de mise à jour, le module reste allumé pendant une longue période.

Par conséquent, il est préférable d'utiliser une résistance plus petite entre le DELAY/M_DRV et GND du TPL5111, afin que le module soit mis hors tension après un court laps de temps, par exemple une résistance de 50K résultant en un temps d'activation de 7 minutes.

Conseillé: