IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Arduino Discussion :

Consommation : comment améliorer l'autonomie ?


Sujet :

Arduino

  1. #41
    Membre actif
    Inscrit en
    Juillet 2004
    Messages
    762
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 762
    Points : 230
    Points
    230
    Par défaut
    Merci Jerome
    pour ces précisions...

    je vais essayer d'abord le ESP32 WROVER-E seul puis avec le RA1
    et je reviens vers vous


    Les trous permettent de router les broches CS (SPI) et RESET du module vers différentes broches de la carte FireBeetle. Pour correspondre aux exemples fournis, il faut souder un fil entre CS et D4 et entre RESET et D2 comme expliqué ici :

    https://wiki.dfrobot.com/FireBeetle_...L0121#target_3
    ce qui sous-entend qu'un module comme le RA1 par ex pourrait être connecté directement sur la carte ?

  2. #42
    Membre actif
    Inscrit en
    Juillet 2004
    Messages
    762
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 762
    Points : 230
    Points
    230
    Par défaut
    1er essai :

    Alimentation ESP32 Wrover seul par le connecteur batterie : 0,78 mA

  3. #43
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 711
    Points : 5 390
    Points
    5 390
    Par défaut
    vous avez sans doutes des LEDs physiques sur cette carte. Si vous enlevez leur résistance ou coupez la trace ou simplement cassez la LEDs vous gagnerez pas mal de courant

  4. #44
    Membre actif
    Inscrit en
    Juillet 2004
    Messages
    762
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 762
    Points : 230
    Points
    230
    Par défaut
    Bonjour Jay M

    Exact ! j'ai la Led d'alimentation allumée , ce que je n'avais pas avec la carte LiLygo
    je vais faire l'essai maintenant avec le RA-01 pour connaître la consommation avec le LoRa

    ( j'ai contacté Lilygo et ils m'ont demandé de retester le module avec leur croquis test , je trouve : 9,09 mA ce qui démontre qu'il y a bien un problème avec leur carte )
    Quand au modèle préconisé par Jerome Briot à savoir la carte 'ESP32 Wroom Low Power DevKit de chez uPesy elle est en rupture de stock sur le site , c'est dommage

  5. #45
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 711
    Points : 5 390
    Points
    5 390
    Par défaut
    avez vous regardé l'ESP32 FireBeetle ?

    https://lucidar.me/fr/esp32/power-co...eetle-dfr0654/

  6. #46
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 53 165
    Points
    53 165
    Par défaut
    Citation Envoyé par cobra38 Voir le message
    Quand au modèle préconisé par Jerome Briot à savoir la carte 'ESP32 Wroom Low Power DevKit de chez uPesy elle est en rupture de stock sur le site , c'est dommage
    Ces cartes devraient être à nouveau disponibles d'ici quelques jours. À noter que ce sont des cartes conçues et assemblées en France.
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  7. #47
    Membre actif
    Inscrit en
    Juillet 2004
    Messages
    762
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 762
    Points : 230
    Points
    230
    Par défaut
    Citation Envoyé par Jay M Voir le message
    avez vous regardé l'ESP32 FireBeetle ?

    https://lucidar.me/fr/esp32/power-co...eetle-dfr0654/
    Oui , oui , intéressante et dispo chez Gototronic je crois

    A votre avis , est-il possible d'inhiber la LED d'alimentation par software sur la carte ESP32 Wrover-E ?

  8. #48
    Membre actif
    Inscrit en
    Juillet 2004
    Messages
    762
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 762
    Points : 230
    Points
    230
    Par défaut
    Citation Envoyé par Jerome Briot Voir le message
    Ces cartes devraient être à nouveau disponibles d'ici quelques jours. À noter que ce sont des cartes conçues et assemblées en France.

    Exact c'est confirmé par mail par le site
    Merci Jerome

  9. #49
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 711
    Points : 5 390
    Points
    5 390
    Par défaut
    est-il possible d'inhiber la LED d'alimentation par software sur la carte ESP32 Wrover-E ?
    je ne crois pas.

  10. #50
    Membre actif
    Inscrit en
    Juillet 2004
    Messages
    762
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 762
    Points : 230
    Points
    230
    Par défaut
    Bonjour Jay M

    En effet , j'ai massacré (?) la Led et j'obtiens une consommation avec l'ESP32 seul : 0,03 mA

    J'ai ensuite procédé au raccordement du LoRa RA-01
    suivant le schéma joint

    mais j'ai un petit souci pour raccorder les pins RST et DIO0 du LoRa
    que j'ai raccordé en
    RST -> GIO02
    DIOO -> GIO00
    mais dès la mise sous tension j'obtiens 19 mA sans passage en "deep-sleep" (blocage ?)
    tandis que si je retire DIO0 => le programme "semble" fonctionner après un RST avec une consommation max de 0,8 mA
    Images attachées Images attachées   

  11. #51
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 53 165
    Points
    53 165
    Par défaut
    Les broches GPIO0 et GPIO2 sont des broches particulières (voir "esp32 strapping pins").

    Le code fonctionne-t-il en utilisant d'autres broches ?
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  12. #52
    Membre actif
    Inscrit en
    Juillet 2004
    Messages
    762
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 762
    Points : 230
    Points
    230
    Par défaut
    Bonjour Jerome

    j'avoue que je suis un peu perdu
    et en réalité je ne sais pas où les brancher (?)
    mais quand même fait un essai en branchant le DIO0 en GPIO27 et RST en GIO02 ( ce qui ne me plante pas le prg)
    je trouve une conso entre : 0,9 mA et 0,8mA

    voici le croquis de test dans lequel le LoRa n'est pas identifié mais juste branché

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
     
    #define uS_TO_S_FACTOR 1000000ULL  /* Conversion factor for micro seconds to seconds */
    #define TIME_TO_SLEEP  5        /* Time ESP32 will go to sleep (in seconds) */
     
    RTC_DATA_ATTR int bootCount = 0;
     
    /*
    Method to print the reason by which ESP32
    has been awaken from sleep
    */
    void print_wakeup_reason()
    {
        esp_sleep_wakeup_cause_t wakeup_reason;
     
        wakeup_reason = esp_sleep_get_wakeup_cause();
     
        switch (wakeup_reason) {
        case ESP_SLEEP_WAKEUP_EXT0 : Serial.println("Wakeup caused by external signal using RTC_IO"); break;
        case ESP_SLEEP_WAKEUP_EXT1 : Serial.println("Wakeup caused by external signal using RTC_CNTL"); break;
        case ESP_SLEEP_WAKEUP_TIMER : Serial.println("Wakeup caused by timer"); break;
        case ESP_SLEEP_WAKEUP_TOUCHPAD : Serial.println("Wakeup caused by touchpad"); break;
        case ESP_SLEEP_WAKEUP_ULP : Serial.println("Wakeup caused by ULP program"); break;
        default : Serial.printf("Wakeup was not caused by deep sleep: %d\n", wakeup_reason); break;
        }
    }
     
    void setup()
    {
        Serial.begin(115200);
        delay(1000); //Take some time to open up the Serial Monitor
        digitalWrite(17,LOW);
        //Increment boot number and print it every reboot
        ++bootCount;
        Serial.println("Boot number: " + String(bootCount));
     
        //Print the wakeup reason for ESP32
        print_wakeup_reason();
     
        /*
        First we configure the wake up source
        We set our ESP32 to wake up every 5 seconds
        */
        esp_sleep_enable_timer_wakeup(TIME_TO_SLEEP * uS_TO_S_FACTOR);
        Serial.println("Setup ESP32 to sleep for every " + String(TIME_TO_SLEEP) +
                       " Seconds");
     
     
        Serial.println("Going to sleep now");
        Serial.flush();
        esp_deep_sleep_start();
        Serial.println("This will never be printed");
    }
     
    void loop()
    {
        //This is not going to be called
    }

  13. #53
    Membre actif
    Inscrit en
    Juillet 2004
    Messages
    762
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 762
    Points : 230
    Points
    230
    Par défaut
    Bonjour à Tous

    Je viens de mettre en œuvre le croquis de Jay M suivant
    pour tester la consommation avec l'association LILYGO® TTGO T7 V1.5 Mini32 ESP32-WROVER-E + LoRa RA-01
    mais en inhibant les entrées 34 et 33

    Consommation : 1,73 mA
    ( avec quand quelques problèmes de RST ? )

    Je ne sais pas si je peux encore l'améliorer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
     
    /*************************************
                 EMETTEUR
    ************************************/
     
     
    #include <driver/rtc_io.h>
    #include <LoRa.h>
    #include <SPI.h>
     
     
    // pins from https://randomnerdtutorials.com/ttgo-lora32-sx1276-arduino-ide/
    // LoRa definition
    #define SCK     18   // GPIO18  -- SX1278's SCK
    #define MISO    19   // GPIO19 -- SX1278's MISO
    #define MOSI    23   // GPIO23 -- SX1278's MOSI
    #define SS      5    // GPIO5 -- SX1278's CS
    #define RST     2    // GPIO2 -- SX1278's RESET
    #define DI0     27   // GPIO27 -- SX1278's IRQ(Interrupt Request)
    #define BAND 433E6   //433E6 for Asia, 866E6 for Europe and 915E6 for North America
     
     
    const gpio_num_t pinVolet  =  GPIO_NUM_34; 
    const gpio_num_t pinPorte  = GPIO_NUM_33;
    const gpio_num_t vbatPin   = GPIO_NUM_35;
     
    #define BUTTON_PIN_BITMASK (1ull << pinVolet) | (1ull << pinPorte) // 
    const uint64_t  uS_TO_S_FACTOR = 1000000ull; /* Conversion factor for micro seconds to seconds */
    const uint64_t  TIME_TO_SLEEP = 10ull; /* Time ESP32 will go to sleep (in seconds) */
     
    RTC_DATA_ATTR int bootCount = 0;
     
    //***********************************************
    void loraMessage(const char * message) {
      LoRa.beginPacket();
      LoRa.println(message);
      LoRa.endPacket();
    }
     
    //***********************************************
    void envoiVbatBrut() {
      const int tailleMax = 20; // y compris le '\0' de fin
      static char vBatMessage[tailleMax];                                 // doit être assez grand pour contenir le message
     
      int vBat = analogRead(vbatPin); // tension échantillonnée brute
      Serial.print("Valeur Brute = "); Serial.println(vBat);
     
      int n = snprintf(vBatMessage, sizeof vBatMessage, "V%d", vBat);     // 'V' suivi de la tension échantillonnée brute
      if ((n > 0) && (n < tailleMax))                                     // si on a pu écrire correctement le message
        loraMessage(vBatMessage);                                         //   alors envoi du message
    }
     
    //***********************************************
    void action() {
      esp_sleep_wakeup_cause_t source_reveil = esp_sleep_get_wakeup_cause();
      uint64_t GPIO_reason = esp_sleep_get_ext1_wakeup_status();
     
      switch (source_reveil) {
        case ESP_SLEEP_WAKEUP_TIMER :
          Serial.println("Réveil par un timer");
          envoiVbatBrut();
          break;
        default :
          Serial.print("Réveil pas causé par le Deep Sleep :");
          Serial.println(source_reveil);
          break;
      }
     
      if (GPIO_reason != 0) {
        const uint64_t gpioWakeUp = __builtin_ctzll(GPIO_reason); // __builtin_ctzll finds the position of the rightmost 1
        switch (gpioWakeUp) {
          case pinVolet: loraMessage("1"); break;
          case pinPorte: loraMessage("2"); break;
          default : Serial.println("Aucun GPIO connu n'a déclenché le réveil"); break;
        }
      }
    }
     
    //***********************************************
    void setup() {
      Serial.begin(115200);
      while (!Serial) yield();
     
      SPI.begin(SCK, MISO, MOSI, SS);
      LoRa.setPins(SS, RST, DI0);
     
      Serial.println("LoRa : Emetteur");
      if (!LoRa.begin(BAND)) { // LoRa_frequency
        Serial.println("Le lancement de LoRa a échoué !");
        while (true) yield();
      }
      Serial.println("init ok");
     
      //Increment boot number and print it every reboot
      ++bootCount;
      Serial.print("Boot number: ");  Serial.println(bootCount);
     
      action();
     
      // go back to sleep
      LoRa.end();
     
      //esp_sleep_enable_ext1_wakeup(BUTTON_PIN_BITMASK, ESP_EXT1_WAKEUP_ANY_HIGH);
      esp_sleep_enable_timer_wakeup(TIME_TO_SLEEP * uS_TO_S_FACTOR);
     
      esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_AUTO);
      rtc_gpio_pullup_en(pinVolet);   //https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/system/sleep_modes.html#external-wakeup-ext1
      rtc_gpio_pullup_en(pinPorte);
      rtc_gpio_pulldown_dis(pinVolet);
      rtc_gpio_pulldown_dis(pinPorte);
     
      Serial.println("Going to sleep");
      Serial.flush(); // just for peace of mind, as esp_deep_sleep_start() will flush the contents of UART FIFOs
      esp_deep_sleep_start();
    }
     
    void loop() {}

  14. #54
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 711
    Points : 5 390
    Points
    5 390
    Par défaut
    Le SPI est arrêté, le module Lora doit dormir, l'esp est en deep sleep...il faudrait essayer de trouver ce qui consomme encore.

  15. #55
    Membre actif
    Inscrit en
    Juillet 2004
    Messages
    762
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 762
    Points : 230
    Points
    230
    Par défaut
    Mais là je sèche .....

  16. #56
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 711
    Points : 5 390
    Points
    5 390
    Par défaut
    vous pouvez mesurer le courant au niveau du module LORA ?

  17. #57
    Membre actif
    Inscrit en
    Juillet 2004
    Messages
    762
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 762
    Points : 230
    Points
    230
    Par défaut
    Toute la consommation est là avec le LoRa soit env 1,70 mA
    alors que celui-ci est bien mis en sommeil normalement (?)

  18. #58
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 711
    Points : 5 390
    Points
    5 390
    Par défaut
    Ennuyeux…

    Il faudrait alors carrément couper son alimentation…un transistor sur une pin de commande

  19. #59
    Membre actif
    Inscrit en
    Juillet 2004
    Messages
    762
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 762
    Points : 230
    Points
    230
    Par défaut
    Il faudrait alors carrément couper son alimentation…un transistor sur une pin de commande
    çà dépasse malheureusement mes compétences car je ne comprends pas bien comment actionner la pi au moment du deep-sleep
    au final autant y mettre un TPL5110 qui compte l'alimentation mais se poserait le problème des boutons ....

    je pensais plutôt à l'utilisation d'une autre librairie que celle de "LoRa.h"
    si elle existe et qui permettrait de mieux gérer le "lora.sleep()"

  20. #60
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 711
    Points : 5 390
    Points
    5 390
    Par défaut
    essayez de mettre un delay(600); juste après le lora.sleep() comme ils disent à certains endroit, c'est nécessaire pour que le composant ait vraiment le temps de s'endormir... (pas convaincu, mais ce n'est pas difficile à essayer)

    pour le transistor c'est juste une pin de commande à mettre à HIGH quand on veut aliment le composant LORA et à mettre à LOW quand on veut couper le courant. donc on met à HIGH en début de setup et on met à LOW juste avant d'endormir l'ESP32

Discussions similaires

  1. Comment améliorer la rotation à 45° d'une image dans un PictureBox
    Par ProgElecT dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 22/07/2006, 01h05
  2. Comment amèliorer ma demande d'emploi ?
    Par unix27 dans le forum Emploi
    Réponses: 19
    Dernier message: 29/03/2006, 13h55
  3. [Sécurité] Comment amélioré mon code ?
    Par Nadd dans le forum Langage
    Réponses: 14
    Dernier message: 03/03/2006, 20h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo