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 ZeichenprogrammenReferenzen
ShIoTiny- ProjektseiteBinäre Firmware, Controller-Schaltung und DokumentationAnweisungen und Beschreibung der KnotenEinrichten des MQTT-Brokers cloudmqtt.comMQTT Dashboard Control Panel für AndroidEinfü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
wo
- 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
im 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