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


Points clés ou sujet de cet article


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

Cet article décrit un exemple de projet de contrôle de la ventilation dans une salle de bain ou une autre pièce humide sur la façon de créer un programme 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 caractéristiques des programmes de dessin

Les références


Site du projet ShIoTiny
Micrologiciel binaire, circuits de contrĂ´leur et documentation
Instructions et description des nœuds
Configuration du courtier MQTT cloudmqtt.com
Panneau de configuration du tableau de bord MQTT pour Android

Présentation


Il n'y a pas de compréhension en dehors de l'expérience. Telle est la vérité testée par le temps et les générations. Par conséquent, il n'y a rien de mieux pour apprendre des compétences pratiques que d'essayer de faire quelque chose par vous-même. Et des exemples qui montrent ce qui peut être fait et ce qui ne vaut pas la peine d'être essayés, ici, seront utiles. Bien entendu, les erreurs des autres ne peuvent pas empêcher la survenue d'erreurs, mais peuvent aider à réduire le nombre de ces dernières.

Les questions et les lettres des lecteurs d'articles précédents m'ont inspiré pour 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 initiale, sur la base de laquelle le contrôleur ShIoTiny est apparu - une station de pompage et d'irrigation - est loin de convenir à tout le monde et sera intéressante. Par conséquent, j'ai pris pour tout le monde un système de contrôle de la ventilation compréhensible et utile à titre d'exemple.

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

Comprenez d'abord ce que vous voulez


Le processus de cultivation est sans fin. Et c'est cette propriété qui a ruiné beaucoup de bonnes idées et de bons projets. Le développeur, au lieu de publier, si ce n'est pas un idéal, mais une chose fonctionnelle, a continué de l'améliorer. Et il l'a perfectionné jusqu'à ce que ses concurrents le contournent, libérant, sinon une solution idéale (et souvent franchement misérable), mais fonctionnelle.

Par conséquent, il est très important de savoir où mettre fin au projet. Ou, en d'autres termes, il est nécessaire de déterminer ce que nous voulons obtenir à la fin du projet à partir de ce que nous avons au début. En russe, pour un document qui est rédigé juste pour décrire la façon de créer quelque chose, il y a un beau mot court et volumineux "plan", que les traducteurs mentalement retardés et les gestionnaires défectueux ont récemment commencé à appeler la "feuille de route" pour une raison quelconque. Eh bien, Dieu les bénisse.

Notre plan sera comme ça. 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 gérer est aussi vieille que le monde: aérez la pièce. Il existe plusieurs méthodes de diffusion. Mais nous refuserons peut-être les manières exotiques et démodées comme les noirs avec des toiles et nous arrêterons au fan habituel. Les fans sont moins chers et les trouver dans notre région est plus facile.

En bref, nous voulons contrôler le ventilateur: allumez-le et éteignez-le, respectivement. Plus précisément, nous voulons qu'il s'allume et s'éteigne si nécessaire.

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

Tout est évident ici: si l'humidité dépasse une limite prédéterminée, le ventilateur se met en marche et aspire de l'air; l'humidité est revenue à la normale - le ventilateur s'arrête.

Le lecteur attentif attirera immédiatement son attention sur le mot «donné». Qui est donné? Comment préréglé?

Il existe plusieurs façons de régler le seuil d'humidité. Nous en considérerons deux: le premier - à l'aide d'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 discutés plus loin.

Pour ceux qui ne comprennent pas, je vais expliquer que le «seuil d'humidité» est un niveau d'humidité, dépassant ce qui nécessite l'inclusion d'un ventilateur.

La question suivante est de savoir si donner à l'utilisateur le droit d'allumer le ventilateur directement? Autrement dit, quel que soit le niveau d'humidité, au simple toucher d'un bouton? Nous allons offrir une telle opportunité. Après tout, un ventilateur peut être nécessaire non seulement avec une humidité élevée, mais aussi pour éliminer de la pièce, par exemple, une odeur désagréable, communément appelée «puanteur».

Nous avons donc compris ce que nous voulons et même un peu comment cela fonctionnera. Nous énumérons brièvement toutes les fonctions de notre système de contrôle de la ventilation:

  • fixer un seuil d'humiditĂ© (deux options);
  • mesure de l'humiditĂ©;
  • inclusion automatique du ventilateur;
  • arrĂŞt automatique du ventilateur;
  • inclusion manuelle du ventilateur (sur simple pression d'un bouton).

Donc, le plan est clair. Il est nécessaire de mettre en œuvre toutes les fonctions ci-dessus dans notre programme. Sur la base de ce «plan», nous agirons. Pour commencer, dessinez un schéma fonctionnel de l'appareil.

Schéma fonctionnel de l'appareil


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

Mais comme ces circuits ne différeront que d'un élément - la résistance variable "fixant le seuil d'humidité", nous ne dessinerons qu'un seul diagramme structurel. Bien sûr, le schéma structurel selon GOST semble différent. Mais nous ne nous concentrons pas sur les ingénieurs des bisons, mais sur la jeune génération. Par conséquent, la visibilité est plus importante.



Alors que voit-on sur l'image? Le ventilateur est connecté au relais Relay1 du contrôleur ShIoTiny . J'attire votre attention sur le fait que le ventilateur est un engin qui vit sous haute tension. Par conséquent, si quelqu'un le fait lui-même - soyez prudent. C'est, au moins, avant de coller vos doigts ou des instruments de mesure dans le circuit - déconnectez au moins le ventilateur. Et le deuxième point. Si votre ventilateur est plus puissant que 250 W , vous ne devez pas le connecter directement à ShIoTiny - uniquement via le démarreur.

Nous avons compris le ventilateur. Maintenant, le bouton «marche manuelle» du ventilateur. Il est connecté à l'entrée Input1 . Il n'y a plus rien à expliquer.

Capteur de température et d'humidité DHT-11 (ou DHT-22 ou leurs analogues). Pour le connecter, une entrée spéciale est fournie sur le contrôleur ShIoTiny . Comme vous pouvez le voir sur la figure, la connexion d'un tel capteur ne présente pas non plus de problèmes.

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

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

Nous allons commencer à élaborer l'algorithme de l'appareil dans l'éditeur ElDraw ShIoTiny. Comment y arriver, dans cet éditeur, vous pouvez lire dans les articles précédents ou dans les instructions, dont un lien se trouve au début de l'article.

Première option, la plus simple


Commençons par un simple: allumez le relais Relay1 lorsque le seuil d'humidité est dépassé pendant un temps donné.



Comme vous pouvez le voir, rien de compliqué: juste quatre nœuds, sans compter les nœuds de commentaire. Le DHT11 est en fait un capteur de température et d'humidité (peut être changé en DHT22 ).

La constante CONST est le niveau d'humidité seuil, en pourcentage.

Comparateur - un nœud comparant deux nombres et définissant la sortie 1 si la condition spécifiée est remplie et 0 si la condition n'est pas remplie.

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

Dès que le niveau d'humidité mesuré ( A ) dépasse le niveau d'humidité seuil ( B ), 1 apparaît immédiatement à la sortie du comparateur A> B et le relais s'allume. Inversement, dès que le niveau d'humidité redevient normal (c'est-à-dire A <= B ), immédiatement à la sortie du comparateur A> B, 0 apparaît et le relais s'éteint.

Tout est-il clair? Pour ceux qui ne le font pas vraiment, relisez-le ou regardez la description du fonctionnement des nœuds dans les instructions.

Je note que les données du capteur DHT11 sont mises à jour environ 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 seuil d'humidité à l'aide d'une résistance variable. Rien de plus simple!



Remplacez simplement le nœud constant par le nœud ADC. Après tout, c'est à l'ADC que nous avons connecté le 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 comparons-nous? Tout est simple. Le nœud ADC dans ShIoTiny mesure non seulement la tension d'entrée, mais sait également comment la mettre à l' échelle et la décaler .

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

X=k cdotuin+b

où uin- tension à l'entrée ADC (de 0 à 1V); Plage k (plage ADC) et décalage b (décalage ADC). Ainsi, si vous définissez k = 100 et b = 0 , alors lors du changement uindans la plage de 0 à 1, la valeur de X à la sortie de l'unité ADC variera dans la plage de 0 à 100. C'est-à-dire, numériquement égale à la plage des changements d'humidité de 0 à 100%.

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

Comment définir les coefficients k - plage (plage ADC) et b - décalage (décalage ADC)? Oui, c’est plus facile que des navets cuits à la vapeur! Cliquez avec le pointeur de la souris dans le nœud ADC1 et vous verrez immédiatement la fenêtre des paramètres. Vous pouvez y définir tout ce dont vous avez besoin. Pour notre cas, ce sera une telle fenêtre, comme sur la figure.



Nous avons donc la solution de travail la plus simple. Commençons à l'améliorer.
Soit dit en passant, la solution la plus simple a un avantage: elle n'a pas besoin d'Internet. Il est complètement autonome.

Option deux, connectez le bouton


Tout fonctionne et tout le monde est content. Mais pas de chance, nous ne pouvons pas activer la ventilation avec force. Nous avons déjà convenu qu'un bouton sera connecté à l'entrée Input1 , ce qui activera et désactivera le ventilateur de force, sans prêter attention au capteur d'humidité.
Il est temps de traiter ce bouton dans notre programme de circuits.



L'unité de traitement des clics sur les boutons est surlignée en orange. Il s'agit d'un compteur de clics de bouton qui est remis à zéro lorsque la valeur à sa sortie dépasse un (ligne verte, sortie du nœud CT ).

Tout fonctionne ici comme avant: le compteur CT compte les clics du bouton connecté à Input1 . Autrement dit, la valeur à la sortie de ce compteur augmente de 1 à chaque clic sur le bouton.

Dès que cette valeur devient égale à deux (soit plus de 1), immédiatement à la sortie du comparateur A> B apparaît 1. Et ce 1 remet le compteur CT à zéro. Cela signifie le comparateur, le plus bas selon le 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 le niveau d'humidité réglé et appuyer une fois sur le bouton. Si l'une des conditions est remplie, le ventilateur se met en marche. Et cela fonctionnera jusqu'à ce que vous appuyiez à nouveau sur le bouton ET que le niveau d'humidité revienne à la normale.

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

Option trois, connectez-vous Ă  Internet


Tout ce que nous avons décrit est assez fonctionnel. Mais qu'en est-il du spectacle? Après tout, n'importe quel hipster-hacker-cracker maculé se moquera de quelqu'un qui tord un stylo et appuie sur un bouton, et ne le contrôle pas depuis un smartphone! Tourner la poignée n'est «pas à la mode». Mais pour ramper votre doigt sur le smartphone, effacer ce doigt dans le sang - le voici, le pic des désirs du pirate hipster-pirate (je ne pourrais jamais les distinguer tous - donc si j'ai fait une erreur, je suis désolé).

Mais nous serons condescendants envers ces individus. La gouvernance d'Internet présente de réels avantages. Tout d'abord, c'est visuel. Il existe de nombreuses applications pour toutes les plates-formes qui permettent à quelques pics de créer un panneau de contrôle complètement utilisable pour notre contrôleur Carlson. Deuxièmement, c'est l'occasion de surveiller à distance l'état d'humidité dans la pièce. Et troisièmement, vous pouvez voir non seulement ce que fait le ventilateur - qu'il tourne ou non, mais aussi quel seuil d'humidité est réglé. Et puis - le ventilateur s'est allumé automatiquement ou manuellement. En général, tout ce que vous voulez.

Bien sûr, pour certains fans, il y a beaucoup d'honneur - beaucoup d'attention. Mais ce n'est qu'un exemple.

Ainsi, pour nous connecter Ă  Internet, nous utiliserons la technologie MQTT et le protocole du mĂŞme nom.
Pour utiliser cette technologie, nous avons besoin d'un courtier MQTT . Il s'agit d'un serveur spécial qui sert les clients MQTT , par exemple, ShIoTIny et votre smartphone.

L'essence de la technologie MQTT est que tout client publie des données arbitraires sous un nom spécifique (appelé rubrique dans la terminologie MQTT ) sur un courtier MQTT (serveur). D'autres clients peuvent s'abonner à des données arbitraires par leur nom ( sujet ) et recevoir des données récemment publiées. Autrement dit, l'ensemble de l'échange de données repose sur le principe du client-courtier-client.

Je ne me concentrerai pas sur les détails. Il existe des tonnes d'articles et de didacticiels sur Internet sur le fonctionnement de MQTT et le type de programmes permettant de créer des panneaux de contrôle. Je vais juste vous montrer comment recevoir et publier des données à l'aide de ShIoTiny .

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

Nous supposerons donc que vous vous êtes inscrit auprès du courtier MQTT . En général, le courtier vous donnera (ou exigera d'inventer) un nom d'utilisateur et un mot de passe (pour l'autorisation), ainsi qu'un port de connexion. Il existe deux façons de connecter ShIoTiny au courtier MQTT - une connexion régulière et TLS ( SSL ).

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



Si votre courtier MQTT n'a pas besoin d'autorisation, n'entrez pas votre identifiant et votre mot de passe (laissez ces champs vides).

Le paramètre de préfixe de rubrique MQTT nécessite une explication distincte.

Le préfixe des paramètres MQTT est une ligne ajoutée au titre de la rubrique lors de la publication et de l'abonnement au courtier MQTT. Pour définir le préfixe MQTT de votre contrôleur, il vous suffit de le saisir dans le champ de saisie " Préfixe de sujet MQTT " (" Préfixe de sujet MQTT "). Le préfixe commence toujours par une barre oblique ( "/" )! Si vous n'entrez pas de barre oblique dans le champ de saisie, elle sera ajoutée automatiquement. Les caractères "#" et "+" ne peuvent pas être utilisés dans le préfixe. Il n'y a aucune autre restriction.

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

Nous pensons donc que vous vous êtes inscrit auprès du courtier MQTT et avez reçu votre identifiant, votre mot de passe et votre port. Ensuite, vous définissez ces paramètres dans l'onglet Réseau , la section Connexion MQTT au serveur du contrôleur ShIoTiny .

Nous pensons que le préfixe est défini sur " / room / ".

Pour commencer, nous publierons l'état de tous les paramètres clés: relais Realay1 , état manuel, état automatique et enfin, seuils et niveaux d'humidité actuels. Eh bien et un bonus - la température dans la pièce. Comment faire, voir la figure.



Comme vous pouvez le voir, la différence par rapport à la version précédente n'est que les nœuds de publication MQTT . Compte tenu du préfixe, les paramètres suivants sont publiés:


Comme vous pouvez le voir, l'état du système est bien en vue!

Mais nous voulons non seulement voir, mais aussi contrôler. Comment être Très simple. Nous refuserons de régler le seuil d'humidité à l'aide de l' ADC et d'une résistance variable et nous fixerons ce seuil même d'humidité par MQTT directement depuis le smartphone!



Nous supprimons le nœud ADC du circuit et y ajoutons trois nouveaux nœuds: FLASH store , FLASH restore et MQTT decrivent .

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

Pourquoi de telles difficultés? Pourquoi ne puis-je pas envoyer immédiatement les données reçues à 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 le courtier MQTT . Et l'humidité doit être mesurée. Et le ventilateur doit être allumé. Mais sans information sur le seuil d'humidité, c'est impossible! Par conséquent, lorsqu'il est allumé, notre appareil extrait un niveau d'humidité seuil précédemment stocké de la mémoire non volatile et l'utilise pour la prise de décision. Et lorsque la connexion avec le courtier MQTT est établie et que quelqu'un publie une nouvelle valeur / chambre / trigHset , cette nouvelle valeur sera utilisée.

Ensuite, vous pouvez inventer tout ce que vous voulez. Par exemple, en plus de l'humidité, entrez également un enregistrement de température. Ou ajoutez une commande d'éclairage «intelligente» (nous avons encore laissé deux relais et deux entrées inutilisés). Tout est entre vos mains!

Conclusion


Nous avons donc examiné plusieurs exemples de la mise en œuvre du contrôleur par essence le plus simple basé sur ShIoTiny. Ce sera peut-être utile à quelqu'un.

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

Source: https://habr.com/ru/post/fr464485/


All Articles