Table des matières:

Capteur de porte sans fil - Ultra faible puissance : 5 étapes
Capteur de porte sans fil - Ultra faible puissance : 5 étapes

Vidéo: Capteur de porte sans fil - Ultra faible puissance : 5 étapes

Vidéo: Capteur de porte sans fil - Ultra faible puissance : 5 étapes
Vidéo: Antenne wifi puissante portée 200m & répéteur - extérieur - 2,4 ET 5 GHZ - [PEARLTV.FR] 2024, Novembre
Anonim
Capteur de porte sans fil - Ultra faible puissance
Capteur de porte sans fil - Ultra faible puissance
Capteur de porte sans fil - Ultra faible puissance
Capteur de porte sans fil - Ultra faible puissance
Capteur de porte sans fil - Ultra faible puissance
Capteur de porte sans fil - Ultra faible puissance
Capteur de porte sans fil - Ultra faible puissance
Capteur de porte sans fil - Ultra faible puissance

Encore un autre capteur de porte !! Eh bien, la motivation pour moi de créer ce capteur était que beaucoup de ceux que j'ai vus sur Internet avaient une limitation ou une autre. Certains des objectifs du capteur pour moi sont:

1. Le capteur doit être très rapide - de préférence moins de 5 secondes

2. Le capteur devrait fonctionner avec une batterie Li-ion de 3,7 V car j'en ai des dizaines qui traînent

3. Le capteur doit fonctionner pendant plusieurs mois avec une seule charge de la batterie. Il devrait consommer < 10uA en mode veille

4. Le capteur doit pouvoir se réveiller pour transmettre des données critiques telles que l'état de la batterie, même lorsque la porte n'est pas actionnée pendant une longue période.

5. Le capteur doit transmettre des données à un sujet MQTT lorsque la porte est ouverte ainsi que lorsque la porte est fermée

6. Le capteur doit consommer la même quantité d'énergie quel que soit l'état de la porte

Fonctionnement du capteur:

Le capteur a 2 contrôleurs principaux. Le premier est le minuscule microcontrôleur ATiny 13A. Le second est l'ESP qui est généralement en mode veille et ne se réveille que lorsque l'ATiny l'active. L'ensemble du circuit peut également être réalisé uniquement par l'ESP en l'utilisant en mode veille, mais le courant qu'il consomme est bien supérieur à celui nécessaire pour qu'une batterie dure des mois, donc l'ATTiny vient à la rescousse. Il sert uniquement à se réveiller toutes les N secondes, à rechercher un événement de porte ou un événement de contrôle de santé, s'il y en a un, il maintient la broche CH_PD de l'ESP à HAUT et envoie le signal approprié du type d'événement à l'ESP. Son rôle s'arrête là.

L'ESP prend alors le relais, lit le type de signal, se connecte au WiFi/MQTT, publie les messages requis, y compris le niveau de la batterie, puis s'éteint en ramenant la broche EN sur LOW.

En utilisant ces puces de cette façon, je profite du faible courant de veille de l'ATtiny et du courant de repos nul de l'ESP lorsque la puce est désactivée via la broche CH_PD.

Fournitures

Pré-requis:

- Connaissance de la programmation d'un ATTiny & ESP 01

- Connaissance des composants de soudure sur un PCB

ESP-01 (ou n'importe quel ESP)

ATTiny 13A - AVR

LDO 7333-A - Régulateur de tension à faible chute

Résistances - 1K, 10K, 3K3

Condensateurs: 100 uF, 0,1 uF

Interrupteur à bouton-poussoir, micro interrupteur marche/arrêt - (tous deux en option)

Diode - IN4148 (ou tout équivalent)

Batterie Li-ion

Interrupteur à lames

Une mallette pour tout ranger

Soudure, PCB etc.

Étape 1: Schémas et code source

Schémas et code source
Schémas et code source

Le schéma est conforme au schéma ci-joint.

J'ai inclus un MOSFET canal P pour la protection contre l'inversion de polarité. Si vous n'en avez pas besoin, vous pouvez l'omettre. Tout MOSFET à canal P avec un faible Rds ON fera l'affaire.

À l'heure actuelle, l'ESP n'a pas la capacité de l'OTA, mais c'est pour une amélioration future.

Code source smart-door-sensor

Etape 2: Fonctionnement du Circuit

ATTiny Flux de travail

La magie se produit ici dans la façon dont l'ATTiny surveille la position de l'interrupteur de porte.

L'option normale serait d'attacher une résistance de rappel au commutateur et de continuer à surveiller son état. Cela a l'inconvénient d'un courant constant consommé par la résistance de rappel. La façon dont cela a été évité ici est que j'ai utilisé deux broches pour surveiller le commutateur plutôt qu'une. J'ai utilisé PB3 et PB4 ici. PB3 est défini comme entrée et PB4 comme sortie avec un INPUT_PULLUP interne sur PB3. Normalement, PB4 est maintenu HAUT lorsque ATtiny est en mode veille. Cela garantit qu'il n'y a pas de flux de courant à travers la résistance de rappel d'entrée, quelle que soit la position du commutateur à lames. c'est à dire. Si l'interrupteur est fermé, les deux PB3 et PB4 sont HAUT et donc aucun courant ne circule entre eux. Si l'interrupteur est ouvert, il n'y a pas de chemin entre eux et le courant est donc nul. Lorsque l'ATtiny se réveille, il écrit un LOW sur PB4 puis vérifie l'état de PB3. Si PB3 est HAUT, alors le commutateur à lames est OUVERT, sinon il est FERMÉ. Il réécrit ensuite un HIGH sur PB4.

La communication entre l'ATtiny et l'ESP se fait via deux broches PB1 / PB2 connectées au Tx/RX de l'ESP. J'ai défini le signal comme

PB1 PB2 ====== Tx Rx

0 0 ====== WAKE_UP (contrôle de santé)

0 1 ====== CAPTEUR_OUVERT

1 0 ====== CAPTEUR_FERME

1 1 ====== NON UTILISÉ

En plus d'envoyer le signal à l'ESP, il envoie également une impulsion HAUTE sur PB0 qui est connectée à la broche ESP CH_PD. Cela réveille l'ESP. La première chose que fait ESP est de maintenir GPIO0 HIGH qui est connecté à CH_PD assurant ainsi sa mise sous tension même si l'ATTiny enlève le PB0 HIGH. Le contrôle appartient maintenant à l'ESP pour déterminer quand il veut s'éteindre.

Il se connecte ensuite au WiFi, MQTT, publie le message et s'éteint en écrivant LOW sur GPIO0.

ESP 01 Flux de travail:

Le flux ESP est simple. Il se réveille et lit les valeurs des broches Tx/Rx pour déterminer le type de message à publier. Se connecte au WiFi et à MQTT, publie le message et s'éteint.

Avant de s'éteindre, il vérifie à nouveau les valeurs des broches d'entrée pour voir si elles ont changé depuis la dernière lecture. Il s'agit de s'occuper d'une ouverture et d'une fermeture rapides de la porte. Si vous n'avez pas ce contrôle, dans certains cas, vous risquez de manquer la fermeture de la porte si elle est fermée dans les 5 à 6 secondes suivant l'ouverture. Un scénario pratique d'ouverture et de fermeture de la porte dans les 2 secondes environ est bien capturé par la boucle while qui continue d'afficher les messages tant que l'état actuel de la porte est différent du précédent. Le seul scénario qu'il peut manquer pour enregistrer tous les événements d'ouverture/fermeture est lorsque la porte est ouverte/fermée à plusieurs reprises dans une fenêtre de 4 à 5 secondes, ce qui est un cas très improbable - probablement le cas d'un enfant jouant avec la porte.

Étape 3: Bilan de santé

J'avais également besoin d'un moyen d'avoir un message de contrôle de santé de l'ESP où il envoie également le niveau de la batterie de l'ESP pour s'assurer que le capteur fonctionne correctement sans inspection manuelle. Pour cela, l'ATTiny envoie un signal WAKE_UP toutes les 12 heures. Il peut être configuré via la variable WAKEUP_COUNT dans le code ATtiny. Ceci est très utile pour les portes ou les fenêtres qui sont rarement ouvertes et vous ne pouvez donc pas savoir si quelque chose ne va pas avec le capteur ou sa batterie.

Si vous n'avez pas besoin de la fonctionnalité de vérification de l'état de santé, le concept d'utilisation de l'ATTiny n'est pas nécessaire. Dans ce cas, vous pouvez trouver d'autres conceptions créées par des personnes où l'alimentation de l'ESP est alimentée via un MOSFET et vous pouvez ainsi obtenir une consommation de courant nulle lorsque la porte n'est pas actionnée. Il y a d'autres choses à prendre en compte, comme le tirage actuel pour qu'il soit le même en position d'ouverture et de fermeture de la porte - pour cela, j'ai vu quelque part une conception qui utilisait un interrupteur à lames à 3 états au lieu des 2 états habituels.

Étape 4: Mesures de puissance et durée de vie de la batterie

J'ai mesuré la consommation de courant du circuit et cela prend environ 30 uA en dormant et dans les environs. D'après les fiches techniques d'ATTiny, il devrait être d'environ 1 à 4 uA pour l'ensemble du circuit, y compris le courant de repos du LDO, mais mes mesures indiquent alors 30. Le MOSFET et le LDO consomment un courant insignifiant.

Ainsi, une batterie de 800 mAh devrait durer longtemps. Je n'ai pas de statistiques exactes, mais je l'utilise sur 2 de mes portes depuis plus d'un an maintenant et chaque cellule 18650 avec environ 800 mAH dure environ 5 à 6 mois sur ma porte principale qui s'ouvre et se ferme à au moins 30 fois par jour. Celui de la porte du toit qui ne s'ouvre que quelques fois par semaine, il dure 7-8 mois.

Étape 5: Améliorations futures

1. L'ESP n'accuse pas réception du message MQTT. Le programme peut être amélioré en s'abonnant à la rubrique où il publie le message pour confirmer la livraison ou une bibliothèque Async MQTT peut être utilisée pour publier un message avec QoS 1.

2. Mise à jour OTA: Le code ESP peut être modifié pour lire un sujet MQTT pour une mise à jour et ainsi entrer en mode OTA pour recevoir un fichier.

3. L'ESP01 peut être remplacé par l'ESP-12 pour accéder à plus de codes PIN d'entrée et ainsi attacher plus de capteurs au même. Dans ce cas, la communication via la méthode 2 bits n'est pas possible. Cela peut ensuite être amélioré pour mettre en œuvre la communication I2C entre ATtiny et ESP. C'est un peu compliqué mais faisable. Je le fais fonctionner dans une autre configuration où un ATTiny envoie des valeurs d'encodeur rotatif à l'ESP via la ligne I2C.

4. Le circuit de courant surveille le Vcc interne de l'ESP. Si nous utilisons l'ESP12, cela peut être modifié pour lire le niveau réel de la batterie via la broche ADC.

5. À l'avenir, je publierai également une modification de ce qui peut être utilisé comme un capteur autonome sans avoir besoin d'un MQTT ou d'un système domotique. Le capteur fonctionnera de manière autonome et peut passer un appel téléphonique lorsqu'il est déclenché - bien sûr, il a besoin d'une connexion Internet pour cela.

6. Et la liste continue…

7. Protection inversée de la batterie - FAIT (les images réelles de l'appareil sont anciennes et ne reflètent donc pas le MOSFET)

Conseillé: