Table des matières:
- Fournitures
- Étape 1: Schémas et code source
- Etape 2: Fonctionnement du Circuit
- Étape 3: Bilan de santé
- Étape 4: Mesures de puissance et durée de vie de la batterie
- Étape 5: Améliorations futures
Vidéo: Capteur de porte sans fil - Ultra faible puissance : 5 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:05
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
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é:
Robot Arduino sans fil utilisant le module sans fil HC12 : 7 étapes
Robot Arduino sans fil utilisant le module sans fil HC12 : Salut les gars, bon retour. Dans mon article précédent, j'ai expliqué ce qu'est un circuit de pont en H, un circuit intégré de pilote de moteur L293D, un circuit de pilote de moteur L293D superposé pour piloter des pilotes de moteur à courant élevé et comment vous pouvez concevoir et fabriquer votre propre carte de pilote de moteur L293D
LEIDS - Capteur de porte IOT à faible consommation d'énergie : 8 étapes (avec photos)
LEIDS - Capteur de porte IOT à faible consommation d'énergie : qu'est-ce que LEIDS ? LEIDS est un capteur IOT basé sur l'ESP8266. Ce capteur utilise cette carte, un circuit de verrouillage souple, un interrupteur à lames et quelques aimants pour créer un capteur de porte qui vous enverra une alerte lorsque votre porte s'ouvre et se ferme
Point d'accès sans fil de 50 mètres de portée avec adaptateur sans fil USB TP Link WN7200ND sur Raspbian Stretch: 6 étapes
Point d'accès sans fil de 50 mètres de portée avec adaptateur sans fil USB TP Link WN7200ND sur Raspbian Stretch : Raspberry Pi est idéal pour créer des points d'accès sans fil sécurisés mais il n'a pas une bonne portée, j'ai utilisé un adaptateur sans fil USB TP Link WN7200ND pour l'étendre. Je veux partager comment le fairePourquoi est-ce que je veux utiliser un Raspberry Pi au lieu d'un routeur ?T
Système DIY de micro sans fil pour guitare sans fil : 4 étapes
DIY Wireless Mic to Wireless Guitar System: J'ai regardé des vidéos et des groupes et presque tous utilisent un système sans fil à la guitare. Devenir fou, bouger, marcher et faire ce qu'ils veulent sans le cordon alors je rêve d'en avoir un.. Mais.. pour moi maintenant c'est trop cher alors je suis arrivé à ça
Pirater une sonnette sans fil dans un interrupteur d'alarme sans fil ou un interrupteur marche/arrêt : 4 étapes
Piratage d'une sonnette sans fil dans un interrupteur d'alarme sans fil ou un interrupteur marche/arrêt : j'ai récemment construit un système d'alarme et je l'ai installé dans ma maison. J'ai utilisé des interrupteurs magnétiques sur les portes et les ai câblés à travers le grenier. Les fenêtres étaient une autre histoire et leur câblage n'était pas une option. J'avais besoin d'une solution sans fil et c'est