Table des matières:

Alarme d'inondation de sous-sol à très faible consommation avec ESP8266 : 3 étapes
Alarme d'inondation de sous-sol à très faible consommation avec ESP8266 : 3 étapes

Vidéo: Alarme d'inondation de sous-sol à très faible consommation avec ESP8266 : 3 étapes

Vidéo: Alarme d'inondation de sous-sol à très faible consommation avec ESP8266 : 3 étapes
Vidéo: Capteur de fuite d'eau / inondation connecté ? (X-Sense) - Test / Avis / Review / Présentation 2024, Juillet
Anonim
Alarme d'inondation de sous-sol à très faible puissance avec ESP8266
Alarme d'inondation de sous-sol à très faible puissance avec ESP8266
Alarme d'inondation de sous-sol à très faible puissance avec ESP8266
Alarme d'inondation de sous-sol à très faible puissance avec ESP8266

Bonjour, bienvenue dans mon premier instructable.

Le sous-sol de ma maison est inondé toutes les quelques années pour diverses raisons comme de violents orages d'été, des nappes phréatiques élevées ou même l'éclatement d'une canalisation. Bien que ce ne soit pas un endroit agréable, mais ma chaudière de chauffage central est située là-bas et l'eau peut endommager ses composants électroniques, je dois donc pomper l'eau dès que possible. Il est difficile et inconfortable de vérifier la situation après un gros orage d'été, j'ai donc décidé de créer une alarme basée sur ESP8266 qui m'envoie un e-mail en cas d'inondation. (Lorsque l'inondation est causée par des eaux souterraines élevées, le niveau d'eau est généralement inférieur à 10 centimètres, ce qui n'est pas nocif pour le réchauffeur et il n'est pas recommandé de pomper car il reviendra de toute façon et plus vous pompez, plus l'eau souterraine viendra la prochaine fois. Mais il est bon de connaître la situation.)

Dans cette application, l'appareil peut être en « veille » pendant des années, et si tout fonctionne comme prévu, il ne fonctionne que quelques secondes. L'utilisation du sommeil profond n'est pas pratique car elle consomme trop de courant si nous voulons dormir pendant de très longues périodes et l'ESP8266 ne peut dormir que pendant environ 71 minutes maximum.

J'ai décidé d'utiliser un interrupteur à flotteur pour allumer l'ESP. Avec cette solution, l'ESP n'est pas alimenté lorsque l'interrupteur est ouvert, de sorte que la consommation d'énergie n'est que l'autodécharge des batteries, ce qui maintient le système prêt à déclencher l'alarme pendant des années.

Lorsque le niveau d'eau atteint l'interrupteur à flotteur, l'ESP démarre normalement, se connecte à mon réseau WiFi, m'envoie un e-mail et se met en veille pour toujours avec ESP. Deepsleep(0) jusqu'à ce que l'alimentation soit éteinte puis rallumée. S'il ne parvient pas à se connecter au WiFi ou à envoyer l'e-mail, il se met en veille pendant 20 minutes et réessaye jusqu'à ce qu'il réussisse.

Cette idée est similaire à la solution décrite par Andreas Spiess dans cette vidéo. Mais en raison de la nature de l'inondation et de l'interrupteur à flotteur, nous n'avons pas besoin d'ajouter un MOSFET pour maintenir l'ESP sous tension jusqu'à ce qu'il termine sa tâche, car l'interrupteur à flotteur sera fermé si le niveau d'eau dépasse le niveau de déclenchement.

Étape 1: Le schéma:

Le schéma
Le schéma

les pièces

  • D1: Diode Schottky BAT46 pour un réveil en sommeil profond. J'ai de meilleures expériences avec les diodes Schottky qu'avec les résistances entre D0 et RST.
  • Interrupteur à flotteur: simple interrupteur à flotteur à tube à roseau et à aimant de 1,2 $ d'eBay. L'anneau avec l'aimant peut être inversé pour basculer entre la commutation de niveau de fluide haut et bas. Lien eBay
  • Porte-piles: pour 2 piles AAA 1.5V
  • P1: 2 bornes à vis 2P 5,08 mm (200 mil) pour connecter les fils de la batterie et de l'interrupteur à flotteur.
  • C1: condensateur 1000uF 10V pour augmenter la stabilité de l'ESP lorsque la radio est allumée. Attention, si l'ESP est en veille profonde, l'énergie stockée dans le condensateur est suffisante pour l'alimenter pendant 3-4 minutes. Pendant cette période, le fonctionnement de l'interrupteur à flotteur ne peut pas redémarrer l'ESP car le condensateur le maintient sous tension pendant le sommeil profond. Ceci n'est intéressant que lors des tests.
  • U1: Microcontrôleur LOLIN / Wemos D1 Mini Pro ESP8266. Il s'agit de la version pro avec connecteur d'antenne externe, ce qui peut être utile lorsqu'il est placé au sous-sol. Veuillez noter que vous devez ressouder la "résistance" CMS 0 ohm pour sélectionner l'antenne externe au lieu de l'antenne céramique intégrée par défaut. Je recommande d'acheter des microcontrôleurs LOLIN dans la boutique officielle LOLIN AliExpress car il existe de nombreuses cartes Wemos / LOLIN contrefaites ou anciennes.
  • Perfboard: Un proto board de 50mm*50mm suffira pour s'adapter à toutes les pièces. Le circuit est trop simple pour faire un PCB.:)

Veuillez noter que la batterie est connectée à l'entrée 3.3V. Bien que le D1 Mini dispose d'un LDO intégré pour le fonctionnement USB / LiPo, nous n'en avons pas besoin lorsqu'il est alimenté par le 3V de 2 piles alcalines AAA. Avec cette connexion, mon D1 Mini a également pu accomplir sa tâche avec une tension d'alimentation de seulement 1,8 V.

Étape 2: le code

Le programme pourrait être plus agréable ou plus simple, mais ses parties ont fait leurs preuves dans mes autres projets.

L'esquisse utilise les bibliothèques suivantes:

ESP8266WiFi.h: Par défaut pour les cartes ESP8266.

Gsender.h: bibliothèque d'expéditeurs Gmail de Borya, téléchargeable ici.

Le déroulement du programme est assez simple.

  • L'ESP démarre.
  • Lit la mémoire RTC pour vérifier s'il s'agit d'un premier démarrage ou non
  • Se connecte au WiFi à l'aide de la fonction cleverwifi(). Celui-ci se connecte au WiFi à l'aide de l'adresse MAC du routeur (BSSID) et du numéro de canal pour une connexion plus rapide, réessaye sans ceux-ci après 100 tentatives infructueuses et se met en veille après 600 tentatives. Cette fonction est dérivée de l'esquisse d'économiseur d'énergie WiFi d'OppoverBakke, mais sans enregistrer les données de connexion dans la partie RTC de cette application.
  • Vérifie la tension de la batterie avec les fonctionnalités ESP.getVcc() intégrées ADC_MODE(ADC_VCC)/ESP.getVcc(). Cela ne nécessite pas de diviseur de tension externe ni de câblage vers A0. Parfait pour des tensions inférieures à 3,3V, ce qui est notre cas.
  • Envoie un e-mail d'alerte avec Gsender.h. J'ai ajouté des variables et du texte personnalisé à l'objet et aux chaînes de message pour signaler la tension de la batterie, le temps écoulé depuis la première détection et des conseils concernant le remplacement de la batterie. N'oubliez pas de modifier l'adresse e-mail du destinataire.

    • Dort

      • En cas de succès, il dort "pour toujours" avec ESP.deepSleep(0); Physiquement, il sera en mode veille jusqu'à ce que le niveau d'eau soit élevé. Il s'agit techniquement de quelques heures ou de quelques jours maximum, ce qui ne videra pas la batterie avec les quelques uA de courant de veille. Lorsque l'eau est épuisée, l'interrupteur à flotteur s'ouvre et l'ESP s'éteint complètement, et la consommation de courant sera de 0.
      • En cas d'échec, il se met en veille pendant 20 minutes, puis réessaye. Il est possible d'avoir une panne de courant alternatif en cas d'orage d'été. Il compte les redémarrages et les stocke dans la mémoire RTC. Cette information est utilisée pour rapporter le temps écoulé depuis la première tentative d'alarme. (Veuillez noter que lorsque vous le testez avec une alimentation USB et un moniteur série, le RTC peut également conserver la valeur du nombre de cycles entre les téléchargements.)

Étape 3: Assemblage et installation

Assemblage et installation
Assemblage et installation
Assemblage et installation
Assemblage et installation
Assemblage et installation
Assemblage et installation

Après avoir testé le code sur une maquette, je l'ai soudé à un petit morceau de panneau perforé.

J'ai utilisé 2 bornes à vis à 2 pôles au pas de 5,08 mm cousues ensemble, une embase femelle pour l'ESP, un condensateur et quelques cavaliers.

Veuillez noter que la résistance SMD avec le numéro "0" à côté de l'antenne en céramique doit être ressoudée aux pastilles vides à côté pour sélectionner l'antenne externe.

Ensuite, j'ai mis le tout dans une petite boîte de jonction électrique IP55. Les fils de l'interrupteur à flotteur sont connectés à travers un presse-étoupe.

La boîte est placée à une hauteur sûre, où l'eau ne peut (espérons-le) jamais l'atteindre, j'ai donc utilisé une paire de fil de cuivre relativement épais de 1 mm ^ 2 (17 AWG) pour connecter l'interrupteur à flotteur. Avec cette configuration, l'ESP pourrait démarrer et envoyer le message même avec une tension d'entrée de 1,8 V.

Après installation, cette sentinelle silencieuse monte la garde, mais j'espère qu'elle n'aura pas à envoyer d'alarme bientôt…

Conseillé: