ShIoTiny: Nassraumlüftung (Beispielprojekt)


Wichtige Punkte oder worum es in diesem Artikel geht


Wir setzen die Artikelserie über ShIoTiny fort - eine visuell programmierbare Steuerung, die auf dem ESP8266- Chip basiert.

Dieser Artikel beschreibt ein Beispiel für ein Lüftungssteuerungsprojekt in einem Badezimmer oder einem anderen feuchten Raum zum Erstellen eines Programms für ShIoTiny .

Frühere Artikel in der Reihe.


ShIoTiny: kleine Automatisierung, das Internet der Dinge oder „sechs Monate vor den Ferien“
ShIoTiny: Knoten, Links und Ereignisse oder Funktionen von Zeichenprogrammen

Referenzen


ShIoTiny- Projektseite
Binäre Firmware, Controller-Schaltung und Dokumentation
Anweisungen und Beschreibung der Knoten
Einrichten des MQTT-Brokers cloudmqtt.com
MQTT Dashboard Control Panel für Android

Einführung


Es gibt kein Verständnis außerhalb der Erfahrung. Dies ist die Wahrheit, die von Zeit und Generationen geprüft wurde. Daher gibt es nichts Besseres, um praktische Fähigkeiten zu erlernen, als zu versuchen, etwas selbst zu tun. Beispiele, die zeigen, was getan werden kann und was es nicht wert ist, ausprobiert zu werden, sind hier hilfreich. Die Fehler anderer Menschen können natürlich das Auftreten eigener Fehler nicht verhindern, können aber dazu beitragen, deren Anzahl zu verringern.

Fragen und Briefe von Lesern früherer Artikel haben mich dazu inspiriert, ein kleines Projekt zu erstellen, ein Beispiel für die Lüftungssteuerung, um zu zeigen, wie die ShIoTiny-Knoten funktionieren.

Die ursprüngliche Idee, auf deren Grundlage der ShIoTiny- Controller erschien - eine Pump- und Bewässerungsstation - ist alles andere als geeignet und wird interessant sein. Daher habe ich für alle ein verständliches und viele nützliche Lüftungssteuerungssystem als Beispiel genommen.

Ich werde sagen, dass die Idee des Projekts nicht meine ist, aber ich habe sie von hier erhalten und sie dann an ShIoTiny angepasst.

Verstehe zuerst, was du willst


Der Kultivierungsprozess ist endlos. Und es war dieses Anwesen, das viele gute Ideen und Projekte ruinierte. Der Entwickler hat es weiter verbessert, anstatt es zu veröffentlichen, wenn auch nicht als Ideal, sondern als funktionierende Sache. Und er perfektionierte es, bis seine Konkurrenten es umgingen und eine ideale, wenn auch nicht funktionierende (und oft offen elende), aber funktionierende Lösung herausbrachten.

Daher ist es sehr wichtig zu wissen, wo das Projekt beendet werden kann. Mit anderen Worten, es ist notwendig zu bestimmen, was wir am Ende des Projekts von dem bekommen wollen, was wir am Anfang haben. Auf Russisch gibt es für ein Dokument, das nur erstellt wurde, um die Art und Weise zu beschreiben, wie etwas erstellt werden soll, ein schönes kurzes und umfangreiches Wort „Plan“, das geistig zurückgebliebene Übersetzer und fehlerhafte Manager kürzlich aus irgendeinem Grund als „Road Map“ bezeichnet haben. Nun, Gott segne sie.

Unser Plan wird so sein. Angenommen, es gibt einen Raum, in dem die Luftfeuchtigkeit manchmal dramatisch ansteigen kann. Zum Beispiel wie ein Badezimmer oder eine Küche. Feuchtigkeit ist eine unangenehme Sache und der Umgang damit ist so alt wie die Welt: Belüften Sie den Raum. Es gibt einige Lüftungsmethoden. Aber wir werden vielleicht exotische und altmodische Wege wie Schwarze mit Netzen ablehnen und beim üblichen Fan Halt machen. Fans sind billiger und es ist einfacher, sie in unserer Gegend zu finden.

