ShIoTiny : ventilation d'une pièce humide (projet-exemple)

ShIoTiny : ventilation d'une pièce humide (projet-exemple)

Les points principaux ou de quoi parle cet article

Nous poursuivons notre série d'articles sur ShIoTiny — un contrôleur programmable visuellement basé sur la puce ESP8266.

Cet article explique, à travers un projet de gestion de la ventilation dans une salle de bain ou un autre espace à forte humidité, comment construire un programme pour ShIoTiny.

Les articles précédents de la série.

ShIoTiny : petite automatisation, Internet des objets ou « six mois avant les vacances »
ShIoTiny : nœuds, liaisons et événements ou caractéristiques du dessin de programmes

Liens

Firmware binaire, schéma du contrôleur et documentation
Instructions et description des modules
Configuration du courtier MQTT cloudmqtt.com
Panneau de contrôle MQTT dashboard pour Android

Introduction

La compréhension ne se fait pas sans expérience. C'est une vérité éprouvée par le temps et les générations. Il n'y a donc rien de mieux pour acquérir des compétences pratiques que d'essayer de faire quelque chose par soi-même. Les exemples qui montrent ce qu'il est possible de faire et ce qu'il vaut mieux éviter de tenter seront très utiles ici. Les erreurs des autres, bien sûr, ne peuvent pas empêcher la survenue de nos propres erreurs, mais peuvent aider à en réduire le nombre.

Les questions et lettres des lecteurs des articles précédents m'ont poussé à réaliser un petit projet exemple de gestion de la ventilation, afin de montrer comment fonctionnent les modules ShIoTiny.

L'idée initiale, sur laquelle le contrôleur est basé ShIoTiny — la station de pompage et d'irrigation — ne conviendra pas à tout le monde et ne sera pas intéressante pour tous. Par conséquent, j'ai choisi un système de gestion de ventilation, compréhensible pour tous et utile pour beaucoup, comme exemple.

Je tiens à dire que l'idée du projet n'est pas la mienne, mais je l'ai tirée d'ici et ensuite adaptée à ShIoTiny.

Tout d'abord, comprends ce que tu veux

Le processus d'amélioration est infini. Et c'est cette caractéristique qui a ruiné de nombreuses bonnes idées et projets. Le développeur, au lieu de sortir quelque chose de fonctionnel, même imparfait, continuait à l'améliorer. Et il a perfectionné jusqu'à ce que les concurrents le dépassent en lançant leur propre solution, même si elle était imparfaite (et souvent franchement médiocre), mais fonctionnelle.

Il est donc très important de savoir où mettre le point dans le projet. Autrement dit, il faut définir ce que nous voulons obtenir à la fin du projet à partir de ce que nous avons au début. En français, pour un document qui est élaboré justement pour décrire le chemin de création de quelque chose, il existe un joli mot court et concis : « plan », que des traducteurs mentalement limités et des gestionnaires défectueux ont récemment commencé à appeler « feuille de route ». Enfin, peu importe.

Notre plan sera le suivant. Supposons qu'il y ait une pièce dont l'humidité peut parfois augmenter considérablement. Par exemple, une salle de bain ou une cuisine. L'humidité est désagréable et le moyen de la combattre est aussi ancien que le monde : aérer la pièce. Il existe de nombreuses méthodes d'aération. Mais, nous allons faire fi des méthodes exotiques et désuètes comme des esclaves avec des éventails et nous allons nous concentrer sur un ventilateur ordinaire. Les ventilateurs sont moins chers et plus faciles à trouver par chez nous.

En un mot, nous voulons contrôler le ventilateur : l'allumer et, par conséquent, l'éteindre. Plus précisément, nous voulons qu'il s'allume et s'éteigne automatiquement lorsque cela est nécessaire.

Il reste à déterminer : dans quelles conditions le ventilateur doit s'allumer et dans quelles conditions il doit s'éteindre.

Tout est évident ici : si l'humidité dépasse un certain seuil, le ventilateur s'allume et aspire l'air ; lorsque l'humidité revient à la normale, le ventilateur s'éteint.

Le lecteur attentif remarquera immédiatement le mot « donnée ». Par qui est-elle donnée ? Comment est-elle donnée ?

Le seuil d'humidité peut être défini de plusieurs manières. Nous examinerons deux d'entre elles : la première, à l'aide d'une résistance variable, et la seconde, via le réseau à travers le protocole MQTT. Chacune de ces méthodes a des avantages et des inconvénients, qui seront examinés plus loin.

Pour ceux qui n'ont pas compris, je vais expliquer que « seuil d'humidité » est un niveau d'humidité au-delà duquel le ventilateur doit être allumé.

La question suivante : donner à l'utilisateur la possibilité d'activer le ventilateur directement ? C'est-à-dire, indépendamment du niveau d'humidité, sur simple pression d'un bouton ? Nous allons prévoir cette possibilité. En effet, le ventilateur peut être nécessaire non seulement en cas d'humidité élevée, mais aussi pour évacuer, par exemple, une odeur désagréable appelée communément « puanteur ».

Donc, nous avons compris ce que nous voulons et même un peu comment cela fonctionnera. Résumons brièvement toutes les fonctions de notre système de gestion de la ventilation :

  • réglage du seuil d'humidité (deux options) ;
  • mesure du niveau d'humidité ;
  • activation automatique du ventilateur ;
  • désactivation automatique du ventilateur ;
  • activation manuelle du ventilateur (sur pression d'un bouton).

Ainsi, le plan est clair. Nous devons implémenter toutes les fonctions mentionnées ci-dessus dans notre programme. Sur la base de ce « plan », nous allons agir. Pour commencer, dessinons le schéma structurel de l'appareil.

Schéma structurel de l'appareil

En fait, nous aurons deux schémas. Le premier - pour le cas où le seuil d'humidité est défini par une résistance variable. Le second schéma - pour le cas où le seuil d'humidité est défini via le réseau par le protocole MQTT.

Mais comme ces schémas ne différeront que par un seul élément - la résistance variable « réglage du seuil d'humidité », nous allons dessiner seulement un schéma structurel. Bien sûr, un schéma structurel conforme à la norme GOST a un aspect différent. Mais nous ne nous adressons pas aux ingénieurs chevronnés, mais à la jeune génération. Donc, la clarté est plus importante.

ShIoTiny : ventilation d'une pièce humide (projet-exemple)

Alors, que voyons-nous sur le dessin ? Le ventilateur est connecté à un relais Relay1 du contrôleur ShIoTiny. Je souligne que le ventilateur est un appareil qui fonctionne sous haute tension. Donc, si quelqu'un doit en construire un soi-même - faites preuve de prudence. Autrement dit, avant de mettre vos doigts ou des appareils de mesure dans le circuit, débranchez au moins le ventilateur. Et une autre remarque. Si votre ventilateur est plus puissant que 250W, ne l'activez pas directement à ShIoTiny moins - uniquement via un démarreur.

Nous avons compris le fonctionnement du ventilateur. Maintenant, le bouton « activation manuelle » du ventilateur. Il est connecté à l'entrée Input1. Ici, il n'y a pas grand-chose à expliquer.

Capteur de température et d'humidité DHT-11 ou DHT-22 ou leurs analogues). Une entrée spéciale sur le contrôleur est prévue pour sa connexion. ShIoTiny. Comme on le voit sur l'illustration, connecter ce type de capteur ne pose également aucun problème.

Et enfin, la résistance variable qui définit le seuil d'humidité. Plus précisément, un diviseur composé de résistances variable et fixe. Il n'y a pas de problème pour le connecter, mais je précise que l'ADC intégré est ESP8266 prévu pour un maximum de 1 Volt. C'est pourquoi un diviseur de tension d'environ 5 fois est nécessaire.

Et je rappelle encore une fois que ce diviseur n'est pas nécessaire si le seuil d'humidité est défini via le réseau utilisant le protocole MQTT.

Commençons à établir l'algorithme de fonctionnement de l'appareil dans l'éditeur ElDraw ShIoTiny. Pour savoir comment y accéder, vous pouvez consulter les articles précédents ou le manuel, dont le lien est au début de l'article.

Option première, la plus simple

Commençons par ce qui est simple : activer le relais Relay1 lorsque le seuil d'humidité est dépassé pendant un temps défini.

ShIoTiny : ventilation d'une pièce humide (projet-exemple)

Comme nous le voyons, rien de compliqué : seulement quatre nœuds, sans compter les nœuds de commentaires. DHT11 — c'est justement le capteur de température et d'humidité (vous pouvez remplacer par DHT22).

Constante CONST — le seuil d'humidité, en pourcentage.

Le comparateur est un nœud qui compare deux nombres et produit 1 à la sortie si la condition donnée est remplie et 0 si elle ne l'est pas.

Dans notre cas, la condition sera A>B, où A — le niveau d'humidité mesuré par le capteur, et B — le seuil d'humidité précédent.

Dès que le niveau d'humidité mesuré (A) dépassera le seuil d'humidité (B), alors à la sortie du comparateur A>B apparaîtra 1 et le relais s'activera. Inversement, dès que le niveau d'humidité redeviendra normal (c'est-à-dire A<=B), alors à la sortie du comparateur A>B apparaîtra 0 et le relais se désactivera.

Tout est clair ? Pour ceux qui ne comprennent pas bien, relisez encore une fois ou jetez un œil à la description du fonctionnement des nœuds dans le manuel.

Je souligne que les données du capteur DHT11 s'actualisent environ une fois toutes les 10 secondes. Par conséquent, le relais ne peut pas s'activer et se désactiver plus d'une fois toutes les 10 secondes.

Tout irait bien, mais nous aimerions définir le seuil d'humidité à l'aide d'un potentiomètre. Rien de plus simple !

ShIoTiny : ventilation d'une pièce humide (projet-exemple)

Remplaçons simplement le nœud constant par un nœud ADC. C'est en effet à l'ADC que nous avons connecté le diviseur de tension avec le potentiomètre.

La tension à l'entrée de l'ADC varie de 0 à 1 Volt. En revanche, l'humidité à la sortie du capteur varie de 0 à 100 %. Comment les comparons-nous ? C'est simple. Le module ADC ShIoTiny ne se contente pas de mesurer la tension à l'entrée, mais il peut aussi la mettre à l'échelle et la décaler..

Ainsi, la valeur à la sortie du module ADC1 sera X, calculée selon la formule

ShIoTiny : ventilation d'une pièce humide (projet-exemple)

, où ShIoTiny : ventilation d'une pièce humide (projet-exemple) — tension à l'entrée de l'ADC (de 0 à 1 V); k — plage (plage ADC) et b— décalage (décalage ADC). Donc, si nous définissons k=100 et b=0, alors, lorsque la tension ShIoTiny : ventilation d'une pièce humide (projet-exemple) varie entre 0 et 1, la valeur X à la sortie du module ADC variera entre 0 et 100. Cela signifie qu'elle est numériquement égale à la plage d'humidité allant de 0 à 100 %.

En d'autres termes, en tournant le moteur de la résistance variable, on peut définir un niveau seuil d'humidité de 0 à 100. Le seul inconvénient, c'est qu'il n'y a aucun dispositif d'affichage. Mais en pratique, si on fait six divisions sur le moteur de résistance variable à 0 %, 20 %, 40 %, 60 %, 80 %, 100 %) — cela suffit pour régler le niveau seuil d'humidité.

Comment définir les coefficients k — plage (plage ADC) et b— décalage (décalage ADC) ? C'est aussi simple qu'un clin d'œil ! Cliquez avec le bouton de la souris sur le module ADC1 et une fenêtre de réglage apparaîtra. Vous pouvez y définir tout ce dont vous avez besoin. Pour notre cas, cela sera une fenêtre comme sur l'image.

ShIoTiny : ventilation d'une pièce humide (projet-exemple)

Ainsi, nous avons une solution de travail très simple. Commençons à l'améliorer.
Au fait, cette solution simple a un avantage — elle n'a pas besoin d'Internet. Elle est complètement autonome.

Deuxième option, ajoutons un bouton.

Tout fonctionne et tout le monde est content. Mais voilà le problème, nous ne pouvons pas activer la ventilation manuellement. Nous avons déjà convenu que nous connecterions un bouton à l'entrée Input1 qui allumerait et éteindrait le ventilateur manuellement, sans tenir compte du capteur d'humidité.
Il est temps de traiter ce bouton dans notre schéma/programme.

ShIoTiny : ventilation d'une pièce humide (projet-exemple)

Le bloc de traitement de la pression sur le bouton est délimité par une ligne orange. Il s'agit d'un compteur de pressions sur le bouton qui se réinitialise à zéro lorsque la valeur à sa sortie dépasse un. CT).

Tout fonctionne ici de manière tout aussi simple que précédemment : le compteur CT compte les pressions sur le bouton connecté à l'entrée. Input1Autrement dit, la valeur à la sortie de ce compteur augmente de 1 à chaque pression sur le bouton.

Dès que cette valeur devient égale à deux (c'est-à-dire plus que 1), la sortie du comparateur A>B Il apparaîtra 1. Et ce 1 remettra le compteur à zéro CT Cela signifie le comparateur, le plus bas dans le schéma !

Ainsi, notre bouton a deux états — 0 et 1. Si nous avions besoin de plus d'états (3, 4 ou plus) — il nous suffirait de changer la constante CONST de 1 à une autre valeur.

Nous avons donc deux conditions pour activer le ventilateur : dépasser un certain niveau d'humidité et appuyer une fois sur le bouton. Si l'une des conditions est remplie, le ventilateur s'active. Il fonctionnera jusqu'à ce que le bouton soit à nouveau pressé Et ou que le niveau d'humidité revienne à la normale.

Bien sûr, on pourrait compliquer davantage l'algorithme, mais nous ne le ferons pas — nous laisserons de la place à la créativité pour ceux qui le souhaitent.

Troisième option, nous nous connectons à Internet

Tout ce que nous avons décrit est tout à fait fonctionnel. Mais qu'en est-il de l'apparence ? Après tout, n'importe quel hipster hacker à l'acné se moquera de celui qui tourne un bouton et appuie sur un bouton, au lieu de contrôler depuis un smartphone ! Tourner un bouton — ce n'est « pas à la mode ». Mais faire glisser son doigt sur un smartphone, jusqu'à se faire saigner — voilà le summum des désirs d'un hacker hipster (je n'ai jamais pu différencier tous leurs types — donc si je fais erreur, excusez-moi).

Mais soyons indulgents envers ces personnes. La gestion via Internet a aussi des avantages réels. Premièrement, c'est visuel. Il existe de nombreuses applications pour toutes les plateformes, qui permettent de créer une interface de contrôle tout à fait utilisable avec quelques clics sur notre contrôleur de type Carlsson. Deuxièmement, cela permet d'observer à distance l'état de l'humidité dans la pièce. Et troisièmement, on peut voir non seulement ce que fait le ventilateur — s'il tourne ou non, mais aussi quel niveau d'humidité a été défini. Et il peut être vu — si le ventilateur a été activé automatiquement ou manuellement. En gros, tout ce que vous souhaitez.

Bien sûr, pour un ventilateur, c'est beaucoup d'attention. Mais c'est juste un exemple.

Ainsi, pour la connexion à Internet, nous allons utiliser la technologie MQTT et son protocole éponyme.
Pour utiliser cette technologie, nous avons besoin d'un broker MQTT. C'est un serveur spécial qui gère les clients MQTT, par exemple ShIoTIny et votre smartphone.

Le principe de la technologie MQTT est que n'importe quel client publie sur le broker MQTT (serveur) des données arbitraires sous un nom spécifique (appelé topic dans la terminologie MQTT). D'autres clients peuvent s'abonner à des données arbitraires par leur nom (topic) et recevoir des données nouvellement publiées. En d'autres termes, tout l'échange de données se fait selon le principe client-broker-client.

Je je ne vais pas insister sur les détails. Il existe une multitude d'articles et de tutoriels sur le fonctionnement de MQTT et sur les programmes disponibles pour créer des panneaux de contrôle. Je vais juste montrer comment nous pouvons accepter et publier des données via ShIoTiny.

En tant que broker, j'ai utilisé www.cloudmqtt.com, mais le principe est le même partout.

Donc, considérons que vous vous êtes enregistré sur un broker MQTT. En général, le broker vous fournira (ou exigera que vous conceviez) un nom d'utilisateur et un mot de passe (pour l'autorisation), ainsi qu'un port pour la connexion. Connecter ShIoTiny sur au broker MQTT peut se faire de deux manières : connexion classique et via TLS (SSL).

Tous ces paramètres dans ShIoTiny sont saisis dans l'onglet Réseau, section Connexion MQTT au serveur.

ShIoTiny : ventilation d'une pièce humide (projet-exemple)

Si votre broker MQTT ne nécessite pas d'autorisation, ne saisissez pas de nom d'utilisateur et de mot de passe (laissez ces champs vides).

Paramètre Préfixe de sujet MQTT nécessite une explication distincte.

Le préfixe des paramètres MQTT est une chaîne ajoutée au nom du sujet (topic) lors de la publication et de l'abonnement sur le broker MQTT. Pour définir le préfixe MQTT pour votre contrôleur, il suffit de le saisir dans le champ d'entrée «Préfixe de sujet MQTT» («Préfixe de sujet MQTT»). Le préfixe commence toujours par un slash («/») ! Si vous n'entretez pas de slash dans le champ d'entrée, il sera ajouté automatiquement. Les caractères «#» et «+»ne peuvent pas être utilisés dans le préfixe. Il n'y a pas d'autres restrictions.

Par exemple, si vous publiez le paramètre «statut» (ou vous y abonnez), et que votre préfixe est défini comme «/shiotiny/», alors sur le broker, ce paramètre sera publié sous le nom «/shiotiny/status». Si vous avez défini un préfixe vide, tous les paramètres sur le broker commenceront par un slash («/»): «statut» sera publié comme «/status».

Donc, considérons que vous vous êtes enregistré sur un broker MQTT et que vous avez obtenu un nom d'utilisateur, un mot de passe et un port. Ensuite, vous avez saisi ces paramètres dans l'onglet Réseau, section Connexion MQTT au serveur du contrôleur ShIoTiny.

Supposons que le préfixe soit défini sur «/room/».

Commençons par publier l'état de tous les paramètres clés : relais Realay1, état de l'activation manuelle, état de l'activation automatique et, enfin, les niveaux d'humidité seuil et actuel. Et en bonus — la température ambiante. Comment faire cela, voir l'illustration.

ShIoTiny : ventilation d'une pièce humide (projet-exemple)

Comme nous le voyons, la différence avec l'option précédente est seulement les nœuds «Publication MQTT». En tenant compte du préfixe, les paramètres suivants sont publiés :
ShIoTiny : ventilation d'une pièce humide (projet-exemple)

Comme nous le voyons, tout l'état du système est à portée de main !

Mais nous voulons non seulement voir, mais aussi gérer. Que faire ? C'est très simple. Nous allons nous passer de l'installation d'un seuil d'humidité à l'aide de ADC et d'un potentiomètre variable, et nous allons définir ce seuil d'humidité directement depuis MQTT notre smartphone !

ShIoTiny : ventilation d'une pièce humide (projet-exemple)

Nous supprimons le nœud ADC du schéma et y ajoutons trois nouveaux nœuds : FLASH store, FLASH restore et MQTT describe.

La fonction du nœud MQTT describe est évidente : il reçoit le paramètre /room/trigHset (seuil d'humidité) depuis le courtier MQTT. Mais que fait-il avec les données par la suite ? Il les transmet simplement au nœud FLASH store, qui, à son tour, enregistre ces données dans la mémoire non volatile sous le nom de trigH. Après cela, le nœud FLASH restore lit les données depuis la mémoire non volatile sous le nom de trigH et ce qui se passe ensuite, nous le savons déjà.

Pourquoi tant de complications ? Pourquoi ne pas simplement transmettre les données reçues à l'entrée du comparateur ?

Comme disait le camarade S. Holmes — c'est élémentaire! Personne ne garantit qu'après avoir allumé votre appareil, il se connectera à au broker MQTT. Et il faut mesurer l'humidité. Et il faut allumer le ventilateur. Mais sans information sur le seuil d'humidité, c'est impossible ! C'est pourquoi notre appareil, lors de son allumage, extrait le seuil d'humidité précédemment mémorisé de la mémoire non volatile et l'utilise pour prendre des décisions. Et lorsque la connexion avec le courtier MQTT sera établie et que quelqu'un publiera une nouvelle valeur /room/trigHset, alors cette nouvelle valeur sera utilisée.

Ensuite, vous pouvez imaginer tout ce que vous voulez. Par exemple, en plus de l'humidité, introduire également le suivi de la température. Ou ajouter une gestion « intelligente » de l'éclairage (nous avons encore deux relais et deux entrées non utilisées). Tout est entre vos mains !

Conclusion

Ainsi, nous avons examiné quelques exemples de la mise en œuvre d'un contrôleur très simple basé sur ShIoTiny. Cela pourrait être utile à quelqu'un.

Comme toujours, suggestions, souhaits, questions, fautes d'orthographe et autres — à l'adresse e-mail : shiotiny@yandex.ru

Source : habr.com

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster