Table des matières:
- Étape 1: Prototyper
- Étape 2: Envoi d'une notification via Blynk
- Étape 3: mesurer la consommation d'énergie et estimer la durée de vie de la batterie
- Étape 4: Mesurer le niveau de la batterie
- Étape 5: le rendre plus joli
- Étape 6: Touches finales
Vidéo: Capteur de notification de machine à laver : 6 étapes (avec photos)
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:09
Ce capteur de machine à laver se trouve au-dessus de ma machine à laver et utilise un accéléromètre pour détecter les vibrations de la machine. Lorsqu'il détecte que le cycle de lavage est terminé, il m'envoie une notification sur mon téléphone. Je l'ai construit parce que la machine elle-même n'émet plus de bip lorsqu'elle est terminée et j'en avais marre d'oublier de sortir le linge.
Le code peut être trouvé ici:
Liste complète des pièces:
- WEMOS LOLIN32
- Planche à pain demi-taille (pour le prototypage)
- Boîte de projet ABS avec tableau matriciel 59x88x30mm
- Sparkfun LIS3DH - Déploiement de l'accéléromètre à trois axes
- 1x MOSFET canal P ZVP3306A, 160 mA, 60 V, ligne E à 3 broches
- 1x Transistor BC549B TO92 30V NPN
- 5mm LED Bleu 68 mcd
- 1x résistance 100k 0.125W CF
- 1x 330k 0.125W résistance CF
- 2x 10k 0.250W CF Résistance
- 1x 100 0.250W CF Résistance
- Câble JST PH femelle à 2 broches (14 cm)
- 4x M1219-8 Disque Aimant Néodyme 6x4mm
Étape 1: Prototyper
L'appareil utilise un microcontrôleur ESP32. Dans ce cas, j'utilise la carte de développement Lolin32 de Wemos que vous pouvez acheter sur AliExpress pour environ 7 $. L'accéléromètre est le Sparkfun LIS3DH - il est important que l'accéléromètre soit numérique plutôt qu'analogique comme vous le verrez plus tard. La batterie que j'ai prise d'un vieil ensemble de haut-parleurs Bluetooth.
L'ESP32 se connecte à l'accéléromètre via I2C. La première version du code a simplement interrogé les trois axes d'accélération (x, y et z) pour la valeur d'accélération mesurée toutes les 20 ms. En plaçant le prototype de maquette sur la machine à laver, j'ai produit le graphique ci-dessus qui montre les pics d'accélération au cours des différentes phases du cycle de lavage. Les pics où l'accélération absolue était supérieure à 125 mg (125 millièmes de gravité normale) sont indiqués en orange. Nous voulons détecter ces périodes et les utiliser pour déterminer l'état de la machine à laver.
Comment déterminer si la machine est allumée ou éteinte ?
L'un des objectifs de la construction de cet appareil était qu'il serait entièrement passif. C'est à dire. aucun bouton ne doit être enfoncé; ça marcherait. Il devrait également être de très faible puissance car il n'était pas vraiment possible de rallonger les câbles d'alimentation jusqu'à la machine à laver dans mon cas.
Heureusement, l'accéléromètre LIS3DH a une fonction où il peut déclencher une interruption lorsque l'accélération dépasse un seuil donné (remarque, cela nécessite l'utilisation du filtre passe-haut intégré de l'accéléromètre - voir le code sur Github pour plus de détails) et l'ESP32 peut être réveillé de son mode veille profonde via une interruption. Nous pouvons utiliser cette combinaison de fonctionnalités pour créer un mode veille à très faible consommation d'énergie déclenché par le mouvement.
Le pseudo code ressemblerait à ceci:
# Réveil de l'appareil
notification_threshold = 240 counter = 10 accelerometer.set_threshold(96) #96mg while counter > 0: if accelerometer.above_threshold(): counter++ else: counter-- if counter > notification_threshold: # cycle d'essorage final détecté sleep (1 seconde) accelerometer.set_threshold_interrupt () esp32.set_wakeup_trigger_on_interrupt() esp32.deep_sleep()
Vous pouvez voir ici que nous utilisons un compteur pour détecter le nombre de secondes d'accélération que nous avons détectées pendant la période d'éveil actuelle. Si le compteur tombe à zéro, nous pouvons remettre l'appareil en veille. Si le compteur atteint 240 (le seuil de notification), cela signifie que nous avons détecté 4 minutes de vibration. Nous pouvons modifier les valeurs de ces seuils pour nous assurer que l'appareil détecte correctement le cycle d'essorage final. Une fois qu'une vibration suffisante est détectée, nous pouvons simplement dormir pendant 5 minutes supplémentaires (dans mon cas, c'est le temps qu'il faut pour que le lavage soit réellement terminé) avant d'envoyer une notification.
Étape 2: Envoi d'une notification via Blynk
Blynk est un service conçu pour permettre l'interaction avec les appareils IoT avec une application sur votre téléphone. Dans ce cas, j'utilise l'API de notification push qui est déclenchée par un simple HTTP POST à l'API Blynk.
Étape 3: mesurer la consommation d'énergie et estimer la durée de vie de la batterie
La puce ESP32 est annoncée comme ayant une très faible consommation d'énergie en veille profonde (aussi bas que 5 uA). Malheureusement, les circuits des nombreuses cartes de développement différentes offrent des caractéristiques de consommation d'énergie très différentes - toutes les cartes de développement ESP32 ne sont pas créées égales. Par exemple, lorsque j'ai commencé ce projet pour la première fois, j'ai utilisé le Sparkfun ESP32 Thing qui consommerait environ 1 mA d'énergie en mode veille profonde (même après avoir désactivé le voyant d'alimentation). Depuis, j'utilise le Lolin32 (pas la version Lite) sur lequel j'ai mesuré un courant de 144,5uA en mode veille profonde. Pour faire cette mesure, j'ai simplement câblé un multimètre en série avec la batterie et l'appareil. C'est certainement plus facile à faire lors du prototypage avec une maquette. J'ai également mesuré l'utilisation actuelle lorsque l'appareil est éveillé:
- Sommeil profond: 144,5 uA
- Réveil: 45 mA
- Wifi activé: 150 mA
En supposant que j'utilise la machine deux fois par semaine, j'ai estimé les temps suivants pour le temps que le capteur passe dans chaque état:
- Sommeil profond: 604090 secondes (~1 semaine)
- Éveillé: 720 secondes (12 minutes)
- Wifi activé: 10 secondes
A partir de ces chiffres, nous pouvons estimer combien de temps la batterie va durer. J'ai utilisé cette calculatrice pratique pour obtenir une consommation électrique moyenne de 0,2 mA. La durée de vie estimée de la batterie est de 201 jours soit environ 6 mois ! En réalité, j'ai constaté que l'appareil cesserait de fonctionner après environ 2 mois, il pourrait donc y avoir des erreurs de mesure ou de capacité de la batterie.
Étape 4: Mesurer le niveau de la batterie
J'ai pensé que ce serait bien si l'appareil pouvait me dire quand la batterie est faible afin que je sache quand la charger. Pour mesurer cela, nous devons mesurer la tension de la batterie. La batterie a une plage de tension de 4,3 V à 2,2 V (la tension de fonctionnement minimale de l'ESP32). Malheureusement, la plage de tension des broches ADC de l'ESP32 est de 0 à 3,3 V. Cela signifie que nous devons réduire la tension de la batterie de son maximum de 4,3 à 3,3 pour éviter de surcharger l'ADC. C'est possible avec un diviseur de tension. Câblez simplement deux résistances avec les valeurs appropriées de la batterie à la terre et mesurez la tension au milieu.
Malheureusement, un simple circuit diviseur de tension drainera l'énergie de la batterie même lorsque la tension n'est pas mesurée. Vous pouvez atténuer cela en utilisant des résistances de valeur élevée, mais l'inconvénient est que l'ADC pourrait ne pas être en mesure de tirer suffisamment de courant pour effectuer une mesure précise. J'ai décidé d'utiliser des résistances avec des valeurs de 100kΩ et 330kΩ qui chuteront de 4,3V à 3,3V selon la formule de ce diviseur de tension. Compte tenu d'une résistance totale de 430kΩ, nous nous attendrions à un appel de courant de 11,6uA (en utilisant la loi d'Ohm). Étant donné que notre utilisation actuelle du sommeil profond est de 144 uA, il s'agit d'une augmentation raisonnablement significative.
Comme nous ne voulons mesurer la tension de la batterie qu'une seule fois juste avant d'envoyer une notification, il est logique de désactiver le circuit diviseur de tension pendant le temps où nous ne mesurons rien. Heureusement, nous pouvons le faire avec quelques transistors connectés à l'une des broches GPIO. J'ai utilisé le circuit donné dans cette réponse stackexchange. Vous pouvez me voir tester le circuit avec un Arduino et une maquette sur la photo ci-dessus (notez qu'il y a une erreur dans le circuit qui est la raison pour laquelle je mesure une tension plus élevée que prévu).
Avec le circuit ci-dessus en place, j'utilise le pseudo-code suivant pour obtenir une valeur de pourcentage de batterie:
pourcentage de batterie():
# activer le circuit de tension de la batterie gpio_set_level(BATTERY_EN_PIN, HIGH) # Le niveau de la batterie est renvoyé sous forme d'entier compris entre 0 et 4095 adc_value = adc1_get_value(ADC_PIN) # activer le circuit de tension de la batterie gpio_set_level(BATTERY_EN_PIN, LOW) float adc_voltage = adc_value * 3.3 / 4095 le diviseur utilise des résistances de 100k / 330k ohms # 4.3V -> 3.223, 2.4 -> 1.842 expect_max = 4.3*330/(100+330) expect_min = 2.4*330/(100+330) battery_level = (adc_voltage-expected_min)/(expected_max -expected_min) renvoie battery_level * 100.0
Étape 5: le rendre plus joli
Bien que la version de la maquette fonctionne bien, je voulais la mettre dans un emballage qui serait plus propre et plus fiable (pas de fils qui peuvent se détacher ou court-circuiter). J'ai réussi à trouver la boîte de projet parfaite pour mes besoins, de la bonne taille, comprenant un tableau d'affichage, des supports de montage et des vis pour tout assembler. De plus, c'était très bon marché à moins de 2 £. Après avoir reçu la boîte, tout ce que j'avais à faire était de souder les composants sur le tableau d'affichage.
La partie la plus délicate de cela était peut-être d'installer tous les composants du circuit de tension de la batterie dans le petit espace à côté du Lolin32. Heureusement, avec un peu de poker et les connexions appropriées faites avec de la soudure, le circuit s'intègre parfaitement. De plus, comme le Wemos Lolin32 n'a pas de broche pour exposer la borne positive de la batterie, j'ai dû souder un fil du connecteur de la batterie à la carte à broches.
J'ai également ajouté une LED qui clignote lorsque l'appareil a détecté un mouvement.
Étape 6: Touches finales
J'ai super-collé 4 aimants en néodyme de 6 mm x 4 mm à la base de la boîte, ce qui lui permet de bien coller au dessus en métal de la machine à laver.
La boîte de projet est déjà livrée avec un petit trou pour permettre l'accès aux câbles. Heureusement, j'ai pu positionner la carte ESP32 près de ce trou pour donner accès au connecteur micro USB. Après avoir agrandi le trou avec un cutter, le câble s'adapte parfaitement pour permettre une charge facile de la batterie.
Si vous êtes intéressé par l'un des détails de ce projet, n'hésitez pas à laisser un commentaire. Si vous souhaitez voir le code, veuillez le consulter sur Github:
github.com/alexspurling/washingmachine
Conseillé:
Capteur de respiration bricolage avec Arduino (capteur d'étirement tricoté conducteur): 7 étapes (avec photos)
Capteur de respiration bricolage avec Arduino (capteur d'étirement tricoté conducteur): Ce capteur de bricolage prendra la forme d'un capteur d'étirement tricoté conducteur. Il s'enroulera autour de votre poitrine/estomac, et lorsque votre poitrine/estomac se dilate et se contracte, le capteur et par conséquent les données d'entrée qui sont transmises à l'Arduino. Donc
Traqueur de voiture GPS avec notification SMS et téléchargement de données Thingspeak, basé sur Arduino, domotique : 5 étapes (avec photos)
Traqueur de voiture GPS avec notification SMS et téléchargement de données Thingspeak, basé sur Arduino, domotique : j'ai créé ce traqueur GPS l'année dernière et comme il fonctionne bien, je le publie maintenant sur Instructable. Il est connecté à la prise accessoires dans mon coffre. Le traceur GPS télécharge la position de la voiture, la vitesse, la direction et la température mesurée via un mobile de données
Comme il était facile de réparer l'électronique de ma machine à laver : 5 étapes (avec photos)
Comme c'était facile de réparer l'électronique de ma machine à laver : pourquoi ? Parce que je suis un fabricant, j'aime réparer mes propres trucs, ce qui parfois est un problème car ils restent inopérants pendant que je trouve du temps pour comprendre la stratégie de depure le problème. Réparer quelque chose est généralement simple et amusant, mais trouver le ca
Alerte laveuse-sécheuse Arduino - Notification push au téléphone avec Blynk : 5 étapes (avec photos)
Alerte laveuse-sécheuse Arduino - Notification push au téléphone avec Blynk : Notre machine à laver est dans le garage et nous n'entendons pas les bips pour indiquer que le lavage est terminé. Je voulais trouver un moyen d'être averti, où que nous soyons dans la maison, lorsque le cycle était terminé. J'ai bricolé avec Arduino, ESP8266 WiFi
Comment câbler un moteur de machine à laver en tant que générateur : 3 étapes (avec photos)
Comment câbler un moteur de machine à laver en tant que générateur: Comment câbler un moteur de machine à laver en tant que générateur ou les bases du câblage du générateur de moteur de machine à laver est un tutoriel sur les principes de câblage universels du moteur dans l'alimentation CC et CA. Un générateur est un appareil qui convertit la puissance motrice en puissance électrique