Kurz gesagt, wir möchten den Lüfter steuern: Schalten Sie ihn ein bzw. aus. Genauer gesagt möchten wir, dass es bei Bedarf ein- und ausgeschaltet wird.

Es bleibt zu bestimmen: Unter welchen Bedingungen sollte sich der Lüfter einschalten und unter welchen Bedingungen - ausschalten.

Hier ist alles klar: Wenn die Luftfeuchtigkeit über einem vorgegebenen Grenzwert liegt, schaltet sich der Lüfter ein und saugt Luft an. Die Luftfeuchtigkeit hat sich wieder normalisiert - der Lüfter schaltet sich aus.

Der aufmerksame Leser wird sofort auf das Wort "gegeben" aufmerksam. Wer ist gegeben? Wie voreingestellt?

Es gibt verschiedene Möglichkeiten, die Schwellenfeuchtigkeit einzustellen. Wir werden zwei davon betrachten: die erste - mit Hilfe des variablen Widerstands und die zweite - über das Netzwerk über das MQTT-Protokoll. Jedes dieser Verfahren hat Vor- und Nachteile, auf die später eingegangen wird.

Für diejenigen, die nicht verstehen, werde ich erklären, dass die „Schwellenfeuchtigkeit“ ein Feuchtigkeitsniveau ist, dessen Überschreitung die Einbeziehung eines Lüfters erfordert.

Die nächste Frage ist, ob dem Benutzer das Recht eingeräumt werden soll, den Lüfter direkt einzuschalten. Das heißt, unabhängig von der Luftfeuchtigkeit, auf Knopfdruck? Wir werden für eine solche Gelegenheit sorgen. Schließlich kann ein Ventilator nicht nur bei hoher Luftfeuchtigkeit benötigt werden, sondern auch, um beispielsweise einen unangenehmen Geruch, der im Volksmund als „Gestank“ bezeichnet wird, aus dem Raum zu entfernen.

Also haben wir verstanden, was wir wollen und sogar ein wenig, wie es funktionieren wird. Wir listen kurz alle Funktionen unseres Lüftungssteuerungssystems auf:

  • Einstellen eines Feuchtigkeitsschwellenwerts (zwei Optionen);
  • Feuchtemessung;
  • automatische Einbeziehung des Lüfters;
  • automatische Abschaltung des Lüfters;
  • manuelle Aufnahme des Lüfters (auf Knopfdruck).

Der Plan ist also klar. Es ist notwendig, alle oben genannten Funktionen in unserem Programm zu implementieren. Auf der Grundlage dieses „Plans“ werden wir handeln. Zeichnen Sie zunächst ein Blockdiagramm des Geräts.

Geräteblockdiagramm


Im Allgemeinen werden wir zwei solche Schemata haben. Die erste betrifft die Option, bei der der Feuchtigkeitsschwellenwert durch einen variablen Widerstand eingestellt wird. Das zweite Schema betrifft die Option, bei der der Feuchtigkeitsschwellenwert über das Netzwerk über das MQTT-Protokoll eingestellt wird.

Da sich diese Schaltkreise jedoch nur durch ein Element unterscheiden - den variablen Widerstand "Einstellen des Feuchtigkeitsschwellenwerts" - werden wir nur ein Strukturdiagramm zeichnen. Natürlich sieht das Strukturschema nach GOST anders aus. Wir konzentrieren uns jedoch nicht auf Bisoningenieure, sondern auf die jüngere Generation. Daher ist die Sichtbarkeit wichtiger.



Was sehen wir auf dem Bild? Der Lüfter ist mit dem Relais Relais 1 des ShIoTiny- Controllers verbunden. Ich mache Sie darauf aufmerksam, dass der Lüfter ein Gerät ist, das unter Hochspannung lebt. Deshalb, wenn jemand dies selbst tun wird - seien Sie vorsichtig. Zumindest bevor Sie Ihre Finger oder Messinstrumente in den Stromkreis stecken - trennen Sie mindestens den Lüfter. Und der zweite Punkt. Wenn Ihr Lüfter stärker als 250 W ist , sollten Sie ihn nicht direkt an ShIoTiny anschließen - nur über den Anlasser.

Wir haben den Ventilator herausgefunden. Nun die Taste "Manuell ein" des Lüfters. Es ist mit dem Eingang Input1 verbunden . Es gibt nichts mehr zu erklären.

Temperatur- und Feuchtigkeitssensor DHT-11 (oder DHT-22 oder deren Analoga). Zum Anschließen wird am ShIoTiny- Controller ein spezieller Eingang bereitgestellt. Wie Sie in der Abbildung sehen können, ist der Anschluss eines solchen Sensors ebenfalls kein Problem.

Und schließlich ein variabler Widerstand, der den Feuchtigkeitsschwellenwert festlegt. Genauer gesagt, ein Teiler, der aus variablen und konstanten Widerständen besteht. Es gibt keine Probleme mit der Verbindung, aber ich werde erklären, dass der eingebaute ADC am ESP8266 für maximal 1 Volt ausgelegt ist. Daher wird ein Spannungsteiler etwa fünfmal benötigt.

Und noch einmal, ich erinnere Sie daran, dass dieser Teiler nicht benötigt wird, wenn der Schwellenwert für die Luftfeuchtigkeit über das Netzwerk mithilfe des MQTT-Protokolls eingestellt wird.

Wir werden beginnen, den Algorithmus des Geräts im ElDraw ShIoTiny-Editor zu erstellen. Wie Sie dorthin gelangen, können Sie in diesem Editor in den Artikeln früher oder in den Anweisungen lesen, auf die am Anfang des Artikels verwiesen wird.

Option eins, die einfachste


Beginnen wir mit einem einfachen: Schalten Sie das Relais1- Relais ein, wenn der Schwellenwert für die Luftfeuchtigkeit für eine bestimmte Zeit überschritten wird.



Wie Sie sehen, nichts Kompliziertes: nur vier Knoten, ohne die Kommentarknoten. DHT11 ist eigentlich ein Temperatur- und Feuchtigkeitssensor (kann in DHT22 geändert werden ).

Die CONST-Konstante ist der Schwellenfeuchtigkeitsgehalt in Prozent.

Komparator - Ein Knoten, der zwei Zahlen vergleicht und Ausgang 1 setzt, wenn die angegebene Bedingung erfüllt ist, und 0, wenn die Bedingung nicht erfüllt ist.

In unserem Fall ist diese Bedingung A> B , wobei A das vom Sensor gemessene Feuchtigkeitsniveau und B das Schwellenniveau derselben Luftfeuchtigkeit ist.

Sobald die gemessene Luftfeuchtigkeit ( A ) die Luftfeuchtigkeitsschwelle ( B ) überschreitet, erscheint sofort 1 am Ausgang des Komparators A> B und das Relais schaltet sich ein. Umgekehrt erscheint unmittelbar am Ausgang des Komparators A> B 0 und das Relais schaltet sich aus, sobald der Feuchtigkeitsgehalt wieder normal ist (dh A <= B ).

Alles klar? Wem es nicht so ist - lesen Sie noch einmal oder sehen Sie sich die Beschreibung der Funktionsweise der Knoten in der Anleitung an.

Ich stelle fest, dass die Daten vom DHT11- Sensor ungefähr alle 10 Sekunden aktualisiert werden. Daher kann das Relais nicht öfter als einmal alle 10 Sekunden ein- und ausgeschaltet werden.

Alles wäre in Ordnung, aber wir möchten den Feuchtigkeitsschwellenwert mit einem variablen Widerstand einstellen. Nichts ist einfacher!



Ersetzen Sie einfach den konstanten Knoten durch den ADC-Knoten. Schließlich haben wir den Spannungsteiler an den ADC mit einem variablen Widerstand angeschlossen.

Die Spannung am ADC-Eingang variiert zwischen 0 und 1 Volt. Die Luftfeuchtigkeit am Ausgang des Sensors variiert jedoch zwischen 0 und 100%. Wie vergleichen wir sie? Alles ist einfach. Der ADC-Knoten in ShIoTiny misst nicht nur die Eingangsspannung, sondern weiß auch, wie sie skaliert und verschoben wird .

Das heißt, am Ausgang des ADC1-Knotens (ADC) befindet sich ein X- Wert, der durch die Formel berechnet wird

X=k cdotuin+b

wo uin- Spannung am ADC-Eingang (von 0 bis 1 V); k - Bereich (ADC-Bereich) und b- Offset (ADC-Offset). Wenn Sie also k = 100 und b = 0 setzen , dann beim Ändern uinim Bereich von 0 bis 1 variiert der Wert von X am Ausgang der ADC-Einheit im Bereich von 0 bis 100. Das heißt, numerisch gleich dem Bereich der Feuchtigkeitsänderungen von 0 bis 100%.

Oder Sie können einfach durch Drehen des Motors mit variablem Widerstand den Luftfeuchtigkeitsschwellenwert von 0 bis 100 einstellen. Der einzige Nachteil ist, dass keine Anzeigegeräte vorhanden sind. In der Praxis reicht dies jedoch aus, um den Schwellenwert für die Luftfeuchtigkeit festzulegen, wenn der Motor mit variablem Widerstand 6 Unterteilungen (0%, 20%, 40%, 60%, 80%, 100%) vornimmt.

Wie stellen wir die Koeffizienten k - Bereich (ADC-Bereich) und b - Versatz (ADC-Versatz) ein? Ja, es ist einfacher als gedämpfte Rüben! Klicken Sie mit dem Mauszeiger in den ADC1- Knoten und Sie sehen sofort das Einstellungsfenster. Darin können Sie alles einstellen, was Sie brauchen. In unserem Fall handelt es sich um ein solches Fenster wie in der Abbildung.



Wir haben also die einfachste Arbeitslösung. Beginnen wir damit, es zu verbessern.
Die einfachste Lösung hat übrigens einen Vorteil: Sie benötigt kein Internet. Es ist völlig autonom.

Option zwei, verbinden Sie die Taste


Alles funktioniert und jeder ist glücklich. Aber Pech, wir können die Belüftung nicht mit Gewalt einschalten. Wir haben bereits vereinbart, dass eine Taste an den Eingang Input1 angeschlossen wird , wodurch der Lüfter gewaltsam ein- und ausgeschaltet wird, ohne auf den Feuchtigkeitssensor zu achten.
Es ist Zeit, diese Schaltfläche in unserem Schaltungsprogramm zu verarbeiten.



Die Schaltflächenklick-Verarbeitungseinheit ist in einer orangefarbenen Linie hervorgehoben. Es handelt sich um einen Schaltflächenzähler, der auf Null zurückgesetzt wird, wenn der Wert an seinem Ausgang eins überschreitet (grüne Linie, CT- Knotenausgang).

Hier funktioniert alles so einfach wie zuvor: Der CT- Zähler zählt die Klicks der mit Input1 verbundenen Taste . Das heißt, der Wert am Ausgang dieses Zählers erhöht sich mit jedem Klick auf die Schaltfläche um 1.

Sobald dieser Wert gleich zwei wird (dh mehr als 1), erscheint unmittelbar am Ausgang des Komparators A> B 1. Und diese 1 setzt den Zähler CT auf Null zurück. Dies bedeutet den Komparator, den unteren nach dem Schema!

Daher hat unsere Schaltfläche zwei Zustände - 0 und 1. Wenn wir mehr Zustände benötigen (3 oder 4 oder sogar mehr), würde es ausreichen, die CONST- Konstante von einem auf einen anderen Wert zu ändern.

Wir haben also zwei Bedingungen, um den Lüfter einzuschalten: Überschreiten der eingestellten Luftfeuchtigkeit und einmaliges Drücken der Taste. Wenn eine der Bedingungen erfüllt ist, schaltet sich der Lüfter ein. Und es funktioniert, bis die Taste erneut gedrückt wird UND die Luftfeuchtigkeit wieder normal ist.

Sie können den Algorithmus natürlich noch komplizierter machen, aber wir werden dies nicht tun - wir werden denjenigen, die es wünschen, Raum für Kreativität lassen.

Option Drei: Stellen Sie eine Verbindung zum Internet her


Alles, was wir beschrieben haben, ist ziemlich funktional. Aber was ist mit der Show? Schließlich lacht jeder pickelige Hipster-Hacker-Cracker über jemanden, der einen Stift dreht und einen Knopf drückt und ihn nicht von einem Smartphone aus steuert! Das Drehen des Griffs ist „nicht in Mode“. Aber um Ihren Finger auf dem Smartphone zu kriechen und diesen Finger ins Blut zu löschen - hier ist der Höhepunkt der Wünsche des Hipster-Hacker-Crackers (ich konnte nie alle unterscheiden - also, wenn ich einen Fehler gemacht habe, tut es mir leid).

Aber wir werden uns diesen Individuen herablassen. Internet Governance hat echte Vorteile. Erstens ist es visuell. Es gibt viele Anwendungen für alle Plattformen, mit denen ein paar Stöße ein vollständig verwendbares Bedienfeld für unseren Carlson-Controller erstellen können. Zweitens ist es eine Möglichkeit, den Feuchtigkeitszustand im Raum aus der Ferne zu überwachen. Und drittens können Sie nicht nur sehen, was der Lüfter tut - ob er sich dreht oder nicht, sondern auch, welche Feuchtigkeitsschwelle eingestellt ist. Und dann - der Lüfter wird automatisch oder manuell eingeschaltet. Im Allgemeinen was auch immer Sie wollen.

Natürlich gibt es für einige Fans viel Ehre - so viel Aufmerksamkeit. Dies ist jedoch nur ein Beispiel.

Für die Verbindung zum Internet verwenden wir die MQTT- Technologie und das gleichnamige Protokoll.
Um diese Technologie nutzen zu können, benötigen wir einen MQTT-Broker . Dies ist ein solcher spezieller Server, der MQTT-Clients bedient , z. B. ShIoTIny und Ihr Smartphone.

Das Wesentliche der MQTT- Technologie ist, dass jeder Client beliebige Daten unter einem bestimmten Namen (in der MQTT- Terminologie als Thema bezeichnet ) auf einem MQTT-Broker (Server) veröffentlicht. Andere Kunden können beliebige Daten mit ihrem Namen ( Thema ) abonnieren und neu veröffentlichte Daten erhalten. Das heißt, der gesamte Datenaustausch erfolgt nach dem Prinzip Client-Broker-Client.

Ich werde mich nicht auf die Details konzentrieren. Im Internet gibt es unzählige Artikel und Tutorials darüber, wie MQTT funktioniert und welche Programme es zum Erstellen von Control Panels gibt. Ich zeige Ihnen nur, wie Sie Daten mit ShIoTiny empfangen und veröffentlichen.

Als Broker habe ich www.cloudmqtt.com verwendet , aber das Prinzip ist überall dasselbe.

Wir gehen also davon aus, dass Sie sich beim MQTT-Broker registriert haben. Im Allgemeinen gibt Ihnen der Broker einen Benutzernamen und ein Passwort (zur Autorisierung) sowie einen Port für die Verbindung (oder muss diese erfinden). Es gibt zwei Möglichkeiten, ShIoTiny mit dem MQTT-Broker zu verbinden : reguläre Verbindung und TLS ( SSL ).

Alle diese Parameter in ShIoTiny werden auf der Registerkarte Netzwerk im Abschnitt MQTT-Verbindung zum Server eingegeben.



Wenn Ihr MQTT-Broker keine Autorisierung benötigt, geben Sie Ihr Login und Passwort nicht ein (lassen Sie diese Felder leer).

Der MQTT-Themenpräfixparameter erfordert eine separate Erläuterung.

Das Präfix der MQTT-Parameter ist eine Zeile, die dem Titel des Themas hinzugefügt wird, wenn der MQTT-Broker veröffentlicht und abonniert wird. Um das MQTT-Präfix für Ihren Controller festzulegen , müssen Sie es nur in das Eingabefeld " MQTT-Themenpräfix " (" MQTT-Themenpräfix ") eingeben. Das Präfix beginnt immer mit einem Schrägstrich ( "/" )! Wenn Sie im Eingabefeld keinen Schrägstrich eingeben, wird dieser automatisch hinzugefügt. Die Zeichen "#" und "+" können im Präfix nicht verwendet werden. Es gibt keine weiteren Einschränkungen.

Wenn Sie beispielsweise den Parameter " status " veröffentlichen (oder abonnieren) und Ihr Präfix auf " / shiotiny / " gesetzt ist, wird dieser Parameter auf dem Broker unter dem Namen " / shiotiny / status " veröffentlicht. Wenn Sie ein leeres Präfix festgelegt haben, beginnen alle Parameter auf dem Broker mit einem Schrägstrich ( "/" ): " status " wird als " / status " veröffentlicht.

Wir glauben, dass Sie sich beim MQTT-Broker registriert und Ihr Login, Passwort und Ihren Port erhalten haben. Anschließend legen Sie diese Parameter auf der Registerkarte Netzwerk im Abschnitt MQTT-Verbindung zum Server des ShIoTiny- Controllers fest.

Wir glauben, dass das Präfix auf " / room / " gesetzt ist.

Zunächst veröffentlichen wir den Status aller wichtigen Parameter: Realay1- Relais, manueller Einschaltzustand , automatischer Einschaltzustand und schließlich Schwellenwert und aktuelle Luftfeuchtigkeit. Gut und ein Bonus - die Temperatur im Raum. Wie das geht, siehe Abbildung.



Wie Sie sehen können, besteht der Unterschied zur vorherigen Version nur in den MQTT-Veröffentlichungsknoten . Mit dem Präfix werden folgende Parameter veröffentlicht:


Wie Sie sehen können, ist der gesamte Status des Systems in voller Sicht!

Wir wollen aber nicht nur sehen, sondern auch kontrollieren. Wie man ist Sehr einfach. Wir werden es ablehnen, den Schwellenwert für die Luftfeuchtigkeit mithilfe des ADC und eines variablen Widerstands einzustellen, und wir werden diesen Schwellenwert für die Luftfeuchtigkeit per MQTT direkt vom Smartphone aus einstellen!



Wir entfernen den ADC-Knoten aus der Schaltung und fügen dort drei neue Knoten hinzu: FLASH-Speicher , FLASH-Wiederherstellung und MQTT-Beschreibung .

Die Funktion des MQTT-Beschreibungsknotens liegt auf der Hand: Er empfängt den Parameter / room / trigHset (Schwellenfeuchtigkeitsstufe) vom MQTT-Broker . Aber was macht er als nächstes mit den Daten? Es gibt sie einfach an den FLASH-Speicherknoten weiter , der diese Daten wiederum im nichtflüchtigen Speicher unter dem Namen trigH speichert . Danach liest der FLASH-Wiederherstellungsknoten Daten unter dem Namen trigH aus dem nichtflüchtigen Speicher und wir wissen bereits, was als nächstes passiert.

Warum solche Schwierigkeiten? Warum kann ich die empfangenen Daten nicht sofort an den Eingang des Komparators senden?

Wie Genosse S. Holmes sagte, ist dies elementar ! Niemand garantiert, dass Ihr Gerät nach dem Einschalten dem MQTT-Broker beitritt . Und die Luftfeuchtigkeit muss gemessen werden. Und der Lüfter muss eingeschaltet sein. Ohne Angaben zum Luftfeuchtigkeitsschwellenwert ist dies jedoch nicht möglich! Daher extrahiert unser Gerät beim Einschalten einen zuvor gespeicherten Schwellenfeuchtigkeitsgehalt aus dem nichtflüchtigen Speicher und verwendet ihn zur Entscheidungsfindung. Wenn die Verbindung zum MQTT-Broker hergestellt ist und jemand einen neuen Wert / room / trigHset veröffentlicht , wird dieser neue Wert verwendet.

Dann können Sie alles erfinden, was Sie wollen. Geben Sie beispielsweise neben der Luftfeuchtigkeit auch einen Temperaturrekord ein. Oder fügen Sie eine „intelligente“ Lichtsteuerung hinzu (wir haben noch zwei Relais und zwei Eingänge ungenutzt gelassen). Alles liegt in Ihren Händen!

Fazit


Daher haben wir uns einige Beispiele für die Implementierung des einfachsten Controllers angesehen, der auf ShIoTiny basiert. Vielleicht ist es für jemanden nützlich.

Wie immer Vorschläge, Wünsche, Fragen, Tippfehler usw. per E-Mail: shiotiny@yandex.ru

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


All Articles