Table des matières:

Capteur de mouvement ESP-01 avec sommeil profond : 5 étapes
Capteur de mouvement ESP-01 avec sommeil profond : 5 étapes

Vidéo: Capteur de mouvement ESP-01 avec sommeil profond : 5 étapes

Vidéo: Capteur de mouvement ESP-01 avec sommeil profond : 5 étapes
Vidéo: [CES14] : Bonifiez votre sommeil avec « Aura » de Withings 2024, Novembre
Anonim
Image
Image

J'ai travaillé sur la fabrication de détecteurs de mouvement maison qui envoient un message électronique lorsqu'ils sont déclenchés. Il existe de nombreux exemples d'instructables et d'autres exemples de le faire. J'ai récemment eu besoin de le faire avec un capteur de mouvement PIR à piles et un ESP-01. L'ESP-01 est très fonctionnel et possède toutes les capacités requises alors pourquoi ne pas utiliser le minimum et le moins cher nécessaire ? Un autre module ESP-01 séparé et distant a été ajouté au mélange qui a déclenché une sonnerie lorsque le capteur de mouvement a été déclenché.

Le code et la disposition éventuelle du circuit ont été collectés à partir de nombreuses sources sur le Web et je ne pense pas pouvoir les identifier spécifiquement. L'idée d'envoyer des e-mails via gmail est venue d'une source instructable et d'autres sources et le code final est un amalgame de ces sources. Obtenir un sommeil profond pour travailler m'a conduit sur de nombreux chemins qui se sont souvent révélés infructueux. Ce qui est amusant, c'est qu'une fois qu'un chemin s'avère fructueux, vous arrêtez de chercher d'autres chemins. Je dis donc merci à tous ceux qui ont contribué à ma réussite et qui sont encore inconnus.

J'ai eu le même problème pour que le capteur PIR fonctionne pour déclencher le sommeil profond ESP-01. Beaucoup de chemins jusqu'à ce qu'il y en ait un qui fonctionne.

Inutile de dire qu'il y avait des obstacles intéressants ou peut-être plus pertinents, une meilleure compréhension de l'électronique dont j'avais besoin. Vous continuez à apprendre jusqu'à ce que quelque chose fonctionne et vous n'avez plus besoin d'apprendre.

L'ESP-01 fait un sommeil profond ainsi que tout autre module ESP8266 tant que vous n'avez pas besoin de sommeil programmé. Si vous souhaitez que le module se réveille après un certain temps, l'ESP-01 n'est pas le module à utiliser. Mais ce n'est pas ce que je voulais. Le temps écoulé est inutile lors de l'utilisation d'un PIR. Je voulais que l'ESP-01 ne se réveille que lorsqu'il est déclenché par un mouvement détecté par le PIR. S'il n'y a aucun mouvement détecté pendant des heures ou des jours, l'ESP-01 reste endormi en utilisant une batterie minimale.

Vous verrez de nombreux circuits utilisant GPIO16 connectés à la réinitialisation ESP8266 car GPIO16 est le signal de réveil. C'est vrai, mais c'est le signal de réveil du sommeil temporisé. On peut ignorer ce PIN, ce qui est bien car il n'est pas disponible sur l'ESP-01.

Fondamentalement, tout ce dont nous avons besoin est d'obtenir le signal du PIR pour déclencher la broche de réinitialisation ESP-01. La première difficulté que vous supposerez est que la réinitialisation est déclenchée sur un signal LOW et que le PIR envoie un signal HIGH lorsqu'il est déclenché. La réinitialisation doit également être ÉLEVÉE ou flottante au démarrage. Donc, pour faire court, après avoir essayé différents circuits, j'ai choisi d'utiliser un transistor NPN avec une résistance de rappel pour maintenir la broche RESET HAUT pendant le démarrage. La sortie du PIR est minime mais elle fournit suffisamment de courant de base pour activer le transistor.

Comme vous le verrez dans le schéma de circuit ci-dessous, l'ESP-01 a été réveillé d'un sommeil profond à chaque fois que le PIR a détecté un mouvement.

Mais il y avait un autre problème. La réinitialisation de l'ESP-01 ne s'est produite qu'après que le PIR a cessé de détecter le mouvement et est revenu à un signal faible, éteignant le transistor et ramenant la broche de réinitialisation sur HAUT en raison de la résistance de rappel. Cela signifierait que l'e-mail ne serait pas envoyé et que le buzzer ne serait activé qu'APRÈS que le PIR ait cessé de détecter le mouvement. Je voulais que le déclencheur se produise dès qu'un mouvement était détecté.

Ce que j'ai déterminé à partir de ce comportement, c'est que l'ESP-01 se déclenche réellement sur le front montant du signal. Maintenir la broche de réinitialisation à la terre ne déclenche pas réellement l'ESP-01 d'un sommeil profond, mais au moment où la tension augmente jusqu'au signal HAUT, la réinitialisation se produit.

Ma réponse très simple à ce comportement a été d'ajouter un condensateur à la ligne entre la sortie PIR et la base du transistor. Cela a fait que le transistor ne s'est allumé que pendant la charge du condensateur. Une fois chargé, il n'y avait plus de courant et le transistor s'est éteint. La résistance de 5k permet au courant de s'écouler vers la terre. J'ai testé cela avec une LED à la place de l'ESP-01 et j'ai pu voir la LED clignoter pendant une fraction de seconde avant de s'éteindre. Cette petite impulsion était suffisante pour tirer la broche de réinitialisation à la terre momentanément et assez longtemps pour déclencher la réinitialisation hors du sommeil profond.

Étape 1: Module de sommeil profond ESP-01

Module de sommeil profond ESP-01
Module de sommeil profond ESP-01
Module de sommeil profond ESP-01
Module de sommeil profond ESP-01

Le module de sommeil profond utilise deux tensions de fonctionnement. Le 5v+ aléatoire de la batterie pour le PIR et aussi une carte régulateur de 3,3 volts pour l'ESP-01. J'intègre également une diode dans le circuit pour empêcher les pièces endommagées des tensions inverses. Cela utilise un peu de puissance supplémentaire et fait chuter la tension de la batterie de 0,7 volts. La diode peut être laissée hors du circuit si vous êtes sûr de ne jamais inverser les fils de la batterie. Un interrupteur est également ajouté par commodité.

Ce module est une mise à jour mineure de ma disposition originale de sommeil non profond. Dans la configuration sans sommeil profond, le PIR est directement connecté à la broche RX de l'ESP-01. J'utilise la broche RX de l'ESP-01 comme broche d'entrée pour le PIR pour plusieurs raisons. GPIO0 n'a pas fonctionné car au démarrage, le PIN de sortie PIR serait FAIBLE, faisant passer l'ESP-01 en mode flash. Je n'ai pas utilisé GPIO2 car je ne pouvais pas utiliser la LED intégrée pour le retour visuel. Les broches RX et TX sont souvent décrites comme des broches IO supplémentaires, mais mon expérience est que RX est une broche INPUT supplémentaire et TX est une broche OUTPUT supplémentaire.

En configuration sommeil profond, la connexion RX n'est pas strictement nécessaire. Je l'utilise uniquement pour surveiller combien de temps le PIR est déclenché en allumant la LED alors que l'entrée est HAUTE. Comme mentionné précédemment, si vous effacez la fonction de boucle et n'utilisez que la routine de configuration, la connexion RX est inutile.

Voici la liste des pièces du module de sommeil profond ESP-01:

1 - Carte prototype PCB 5 x 7 cm

1 - connecteur 2 broches

2 - 1 x 3 embases femelles

1 - AMS1117 - Circuit imprimé régulateur de tension 3.3

1 - 1 x 3 broche d'en-tête mâle à angle droit

1 - 1 x 3 broches femelles d'en-tête

1 - 1 x 4 broches femelles d'en-tête

1 - 2 x 4 en-tête femelle

1 - 1uf condensateur

1 - Capteur de mouvement PIR HC-SR501

1 - 2N2222 Transistor

1 - Résistance 10k

1 - Résistance 4,7k

1 - Résistance 1k

1 - diode 1N4148

1 - interrupteur SS12D00G4 SPDT

1 - ESP-01

1 - Batterie 4AA

Veuillez noter que dans la vidéo, la carte de circuit imprimé utilise un adaptateur de carte d'essai ESP-01 au lieu de l'en-tête 2 x 4. Bien que cet adaptateur soit plus facile à souder, l'en-tête 2 x 4 fonctionne bien et s'adapte mieux.

Étape 2: ESP-01 Code de sommeil profond

Le code Deep Sleep remplit deux fonctions. Envoyez un e-mail (via gmail par défaut) et envoyez une requête Web http au module de buzzer ESP-01 associé pour déclencher le buzzer.

Lorsqu'il est déclenché, ce module fournit deux options de notification et peut être particulièrement utile lorsque vous ne faites pas attention aux messages électroniques.

Vous devrez mettre à jour six lignes de code avec vos valeurs spécifiques pour que l'esquisse fonctionne:

const char* ssid = "xxxxx"; // Votre mot de passe WiFi SSIDconst char* = "xxxxx"; // Votre chaîne de mot de passe WiFi Senders_Login = "xxxxx"; // votre identifiant de fournisseur de messagerie String Senders_Password = "xxxxx"; // le mot de passe de votre fournisseur de messagerie

À = "xxxxxx"; De = "xxxxxx"; // Gmail préfère généralement que ce soit le même que Senders_Login et peut remplacer

J'ai trouvé que le module de sommeil profond fonctionnait de manière imprévisible lorsque le capteur PIR était réglé à moins de 10 secondes pour la durée de l'événement déclencheur. J'ai le mien réglé à 20 secondes. Cela s'est avéré très fiable, mais cela signifie également que des événements déclencheurs pourraient se produire avec cette fréquence.

J'ai également ajouté du code à la fonction de boucle pour garder le voyant ESP-01 allumé tant que le PIR détecte toujours un mouvement. Tout le code de la fonction de boucle peut être supprimé et l'appel au sommeil profond déplacé à la fin de la fonction de configuration.

J'utilise la fonction clignotant pour un indicateur visuel d'activité avec le module ESP-01.

Bien que j'aie utilisé et testé la connectivité avec gmail, d'autres fournisseurs de messagerie fonctionnent également. J'en ai essayé un couple. En fait, j'ai trouvé gmail plus gênant. Gmail nécessite que votre compte soit configuré pour l'accès par des applications moins sécurisées. Ce paramètre de compte est désactivé par défaut, alors assurez-vous de le trouver et de le modifier en moins sécurisé. Gmail ne fonctionnera PAS autrement.

Si vous choisissez d'avoir plus d'un module de buzzer, ajoutez simplement des appels supplémentaires du client http (répétez les trois lignes de code mais changez l'adresse IP utilisée et définissez également la variable httpCode comme int une seule fois !

Notez que l'adresse IP du buzzer est codée en dur dans ce module. Vous n'êtes pas obligé d'utiliser l'adresse IP que j'ai choisie, mais vous devez faire correspondre l'adresse IP de l'appel Web dans ce module avec l'adresse IP de la configuration du serveur Web dans le module suivant.

Étape 3: Module de sonnerie ESP-01

Module de sonnerie ESP-01
Module de sonnerie ESP-01
Module de sonnerie ESP-01
Module de sonnerie ESP-01
Module de sonnerie ESP-01
Module de sonnerie ESP-01

Le module buzzer a une configuration assez simple. Il utilise un connecteur USB au lieu d'une batterie car je ne pense pas que ce module soit adapté à une batterie. Il doit rester allumé et connecté au réseau/wifi à tout moment car il ne sait jamais quand une requête web sera faite. Cela nécessite plus d'énergie continue que les batteries ne sont utiles.

Les modules de sonnerie peuvent être placés commodément à plusieurs endroits, fournissant une notification d'un événement de déclenchement de capteur de mouvement, peu importe où vous êtes !

Le buzzer est connecté au 5v du connecteur USB et il y a une autre carte de régulateur 3,3v qui alimente l'ESP-01.

Le module buzzer fonctionnera en utilisant TX, GPIO0 ou GPIO2 pour la sortie. Dans ma configuration, j'utilise GPIO0. (Sur l'image du module, le fil est connecté à GPIO2 mais je l'ai déplacé depuis.) Bien que GPIO0 ne fonctionnait pas pour le module de sommeil profond (en tant qu'ENTRÉE), cela fonctionne bien avec cette disposition en tant que SORTIE. Il n'est pas tiré au sol sur la botte, ce qui causera des problèmes. J'ai utilisé GPIO2 mais je n'ai pas pu utiliser la LED embarquée pour aucun retour, mais en utilisant GPIO0 pour la SORTIE, je peux utiliser la LED embarquée.

J'ai essayé d'utiliser un transistor NPN pour alimenter le buzzer dans le circuit lorsque l'ESP-01 a mis un signal HAUT sur la broche GPIO0 mais les résultats étaient terriblement incohérents. Le buzzer semblait vouloir sonner à tout moment, même avec très peu de puissance. J'ai donc utilisé à la place un MOSFET canal N (2n7000) et le résultat était formidable. La broche IO pilote la porte selon les besoins.

Alors que nous n'avons besoin que de deux broches du connecteur USB Vcc (+) et Gnd (-), j'utilise un en-tête à 5 broches pour se connecter à la carte PCB pour plus de stabilité et pour souder avant de connecter l'USB au régulateur. Ma carte de régulateur 3.3v est arrivée avec les broches préinstallées et dans mon esprit, à l'envers. Donc, pour mettre le régulateur dans les broches de l'en-tête, vous pouvez voir que la carte de circuit imprimé est cachée, mais pire que cela, vcc et gnd sur le régulateur sont inversés par rapport à vcc et gnd sur le connecteur USB. Donc les fils se croisent.

A noter également que + l'alimentation du buzzer actif provient du 5v de l'USB. De plus, une embase femelle à 4 broches fonctionne bien avec le placement des broches du buzzer.

Liste des pièces du module de sonnerie ESP-01:

1 - Carte PCB 5x7

1 - Mini connecteur USB avec embases à broches (7 broches)

2 - 1 x 3 embases femelles

1 - Carte régulateur de tension AMS1117-3,3 v

1 - 2 x 4 en-tête femelle

2 - 1 x 4 embases femelles

1 - MOSFET 2N7000 canal N

1 - résistance de 10 ohms

1 - Sonnerie active 5 v

Étape 4: Code du module de sonnerie ESP-01

Le module buzzer agit comme un simple serveur Web ESP-01. Il répond par un simple message à une requête root et lorsqu'il reçoit la requête buzz, il déclenche le buzzer. GPIO0 est utilisé pour la broche GPIO pour le signal sonore.

Notez que l'ESP-01 est configuré avec une adresse IP codée en dur. Ceci est nécessaire pour que le module de sommeil profond soit couplé à l'adresse du buzzer.

Comme le module précédent, vous devrez mettre à jour deux lignes de code avec vos valeurs spécifiques:

//SSID et mot de passe de votre routeur WiFiconst char* ssid = "xxxxxxx";

const char* mot de passe = "xxxxxxxx";

Si vous avez créé plusieurs modules de buzzer, chacun doit être chargé avec sa propre adresse IP unique.

Vous pouvez également ajouter différentes méthodes de buzz qui produisent différentes mélodies de buzzer. Par exemple, si vous avez un capteur PIR à la porte d'entrée et un à la porte arrière, ils peuvent chacun faire une demande Web à chacun de vos modules de buzzer, mais un capteur peut avoir un croquis qui appelle buzz et l'autre sketch peut appeler buzz2 afin que vous puissiez dire à partir du son quel capteur a été déclenché. Ainsi de suite! La fonction buzz2 n'existe pas mais il suffit de copier la fonction buzz et de modifier les valeurs de délai.

Pour le serveur Web, il vous suffirait d'ajouter une ligne de code comme celle-ci:

server.on("/buzz2", buzz2);

Étape 5: Réflexions finales

Il s'agit de mon premier instructable donc j'ai peut-être manqué des choses pratiques que j'aurais dû inclure. La carte de régulation AMS1117-3.3 que j'ai utilisée comprend une petite LED qui s'allume lorsqu'elle est allumée. Pour le module de sommeil profond, je ne voulais pas que cette LED s'allume et consomme inutilement de l'énergie. J'ai donc dessoudé ce que je pouvais d'un côté de la led sur la carte, puis j'ai utilisé un couteau utilitaire pour couper la ligne de trace. C'était plus facile que je ne le pensais et empêche la LED de s'allumer. Je n'ai pas été en mesure de déterminer quelle est la consommation électrique lorsque l'ESP-01 est en sommeil profond, mais j'aurai peut-être une réponse dans quelques semaines. Un de mes collègues faisait fonctionner le capteur (pas en sommeil profond) et a trouvé les piles épuisées (5AA) en une semaine environ. Je pense que cette configuration devrait donner un mois ou même plus. Nous verrons.

Le module de sommeil profond coûte environ 8 $ CDN en pièces (piles non incluses!) Et le module de sonnerie 5 $.

Conseillé: