So reduzieren Sie den Verbrauch von WLAN-Modulen um das Zehnfache oder mehr

Guten Tag an alle !!!

Dieser Artikel befasst sich hauptsächlich mit dem beliebten ESP8266-Modul (ESP8285).

Kürzlich wurde mir in einem der Foren eine Frage zum ESP-NOW-Protokoll gestellt. Aus diesem Grund habe ich mich dazu entschlossen, über Möglichkeiten zur Reduzierung des Verbrauchs von Sensoren und Aktoren zu sprechen, die über WLAN arbeiten, einschließlich des ESP8266, insbesondere von Sonoff.

Zunächst das Wesentliche des zu lösenden Problems.

In der klassischen WLAN-Lösung müssen Sie entweder einen speziellen Router oder ein Smartphone oder Gerät im Access Point-Modus verwenden.

Der Vorgang zum Verbinden und Übertragen von Daten ohne spezielle Tänze mit einem Tamburin auf dem ESP8266 dauert 1 bis 4 Sekunden. In diesem Fall beträgt die Stromaufnahme mindestens 70 mA.

Bei Verwendung von Batteriestrom wie einem Temperatursensor wird der Tiefschlafmodus verwendet. Das Gerät wacht regelmäßig auf, sendet Daten und schläft ein.

Aufgrund meiner Erfahrung kann ich sagen, dass die Aktivitätszeit von ESP8266 auf 0,1-0,13 Sekunden reduziert werden kann.

Darüber hinaus ist ein wesentlicher Teil dieser Zeit die Betriebszeit des Bootloaders: von 0,08 Sekunden bis 0,1 Sekunden, aber das WLAN ist zu diesem Zeitpunkt noch nicht eingeschaltet, und daher beträgt der Stromverbrauch im Durchschnitt 25 mA.

Ich benutze dieses Intervall, um die Akkuladung zu überprüfen.
Wenn für die Kommunikation nicht genügend Gebühren anfallen, schicke ich das Gerät erneut in den Energiesparmodus.
Diese Zeit nutze ich, um die Sensorwerte zu überprüfen und mit einem vorgegebenen Wertebereich zu vergleichen.

Wenn Sie sich auf dem Flur befinden, schicken Sie das Gerät erneut in den Ruhezustand.
Somit wird unnötiges Senden von Daten erheblich reduziert.

In der Regel ist es bei Projekten wie einem „Smart Home“, einem Mondschein oder einer Bieranlage, Wetterwetterstationen erforderlich, die Temperatur zu messen und die Relaisbirne, die Pumpe und den Motor ein- und auszuschalten.
Um solche Geräte zu steuern und Temperatur- oder Druckdaten auf einem Smartphone oder einem anderen Gerät abzurufen, genügen einige Bytes.

Gegenüber dem ESP8266 im Internet gibt es verschiedene Möglichkeiten, die Aktivitätszeit von Geräten im Datenübertragungsmodus über WLAN zu reduzieren.

Option 1: Verwenden Sie TCP / IP und eine feste IP-Adresse.
Der erste für ESP8266 wurde von pvvx hergestellt.
Nachteile: Die Verwendung von selbst erstelltem SDK.
Aktivitätszeit von 0,54 sek.

Option 2: Ich war lange Zeit der erste, der diese Methode verwendete, fand sie aber heute nicht mehr im Internet.
Korrigieren der Verbindungsparameter in RAM RTC mithilfe des UDP-Protokolls und Deaktivieren von DHCP.
Vorteil: Standard SDK ohne Krücken, Paketlänge bis zu 64K.
Aktivitätszeit von 0,25 sek.

Option 3: ESP-NOW-Protokoll.
Nachteil: Die Schwierigkeit, von Amateuren verstanden zu werden, die Notwendigkeit, sich mit dem WLAN-Protokoll zu verbinden, um Daten mit einem Smartphone auszutauschen.
Vorteil: Standard SDK, keine Krücken, Paketlänge bis zu 512 Bytes.
Aktivitätszeit: von 0,13 Sekunden (Standard-Bootloader); 0.1 (spezieller Bootloader)

Option 4: CNLohr-Lösung basierend auf hausgemachtem pvvx-SDK und Verwendung von Rohpaketen.
Der Unterschied zur ESP-NOW-Lösung besteht darin, dass das übertragene Paket kleiner ist, aber das WiFi-Protokoll verwendet wird.
Nachteil: Es ist für Amateure sehr schwer zu meistern, es kann nicht in einer Arduino-Umgebung implementiert werden, es sind Änderungen an der Software des Routers erforderlich.
Aktivitätszeit: wie in Option 3.

Option 5: Eine universelle Methode für WiFi-basierte private Netzwerke.
Keine Krücken. Es ist einfach auf Arduino zu implementieren, Software ist Standard.
Es kann nicht nur für ESP verwendet werden.
Es ist kein Router erforderlich.
Nachteil: Paketlänge 4 Bytes
Aktivitätszeit: wie in Option 3 und 4.

Methode:
Im lokalen Netzwerk verwenden wir spezielle MAC-Adressen.
Das erste Byte der Adresse, z. B. 0x36.
Das zweite Byte der Adresse gibt die Gerätenummer an.
3,4,5,6 Bytes enthalten die übertragenen Informationen.
Damit die übertragenen Informationen empfangen werden können, muss lediglich die Verbindung hergestellt werden.
Die Zeit zum Übertragen von Daten ist Null, da wir die Daten zum Zeitpunkt der Verbindung erhalten.

Eine Ausführungsform dieser Methode für Arduino kann hier abgeschrieben werden .

Im obigen Beispiel ist nur eine Variante dieser Datenübertragungsmethode implementiert.

Es gibt keinen Tiefschlafmodus. Daher ist eine Energieeinsparung nur aufgrund der Nullzeit für die Informationsübertragung möglich. Der Sender funktioniert nur im angeschlossenen Zustand und der Strom steigt für nur 2-4 ms auf 300 mA an.

Um den vollen Speichereffekt für eine der Optionen zu erzielen, muss der Tiefschlafmodus auf eine Standardweise implementiert werden.

In den Optionen 3 bis 5 dauert der Betrieb der WiFi-Einheit daher nicht länger als 0,04 Sekunden.
Zu diesem Zeitpunkt variierte der Stromverbrauch von 70 bis 300 mA.
In der übrigen Zeit beträgt die Stromaufnahme des ESP8266 nicht mehr als 20 mA.
Anstatt für eine Sitzung mit 70 mA * s Energie zu verbrauchen, erhalten wir ungefähr 3 mA * s.
Wer möchte, kann die Einsparungen für bestimmte Geräte genauer berechnen.

Ich werde Option 2 näher erläutern .
Beim Beenden von Depp-Sleep gibt es drei Möglichkeiten, um eine Verbindung zu WiFi für Messaging herzustellen.

1) Login und Passwort - neue Werte.
Die Verbindungs- und Übertragungszeit der UDP-Nachricht beträgt 4 Sekunden.

2) Login, Passwort und IP werden in RTC gespeichert.
Die Verbindungs- und Übertragungszeit der UDP-Nachricht beträgt 1,2 Sekunden.

3) Login, Passwort, IP, in RTC speichern und DHCP deaktivieren.
Die Verbindungs- und Übertragungszeit der UDP-Nachricht beträgt 0,25 Sekunden.

Die Zeit wird unter Berücksichtigung der Betriebszeit des Bootloaders berechnet.
Das sind 0,12 Sekunden in einem Standard-Boot.
Wenn wir den Bootloader neu schreiben, kann die Zeit um weitere 0,04 bis 0,06 Sekunden verkürzt werden.

Wenn wir also Login, Passwort und IP in RTC speichern, erhöht sich die Akkulaufzeit um das Dreifache als ohne Speichern. Diese Speichermethode ist im Internet bekannt und wird von vielen benutzt.

Wenn Sie jedoch DHCP deaktivieren, erhöht sich die Akkulaufzeit um das 13-fache.
Genau das mache ich, aber ich habe im Internet noch keine solche Lösung gesehen.

Alles Erfolg beim Energiesparen.

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


All Articles