Table des matières:

Alarme d'eau IoT : 5 étapes (avec photos)
Alarme d'eau IoT : 5 étapes (avec photos)

Vidéo: Alarme d'eau IoT : 5 étapes (avec photos)

Vidéo: Alarme d'eau IoT : 5 étapes (avec photos)
Vidéo: Elle Était Coincée Donc Ce Policier L'aide 2024, Juillet
Anonim
Alarme d'eau IoT
Alarme d'eau IoT

J'ai récemment expérimenté la sauvegarde de drain de cuisine. Si je n'avais pas été à la maison à ce moment-là, cela aurait causé des dommages au sol et aux cloisons sèches de mon appartement. Heureusement, j'étais conscient du problème et prêt à ramasser l'eau avec un seau. Cela m'a fait penser à l'achat d'une alarme d'inondation. J'ai découvert de nombreux produits abordables sur Amazon, mais ceux dotés d'une connectivité Internet ont eu un pourcentage important de critiques négatives, principalement en raison de problèmes avec les services de notification propriétaires. C'est pourquoi j'ai décidé de créer ma propre alarme d'eau IoT qui utiliserait des moyens de notification fiables de mon choix.

Étape 1: Principe de fonctionnement

Principe d'opération
Principe d'opération

L'alarme a un microcontrôleur AVR ATtiny85 comme cerveau. Il prend des lectures de tension de la batterie et du capteur d'eau et les compare avec une valeur prédéfinie pour détecter la présence d'eau ou une condition de batterie faible.

Le capteur d'eau est simplement deux fils placés à environ 1 mm l'un de l'autre. L'un des fils est connecté à 3,3 V et l'autre est connecté à une broche de détection sur le microcontrôleur, qui est également connectée à la terre via une résistance de 0,5 MOhm. Normalement, la résistance entre les fils du capteur est très élevée (bien au-dessus de 10 MOhm), de sorte que la broche de détection est tirée jusqu'à 0 V. Cependant, lorsqu'il y a de l'eau entre les fils, la résistance chute à moins de 1 MOhm, et la broche de détection voit une certaine tension (dans mon cas, environ 1,5 V). Lorsque ATtiny85 détecte cette tension sur la broche de détection, il active un MOSFET pour alimenter un buzzer et envoie le signal de réveil au module ESP8266 qui est responsable de l'envoi des alertes (e-mails et notifications push). Après une minute de bourdonnement, l'alarme est désarmée et ne peut être réinitialisée que par un cycle d'alimentation.

Cet appareil fonctionne avec deux piles alcalines ou NiMH. Le microcontrôleur est endormi la plupart du temps pour économiser les batteries, se réveillant par intermittence pour vérifier le capteur d'eau ainsi que la tension des batteries. Si les piles sont faibles, le microcontrôleur réveille le module ESP8266 pour envoyer un avertissement de pile faible. Après l'avertissement, l'alarme est désarmée pour éviter une décharge excessive de la batterie.

Étant donné que le module ESP8266 est chargé d'envoyer à la fois des avertissements de batterie faible ainsi que des alertes d'inondation, il nécessite un signal de contrôle d'ATiny85. En raison du nombre limité de broches disponibles, ce signal de contrôle est généré par la même broche responsable de l'indication de la LED de la batterie. En fonctionnement normal (l'alarme est armée et les batteries sont chargées), la LED clignote par intermittence. Lorsque l'état de batterie faible est détecté, la LED s'allume pour fournir un signal élevé à la broche RX du module ESP. Si de l'eau est détectée, la LED de la batterie sera éteinte pendant que l'ESP8266 est éveillé.

Étape 2: Conception et assemblage

Conception et assemblage
Conception et assemblage
Conception et assemblage
Conception et assemblage
Conception et assemblage
Conception et assemblage

J'ai conçu le circuit pour qu'il soit construit sur un protoboard double face 4x6 cm en utilisant principalement des pièces SMD 0805. Les schémas présentés sont basés sur cette construction, mais il peut être facilement adapté pour les composants traversants (astuce: pour minimiser l'espace, soudez les résistances traversantes verticalement).

Les pièces suivantes sont requises:

- Résistances: 330 Ω x 1; 470 x 1; 680 x 1; 1 kΩ x 1; 10 kΩ x 3; 470 kΩ x 3; - Un condensateur céramique de 10 µF- Un MOSFET à canal N de niveau logique (par exemple RFP30N06LE ou AO3400)- Une LED rouge et une LED jaune (ou d'autres couleurs si vous le souhaitez).- Connecteurs à bornes à vis à deux fils x 3 (ils ne sont pas absolument nécessaire, mais ils facilitent la connexion et la déconnexion de la périphérie pendant les tests)- Un buzzer piézo puissant qui convient à 3,3 V- Un microcontrôleur ATtiny85 (version PDIP)- Une prise PDIP 8 broches pour le microcontrôleur- Un module ESP-01 (il peut être remplacé par un autre module basé sur ESP8266, mais il y aura beaucoup de changements dans la disposition dans ce cas) - Un convertisseur élévateur DC-DC de 3,3 V capable de fournir des courants de 200 mA (500 mA en rafale) à 2,2 V saisir. (Je recommande https://www.canton-electronics.com/power-converter… en raison de son courant de repos ultra-faible) - Un connecteur femelle à 3 broches - Deux connecteurs femelles à 4 broches ou un connecteur 2x4 - Fils solides 22 AWG pour le capteur d'eau - fil toronné 22 AWG (ou un autre type de fil mince exposé pour créer des traces)

Je recommande les valeurs de résistance répertoriées ci-dessus, mais vous pouvez remplacer la plupart d'entre elles par des valeurs similaires. Selon le type de LED que vous souhaitez utiliser, vous devrez peut-être ajuster les valeurs de résistance de limitation de courant pour obtenir la luminosité souhaitée. Le MOSFET peut être traversant ou SMT (SOT23). Seule l'orientation de la résistance de 330 Ohm est affectée par le type de MOSFET. Un fusible PTC (par exemple évalué pour 1 A) est recommandé si vous prévoyez d'utiliser ce circuit avec des batteries NiMH. Cependant, il n'est pas nécessaire avec des piles alcalines. Astuce: les pièces nécessaires à cette alarme peuvent être achetées à moindre coût sur ebay ou aliexpress.

De plus, vous aurez besoin d'une maquette, de plusieurs résistances traversantes de 10k, de plusieurs fils de cavalier mâle-mâle et femelle-mâle ("dupont") et d'un adaptateur USB-UART afin de programmer le module ESP-01.

Le capteur d'eau peut être fabriqué de différentes manières, mais la plus simple consiste en deux fils 22 AWG avec des extrémités exposées (1 cm de long) espacées d'environ 1 mm. L'objectif est d'avoir une résistance inférieure à 5 MΩ entre les contacts du capteur en présence d'eau.

Le circuit est conçu pour une économie de batterie maximale. Il ne consomme que 40 à 60 µA en régime de surveillance (avec le voyant d'alimentation retiré sur le module ESP-01). Une fois l'alarme déclenchée, le circuit consommera 300-500 mA (à une entrée de 2,4 V) pendant une seconde ou moins, et après cela, le courant chutera en dessous de 180 mA. Une fois que le module ESP a fini d'envoyer des notifications, la consommation de courant descendra en dessous de 70 mA jusqu'à ce que le buzzer s'éteigne. Ensuite, l'alarme se désarmera et la consommation de courant sera inférieure à 30 µA. Ainsi, un jeu de piles AA pourra alimenter le circuit pendant plusieurs mois (probablement plus d'un an). Si vous utilisez un convertisseur boost différent, disons avec un courant de repos de 500 µA, les piles devront être changées beaucoup plus souvent.

Conseils de montage:

Utilisez un marqueur permanent pour étiqueter toutes les traces et composants sur le protoboard pour une soudure plus facile. Je recommande de procéder dans l'ordre suivant:

- LED CMS supérieures et ponts de fils isolés

- MOSFET supérieur (remarque: si vous avez un MOSFET SOT-23, placez-le en diagonale comme sur la photo. Si vous utilisez un MOSFET traversant, placez-le horizontalement avec la goupille de grille en position I3.)

- parties supérieures des trous traversants (remarque: le buzzer n'est pas soudé et n'a même pas besoin d'être monté sur le PCB)

- pièces et traces CMS au verso (par exemple, brins individuels de fil AWG22)

Étape 3: Micrologiciel

Code C pour ATtiny85

Main.c contient le code qui doit être compilé et téléchargé sur le microcontrôleur. Si vous envisagez d'utiliser une carte Arduino en tant que programmeur, vous pouvez trouver le schéma de câblage dans ce tutoriel. Vous devez suivre uniquement les sections suivantes (ignorer le reste):

– Configuration d'Arduino Uno en tant que FAI (programmation dans le système)

– Connexion d'ATtiny85 à Arduino Uno.

Pour compiler et télécharger le firmware, vous aurez besoin de CrossPack (pour Mac OS) ou de la chaîne d'outils AVR (pour Windows). La commande suivante doit être exécutée pour compiler le code:

avr-gcc -Os -mmcu=attiny85 -c main.c; avr-gcc -mmcu=attiny85 -o main.elf main.o; avr-objcopy -j.text -j.data -O ihex main.elf main.hex

Pour télécharger le firmware, exécutez la commande suivante:

avrdude -c arduino -p attiny85 -P /dev/cu.usbmodem1411 -b 19200 -e -U flash:w:main.hex

Au lieu de "/dev/cu.usbmodem1411", vous devrez probablement insérer le port série auquel votre Arduino est connecté (vous pouvez le trouver dans l'IDE Arduino: Tools Port).

Le code contient plusieurs fonctions. deep_sleep() fait entrer le microcontrôleur dans un état de très faible consommation pendant environ 8 secondes. read_volt() est utilisé pour mesurer les tensions de la batterie et du capteur. La tension de la batterie est mesurée par rapport à la référence de tension interne (2,56 V plus ou moins quelques pour cent) tandis que la tension du capteur est mesurée par rapport à Vcc = 3,3 V. Les lectures sont comparées à BATT_THRESHOLD et SENSOR_THRESHOLD définies comme 932 et 102 respectivement, qui correspondent à ~2,3 et 0,3 V. Vous pourrez peut-être réduire la valeur seuil de la batterie pour une meilleure durée de vie de la batterie, mais cela n'est pas recommandé (consultez la section Considérations sur la batterie pour des informations détaillées).

activate_alarm() informe le module ESP de la détection d'eau et fait retentir le buzzer. low_batt_notification() informe le module ESP que la batterie est faible et fait également retentir le buzzer. Si vous ne souhaitez pas être réveillé au milieu de la nuit pour changer la batterie, supprimez " | 1< " dans low_batt_notification().

Croquis Arduino pour ESP-01

J'ai choisi de programmer le module ESP en utilisant Arduino HAL (suivez le lien pour les instructions de configuration). De plus, j'ai utilisé les deux bibliothèques suivantes:

ESP8266 Envoyer un e-mail par Górász Péter

ESP8266 Pushover par l'équipe Arduino Hanovre

La première bibliothèque se connecte à un serveur SMTP et envoie une alerte à votre adresse e-mail. Créez simplement un compte gmail pour votre ESP et ajoutez les informations d'identification au code. La seconde bibliothèque envoie des notifications push via le service Pushover (les notifications sont gratuites, mais vous devez payer une fois pour installer l'application sur votre téléphone/tablette). Téléchargez les deux bibliothèques. Mettez le contenu de la bibliothèque Envoyer un e-mail dans votre dossier de croquis (arduino le créera lorsque vous ouvrirez le croquis arduino pour la première fois). Installez la bibliothèque Pushover via l'IDE (Sketch -> Include Library -> Add. ZIP library).

Pour programmer le module ESP-01 vous pouvez suivre le tutoriel suivant: https://www.allaboutcircuits.com/projects/breadbo… Pas besoin de s'embêter à ressouder une rangée de broches comme indiqué dans le guide - il suffit d'utiliser dupont femelle-mâle fils pour connecter les broches du module à la planche à pain. N'oubliez pas que le convertisseur boost et l'adaptateur USB-UART doivent partager la masse (remarque: vous pourrez peut-être utiliser la sortie 3,3 V de l'adaptateur USB-UART au lieu du convertisseur boost, mais ce ne sera probablement pas le cas. être en mesure de fournir suffisamment de courant).

Étape 4: Considérations relatives à la batterie

Le code du firmware fourni est préconfiguré pour envoyer un avertissement de batterie faible et s'éteindre à ~2,3 V. Ce seuil est basé sur l'hypothèse que deux batteries NiMH sont utilisées en série. Il n'est pas recommandé de décharger une cellule NiMH individuelle en dessous de 1 V. En supposant que les deux cellules aient une capacité et des caractéristiques de décharge égales, les deux seront coupées à ~ 1,15 V - bien dans la plage de sécurité. Cependant, les cellules NiMH qui ont été utilisées pendant de nombreux cycles de décharge ont tendance à différer en capacité. Une différence de capacité allant jusqu'à 30% peut être tolérée car cela entraînerait toujours le point de coupure de la cellule de tension la plus basse autour de 1 V.

Bien qu'il soit possible de réduire le seuil de batterie faible dans le micrologiciel, cela supprimerait la marge de sécurité et pourrait entraîner une décharge excessive et des dommages de la batterie alors que seule une augmentation marginale de la durée de vie de la batterie est à prévoir (une cellule NiMH est > 85 % déchargé à 1,15 V).

Un autre facteur qui doit être pris en compte est la capacité du convertisseur boost à fournir au moins 3,0 V (2,5 V selon des preuves anecdotiques) à un courant de crête de 300-500 mA sur des batteries faibles. La faible résistance interne des batteries NiMH ne provoque qu'une chute négligeable de 0,1 V aux courants de crête, de sorte qu'une paire de cellules NiMH déchargées à 2,3 V (circuit ouvert) pourra fournir au moins 2,2 V au convertisseur élévateur. C'est cependant plus compliqué avec des piles alcalines. Avec une paire de piles AA à 2,2-2,3 V (circuit ouvert), une chute de tension de 0,2-0,4 V est à prévoir aux courants de pointe. Bien que j'aie vérifié que le circuit fonctionne avec le convertisseur boost recommandé avec aussi peu que 1,8 V fourni aux courants de crête, cela fait probablement chuter la tension de sortie momentanément en dessous de la valeur suggérée par l'Espressiff. Ainsi le seuil de coupure de 2,3 V laisse peu de marge de sécurité avec des piles alcalines (rappelons qu'une mesure de tension effectuée par le microcontrôleur n'est précise qu'à plus ou moins quelques pourcents). Afin de garantir que le module ESP ne se bloque pas lorsque les piles alcalines sont faibles, je recommande d'augmenter la tension de coupure à 2,4 V (#define BATT_THRESHOLD 973). À 1,2 V (circuit ouvert), une pile alcaline est déchargée à environ 70 %, ce qui n'est que de 5 à 10 points de pourcentage inférieur au degré de décharge à 1,15 V par pile.

Les piles NiMH et alcalines présentent des avantages et des inconvénients pour cette application. Les piles alcalines sont plus sûres (ne prennent pas feu en cas de court-circuit) et elles ont un taux d'autodécharge beaucoup plus faible. Cependant, les batteries NiMH garantissent un fonctionnement fiable de l'ESP8266 à un point de coupure inférieur grâce à leur faible résistance interne. Mais en fin de compte, l'un ou l'autre type peut être utilisé avec quelques précautions, c'est donc juste une question de préférence personnelle.

Étape 5: Avis de non-responsabilité

Ce circuit a été conçu par un amateur non professionnel pour les applications de loisir uniquement. Cette conception est partagée de bonne foi, mais sans aucune garantie. Utilisez-le et partagez-le avec d'autres à vos risques et périls. En recréant le circuit, vous acceptez que l'inventeur ne sera pas tenu responsable de tout dommage (y compris, mais sans s'y limiter, la dégradation des biens et les blessures corporelles) pouvant survenir directement ou indirectement par un dysfonctionnement ou une utilisation normale de ce circuit. Si les lois de votre pays annulent ou interdisent cette exonération de responsabilité, vous ne pouvez pas utiliser cette conception. Si vous partagez cette conception ou un circuit modifié basé sur cette conception, vous devez créditer l'inventeur d'origine en indiquant l'url de cette instructable.

Conseillé: