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

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    988
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 988
    Par défaut Consommation : comment améliorer l'autonomie ?
    Bonjour à tous

    TTGO ESP32 LoRa

    Je continue ma quête ...
    et constate que mon Emetteur consomme beaucoup de trop ( voir courbe batterie)

    pour mémoire , je réveille l'ESP322 toute les 10 minutes pour la transmission de la valeur de la tension batterie
    néanmoins le pente me parait importante et je n'arrive pas à en comprendre la raison

    Pour une meilleure compréhension je joins le schéma ainsi que le croquis

    Fort de votre expérience de ce produit peut-être auriez-vous quelques conseils qui me permettraient
    d'améliorer l'autonomie de ma batterie ( type : 2400mAh 18650 )

    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
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
     
    /*************************************/
    //    EMETTEUR    
    //
    // SCK     5    // GPIO5  -- SX1278's SCK
    // MISO    19   // GPIO19 -- SX1278's MISO
    // MOSI    27   // GPIO27 -- SX1278's MOSI
    // SS      18   // GPIO18 -- SX1278's CS
    // RST     14   // GPIO14 -- SX1278's RESET
    // DI0     26   // GPIO26 -- SX1278's IRQ(Interrupt Request)
    // BAND    433E6
    //
    // I2C_SDA      4
    // I2C_SCL      15
    // OLED_RST     16
     
    /***************************************
                    carte TTGO LoRa32-OLED V1
     
                       /----------------\
                       |19            18| 
                       |20            17|
                       |21            16|
                       |22            15| 
                       |23            14|
                       |24            13|
                       |25            12|
                       |26            11|
                       |27            10|  GPIO35   vbatPin
      MISO     GPIO19  |28             9|
                       |29             8|
      SS       GPIO18  |30             7|
      SCK      GPIO05  |31             6|  GPIO26   DI0 
      I2C_SCL  GPIO15  |32             5|  GPIO27   MOSI
      volet    GPIO00  |33             4|  GPIO14   RST
      I2C_SDA  GPIO04  |34             3|
      porte    GPIO17  |35             2| 
      OLED_RST GPIO16  |36             1| 
                       -----------------
     
    *************************************/
     
    #include <LoRa.h>
    #include <SPI.h>
    #include <Wire.h>
    //Libraries for OLED Display
    #include "SSD1306.h" 
    #include "boards.h"
    #include <OneButton.h> //  http://www.mathertel.de/Arduino/OneButtonLibrary.aspx
     
     
    SSD1306Wire display(0x3c, I2C_SDA, I2C_SCL);
     
    const byte pinBouton1 = 32;
    const byte pinBouton2 = 33;
    const uint8_t vbatPin = 35;
     
    #define BUTTON_PIN_BITMASK 0x300002000 // PIN13+PIN32+PIN33 in hex
    #define uS_TO_S_FACTOR 1000000 /* Conversion factor for micro seconds to seconds */
    #define TIME_TO_SLEEP 600 /* Time ESP32 will go to sleep (in seconds) */
     
    RTC_DATA_ATTR int bootCount = 0;
     
    OneButton sw1(pinBouton1);
    int value1;
    OneButton sw2(pinBouton2);
    int value2;
     
    // CALLBACKS BOUTON 1
    void sw1Click()       {loraMessage("1");}
    void sw1DoubleClick() {loraMessage("11");}
    void sw1DebutLong()   {loraMessage("1D");}
    void sw1FinLong()     {loraMessage("1F");}
     
    // CALLBACKS BOUTON 2
    void sw2Click()       {loraMessage("2");}
    void sw2DoubleClick() {loraMessage("21");}
    void sw2DebutLong()   {loraMessage("2D");}
    void sw2FinLong()     {loraMessage("2F");}
     
    //**********************************************
    // SETUP
    //**********************************************
    void setup() {
      Serial.begin(115200);
      initBoard();
      display.init();
      display.flipScreenVertically();
      display.setFont(ArialMT_Plain_10);
     
      while (!Serial) yield();
        SPI.begin(RADIO_SCLK_PIN,RADIO_MISO_PIN,MOSI,RADIO_MOSI_PIN );
        LoRa.setPins(RADIO_CS_PIN,RADIO_RST_PIN,RADIO_DIO_PIN);
        Serial.println("LoRa Sender");
      if (!LoRa.begin(LoRa_frequency)) { // LoRa_frequency 
        Serial.println("Starting LoRa failed!");
        while (true) yield();
      }
      Serial.println("init ok");
      display.init();
      display.flipScreenVertically(); 
      display.setFont(ArialMT_Plain_10);
      display.setTextAlignment(TEXT_ALIGN_CENTER);
      display.drawString(64, 22, "Emetteur: OK"); 
      display.display();
      delay(100);
     
      //Increment boot number and print it every reboot
      ++bootCount;
      Serial.println("Boot number: " + String(bootCount));
     
      // BTN1
      sw1.attachClick(sw1Click);
     
      // BTN2
      sw2.attachClick(sw2Click);
     
      //Print the GPIO used to wake up
      print_wakeup_reason();
      print_GPIO_wake_up();  
      esp_sleep_enable_timer_wakeup(TIME_TO_SLEEP * uS_TO_S_FACTOR);
      esp_sleep_enable_ext1_wakeup(BUTTON_PIN_BITMASK,ESP_EXT1_WAKEUP_ANY_HIGH);
     
      esp_deep_sleep_start();
     
    }
     
    //**********************************************
    // LOOP
    //**********************************************
    void loop() {
    }
     
    //***********************************************
    void loraMessage(const char * message) {
      LoRa.beginPacket();
      LoRa.println(message);
      LoRa.endPacket();
    }
     
    //************************************************
    void print_GPIO_wake_up(){
      uint64_t GPIO_reason = esp_sleep_get_ext1_wakeup_status();
      Serial.print("GPIO qui a déclenché le réveil : GPIO ");
      Serial.println((log(GPIO_reason))/log(2), 0);
      int val = (int)((log(GPIO_reason))/log(2));
      switch (val)
      {
      case 32: loraMessage("1"); break;
      case 33: loraMessage("2"); break;
      default : Serial.printf("Aucun GPIO n'a déclenché le réveil :"); break;
      }
    }
     
    char string[25];
    void drawFontFaceDemo(float Vbat) {
        // Font Demo1
        // create more fonts at http://oleddisplay.squix.ch/
        display.setTextAlignment(TEXT_ALIGN_LEFT);
        display.setFont(ArialMT_Plain_10);
        display.drawString(0, 0, "Battery");
        display.setFont(ArialMT_Plain_16);
        display.drawString(0, 10, "Monitoring");
        display.setFont(ArialMT_Plain_24);
        itoa(Vbat,string,10);
        sprintf(string,"%7.5f",Vbat);
        display.drawString(0, 26, string);
    }
     
     
    void print_wakeup_reason(){
       esp_sleep_wakeup_cause_t source_reveil;
       source_reveil = esp_sleep_get_wakeup_cause();
       switch(source_reveil){
          case ESP_SLEEP_WAKEUP_TIMER : 
          Serial.println("Réveil causé par un timer");
          //loraMessage("V");
          envoiVbatBrut();
          break;
          default : Serial.printf("Réveil pas causé par le Deep Sleep: %d\n",source_reveil); 
          break;
       }
    }
     
    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.println("Valeur Brute = "); Serial.print(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
    }
    Images attachées Images attachées  
    Images attachées Images attachées

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