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

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

Points principaux ou de quoi parle cet article

Nous continuons la série d'articles sur ShioTiny - contrôleur basé sur une puce visuellement programmable ESP8266.

Cet article décrit, à l'aide de l'exemple d'un projet de contrôle de la ventilation dans une salle de bain ou une autre pièce très humide, comment un programme est construit pour ShioTiny.

Articles précédents de la série.

ShIoTiny : petite automatisation, Internet des objets ou « six mois avant les vacances »
ShIoTiny : nœuds, liens et événements ou fonctionnalités des programmes de dessin

références

Firmware binaire, circuit du contrôleur et documentation
Instructions et description des composants
Configuration du courtier MQTT cloudmqtt.com
Панель управления MQTT dashboard для Android

introduction

Il n’y a pas de compréhension sans expérience. C’est une vérité éprouvée par le temps et les générations. Par conséquent, il n’y a rien de mieux pour acquérir des compétences pratiques que d’essayer de faire quelque chose soi-même. Et des exemples montrant ce que vous pouvez faire et ce que vous ne devriez même pas essayer vous seront utiles ici. Bien entendu, les erreurs des autres ne peuvent pas empêcher la survenue de vos propres erreurs, mais elles peuvent contribuer à réduire le nombre de ces dernières.

Les questions et les lettres des lecteurs des articles précédents m'ont incité à réaliser un petit projet - un exemple de contrôle de la ventilation afin de montrer comment fonctionnent les nœuds ShIoTiny.

L'idée originale de laquelle est né le contrôleur ShioTiny - station de pompage et d'irrigation - ne convient pas à tout le monde et n'intéressera pas tout le monde. Par conséquent, j'ai pris comme exemple un système de contrôle de la ventilation qui est compréhensible et utile pour beaucoup.

Je dirai que l'idée du projet n'est pas la mienne, mais Je l'ai eu d'ici puis adapté à ShioTiny.

Comprenez d’abord ce que vous voulez

Le processus d’amélioration est sans fin. Et c’est cette propriété qui a ruiné de nombreuses bonnes idées et projets. Le développeur, au lieu de publier quelque chose qui n'était pas parfait, mais qui fonctionnait toujours, a continué à l'améliorer. Et il l'a amélioré jusqu'à ce que les concurrents l'aient contourné, en proposant une solution fonctionnelle, même si elle n'est pas idéale (et souvent carrément médiocre), mais qui fonctionne.

Il est donc très important de savoir où mettre fin au projet. Ou, en d’autres termes, nous devons déterminer ce que nous voulons obtenir à la fin du projet par rapport à ce que nous avons au début. En russe, pour un document compilé précisément dans le but de décrire le chemin vers la création de quelque chose, il existe un merveilleux mot court et succinct « plan », que les traducteurs mentalement retardés et les gestionnaires défectueux ont récemment commencé, pour une raison quelconque, à appeler « route carte". Eh bien, que Dieu les bénisse.

Notre plan sera comme ceci. Supposons qu'il existe une pièce dans laquelle l'humidité peut parfois augmenter considérablement. Par exemple, comme une salle de bain ou une cuisine. L'humidité est une chose désagréable et la façon de la combattre est vieille comme le monde : aérer la pièce. Il existe plusieurs façons de ventiler. Mais nous abandonnerons peut-être les méthodes exotiques et démodées comme les noirs avec des éventails et nous en tiendrons à un éventail régulier. Les ventilateurs sont moins chers et plus faciles à trouver dans notre région.

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 en cas de besoin.

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

Ici, tout est évident : si l'humidité dépasse une certaine limite, le ventilateur se met en marche et aspire l'air ; L'humidité est revenue à la normale - le ventilateur s'éteint.

Un lecteur attentif remarquera immédiatement le mot « donné ». Donné par qui ? Comme spécifié?

Vous pouvez régler le seuil d'humidité de plusieurs manières. Nous en examinerons deux : le premier - utilisant une résistance variable et le second - sur le réseau via le protocole MQTT. Chacune de ces méthodes présente des avantages et des inconvénients, qui seront évoqués ultérieurement.

Pour ceux qui ne comprendraient pas, je vais expliquer que le « seuil d’humidité » est un taux d’humidité au-dessus duquel le ventilateur doit être allumé.

La question suivante est : l’utilisateur doit-il avoir le droit d’allumer directement le ventilateur ? C'est-à-dire, quel que soit le niveau d'humidité, sur simple pression d'un bouton ? Nous prévoirons une telle possibilité. Après tout, un ventilateur peut être nécessaire non seulement en cas d'humidité élevée, mais également pour éliminer de la pièce, par exemple, une odeur désagréable, communément appelée « puanteur ».

Ainsi, nous comprenons ce que nous voulons et même un peu comment cela va fonctionner. Listons brièvement toutes les fonctions de notre système de contrôle de ventilation :

  • réglage du niveau d'humidité seuil (deux options) ;
  • mesure du niveau d'humidité;
  • allumage automatique du ventilateur ;
  • arrêt automatique du ventilateur ;
  • activation manuelle du ventilateur (en appuyant sur un bouton).

Le plan est donc clair. Il est nécessaire d'implémenter toutes les fonctions ci-dessus dans notre programme. Nous agirons sur la base de ce « plan ». Tout d’abord, dessinons un schéma fonctionnel de l’appareil.

Schéma fonctionnel de l'appareil

De manière générale, nous aurons deux de ces schémas. La première concerne l'option dans laquelle le niveau d'humidité seuil est fixé par une résistance variable. Le deuxième schéma concerne l'option dans laquelle le niveau d'humidité seuil est défini sur le réseau via le protocole MQTT.

Mais comme ces circuits ne différeront que par un seul élément - la résistance variable « fixant le niveau d'humidité seuil », nous ne dessinerons qu'un seul schéma fonctionnel. Bien sûr, le schéma fonctionnel selon GOST est différent. Mais nous ne nous concentrons pas sur les ingénieurs bison, mais sur la jeune génération. La visibilité est donc plus importante.

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

Alors, que voit-on sur la photo ? Le ventilateur est connecté au relais Relay1 manette ShioTiny. Veuillez noter que le ventilateur est un appareil haute tension. Par conséquent, si quelqu’un fait cela lui-même, soyez prudent. Autrement dit, au minimum, avant de mettre vos doigts ou des instruments de mesure dans le circuit, coupez au moins l'alimentation du ventilateur. Et la deuxième note. Si votre ventilateur est plus puissant que 250W, puis connectez-le directement à ShioTiny ça n'en vaut pas la peine - uniquement via le démarreur.

Nous avons réglé le ventilateur. Maintenant, le bouton « allumer manuellement » le ventilateur. Il est connecté à l'entrée Entrée1. Il n'y a plus rien à expliquer ici.

Capteur de température et d'humidité DHT-11 (ou DHT-22 ou leurs analogues). Il y a une entrée spéciale sur le contrôleur pour sa connexion. ShioTiny. Comme vous pouvez le voir sur la figure, la connexion d'un tel capteur ne pose pas non plus de problème.

Et enfin, une résistance variable, qui fixe le niveau seuil d'humidité. Plus précisément, un diviseur constitué de résistances variables et constantes. Il n'y a aucun problème avec sa connexion, mais laissez-moi vous expliquer que l'ADC intégré est ESP8266 conçu pour un maximum de 1 Volt. Par conséquent, un diviseur de tension d’environ 5 fois est nécessaire.

Et permettez-moi de vous rappeler encore une fois que ce diviseur n'est pas nécessaire si le niveau d'humidité seuil est défini sur le réseau à l'aide du protocole MQTT.

Commençons par créer un algorithme pour l'appareil dans l'éditeur ElDraw ShIoTiny. Comment y accéder, vers cet éditeur, peut être lu dans des articles précédents ou dans les instructions dont le lien se trouve au début de l'article.

Première option, la plus simple

Commençons par quelque chose de simple : allumer le relais Relay1 lorsque le niveau d’humidité seuil est dépassé pendant une durée spécifiée.

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

Comme vous pouvez le constater, rien de compliqué : seulement quatre nœuds, sans compter les nœuds de commentaires. DHT11 - il s'agit du capteur de température et d'humidité lui-même (peut être remplacé par DHT22).

constant CONST — niveau d'humidité seuil, en pourcentage.

Comparateur - un nœud qui compare deux nombres et génère 1 si une condition donnée est remplie et 0 si la condition n'est pas remplie.

Dans notre cas, cette condition sera A>BA est le taux d'humidité mesuré par le capteur, et B — le niveau seuil de la même humidité.

Dès que le taux d'humidité mesuré (A) dépassera le niveau d'humidité seuil (B), juste là à la sortie du comparateur A>B 1 apparaîtra et le relais s’allumera. A l’inverse, dès que le taux d’humidité revient à la normale (c’est-à-dire A<=B), juste là à la sortie du comparateur A>B 0 apparaîtra et le relais s'éteindra.

Tout est clair? Pour ceux qui ne sont pas très à l'aise, relisez-le ou regardez la description du fonctionnement des unités dans la notice.

Notez que les données du capteur DHT11 mis à jour environ une fois toutes les 10 secondes. Par conséquent, le relais ne pourra pas s'allumer et s'éteindre plus d'une fois toutes les 10 secondes.

Tout irait bien, mais nous aimerions régler le niveau d'humidité seuil à l'aide d'une résistance variable. Rien de plus simple !

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

Remplaçons simplement le nœud constant par un nœud ADC. Après tout, c'est à l'ADC que nous avons connecté un diviseur de tension avec une résistance variable.

La tension à l'entrée ADC varie de 0 à 1 Volt. Mais l'humidité à la sortie du capteur varie de 0 à 100 %. Comment les comparer ? C'est simple. Nœud ADC dans ShioTiny non seulement mesure la tension d'entrée, mais sait également comment échelle et changement.

Autrement dit, la sortie du nœud ADC1 (ADC) aura la valeur X, calculé par la formule

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

ShIoTiny : ventilation d'une pièce humide (exemple de projet) — tension à l'entrée ADC (de 0 à 1V) ; k - plage (gamme ADC) et b-offset (décalage ADC). Ainsi, si vous définissez k = 100 и b = 0, puis lors du changement ShIoTiny : ventilation d'une pièce humide (exemple de projet) dans la plage de 0 à 1, valeur X à la sortie du nœud ADC variera dans la plage de 0 à 100. C'est-à-dire numériquement égal à la plage de changements d'humidité de 0 à 100 %.

Ou, simplement, en tournant le curseur de résistance variable, vous pouvez régler le niveau d'humidité seuil de 0 à 100. Le seul inconvénient est qu'il n'y a pas de dispositifs d'affichage. Mais en pratique, si vous effectuez 6 divisions d'un moteur à résistance variable (0%, 20%, 40%, 60%, 80%, 100%) - alors cela suffit pour régler le seuil d'humidité.

Comment fixons-nous les cotes ? k - plage (gamme ADC) et b-offset (décalage ADC) ? Oui, plus facile que des navets cuits à la vapeur ! Pointez le pointeur de votre souris sur un nœud CAN1 et immédiatement vous verrez une fenêtre de paramètres. Vous pouvez y mettre tout ce dont vous avez besoin. Dans notre cas, ce sera une fenêtre comme celle de la figure.

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

Nous avons donc la solution de travail la plus simple. Commençons par l'améliorer.
Soit dit en passant, la solution la plus simple présente un avantage : elle ne nécessite pas Internet. Il est totalement autonome.

Deuxième option, connectez le bouton

Tout fonctionne et tout le monde est content. Mais pas de chance, on ne peut pas allumer la ventilation de force. Nous avons déjà convenu qu'à l'entrée Entrée1 nous aurons un bouton connecté qui allumera et éteindra de force le ventilateur, quel que soit le capteur d'humidité.
Il est temps de traiter ce bouton dans notre diagramme de programme.

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

Le bloc de traitement des clics sur le bouton est mis en évidence par une ligne orange. Il s'agit d'un compteur d'appuis sur les boutons, qui se remet à zéro lorsque la valeur à sa sortie dépasse un (ligne verte, sortie du nœud CT).

Ici, tout fonctionne aussi simplement qu'avant : le compteur CT compte les appuis sur un bouton connecté à l'entrée Entrée1. C'est-à-dire que 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 supérieure à 1), immédiatement à la sortie du comparateur A>B Apparaîtra 1. Et ce 1 remettra à zéro le compteur CT à zéro. Cela veut dire le comparateur, celui du bas du schéma !

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

Nous avons donc deux conditions pour allumer le ventilateur : dépasser un taux d'humidité donné et appuyer une fois sur le bouton. Si l'une des conditions est remplie, le ventilateur se mettra en marche. Et cela fonctionnera jusqu'à ce que le bouton soit à nouveau enfoncé И le niveau d'humidité ne reviendra pas à la normale.

Vous pouvez bien sûr compliquer encore plus l'algorithme, mais nous ne le ferons pas - nous laisserons place à la créativité à ceux qui le souhaitent.

Troisième option, connectez-vous à Internet

Tout ce que nous avons décrit est tout à fait réalisable. Et les frimeurs ? Après tout, n’importe quel hacker boutonneux et hipster se moquera de quelqu’un qui tourne un bouton et appuie sur un bouton plutôt que de le contrôler depuis un smartphone ! Tourner la poignée n’est « pas à la mode ». Mais ramper avec votre doigt sur votre smartphone, vous frotter le doigt avec du sang - c'est le summum des désirs d'un hipster-hacker-cracker (je n'ai jamais pu tous les distinguer - donc si je me trompais, pardonnez-moi).

Mais soyons indulgents envers ces individus. Il y a de réels avantages à gérer via Internet. Premièrement, c'est la visibilité. Il existe de nombreuses applications pour toutes les plates-formes qui vous permettent de créer un panneau de contrôle entièrement utilisable pour notre contrôleur Carlson avec quelques ajustements. Deuxièmement, c'est l'occasion de surveiller à distance l'état d'humidité de la pièce. Et troisièmement, vous pouvez voir non seulement ce que fait le ventilateur - s'il tourne ou non, mais également quel niveau d'humidité seuil est défini. Et puis le ventilateur s'est allumé automatiquement ou manuellement. En général, tout ce que vous voulez.

Bien sûr, c’est un grand honneur pour un fan de recevoir autant d’attention. Mais ce n'est qu'un exemple.

Donc, pour nous connecter à Internet, nous utiliserons la technologie MQTT et le protocole du même nom.
Pour profiter de cette technologie, nous avons besoin Courtier MQTT. Il s'agit d'un serveur spécial qui sert Clients MQTTexemple ShioTINy et votre smartphone.

L'essence de la technologie MQTT consiste dans le fait que l'un des clients publie des données arbitraires sur le courtier (serveur) MQTT sous un nom spécifique (appelé sujet en terminologie MQTT). D'autres clients peuvent s'abonner à des données arbitraires en utilisant leur nom (sujet) et recevez les données nouvellement publiées. Autrement dit, tout échange de données suit le principe client-courtier-client.

Я Je ne vais pas concentrez-vous sur les détails. Il existe de nombreux articles et tutoriels sur Internet expliquant son fonctionnement. MQTT et quels programmes existe-t-il pour créer des panneaux de contrôle. Je vais juste vous montrer comment nous pouvons recevoir et publier des données en utilisant ShioTiny.

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

Nous supposerons donc que vous êtes inscrit à Courtier MQTT. En général, le courtier vous donnera (ou vous demandera de fournir) un nom d'utilisateur et un mot de passe (pour l'autorisation), ainsi qu'un port de connexion. Insérer ShioTiny к Courtier MQTT possible de deux manières - connexion régulière et via TLS (SSL).

Tous ces paramètres dans ShioTiny saisi sur l'onglet Networkingsection Connexion MQTT au serveur.

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

Si ton Courtier MQTT ne nécessite pas d'autorisation - ne saisissez pas votre identifiant et votre mot de passe (laissez ces champs vides).

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

Le préfixe des paramètres MQTT est une chaîne ajoutée au nom du sujet (sujet) lors de la publication et de l'abonnement à un courtier MQTT. à installer Préfixe MQTT pour votre contrôleur, il vous suffit de le saisir dans le champ de saisie "Préfixe de sujet MQTT»(«Préfixe du sujet MQTT"). Le préfixe commence toujours par une barre oblique (« / »)! Si vous ne saisissez pas de barre oblique dans le champ de saisie, elle sera ajoutée automatiquement. Vous ne pouvez pas utiliser de symboles dans le préfixe "#" и "+". Il n'y a pas d'autres restrictions.

Par exemple, si vous publiez le paramètre "statuts" (ou abonnez-vous) et votre préfixe est défini sur "/shiotiny/", alors ce paramètre sera publié sur le courtier sous le nom "/shiotiny/statut" Si vous avez un préfixe vide, alors tous les paramètres du courtier commenceront par une barre oblique (« / »): "statuts" sera publié sous le titre "/statut».

Nous pensons donc que vous êtes inscrit à Courtier MQTT et j'ai reçu un identifiant, un mot de passe et un port. Ensuite vous avez renseigné ces paramètres sur l'onglet Networkingsection Connexion MQTT au serveur manette ShioTiny.

Nous supposons que le préfixe est défini sur "/chambre/».

Commençons par publier l'état de tous les paramètres clés : relais Réel1, les états de commutation manuels, les états de commutation automatiques et enfin les niveaux d'humidité seuil et actuels. Eh bien, un bonus est la température dans la pièce. Comment faire cela, voir la figure.

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

Comme vous pouvez le constater, la différence par rapport à la version précédente réside uniquement dans les nœuds "Publication MQTT" Compte tenu du préfixe, les paramètres suivants sont publiés :
ShIoTiny : ventilation d'une pièce humide (exemple de projet)

Comme vous pouvez le constater, nous avons tout l’état du système dans la paume de nos mains !

Mais nous voulons non seulement voir, mais aussi contrôler. Que dois-je faire? Très simple. Nous refuserons de fixer un seuil d'humidité à l'aide de ADC et une résistance variable et nous fixerons ce seuil d'humidité en fonction de MQTT directement depuis votre smartphone !

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

Nous supprimons le nœud ADC du circuit et y incluons trois nouveaux nœuds : magasin FLASH, Restauration FLASH и MQTT décrire.

Fonction de nœud MQTT décrire évident : il reçoit un paramètre /room/trigHset (niveau d'humidité seuil) s Courtier MQTT. Mais que fait-il ensuite des données ? Il suffit de les donner au nœud magasin FLASH, qui à son tour stocke ces données dans une mémoire non volatile sous le nom trigH. Après cela, le nœud Restauration FLASH lit les données de la mémoire non volatile sous le nom trigH et nous savons déjà ce qui se passera ensuite.

Pourquoi de telles difficultés ? Pourquoi les données reçues ne peuvent-elles pas être immédiatement envoyées à l’entrée du comparateur ?

Comme le disait le camarade S. Holmes : c'est élémentaire! Personne ne garantit qu'après avoir allumé votre appareil, il rejoindra Courtier MQTT. Et l'humidité doit être mesurée. Et le ventilateur doit être allumé. Mais sans information sur le taux d’humidité seuil, c’est impossible ! Par conséquent, lorsqu’il est allumé, notre appareil récupère le niveau d’humidité seuil précédemment stocké dans la mémoire non volatile et l’utilise pour prendre des décisions. Et lorsque la connexion est établie avec Courtier MQTT et quelqu'un publiera une nouvelle valeur /room/trigHset, alors cette nouvelle valeur sera utilisée.

Ensuite, vous pouvez proposer ce que vous voulez. Par exemple, en plus de l'humidité, introduisez également la comptabilité de la température. Ou ajoutez un contrôle d’éclairage « intelligent » (nous avons encore deux relais et deux entrées inutilisés). Tout est dans tes mains!

Conclusion

Nous avons donc examiné plusieurs exemples d'implémentation d'un contrôleur essentiellement simple basé sur ShIoTiny. Peut-être que cela sera utile à quelqu'un.

Comme toujours, suggestions, souhaits, questions, fautes de frappe, etc. - par email : shiotiny@yandex.ru

Source: habr.com

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