ESP8266, activer le mode Deep Sleep, réveil (wake up) avec un détecteur de mouvement PIR

Partager sur facebook
Partager sur twitter
Partager sur linkedin
Partager sur pinterest
Partager sur email
Partager sur telegram

Table des matières

Le module ESP8266 dispose du mode deep sleep qui permet de mettre celui-ci en veille prolongée pour économiser la batterie. On peut réveiller le module à intervalle régulier pour faire des mesures et les publier sur un serveur. La broche RESET (RST) permet également de réveiller l’ESP8266. On pourra par exemple utiliser le front montant (le signal) d’un détecteur de mouvement (PIR). 

 

Dans ce tutoriel nous allons voir les adaptations à apporter au code Arduino et comment modifier le câblages. Si vous rencontrez des difficultés pour utiliser le mode Deep-Sleep des modules ESP8266, vous pouvez utilisez ce sujet sur le forum.

Différents modes de veille et consommation d’un module ESP8266EX

Il existe trois modes de mise en veille. Ils sont détaillés dans la documentation officielle page 6

  • Modem-Sleep. Le mode Modem-Sleep est utilisé dans les applications qui nécessitent le fonctionnement du processeur, comme dans les applications PWM ou I2S. Il est conforme à la norme 802.11 (U-APSD). Le modem Wi-Fi est arrêté tout en maintenant une connexion Wi-Fi sans transmission de données pour optimiser la consommation d’énergie. Trois modes sont disponibles, DTIM1 à 3. Par exemple dans le mode DTIM3, le modem est mis en sommeil durant 300 ms puis activé durant 3 ms. Avec ce mode, la consommation est de 15 mA.
  • Light-Sleep (sommeil léger). En plus de la suspension du modem WiFI, le CPU est mis en attente et réactivé si nécessaire.
  • Deep-Sleep (sommeil profond), c’est le seul mode le plus simple à mettre en oeuvre et le plus économe en énergie pour des projets qui fonctionnent sur batterie.

Le tableau tiré de la documentation officielle donne une petite idée de la consommation. Lorsque le mode deep-sleep est activé, la consommation chute à ~20µA.

esp8266 table deepsleep datasheet espressif

Consommation moyenne des modules ESP8266

La consommation des modules ESP8266EX (2018) est très similaire (page 18). La consommation grimpe à 170mA avec une connexion WiFi à 11Mbps.

esp8266ex 2018 table deepsleep datasheet espressif

Consommation moyenne des modules ESP8266EX (2018)

Comment activer le mode deep sleep ?

On active le mode Deep-sleep en reliant la broche RST à la broche D0.

La broche D0 n’est donc plus disponible pour un autre usage.
Sur certains modules, la broche D0 peut être identifiée par GPIO16
wemos d1 mini activate deep-sleep mode esp8266

On active le mode deep-sleep de l’ESP8266 en reliant les broches RST et D0

Autres conséquences du mode deep-sleep

En reliant les broches D0 et RST, il n’est plus possible de téléverser un programme. Quelque soit votre environnement de développement (IDE Arduino, PlatformIO, ESP Tools), il faudra déconnecter la broche RST avant de pouvoir téléverser un programme. Il faudra donc en tenir compte lorsque vous concevez votre circuit. Le mieux est de prévoir un jumper.  

La connexion WiFi étant arrêté, vous ne pourrez plus accéder à une interface WEB de configuration. Il faudra prévoir une condition dans votre programme pour désactiver le mode deep-sleep. Par exemple en ajoutant un micro switch sur le circuit.

Activer le mode Deep-Sleep dans un programme Arduino

Maintenant que tout est prêt coté matériel, nous allons nous attaquer au code Arduino.

Ce qu’il faut garder en tête, c’est que lorsqu’on réveille le module ESP8266, le code du projet est exécuté depuis le début. Ce n’est pas une mise en veille comme on a l’habitude sur un ordinateur. Par conséquent, il est inutile de se torturer l’esprit et de prévoir des cas de re-connexion. Il suffira d’exécuter les différents traitement dans le setup() puis de rendormir l’ESP en exécutant la méthode ESP.deepsleep(durée, mode_wifi) qui prend deux paramètres :

  1. La durée de mise en veille en microsecondes. Par exemple, 1 seconde = 1000000 microsecondes
  2. Le mode du WiFi au redémarrage

Si on souhaite réveiller manuellement le module ou à l’aide d’une action extérieure, par exemple un interrupteur relié sur la broche RST, il suffit d’indiquer un temps nul (0).

Au réveil, il est possible de choisir entre 3 modes de fonctionnement du modem WiFi.

  • RF_DEFAULT c’est le mode par défaut qu’il est inutile d’indiquer. L’équivalent est RF_CAL. Dans ce mode, le modem WiFi est activé normalement. C’est à dire qu’on pourra se connecter au réseau WiFi et publier un statut sur un broker MQTT. Ce mode consomme génère un pic de consommation qui peut atteindre 170mA durant environ 1 seconde.
  • Une version alternative moins consommatrice en énergie est RF_NO_CAL (pour NO CALibration). Le modem WiFi est activé mais sans qu’aucun étalonnage du signal radio soit effectué. En théorie seulement car d’après les mesures réalisée par andre, la consommation semble identique.
esp8266_boot_no_rf_cal

RF_NO_CAL

esp8266_boot_rf_cal

RF_CAL

  • RF_DISABLED. Si vous n’avez pas besoin de la connexion WiFi on peut garder le modem WiFi en veille. Attention, si ce mode est activé, il devient impossible de se connecter au réseau WiFi. C’est l’équivalent du mode modem-sleep décrit précédemment.

Donc en résumé :

  • ESP.deepsleep(0), met en veille le module jusqu’à ce qu’il soit réveillé par un pic sur la broche RST
  • ESP.deepsleep(5 * 1000000), réveille le module toutes les 5 secondes
  • ESP.deepsleep(5000000, RF_DISABLED), réveille le module toutes les 5 secondes sans ré-activer le modem WiFi

Remarque. Vous pouvez également opter pour la notation scientifique et remplacer par 5e6 pour mettre le module en veille durant 5 secondes.

Test du mode Deep Sleep du module ESP8266EX

Il est temps de passer à un exemple concret. Créez un nouveau croquis et collez le code suivant. Vous disposez de plusieurs paramètres

  • SSID, le nom du réseau WiFi sur lequel doit se connecter le module
  • Password, le mot de passe réseau
  • durationSleep, la durée de mise en veille du module. Iici, elle est de 10 secondes.
  • NB_TRYWIFI, le nombre de tentative de connexion au réseau WiFI.

 

J’ai utilisé la librairie Tricker livrée avec le SDK ESP8266 qui permet d’exécuter à intervalle régulier une fonction pour faire clignoter la LED bleue installée sur la LoLin WeMos d1 mini. C’est une librairie plus légère que la librairie Thread qui ne nécessite aucun installation complémentaire.

Le module tente de se connecter à 10 reprises avec un temps d’attente de 500ms entre chaque tentative. Si le module ne parvient pas à se connecter à un réseau, il est plongé dans un sommeil profond jusqu’au prochain réveil et ainsi de suite. C’est une solution pour éviter de drainer la batterie. Bien évidemment, la durée du sommeil est trop courte, mais, c’est pour l’exemple.

Lorsque la connexion est possible, l’adresse IP du module est affichée sur le moniteur série.

On pourra utiliser ce mode de fonctionnement pour faire des mesures à intervalle régulier et les envoyer sur un serveur ou une base de données InfluxDB.

#include <ESP8266WiFi.h>
#include <Ticker.h>
Ticker ticker;

const char* ssid =     "enter_your_ssid"; // WiFi SSID
const char* password = "enter_your_password"; // WiFi password
#define durationSleep  10 // secondes
#define NB_TRYWIFI     10 // nbr d'essai connexion WiFi, number of try to connect WiFi

void tick()
{
int state = digitalRead(BUILTIN_LED); // get the current state of GPIO1 pin
digitalWrite(BUILTIN_LED, !state); // set pin to the opposite state
}

void setup() {
pinMode(BUILTIN_LED, OUTPUT);
ticker.attach(0.5, tick);

Serial.begin(115200);
WiFi.begin(ssid, password);

int _try = 0;
while (WiFi.status() != WL_CONNECTED) {
Serial.print("..");
delay(500);
_try++;
if ( _try >= NB_TRYWIFI ) {
Serial.println("Impossible to connect WiFi network, go to deep sleep");
ESP.deepSleep(durationSleep * 1000000);
}
}
Serial.println("Connected to the WiFi network");
Serial.print ( "IP address: " );
Serial.println ( WiFi.localIP() );

ESP.deepSleep(durationSleep * 1000000);

}

void loop() {
}

Réveiller le module à l’aide d’un contacteur, détecteur de mouvement PIR, radar microondes…

Maintenant, ce qui peut être intéressant, c’est de réveiller le module lorsqu’un événement est détecté à l’aide d’un contacteur, d’un détecteur de mouvement par infrarouge (détecteur PIR) ou un radar micro-ondes.

Le problème, c’est que pour réveiller l’ESP8266, il faut envoyer un front montant unique sur la broche Reset. Lorsqu’on utilise un contacteur ou le signal d’un détecteur PIR, le signal envoyé n’est pas correct et on provoque une multitude de redémarrages du module. Le pic de consommation électrique se situe au démarrage du module. Si on veut éviter le gaspillage et préserver la batterie des dépenses inutiles d’énergie, il faut résoudre ce problème.

J’ai testé de nombreux montages, mais c’est celui proposé par Tomsim sur Stackoverflow qui donne le meilleur résultat.

esp8266 capacitor wakeup circuit npn transistor

Ici, Tomsim récupère également l’état du bouton du la broche D2. La broche RST est connectée à la broche D0 à l’aide d’une diode. Ce n’est pas obligatoire. Il faudra éviter d’envoyer un signal haut depuis la broche D0 pour éviter un Reset involontaire. Si vous voulez redémarrer manuellement depuis le programme l’Arduino le module, utilisez plutôt la méthode ESP.reset().

En fonction du capteur utilisé, voici deux circuits que vous pouvez tester.

Matériel utilisé

Voici le matériel utilisé pour ce tutoriel

-13% 1 pièces/lot HC-SR501 ajuster IR pyroélectrique infrarouge PIR détecteur de mouvement Module...
0,33 0,38
Voir l'offre
Aliexpress AliExpress
-12% 100 pièces/lot BC547B BC547 547B TO-92 nouveau original en Stock
0,57 0,65
Voir l'offre
Aliexpress AliExpress
-4% 600 pièces/ensemble 30 sortes 1/8W 1/6W résistance 5% Film de carbone résistance...
0,96 1,01
Voir l'offre
Aliexpress AliExpress
-4% 120 pièces 12 valeur kit 1 uF-470 uF condensateur électrolytique assortiment ensemble...
1,11 1,16
Voir l'offre
Aliexpress AliExpress
-24% Transistor Trousse (SOT-23) 18kinds * 10 pièces = 180 pièces 2N2222 S9013...
1,35 1,80
Voir l'offre
Aliexpress AliExpress
100 pièces/ensemble 8 valeurs Diode sac assortiment Kit ensemble 1N4007 1N4148 FR107...
2,07
Voir l'offre
Aliexpress AliExpress
-39% Wemos D1 Mini V3.0 3.0 WIFI sans fil carte de développement Internet...
2,39 3,98
Voir l'offre
Aliexpress AliExpress
-4% MB102 Module d'alimentation Micro Usb pour planche à pain + 400 Points...
2,93 3,08
Voir l'offre
Aliexpress AliExpress
Last update was on: 6 février 2021 20 h 37 min

Circuit avec un transistor NPN (2N2222, BC457…)

Le premier circuit est le plus simple. On va utiliser un transistor de type NPN pour envoyer un signal sur la broche RST dès qu’un signal est envoyé par un capteur de présente ou un contacteur mécanique.

On récupère le signal sur la base du transistor NPN (broche 2). On récupère le signal de l’émetteur (broche 1) sur la broche RESET. Vous pouvez ajouter une résistance de rappel mais cela ne semble pas obligatoire. Le collecteur (broche 3) est connecté au GND.

 

BC547 transistor npn esp8266 deep-sleep wakeup

Matériel nécessaire

 

 

pir motion sensor wakeup deep-sleep esp8266 npn transistor

 

Circuit avec condensateur de filtrage en amont du transistor NPN, en cas de reset multiples

Si vous rencontrez des problèmes de redémarrage multiples de l’ESP8266, vous pouvez tester ce second montage basé sur le principe de Tomsim.

L’astuce consiste à installer en amont un petit condensateur de 1µf puis de relier la sortie du condensateur à la masse par l’intermédiaire d’une résistance. Lorsqu’un signal est envoyé par le contacteur ou le capteur, le condensateur se charge et ne produit qu’un seul signal en sortie pour alimenter la base du transistor. L’énergie résiduelle est éliminée via la résistance.

Le reste du circuit reste le même. J’ai testé plusieurs valeurs de résistance de 1kΩ à 10kΩ avec succès.

Matériel nécessaire

 

pir motion sensor wakeup deep-sleep esp8266 npn transistor capacitor filter

Un système d’alarme WiFi MQTT d’appoint

Maintenant qu’on peut réveiller l’ESP8266 à l’aide d’un détecteur de présence, rien de plus facile que d’envoyer un changement d’état vers un serveur domotique ou un broker MQTT. Voici un petit exemple de programme qui envoi un changement d’état au réveil du module ESP8266.

 

esp8266 deep-sleep pir motion detector wakeup interrupt

 

Avant de tester le programme, modifiez les paramètres suivants :

  • Le SSID et le mot de passe du réseau WiFi
  • L’adresse IP du broker MQTT
  • NB_TRYWIFI, le nombre de tentative de connexion au réseau WiFI.

Au réveil, le module tente de se connecter à 10 reprises (NB_TRYWIFI) au réseau WiFi. Si la connexion échoue, le module se rendort pour éviter de drainer la batterie. En cas de succès, il se connecte au broker MQTT et publie l’état sur le topic DeepSleepDemo/PIR durant une seconde. La LED bleue est éteinte puis le module se rendort jusqu’à la prochaine détection de mouvement.

On pourrait améliorer le code et mesurer le temps entre deux détections de mouvement pour éviter des alertes multiples.

#include <ESP8266WiFi.h>
#include <PubSubClient.h>

#include <Ticker.h>
Ticker ticker;

#define NB_TRYWIFI    10

const char* ssid = "xxxx";
const char* password = "xxxx";
const char* mqtt_server = "xxx.xxx.xxx.xxx";

WiFiClient espClient;
PubSubClient client(espClient);

void tick()
{
  //toggle state
  int state = digitalRead(BUILTIN_LED);  // get the current state of GPIO1 pin
  digitalWrite(BUILTIN_LED, !state);     // set pin to the opposite state
}

void sendMQTTMessage(){
  if (!client.connected()) {
    reconnect();
  }
  client.publish("DeepSleepDemo/PIR", "1");
  delay(1000);
  client.publish("DeepSleepDemo/PIR", "0");
}


void setup() {
  int start = millis();
  // Fait clignoter la LED intégré durant la connexion au réseau WiFi - Blink Bleu Led during WiFi connexion
  pinMode(BUILTIN_LED, OUTPUT);
  ticker.attach(0.5, tick);
   
  Serial.begin(115200);
  // Raison du réveil - restart reason
  Serial.println(""); Serial.print("Reason startup :");Serial.println(ESP.getResetReason());
    
  WiFi.begin(ssid, password);

  Serial.println("Connecting to WiFi.");
  int _try = 0;
  while (WiFi.status() != WL_CONNECTED) {
    Serial.print(".");
    delay(500);
    _try++;
    if ( _try >= NB_TRYWIFI ) {
        Serial.println("Impossible to connect WiFi network, go to deep sleep");
        ESP.deepSleep(0);
    }
  }
  Serial.println("Connected to the WiFi network");
 
  Serial.println("Send PIR Status to MQTT broker");
  client.setServer(mqtt_server, 1883);
  sendMQTTMessage();
  
  // Durée du réveil - waking time
  Serial.println("Waking time: ");Serial.print(millis()-start);Serial.println("ms");

  ticker.detach();
  digitalWrite(BUILTIN_LED, LOW);
 
  Serial.println("Go to deep sleep");
  
  ESP.deepSleep(0);
}

void loop() {
}

boolean reconnect() {
  if (client.connect("ESP8266Client")) {
    Serial.println("Connected to server");
    return client.connected();
  }
  Serial.println("I think connection failed!");
  return 0;
}

Erreurs en téléversant un programme Arduino lorsque le mode deep-sleep est activé

De nombreux fabricants de cartes de développement ESP8266 intègrent maintenant un jumper à souder pour activer le mode deep-sleep. C’est plus propre et il n’y à rien à prévoir sur le circuit. Ici la LoLin (Wemos) d1 mini v3 (gauche) et la LoLin d1 mini Pro 2018 (droite).

Dans les deux cas, on peut suivre très facilement la piste qui relie les broches RST et D0.

 

 

wemos d1 mini version 3.0.0 bottom wemos lolin d1 mini pro bottom

Il faudra toutefois réserver cette option lorsque le projet est terminé. En effet, à chaque fois qu’on doit mettre à jour le programme, il faudra déconnecter les broches D0 et RST. En cas de besoin, il faudra retirer le jumper à l’aide d’une pompe à désouder.

Un cas typique de message d’erreur lorsque le mode deep-sleep n’est pas déconnecté.

esp8266 deep-sleep download espcomm_upload_mem failed

 

Si la broche RST est reliée à un capteur qui peut provoquer un Reset durant l’installation du programme, vous risquez de rencontrer l’erreur FLASH_DOWNLOAD_DATA.

esp8266 deep sleep flash_download_data

 

Autres optimisations

Bien évidemment la consommation annoncée en activant le mode Deep-Sleep ne tient pas compte du reste du montage. Si vous utilisez un capteur qui tire son alimentation directement depuis la batterie, l’autonomie en sera directement affectée. C’est le cas par exemple dès que l’on utilise les broches 5V ou 3V3.

Si vous voulez réduire la consommation des périphériques, vous pouvez utiliser une sortie numérique, à condition toutefois que la puissance nécessaire soit faible. L’intensité Imax disponible pour chaque sortie ne peut pas dépasser 12mA (page 18).

Une autre solution consiste à activer le mode d’économie d’énergie qui est proposée par la plupart des capteurs I2C. C’est au cas par cas, il faudra fouiller dans la librairie ou développer votre propre driver en vous référant à la documentation officielle du fabricant.

Avez-vous aimé cet article ?
[Total: 3 Moyenne: 5]
Partager sur facebook
Partager sur twitter
Partager sur linkedin
Partager sur pinterest
Partager sur email
Partager sur telegram

Vous avez aimé ce projet ? Ne manquez plus aucun projet en vous abonnant à notre lettre d’information hebdomadaire!

quel modèle esp8266 choisir
Quel modèle d'ESP8266EX choisir en 2020 ?
guide choix esp32 development board
Quel ESP32 choisir en 2020 ?

Vous rencontrez un problème avec ce sujet ?

Peut-être que quelqu’un a déjà trouvé la solution, visitez le forum avant de poser votre question

17 Commentaires
  1. Bonjour,
    Je ne suis pas sur de comprendre la phrase “C’est le cas par exemple dès que l’on utilise les broches 5V ou 3V3.” du paragraphe “Autres optimisations”.
    J’utilise un wemos lolin d1 mini, donc si j’ai un capteur (DHT22 en l’occurrence) dont la broche Vcc est branché sur la broche 5V du wemos, lorsque je serais en mode DeepSleep, le DHT22 sera toujours alimenté et consommera encore ?

    • Bonjour Geo, oui, c’est ça

      • D’accord, merci de ta réponse.
        Donc pour être parfaitement propre niveau consommation, il faudrait que j’alimente mon capteur via un IO, D0 par exemple, qu’il faudrait passer à l’état haut pour alimenter le capteur. Le DHT22 accepte une plage de tension de 3.3 à 6.6V, mais je n’arrive pas à trouver quel sera la tension et le courant max délivré par la broche D0, ni si une résistance entre les broches D0 et Vcc du capteurs. Pourriez vous m’orienter sur ce point ?

        • Bonjour Geoffrey. Oui c’est exactement ça. La tension d’alimentation des broches de l’ESP8266 (tout comme l’ESP32 et les Arduino récents) est de 3V3, donc parfaitement dans la gamme de tension du DHT22. Aucun résistance n’est requise car l’intensité du courant est (de mémoire) d’environ 50mA.

  2. Bonjour,
    la très faible consommation en mode “deep sleep” concerne l’ESP8266 SEUL.
    Pour ma part, voici les mesures de courants que j’ai constaté (multimètre Fluke 8062A) sur un petit bout de programme se terminant par l’instruction “ESP.deepSleep(0,RF_DISABLED)”.
    * Wemos D1 mini alimenté en 5V : 80mA en communication Wifi /10 mA en “deep sleep”
    * ESP-01S alimenté en 3V3 68mAen communication Wifi /19 µA en “deep sleep”

    On constate que l’ESP8266 tient bien sa promesse de très basse consommation en mode “deep sleep”: 19micro Ampère mesuré..
    Le problème du Wemos D1 mini vient du fait qu’il y a la consommation supplémentaire apportée par tous les composants supplémentaire (interface USB, régulateur e tension …); à noter qu’en alimentant le Wemos D& mini directement en 3V3 , on réduit un peu la consommation (environ 70mA / 8mA).

  3. Merci pour cet excellent Tuto que j’essaie de reproduire. J’ai flashé mon wemos avec ESPEasy pour connecter le tout à ma box domotique. Plusieurs questions:
    – pour un réveil par interruption et non périodique, faut-il que RST soit connecté à D0 ou est-ce seulement pour le réveil périodique?
    – j’ai lu dans d’autres autos qu’il faut mettre la broche RST à GND pendant 10ms et non 1ms, donc la résistance de charge devrait être de 10k et pas 1k. Je ne sais pas où trouver la bonne info.
    – est-ce que collecteur et émetteur ne serait pas inversé sur vos montages, arrondi vers le haut l’émetteur ne serait pas la patte de droite? cela me semble incohérent dans le paragraphe juste avant l’image du NPN.

    Merci d’avance pour d’éventuelles réponses.

    • Bonjour et merci beaucoup. On active le mode Deep en connectant RST à D0, et ce quelque soit ensuite le code du programme (interruption ou réveil périodique). Je n’ai pas rencontré de problème avec la valeur de la diode mais j’imagine que cela peut dépendre des composants utilisés par chaque fabricant. Bonne remarque, une piste à creuser en cas de problème, il faudra peut être pense à ajuster la valeur de la résistance.

  4. J’ai réalisé un montage d’essai et il consomme 4,25 mA (20mV sur une 4,7 Ohms mesuré en deepsleep. C’est pas mal mais on est loin des consommations indiquées. Rien ne consomme dans le montage à part 3 pullup de 10K ce qui n’explique pas cette consommation. La fréquence CPU est de 80 MHz.
    C’est un esp12, le modèle sans led indicatrice d’alimentation.Lle modèle avec led consomme le double.
    Les piles LR6 standard ayant une capacité d’environ 2850 mA/h, on a un peu moins d’ 1 mois d’autonomie. Je trouve cela trop juste par exemple pour faire des modules domotiques sur piles.

    • Bonsoir Jean et merci beaucoup pour toutes ces précisions. Effectivement il y a un véritable écart. J’imagine qu’Espressif annonce la consommation du SoC uniquement sans tenir compte de la carte sur lequel il est installé…et de la qualité des composants utilisés par la fabrication. Vous avez essayé avec un ESP32 ? certains modèles ont une conso bien inférieure (en théorie du moins).

  5. Excellent article merci.

    Pouvez vous m’éclairer sur le rôle de la résistance entre l’émetteur du transistor et le +5V ?

    Merci beaucoup

  6. Superbe article. merci
    j’ai une petite question d’amateur que je suis.
    vous utiliser un pir qui à besoin d’un courant de 5v pour fonctionner.
    comment puis-je faire la même chose mais avec un switch de fin de course qui ne demande pas de courant (il n’y à qu’un GND et une sortie digitale !
    ai-je encore besoin du transistor ? si non, puis-je simplement brancher ma sortie digitale de mon swicth sur le RST ?
    merci d’avance

  7. Oui article super utile.
    Attention Migui je crois que le shield batterie n’est pas adapté aux 18650, mais seulement aux accus LiPo.
    Risque d’explosion ou de départ de feu….

  8. Juste pour info : premier paragraphe “Modem-Sleep”, troisième ligne juste après WiFi, il faut un “e” devant “st” afin d’obtenir “est” 😉

    D’autre part, venant de commander trois Wemos D1 Mini Pro (16 Mb) avec antenne WiFi, grâce à ce tutoriel, j’ai donc l’intention de monter cette station météo sur un mat (https://www.instructables.com/id/Solar-Powered-WiFi-Weather-Station/) afin qu’il utilise également la détection de mouvement que vous détaillez ici.

    Et pour optimiser la rentabilité solaire, je vais essayer de l’adapter comme suit : http://www.reuk.co.uk/wordpress/solar/simple-solar-tracker-concept/

    La lecture météo se faisant de manière régulière toutes les 4 hrs et la détection de mouvement devant alors être envoyée par publication MQTT.
    Question : alors que le ESP8266 va se réveiller suite à la détection sonar (HC-SR04 plutôt qu’un PIR) :
    1) comment en connecter deux ou trois, voire 4 sur le Wemos D1 Mini pro pour qu’ils se contentent d’aviser la direction de la détection via MQTT
    2) et surtout, quel va être le délai entre la première détection qui réveille cet ESP8266 pour que la détection suivante et les autres qui s’enchaînent soit alors envoyée via MQTT ?
    D’avance merci.

    • Bonjour Migui. Le s capteurs PIR ou sonar HC_SR04 fonctionnent comme de simples interrupteurs, donc on pourra en mettre autant qu’on a d’entrées numériques disponibles. Je n’ai pas bien compris à quoi vont servir les sonars. S’il faut attendre un réponse de leur part, le mieux est de mettre 4 booléens qui passent à vrai dès qu’un capteur change d’état. Dès que les 4 sont à vrai, on peut dire à l’ESP 8266 de se rendormir avec la méthode ESP.Sleep(). Voilà, j’espère ne pas avoir répondu à coté 🙂 Bonne journée

  9. Bonjour,

    venant de recevoir mes trois Wemos, alors que je relis cet article, j’y vois sur la photo une shield d’alimentation avec une batterie 18650.

    Question : Est-ce que cette shield est un WemarkShark v3 ?Et surtout, est-ce qu’elle permet à la fois d’alimenter le Wemos et de charger la Batterie 18650 sans que le Wemos n’en subisse de conséquence (sauf si bien sûr la 18650 serait à plat) = fonction dite passthrough ?

    L’idée étant toujours d’alimenter alors mon Wemos avec ce même shield que le vôtre en le connectant lui-même à un petit panneau solaire afin que la 18650 reste alors constamment chargée.

    Merci

  10. Voilà un excellent article, qui sort des articles basiques habituellement visibles ailleurs, et qui me sera réellement d’une très grande utilité.
    Merci pour ce travail et partage constructif.

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

Calculateurs
×
Calculateur loi d'Ohm
Tension (U) - en Volt
Courant (I) - en Ampère
Résistance (R) - en Ohms
Puissance (P) - en Watts

Ce calculateur permet de calculer les relations entre le courant, la tension, la résistance et la puissance dans les circuits résistifs.

Saisir au moins deux valeurs puis cliquer sur calculer pour calculer les valeurs restantes. Réinitialisez après chaque calcul.

Rappel sur la Loi d'Ohm
La loi d'Ohm explique la relation entre la tension, le courant et la résistance en déclarant que le courant traversant un conducteur entre deux points est directement proportionnel à la différence de potentiel entre les deux points.
La loi d'Ohm s'écrit U = IR, où U est la différence de tension, I est le courant en ampère et R est la résistance en Ohms (symbole Ω).
Loi d'Ohm (U=RI)
×
Déchiffrer le code couleur d'une résistance à 4 bandes
Bande 1 Bande 2 Multiplicateur Tolérance
   

Résistance:  

1 000 Ω ±5%

Comment déchiffrer le code couleur d'une résistance à 4 anneaux
Formule : ab*cΩ ±d%
Les deux premières bandes (a, b) permettent de déterminer le chiffre significatif. La première bande correspond au chiffre de la dizaine, le second anneau le chiffre de l'unité. Par exemple Brun(1), Noir (0) donne le nombre 10.
La troisième bande (c) est un coefficient multiplicateur. Par exemple, l'anneau rouge est un coefficient multiplicateur de 100, ce qui donne 10 X 100 = 1000Ω.
Le quatrième anneau (d) indique la tolérance de la valeur nominale de la résistance. Par exemple l'anneau Or correspond à ±5%. Donc le fabricant de la résistance s'engage à ce que sa valeur soit comprise entre 950 Ω et 1050 Ω.
Déchiffrer code couleur 4 bandes
×
Déchiffrer le code couleur d'une résistance à 5 bandes
Bande 1 Bande 2 Bande 3 Multiplicateur Tolérance

Résistance:  

1 000 Ω ±5%

Comment déchiffrer le code couleur d'une résistance à 5 anneaux
Formule : abc*dΩ ±e%
Les trois premières bandes permettent de déterminer le chiffre significatif. La première bande correspond au chiffre de la dizaine, le second anneau le chiffre de l'unité. Par exemple Brun(1), Noir (0), Noir (0) donne le nombre 100
La quatrième bande est un coefficient multiplicateur. Par exemple, l'anneau brun correspond au coefficient multiplicateur 10, ce qui donne 100 X 10 = 1000Ω.
Le cinquième anneau indique la tolérance de la valeur nominale de la résistance. Par exemple l'anneau Or correspond à ±5%. Donc le fabricant de la résistance s'engage à ce que la valeur de la résistance soit comprise entre 950 Ω et 1050 Ω.
Déchiffrer code couleur 5 bandes
×
Calculateur de résistance série pour une ou plusieurs LED
Tension d'alimentation en Volt
Tension directe en Volt
Courant en mA
Résistance calculée en Ω
Puissance estimée en W

Ce calculateur permet de déterminer la résistance requise pour piloter une ou plusieurs LED connectées en série à partir d'une source de tension à un niveau de courant spécifié.

Remarque. Il est préférable d'alimenter le circuit avec une puissance nominale comprise entre 2 et 10 fois la valeur calculée afin d'éviter la surchauffe
Couleur Longueur d'onde (nm) Tension (V) pour LED ⌀3mm Tension(V) pour LED ⌀5mm
Rouge 625-630  1,9-2,1 2,1-2,2
Bleu 460-470 3,0-3,2 3,2-3,4
Vert 520-525 2,0-2,2 2,0-2,2
Jaune 585-595 2,0-2,2 3,0-3,2
Blanc 460-470 3,0-3,2 1,9-2,1
Résistance en série pour une ou plusieurs LED
×
Calculateur durée de vie d'une batterie
Capacité de la batterie
Consommation de l'appareil ou objet connecté

Ce calculateur estime la durée de vie d'une batterie, en fonction de sa capacité nominale et du courant ou de la puissance qu'une charge en tire.

La durée de vie de la batterie est une estimation idéalisée. La durée de vie réelle peut varier en fonction de l'état de la batterie, de son âge, de la température, du taux de décharge et d'autres facteurs. C'est le mieux que vous pouvez espérer obtenir.

Autonomie de la batterie = capacité de la batterie en mAh / courant de charge en mA

Durée de vie batterie
Publicité
À lire aussi
Composants
Sur le Forum
Derniers Sujets
Domotique et objets connectés à faire soi-même
Domotique et objets connectés à faire soi-même
Vous avez aimé ce tutoriel

Ne manquez plus les prochains projets

Recevez chaque semaine le récapitulatif des tutoriels et projets.

Vous pouvez vous désabonner à tout moment. 

Shopping cart