WiFi Abluftventilator-Controller

Bild
Fast zwei Jahre sind seit der Herstellung des Feuchtigkeitsreglers für das Badezimmer vergangen . Während dieser ganzen Zeit diente der Controller treu, ohne Störungen und Einfrieren, wie es sich für ein gutes Gerät gehört, und bekam sogar eine glamouröse handgefertigte Hülle mit der leichten Hand meiner Frau.

Bild

Aber der technologische Fortschritt schreitet unaufhaltsam voran und neue Trends verfolgten mich erneut. Ich habe lange die Idee gepflegt, das Konzept eines Smart Home auf WiFi-Modulen ESP8266 umzusetzen. Er experimentierte einige Zeit mit diesen Modulen und beschloss nun, sein „Smart Home“ auf sie zu übertragen.

Das Hauptziel des Projekts war die Implementierung neuer Funktionen, die ich in Zukunft auf anderen Geräten verwenden werde.
Was bringt mir das Upgrade des Lüftercontrollers auf dem ESP8266?

Neue Funktionen


  • Zeigen Sie alle WiFi-Anzeigen von einem Computer / Tablet / Telefon aus an.
  • Verarbeitung zusätzlicher Parameter - Betriebszeit des Lüfters und Brenndauer der Lampe im Bad.
  • WiFi-Lüftersteuerung von Computer / Tablet / Telefon.
  • Einrichten des Controllers über WLAN mit Speichern von Werten im nichtflüchtigen Speicher.
  • Regelmäßige Aufzeichnung der Werte aller Indikatoren auf einem Server im Internet.
  • Nun, da es immer noch das Internet gibt, wird die Zeit mit Synchronisation über das NTP-Protokoll angezeigt.

All diese Funktionen ermöglichen es, den Betrieb der Steuerung zu analysieren und in Zukunft die Parameter des Steueralgorithmus zu optimieren. Nun, dieser Controller wird in das allgemeine System eines Smart Homes integriert und überwacht die Umgebungsparameter des Badezimmers.
Bild
Das Schema hat sich gegenüber der vorherigen Version nicht wesentlich geändert:
  • Atmega328 ersetzt durch ESP8266
  • Die Sieben-Segment-Anzeige ersetzte das fertige Anzeigemodul durch TN1637
  • Ein Triac mit einem Optokoppler wird durch ein Halbleiterrelais ersetzt (das gleiche, aber in dem Fall).

Alle Hauptunterschiede im Steuerungsprogramm.

Liste der Komponenten


  • ESP8266 ESP07-Modul mit Adapterplatine ~ $ 2.3
  • Vierstellige Sieben-Segment-Anzeige auf dem TM1637-Chip mit I2C-Verbindung ~ $ 1
  • Halbleiterrelais OMRON G3MB-202P ~ $ 1
  • Stromversorgung 220V / 3,3V 600mA ~ $ 2,2
  • Temperatur- und Feuchtigkeitssensor (geringe Genauigkeit, aber ausreichend für meine Aufgaben) DHT11 ~ $ 0.7
  • Instrumentenkoffer 110x73x34 ~ $ 1
  • Fotowiderstand, nur Widerstände, Steckbrett und Drähte

Insgesamt ca. 9 USD
Alle Teile außer dem Gehäuse und dem Netzteil wurden auf aliexpress.com gekauft. Ich bestelle Koffer und Netzteile zu vernünftigen Preisen bei taobao.com
Bild

Controller-Baugruppe


Dieser Controller ist ein Prototyp für zukünftige Geräte des ESP8266, daher wurde die Installation auf einem Steckbrett durchgeführt.
Bild
Ich mache einen Lichtfilter unter dem Indikator aus einer Ordnerecke für Papiere, die ich in einem Schreibwarengeschäft gekauft habe. Ein transparentes Fenster für den Fotowiderstand - ein Schutzfilm, der von einem Telefon übrig geblieben ist (ich habe ihn einmal mit einem Rand bestellt, jetzt liegt er herum).
Bild
Und dies ist mein alter Controller, der zwei Jahre im Badezimmer gearbeitet hat.
Bild
Beim Debuggen wurde ein technologischer Defekt festgestellt - die Fotodiode hinter dem Fenster im Gehäuse erhielt zu wenig Licht und ohne Verstärker funktionierte es nicht, als die Lampe im Badezimmer gezündet wurde. Ich musste sie in Richtung der Lampe herausbringen.
Bild
Bild

Jetzt werde ich Ihnen die Funktionen des Programms, die Steuerungsalgorithmen und die Einstellungen dieses Controllers erläutern.

ESP8266 verfügt im Gegensatz zu Atmega328, auf dem die vorherige Version implementiert wurde, über viel mehr Speicher (RAM, ROM. EEPROM), wodurch Sie zusammen mit dem integrierten WiFi die Funktionen des integrierten WEB-Servers implementieren können, ohne Speicher für Textzeichenfolgen zu sparen.

Mit dem GPIO ist der ESP8266 jedoch ziemlich schlecht, weshalb ein Luxus wie die Verwaltung eines Sieben-Segment-Indikators für ihn nicht direkt zugänglich ist. Daher wurde die Anzeige auf dem TM1637-Chip ausgewählt, für deren Anschluss nur zwei Ausgänge erforderlich sind.

Entwicklungsumgebung


Ich habe genug mit verschiedenen ESP8266-Firmwares gespielt, die es mir ermöglichen, Programme auf den eingebauten Interpreten LUA, JC zu schreiben und im Allgemeinen über WEB zu programmieren. Ich habe versucht, auf ein SDK zu schreiben. Er entschied sich für eine Kompromissoption - die Programmierung in der Arduino IDE.
Eine ziemlich einfache Installation, Programmierung und eine große Anzahl vorgefertigter Bibliotheken, die größtenteils auf dem ESP funktionieren. Diese Umgebung ermöglichte die Verwendung vieler alter Codes, die die grundlegende Logik für den Betrieb des Lüftersteuerungsreglers bereitstellen, die aus der vorherigen Version beibehalten wurde.

Grundsätzlich war es interessant, den bewährten Algorithmus zu übertragen, der die in der Zustandsübergangstabelle beschriebene endliche deterministische Zustandsmaschine implementiert:
Bild
Arduino-Bibliotheken kamen ohne Probleme aufDHT für die Arbeit mit Feuchtigkeits- / Temperatursensoren von Adafruit und für die Arbeit mit der Anzeige am TM1637 DigitalTube .

Die Details zur Verwendung der Arduino IDE zum Programmieren des ESP8266 werden in diesem Artikel ausführlich beschrieben.

Neue Funktionen implementieren


Es ist sehr unpraktisch, WiFi-Controller herzustellen, in denen die Netzwerkverbindungsparameter zusammengefügt sind. Stellen Sie sich vor, was die Änderung des Zugriffspunktnamens oder des Kennworts bewirkt, wenn ein Dutzend solcher Controller zu Hause sind.

Daher implementiert dieses Programm die Funktionen zum Speichern von Verbindungsparametern im nichtflüchtigen EEPROM-Speicher und deren Konfiguration über das Netzwerk. Die Struktur zum Speichern sowie zum Lesen und Schreiben der Parameter ist in den Dateien WC_EEPROM.h und WC_EEPROM.cpp meines Projekts implementiert. Die Überprüfung des Lesens und Schreibens erfolgt durch Berechnen der Prüfsumme der Konfiguration und Vergleichen mit der im EEPROM geschriebenen.

Neben der Netzwerkkonfiguration werden auch alle Zeitüberschreitungen und andere Parameter des Lüftersteuerungsalgorithmus im Speicher gespeichert, sodass dieser Controller direkt „über Funk“ optimiert und eingestellt werden kann.

Die Anzeige der Betriebsarten, der Controller-Konfiguration sowie der direkten Lüftersteuerung erfolgt über den integrierten WEB-Server (Dateien WC_HTTP.h und WC_TTP.cpp).

Der Algorithmus zur Konfiguration des Zugriffspunkts lautet wie folgt:

Wenn der ESP-Schrank keine Verbindung zu dem in der EEPROM-Konfiguration angegebenen Zugriffspunkt herstellen konnte Anschließend wird der Zugriffspunkt erhöht und unter der Adresse 192.168.4.1 können Sie konfigurieren.
Nun, wenn verbunden, funktioniert es wie gewohnt.
Die Hauptseite des WEB-Servers zeigt die grundlegenden Parameter des Controllers und ermöglicht das manuelle Ein- und Ausschalten des Controllers (analog zum Drücken der manuellen Steuertaste).
Bild
Hier können Sie auch zur Netzwerkeinstellungsseite
Bild
und zur Einstellungsseite des Controller-Betriebsalgorithmus gehen
Bild
Auf diesen beiden Seiten können Sie den Controller neu starten und alle Standardeinstellungen zurücksetzen.

Ich plane, in Zukunft Schönheit in die Benutzeroberfläche zu bringen, wenn sich das Konzept eines Smart Home über WLAN mehr oder weniger in meinem Kopf festgesetzt hat.

Eine weitere in diesem Programm implementierte Funktion ist eine Echtzeituhr, die über das NTP-Protokoll im Internet synchronisiert wird. (Dateien WC_NTP.h und WC_NTP.cpp)

Ich werde den Hauptalgorithmus nicht beschreiben, die Logik der Arbeit hat gut funktioniert und bleibt gleich, Sie können darüber im vorherigen Artikel lesen. Wesentliche Änderungen haben sich auf die Anzeige ausgewirkt. Ich möchte auf eine „Funktion“ aufmerksam machen - die DisplaySpecialChar () -Funktion, mit der Sie jedes Zeichen anzeigen können, das Sie sich für die Anzeige auf einem Sieben-Segment-Indikator mit einer Bitmaske vorstellen können. Ich habe dieses "Prozent" -Symbol in der Feuchtigkeitsanzeige
Bild
und das "Grad" -Symbol in der Temperaturanzeige gefunden. Die
Bild
Bits in der Bitmaske entsprechen den Indikatorsegmenten.

Nun, die letzte der neuen Funktionen ist das Speichern von Parametern auf einem Server im Internet zur Anzeige und anschließenden Analyse. Die Werte für Luftfeuchtigkeit, Temperatur, einen analogen Anschluss mit einem Fotowiderstand zum Einstellen der Beleuchtungsschwelle, die Zeit des Lüfters, die Zeit des Brennens des Lichts und die UPTIME-Zeit des Controllers seit dem letzten Neustart werden gespeichert.

Die Aufzeichnung auf dem Server erfolgt in zwei Modi. Die Parameter werden häufiger aufgezeichnet, wenn im Badezimmer „etwas passiert“. Zu diesem Zeitpunkt ist entweder das Licht an oder der Lüfter funktioniert. Alle Zeitüberschreitungen werden über die WEB-Schnittstelle konfiguriert.

Daten werden auf meinem Server im Internet gespeichert. Die Serveradresse kann konfiguriert werden, das Aufnahmeformat ist jedoch weiterhin in das Programm eingenäht. Wieder bis zu besseren Zeiten ustanivaniya Konzept))). Jetzt werden die Parameter mit dem einfachsten PHP-Skript in einer Tabelle mit einfacher Struktur gespeichert.
Bild
Es ist ganz einfach, die Speichereinstellungen für dieselbe "öffentliche Überwachung" neu zu konfigurieren. Persönlich passt dieser Server nicht zu mir mit Einschränkungen hinsichtlich der Häufigkeit der Datenspeicherung und der Tiefe des Archivs.

Optimieren Sie die Controller-Einstellungen


Nach dem „Testbetrieb“ können Sie feststellen, ob die Beleuchtungs- und Feuchtigkeitsschwellenwerte richtig eingestellt sind, sowie die Zeitüberschreitungen verschiedener Ereignisse. In der vorherigen Implementierung habe ich die Reaktionszeit auf 20 Minuten eingestellt und mit einer Stoppuhr im Badezimmer gesessen. Nachdem ich die Parametergrafik während mehrerer Duschen beobachtet hatte, sah ich Folgendes:
Bild
  • Die Luftfeuchtigkeit im Winter ändert sich um 35-40%
  • Normalisierungszeit der Luftfeuchtigkeit bei natürlicher Belüftung 20-25 Minuten
  • Feuchtigkeitsnormalisierungszeit mit einem Arbeitsventilator 10-12 min
  • Der Lüfter verdoppelt die Effizienz der Belüftung

Auf dieser Grundlage können Sie die Betriebszeit des Lüfters sicher auf 12 Minuten reduzieren, wodurch die Lebensdauer verlängert und ein wenig Energie gespart wird. Eine ähnliche Analyse kann für andere Jahreszeiten durchgeführt werden, wenn die Luftfeuchtigkeit in der Wohnung völlig anders ist.

Nach der Analyse können Sie nun den Zeitraum für das Schreiben von Parametern auf den Server verlängern.

Schlussfolgerungen



  • Der Controller des ESP8266 ist stabil und erfüllt seine Funktionen.
  • Die Funktionalität wurde erweitert, ist jetzt einfach zu verwalten und lässt sich normal in das Smart Home-System integrieren
  • Einige Dinge müssen verbessert werden, zum Beispiel die WEB-Oberfläche, die Zugriffsberechtigung, der Serverteil und einige Ungenauigkeiten bei der Berechnung des Lüfters und der Betriebsstunden. Andere Verbesserungswünsche können aufgedeckt werden.
  • Das Pilotprojekt für Smart Home on WiFi kann als erfolgreich angesehen werden;)

Die Skizze kann hier heruntergeladen werden. Ich wäre Ihnen sehr dankbar, wenn Sie Fehler melden würden.

Skizze des Lüftercontrollers über WLAN Die

für das Projekt aufgewendete Zeit beträgt zwei Tage.

PS Ich beantworte sofort die Frage, warum es so schwierig ist. Kann ich parallel zum Schalter oder am Timer sitzen?
- Ja, das kannst du. Aber die Einbeziehung von Timer und Licht passte nicht zu mir. Darüber hinaus ist es ein Hobby, einige Ideen umzusetzen, die in anderen Projekten verwendet werden.

Das Lager war wieder fehlerhaft, also die Bilder aus meinem Blog . Dort können Sie über meine Entwicklungen im Smart Home sehen

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


All Articles