Comment réduire la consommation de modules wifi de dix fois ou plus

Bonne journée à tous !!!

Cet article traite principalement du module ESP8266 populaire (ESP8285).

Récemment, dans l'un des forums, on m'a posé une question sur le protocole ESP-NOW. En conséquence, j'ai décidé de parler de moyens de réduire la consommation de capteurs et d'actionneurs fonctionnant via le WiFi, notamment l'ESP8266, en particulier Sonoff.

Premièrement, l'essentiel du problème est résolu.

Dans la solution classique sur WiFi, vous devez utiliser soit un routeur spécial, soit un smartphone ou un appareil en mode point d'accès.

La procédure de connexion et de transmission de données sans danses spéciales avec un tambourin sur l'ESP8266 est de 1 à 4 secondes. Dans ce cas, la consommation de courant est d'au moins 70 mA.

Lors de l'utilisation de la batterie, comme un capteur de température, le mode veille profonde est utilisé. L'appareil se réveille périodiquement, envoie des données et s'endort.

D'après mon expérience, je peux dire que le temps d'activité de l'ESP8266 peut être réduit à 0,1-0,13 sec.

De plus, une partie importante de ce temps est le temps de fonctionnement du bootloader: de 0,08 seconde à 0,1 seconde, mais le wifi n'est pas encore activé à ce moment, et donc la consommation de courant est en moyenne de 25 mA.

J'utilise cet intervalle pour vérifier la charge de la batterie.
S'il n'y a pas assez de frais pour la communication, j'envoie de nouveau l'appareil en veille.
J'utilise ce temps pour vérifier les lectures du capteur et comparer avec une plage de valeurs donnée.

Si vous êtes dans le couloir, endormez à nouveau l'appareil.
Ainsi, l'envoi de données inutiles est considérablement réduit.

En règle générale, dans des projets tels qu'une «maison intelligente», un clair de lune ou une unité de bière, des stations météorologiques météorologiques, il est nécessaire de mesurer la température et d'allumer et d'éteindre l'ampoule du relais, la pompe, le moteur.
Pour contrôler de tels appareils et obtenir des données de température ou de pression sur un smartphone ou un autre appareil, quelques octets suffisent.

Par rapport à l'ESP8266 sur Internet, il existe plusieurs façons de réduire le temps d'activité des appareils en mode de transfert de données via WiFi.

Option 1: utilisez TCP / IP et une adresse IP fixe.
Le premier pour ESP8266 a été fabriqué par pvvx.
Inconvénients: l'utilisation d'un SDK auto-conçu.
Temps d'activité de 0,54 sec.

Option 2: j'ai été la première à utiliser cette méthode pendant longtemps, mais je ne l'ai pas trouvée sur Internet aujourd'hui.
Utilisation du protocole UDP, fixation des paramètres de connexion dans la RAM RTC, désactivation du DHCP.
Avantage: SDK standard sans béquilles, longueur de paquet jusqu'à 64K.
Temps d'activité de 0,25 sec.

Option 3: protocole ESP-NOW.
Inconvénient: la difficulté de compréhension par les amateurs, la nécessité de se combiner avec le protocole wifi pour échanger des données avec un smartphone.
Avantage: SDK standard, pas de béquilles, longueur de paquet jusqu'à 512 octets.
Temps d'activité: à partir de 0,13 s (chargeur de démarrage standard); 0.1 (chargeur de démarrage spécial)

Option 4: solution CNLohr basée sur SDK pvvx maison et utilisation de packages bruts.
La différence avec la solution ESP-NOW est que le paquet transmis est plus petit, mais le protocole WiFi est utilisé.
Inconvénient: il est très difficile à maîtriser par des amateurs, il ne peut pas être implémenté dans un environnement Arduino, il nécessite des modifications du logiciel du routeur.
Temps d'activité: comme dans l'option 3.

Option 5: une méthode universelle pour les réseaux privés basés sur le WiFi.
Pas de béquilles. Il est facile à mettre en œuvre sur Arduino, le logiciel est standard.
Il peut être utilisé non seulement pour ESP.
Il ne nécessite pas de routeur.
Inconvénient: longueur de paquet 4 octets
Temps d'activité: comme dans les options 3 et 4.

Méthode:
Dans le réseau local, nous utilisons des adresses MAC spéciales.
Le premier octet de l'adresse, par exemple, 0x36.
Le deuxième octet de l'adresse indique le numéro de périphérique.
3,4,5,6 octets contiennent les informations transmises.
Par conséquent, pour recevoir les informations transmises, il suffit de terminer la connexion.
Le temps de transfert des données est nul, car nous obtenons les données au moment de la connexion.

Un mode de réalisation de cette méthode pour l'arduino peut être supprimé ici .

Dans l'exemple ci-dessus, seule une variante de cette méthode de transfert de données est implémentée.

Il n'a pas de mode de sommeil profond. Par conséquent, les économies d'énergie ne sont dues qu'au temps zéro pour le transfert d'informations. L'émetteur ne fonctionne que lorsqu'il est connecté et le courant monte à 300 mA pendant seulement 2-4 ms.

Pour obtenir le plein effet d'économie par l'une des options, il est nécessaire de mettre en œuvre le mode de sommeil profond de manière standard.

Ainsi, dans les options 3 à 5, le fonctionnement de l'unité WiFi ne prend pas plus de 0,04 seconde.
C'est à cette époque que la consommation de courant varie de 70 à 300 mA.
Le reste du temps, la consommation de courant de l'ESP8266 ne dépasse pas 20 mA.
En conséquence, au lieu de consommer de l'énergie pour une session de 70 mA * s, nous obtenons environ 3 mA * s.
Ceux qui le souhaitent peuvent calculer plus précisément les économies pour des appareils spécifiques.

J'expliquerai plus en détail l'option 2 .
Lorsque vous quittez depp-sleep, il existe trois options pour se connecter au WiFi pour la messagerie.

1) identifiant et mot de passe - nouvelles valeurs.
Le temps de connexion et de transmission du message UDP est de 4 secondes.

2) l'identifiant, le mot de passe et l'IP sont stockés dans RTC.
Le temps de connexion et de transmission du message UDP est de 1,2 seconde.

3) login, mot de passe, IP, enregistrez en RTC et désactivez dhcp.
Le temps de connexion et de transmission d'un message UDP est de 0,25 seconde.

Le temps est calculé en tenant compte du temps de fonctionnement du bootloader,
qui est de 0,12 secondes dans un démarrage standard.
Si nous réécrivons le chargeur de démarrage, le temps peut être encore réduit de 0,04-0,06 seconde.

Ainsi, si nous enregistrons le login, le mot de passe et l'IP dans RTC, la durée de vie de la batterie augmente de 3 fois sans enregistrer. Cette méthode de sauvegarde est connue sur Internet et est utilisée par beaucoup.

Mais si vous désactivez DHCP, la durée de vie de la batterie augmentera d'environ 13 fois.
C’est exactement ce que je fais, mais je n’ai pas vu une telle solution sur Internet.

Tout le succès dans l'économie d'énergie.

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


All Articles