Inhaltsverzeichnis:

ESP8266-01 IoT Smart Timer für die Hausautomation - Gunook
ESP8266-01 IoT Smart Timer für die Hausautomation - Gunook

Video: ESP8266-01 IoT Smart Timer für die Hausautomation - Gunook

Video: ESP8266-01 IoT Smart Timer für die Hausautomation - Gunook
Video: PZEM-004T и ESP8266 ESP-01 Wi-Fi-монитор энергопотребления | ESP-01 Домашняя автоматизация 2024, November
Anonim
ESP8266-01 IoT Smart Timer für die Hausautomation
ESP8266-01 IoT Smart Timer für die Hausautomation
ESP8266-01 IoT Smart Timer für die Hausautomation
ESP8266-01 IoT Smart Timer für die Hausautomation
ESP8266-01 IoT Smart Timer für die Hausautomation
ESP8266-01 IoT Smart Timer für die Hausautomation

AKTUALISIERUNG

30.09.2018: Firmware auf Version 1.09 aktualisiert. Jetzt mit Sonoff Basic Support

10.01.2018: Testversion der Firmware-Version 1.10 zum Testen auf ESP8266-01 mit Problemen verfügbar

Mit den neuen Schlagworten Internet of Things (IoT) und Home Automation habe ich beschlossen, mir die aktuellen Artikel in und um mein Zuhause anzusehen, die über eine Art Gerät gesteuert werden. Die Punkte, die auffielen, sind die folgenden:

  • Schwimmbadpumpe
  • Wasserfüller für Schwimmbecken
  • Schwimmbad und Umgebungsbeleuchtung
  • Schrankleuchten für TV-/Entertainment-Systeme

Das übliche Element, das zur Steuerung dieser Geräte verwendet wird, sind Standard-Wandstecker-Timer. Jedes Gerät ist mit einem eigenen Timer ausgestattet und befindet sich alle an verschiedenen Orten. Warum habe ich mich für diese Elemente entschieden, um mit Internet of Things- oder Home-Automation-Projekten zu beginnen, könnten Sie sich fragen?

Nun, in Südafrika zu leben bedeutet, dass Stromausfälle an der Tagesordnung sind. Mit Statistiken zu meinem Haus hatte ich im letzten Jahr 35 Stromausfälle, insgesamt 40 Stunden. Dies ist normalerweise kein Problem, da alle derzeit installierten Zeitschaltuhren mit einer Pufferbatterie zur Zeitmessung bei Stromausfall ausgestattet sind. Aber es gibt einige Probleme:

  • Diese Pufferbatterien halten nur ein oder zwei Jahre, dann muss die Zeitschaltuhr ersetzt werden. Die Timer sind so konstruiert, dass der Timer zerstört werden muss, um Zugang zum internen Ni-Cad-Akku zu erhalten.
  • Bei jedem Stromausfall müssen die Timer mit defekten Batterien neu programmiert und die Zeit eingestellt werden.
  • Die physische Position des Timers, wenn er an die Steckdose angeschlossen ist, macht es fast unmöglich, die LCD-Displays von oben abzulesen. Das bedeutet, dass der Timer ausgesteckt werden muss, oder ich mich auf den Boden legen muss, um die Timer nach einem Stromausfall einzustellen oder einzustellen.

Aus den oben genannten Gründen habe ich beschlossen, die Möglichkeit zu testen, die Timer durch einen IoT Smart Timer zu ersetzen, der mit meinem lokalen Heimnetzwerk verbunden ist.

Die Idee war, einen eigenständigen Timer zu entwickeln, der:

  • Automatische Anpassung der aktuellen Uhrzeit über das Internet (IoT)
  • Bedienung ohne Benutzeraktionen (Smart)
  • Schalten Sie einen Ausgang nach eingestellten Zeiten ein/aus (Timer)
  • Über Netzwerk programmierbar und steuerbar (Home Automation)

Schritt 1: Das ESP8266-01-Design

Das ESP8266-01-Design
Das ESP8266-01-Design
Das ESP8266-01-Design
Das ESP8266-01-Design

Das Design wurde mit einem ESP8266-01 WiFi-Modul erstellt, da ich dieses zur Verfügung hatte. In seiner einfachsten Form hat der ESP8266-01 vier I/O-Pins:

  • GPIO0
  • GPIO2
  • TX
  • RX

ESP8266-01 Einschaltmodi

Der logische Zustand der I/O-Pins wird verwendet, um zu bestimmen, in welchem Modus der ESP8266-01 hochfährt. Der erste Schritt bestand darin, zu bestimmen, welcher der E/A-Pins zum Ansteuern eines Ausgangsrelais verwendet werden kann.

  • Für das normale Einschalten müssen GPIO0 und GPIO2 auf logisch HIGH gesetzt werden. Somit ist klar, dass diese beiden Pins nicht als digitaler Ausgang verwendet werden können.
  • Der Tx-Pin wird beim Einschalten als Ausgang gesetzt und der Ausgang auf High gesetzt. Dieser Tx-Pin überträgt auch einige serielle Daten während des Einschaltens. Somit kann dieser Pin auch nicht als Ausgang verwendet werden.

Der einzige verbleibende Pin ist der Rx-Pin. Dieser Pin wird beim Einschalten als Eingang gesetzt und muss beim Einschalten nicht hochgezogen werden. Dieser Pin ist daher am besten geeignet, um als Ausgangspin verwendet zu werden.

Hochfahren

Um den korrekten Boot-Up-Modus des ESP8266-01 während des Einschaltens sicherzustellen, werden die folgenden Pins mit 10K-Widerständen hochgezogen:

  • GPIO0
  • GPIO2
  • RST
  • CH_PD

Dadurch wird sichergestellt, dass das Gerät jedes Mal korrekt hochfährt.

Ausgangsrelais

Der RX ist der einzige Pin, der als Ausgang geeignet ist. Dieser Pin dient somit zur Ansteuerung des Ausgangsrelais über einen NPN-Transistor. Die Standard-Schwungraddioden- und Transistor-Basiswiderstände wurden hinzugefügt.

MODE/SET-Taste

Die Taste ist mit GPIO2 verbunden, und wenn die Taste losgelassen wird, zieht ein 10K-Widerstand GPIO2 hoch. Bei gedrückter Taste wird GPIO2 auf 0V gezogen.

Diese Taste wird für zwei Funktionen verwendet:

  • Ersteinrichtung zum Verbinden des Geräts mit einem lokalen WLAN-Netzwerk
  • Um den Ausgang während des normalen Betriebs manuell zu steuern

Anzeige-LED

Die LED ist mit GPIO0 verbunden und zeigt Folgendes an:

  • Blinkt beim ersten Einschalten SCHNELL, um den WiFi-Setup-Modus anzuzeigen
  • Blinkt langsam, wenn die Uhrzeit des Geräts nicht eingestellt ist
  • zeigt den Ein/Aus-Status des Ausgangsrelais an

Schritt 2: Das Netzteil

Die Stromversorgung
Die Stromversorgung
Die Stromversorgung
Die Stromversorgung
Die Stromversorgung
Die Stromversorgung

Ich werde den IoT Smart Timer auf verschiedenen Spannungsebenen verwenden, daher stehen zwei Stromversorgungsoptionen zur Verfügung:

12 - 24V DC

Der verwendete DC-DC-Wandler ist für Versorgungen bis 28V DC geeignet. Der Ausgang des Wandlers ist einstellbar und auf 5V eingestellt. Dies muss erfolgen, bevor das ESP8266-Modul angeschlossen wird.

Zum Schutz vor Verpolung am Versorgungseingang wurde eine Diode hinzugefügt.

220V ACFür diese Option konnte ich bei eBay ein kleines 220V/5V Schaltnetzteil erwerben.

Unabhängig von der Eingangsspannung benötigt der IoT Smart Timer zwei Netzteile:

5V-Schiene

Bei beiden Optionen wird die 5V DC von einem Schaltnetzteil und nicht von einem Linearregler bezogen. Das bedeutet, dass nur minimale Wärme durch das Netzteil erzeugt wird. Die 5V werden verwendet, um das Ausgangsrelais zu treiben

3.3V Schiene

Die 3,3 V für den ESP8266-01 werden von einem ASM1117 3.3-Regler bezogen. Der ASM1117 3.3 ist ein Linearregler und kann bis zu 500 mA verarbeiten. Die erzeugte Wärme wird jedoch durch die Eingangsspannung des ASM1117 bestimmt. Um die Hitze zu reduzieren, wird der ASM1117 über die 5V-Schiene mit Strom versorgt.

Rauschfilterung

Um die Spannungswelligkeit des ESP8266-01 zu reduzieren, ist die 3,3V-Schiene mit einem 100 - 1000uf Kondensator ausgestattet. Sowohl die 5-V- als auch die 3,3-V-Schiene sind durch 0,1-Uf-Kondensatoren auch vor Hochfrequenzstörungen geschützt.

Schritt 3: Zusammenbau der PC-Platine

Zusammenbau der PC-Platine
Zusammenbau der PC-Platine
Zusammenbau der PC-Platine
Zusammenbau der PC-Platine
Zusammenbau der PC-Platine
Zusammenbau der PC-Platine

Das PC Board wurde mit der Freeware-Version von Eagle entwickelt. Es ist ein einseitiger Karton, der einfach zu Hause mit der Tonerübertragungsmethode hergestellt werden kann.

Sobald die PC-Platine hergestellt ist, bauen Sie die PC-Platine in der folgenden Reihenfolge zusammen:

  • Löten Sie den ASM1117-Regler und drei 0.1uf SMD-Komponenten auf die Lötseite der Platine
  • Fügen Sie den einzelnen Jumper auf der Komponentenseite der Platine hinzu
  • Löten Sie die Widerstände und Dioden an Ort und Stelle
  • Fügen Sie die Header für das ESP8266-01-Modul hinzu
  • Fügen Sie die Header-Pins für die LED und die Taste hinzu
  • Fügen Sie die Schraubklemmen hinzu
  • Verbinden Sie den DC/DC-Wandler mit den Kopfstiften mit der Platine.
  • Löten Sie das Relais ein
  • Vervollständigen Sie die Platine, indem Sie den Transistor und den 100uf-Kondensator verlöten.

Sobald alle Komponenten an die Platine gelötet sind, überprüfen Sie alle Lötpunkte und stellen Sie sicher, dass keine Kurzschlüsse zwischen den Pads vorhanden sind.

! ! ! WICHTIGER HINWEIS ! ! ! Um sicherzustellen, dass die Leiterplatte große Ströme an den Ausgangskontakten verarbeiten kann, tragen Sie eine angemessene Menge Lötzinn auf die Leiterbahnen zwischen den Relaiskontakten und den Schraubklemmen auf

Schritt 4: Testen der PC-Platine

Prüfung der PC-Platine
Prüfung der PC-Platine

! ! ! Vor dem Anlegen der Stromversorgung! ! !

Entfernen Sie das ESP8266-01-Modul aus dem Gerät. Dies soll eine Überhitzung des Reglers ASM1117 verhindern, bevor die 5V-Versorgung angepasst wird.

Es gibt nicht viele Tests, die nach der Montage durchgeführt werden können. Der wichtigste Schritt besteht darin, die richtigen Spannungspegel sicherzustellen.

  • Legen Sie 12 - 24 V DC an das Gerät an.
  • Messen Sie die Ausgangsspannung des DC/DC-Wandlers
  • Stellen Sie den Ausgang des Konverters zwischen 5,0 und 5,5 V ein.
  • Als nächstes messen Sie die 3,3-V-Versorgung.
  • Wenn die Stromversorgung in Ordnung ist, trennen Sie das Gerät vom Strom

Sie können nun das ESP8266-01-Modul in die vorgesehenen Header einfügen.

! ! ! Notiz !

Nachdem Sie den IoT-Timer getestet haben und er funktioniert, verwenden Sie Klarlack, um die Lötseite der Leiterplatte abzudecken. Dies verhindert eine Oxidation der Leiterbahnen und sorgt für eine zusätzliche Isolierung zwischen den Relaiskontakten und dem Rest des Stromkreises

Schritt 5: Das Gehäuse

Das Gehäuse
Das Gehäuse
Das Gehäuse
Das Gehäuse
Das Gehäuse
Das Gehäuse

Das Gehäuse ist nicht so wichtig, solange die Platine und die gesamte Verkabelung sauber und sicher hineinpassen.

Um den Aufbau zu erleichtern, habe ich ein Kabel mit angeschlossener LED und MODE/SETUP-Taste konfektioniert. Dies gab mir mehr Flexibilität bei der Montage der LED und der Taste am Gehäuse. Dieses Kabel wird dann in den Header auf der Platine gesteckt.

Die Fotos zeigen eine der 12V-Einheiten, die für LED-Leuchten verwendet werden.

Schritt 6: Programmierung der ESP8266-01/NodeMCU

Programmierung der ESP8266-01/NodeMCU
Programmierung der ESP8266-01/NodeMCU
Programmierung der ESP8266-01/NodeMCU
Programmierung der ESP8266-01/NodeMCU
Programmierung der ESP8266-01/NodeMCU
Programmierung der ESP8266-01/NodeMCU

Um den ESP8266-01 zu programmieren, müssen Sie zuerst die Arduino IDE einrichten. Ich gehe nicht auf diese Details ein, da zu diesem Thema viele großartige Instructables verfügbar sind. Ich habe die folgenden Links auf Instructables als Referenz ausgewählt, ohne eine bestimmte Reihenfolge an die Autoren. Vielen Dank für ihre individuellen Instructables.

Folgen Sie dieser ESP8266- und Arduino-IDE, um die Arduino-IDE für das ESP8266-Modul einzurichten.

Als nächstes benötigen Sie einen Programmierer, um den ESP8266 zu programmieren. Hier zwei Links:

Verwenden von Arduino Uno

DIY-Programmierplatine

Bibliotheken

Sie müssen zusätzliche Bibliotheken installieren, um den Code kompilieren zu können. Beziehen Sie sich wieder auf dieses Instructable:

Installieren und verwenden Sie Arduino-Bibliotheken

Ich kann mich nicht erinnern, welche Bibliotheken ich installieren musste, aber ich weiß, dass WiFiManager separat heruntergeladen werden muss. Ich habe diese in der Datei Libraries.zip enthalten.

Schritt 7: Ersteinrichtung

Erstmalige Einrichtung
Erstmalige Einrichtung
Erstmalige Einrichtung
Erstmalige Einrichtung
Erstmalige Einrichtung
Erstmalige Einrichtung

Bei der erstmaligen Verwendung muss der IoT Smart Timer mit einem WLAN-Netzwerk verbunden sein. Diese Aufgabe wird mit der WiFiManager-Bibliothek erledigt, sodass keine SSID oder Passwörter in den Code eingegeben werden müssen.

Folgen Sie diesen wenigen Schritten:

  • Schalten Sie das Gerät ein
  • Die LED beginnt schnell zu blinken
  • Drücken Sie die MODE/SETUP-Taste
  • Wenn die LED erlischt, lassen Sie die Taste los
  • Warten Sie ein paar Sekunden und öffnen Sie dann die WLAN-Verbindungen Ihres Smartphones oder Geräts
  • Ein neues WLAN-Netzwerk namens IoT Timer wird sichtbar
  • Wählen Sie diesen Zugangspunkt aus
  • Melden Sie sich beim IoT Timer an (kein Passwort erforderlich)
  • Warten Sie, bis Ihr Gerät mit dem IoT Timer-Netzwerk verbunden ist
  • Öffnen Sie einen beliebigen Internetbrowser
  • Geben Sie in der Adressleiste die folgende IP-Adresse ein - 192.168.4.1
  • Die WiFiManager-Konsole wird geöffnet
  • Wählen Sie WLAN konfigurieren
  • Eine Liste mit verfügbaren WLAN-Netzwerkpunkten wird angezeigt
  • Wählen Sie das gewünschte WLAN-Netzwerk aus und geben Sie das Passwort ein
  • Geben Sie als Nächstes die IP-Adresse ein, mit der Sie sich mit dem IoT Timer verbinden möchten
  • Geben Sie die Standard-Gateway-IP-Adresse ein, gefolgt von der Maske
  • Wenn alle Einstellungen vorgenommen wurden, klicken Sie auf die Schaltfläche Speichern
  • Ein neues Fenster wird geöffnet, um zu bestätigen, dass die neuen Zugangsdaten gespeichert wurden
  • Schließen Sie Ihren Browser

Nach dem Speichern wird das IoT Timer-Netzwerk heruntergefahren und das Gerät versucht, eine Verbindung zu Ihrem WLAN-Netzwerk herzustellen.

  • Verbinden Sie Ihr Smartphone oder Gerät mit demselben WLAN-Netzwerk, das für den IoT-Timer verwendet wird.
  • Öffne deinen Browser
  • Geben Sie in der Adressleiste die IP-Adresse Ihres IoT-Timers ein
  • Die Konfigurationsseite des IoT Timers wird geöffnet

Ihr IoT-Timer ist jetzt einsatzbereit

Schritt 8: Einrichtung des IoT-Timers

Einrichtung des IoT-Timers
Einrichtung des IoT-Timers
Einrichtung des IoT-Timers
Einrichtung des IoT-Timers
Einrichtung des IoT-Timers
Einrichtung des IoT-Timers
Einrichtung des IoT-Timers
Einrichtung des IoT-Timers

Die eingebaute Webseite des IoT Timers besteht aus fünf Abschnitten:

Status

Hier werden der Gerätename, sowie die aktuelle Uhrzeit und der Ausgangsstatus des Timers angezeigt

Außerdem wird in diesem Abschnitt die Betriebsart des Timers eingestellt. Es gibt drei Modi:

  • Auto - Die Ausgabe wird von den verschiedenen Timerprogrammen gesteuert
  • Ein - Ausgang wird zwangsweise eingeschaltet und bleibt eingeschaltet, bis der Modus geändert wird
  • Aus – Der Ausgang wird zwangsweise ausgeschaltet und bleibt ausgeschaltet, bis der Modus geändert wird.

Programme

Dieser Abschnitt enthält die Ein- und Ausschaltzeiten des Timers. Es stehen sieben Programme zur Verfügung und jedes Programm kann individuell eingestellt werden.

Bevor Sie das nächste Programm ändern, drücken Sie die SAVE-Taste, um alle am aktuellen Programm vorgenommenen Änderungen zu speichern.

Tastenfunktion

Mit der MODE/SETUP-Taste kann das Ausgangsrelais im Normalbetrieb gesteuert werden. Wählen Sie hier aus, was die Schaltfläche tun soll, wenn sie gedrückt wird.

Aktivieren Sie das Kontrollkästchen "Schaltflächenfunktion aktualisieren", bevor Sie auf die Schaltfläche Speichern klicken, um die neuen Einstellungen zu speichern.

Aufbau

Hier können Sie den Namen des IoT Timers ändern. Dies macht es einfach, zwischen mehreren Timern zu unterscheiden.

Die Uhrzeit des Geräts wird über einen NTP-Zeitserver aus dem Internet bezogen. Um die korrekte Uhrzeit anzuzeigen, aktualisieren Sie bitte die Zeitzone auf Ihre Region.

Wenn Sie einen anderen NTP-Zeitserver verwenden möchten, tragen Sie die neue IP-Adresse in das dafür vorgesehene Feld ein.

Aktivieren Sie das Kontrollkästchen "Konfiguration aktualisieren", bevor Sie auf die Schaltfläche Speichern klicken, um die neuen Einstellungen zu speichern.

HINWEIS

Beim Ändern der Zeitzone wird die neue Uhrzeit erst bei der nächsten Zeitabfrage richtig eingestellt. Das Gerät ist so eingestellt, dass die Uhrzeit alle 5 Minuten aktualisiert wird.

Zeitumstellung

Manchmal kommt es vor, dass der NTP-Zeitserver nicht auf jede Zeitabfrage antwortet. Sollte das Einstellen der Uhrzeit über den NTP-Server zu lange dauern, können Sie Uhrzeit und Datum manuell eingeben.

Aktivieren Sie das Kontrollkästchen "Zeit aktualisieren", bevor Sie auf die Schaltfläche Speichern klicken, um die neue Uhrzeit und das neue Datum zu speichern.

Zeitsynchronisation

Der letzte Teil der Seite zeigt die Uhrzeit und das Datum an, wann die Uhrzeit zuletzt über den NTP-Zeitserver synchronisiert wurde.

Empfohlen: