Aprenda a alimentar seu ESP32 com bateria carregada por energia solar 2

Como foi visto no post “Aprenda a fazer seu carregador solar de baterias” aqui do blog, é possível carregar baterias (no caso, baterias Li-Ion) a partir de energia solar. Indo além nesta linha de pensamento, neste post você aprenderá a alimentar um ESP32 com bateria, sendo esta carregada com energia solar.

Dessa forma, você poderá fazer projetos com ESP32 mantido por energia solar, uma das energias renováveis mais presentes no mundo.

Materiais necessários

Para este projeto, você precisará de:

Funcionamento

Para alimentar o ESP32 com bateria os seguintes passos devem ser seguidos:

  1. Primeiramente, dois ou mais painéis solares transformam a energia solar em energia elétrica;
  2. Em seguida, essa energia elétrica é aplicada ao Módulo Carregador de Bateria de Lítio TP4056, que fará o carregamento da Bateria Li-Ion 18650 ligada a ele;
  3. Esta mesma Bateria Li-Ion 18650 alimenta um Conversor Boost DC Ajustável Step Up, fazendo com que a tensão da bateria (que pode ir até 3,7V sem estar em carga, ou 4,2V quando em carga) seja transformada em 5,0V;
  4. A tensão de 5,0V gerada é aplicada ao ESP32 (entrada Vin do Módulo WiFi ESP32 Bluetooth), fazendo-o funcionar.

Assim como dito no post “Aprenda a fazer seu carregador solar de baterias“, quanto mais painéis solares forem utilizados (painéis solares de mesma tensão de saída), mais energia elétrica será destinada ao módulo carregador de bateria e, logo, mais rápido a bateria irá carregar. Portanto, para uma maior autonomia de funcionamento do ESP32 à bateria, quanto mais painéis solares forem usados, melhor.

Considerações – software do ESP32

É de fundamental importância que sistemas embarcados alimentados à bateria façam o melhor uso possível dela. Logo, é uma boa prática que o software embarcado no ESP32 alimentado à bateria tenha o seguinte ciclo de funcionamento:

  1. O ESP32 “acorda”: é ligado pela primeira vez (ou sai do modo deep sleep);
  2. O ESP32 faz suas tarefas: após acordar, o ESP32 faz todas as suas tarefas da forma mais rápida possível, de modo a utilizar a menor carga de bateria possível para isso;
  3. O ESP32 “dorme”: após fazer todas suas tarefas, o ESP32 deve entrar em modo deep sleep (modo onde gasta a menor quantidade de energia possível, explicado com mais detalhes no tópico a seguir). Antes de dormir, o ESP32 programa em quanto tempo deve ser acordado novamente;
  4. O ciclo se reinicia.

Ou seja, as tarefas a serem realizadas pelo ESP32 devem ser as mais rápidas possíveis, caso contrário a autonomia do ESP32 funcionando à bateria será afetada negativamente. Logo, a qualidade do software embarcado escrito influencia (e muito) na autonomia da bateria desse sistema embarcado, exigindo muita atenção do desenvolvedor.

Modo deep sleep – o que é?

Em resumo, o modo deep sleep consiste em um modo de operação onde o ESP32 desliga quase todos seus periféricos para economizar energia elétrica (ficam ligados somente o RTC e o processador ULP). Como grande parte dos periféricos estão desligados, o consumo de energia elétrica do ESP32 cai drasticamente, permitindo seu uso em sistemas embarcados alimentados à bateria conforme o ciclo de operação sugerido no tópico anterior.

No modo deep sleep, o consumo de corrente elétrica pode atingir, no mínimo, 10µA. Só para se ter uma base de comparação, em funcionamento pleno, o consumo de corrente elétrica pode chegar a 50mA (sem utilizar o WiFi).

Ou seja, “dormindo” (em deep sleep), o ESP32 consume 5.000 vezes menos corrente elétrica (e energia elétrica, consequentemente) se comparado ao modo de funcionamento pleno, configurando-se assim uma economia de energia elétrica muito expressiva.

Circuito esquemático

O circuito esquemático para alimentar um ESP32 com bateria pode ser visto na figura 1.

Como alimentar um ESP32 com bateria
Figura 1 – circuito esquemático do projeto

Software embarcado do projeto

O software embarcado do projeto consiste em um exemplo seguindo as boas práticas recomendadas no tópico “Considerações – software do ESP32”. Ao acordar, o ESP32 pisca dez vezes o LED ligado ao GPIO 5. Após fazer isso, o ESP32 entra em deep sleep por 1 minuto, reiniciando o ciclo todo novamente.

Código-fonte do projeto

O código-fonte do projeto pode ser visto abaixo.

/* Definição - GPIO do LED */
#define GPIO_LED          5

/* Definições - deep sleep */
#define FATOR_US_PARA_S   1000000  /* Fator de conversão de micro-segundos para segundos */
#define TEMPO_DEEP_SLEEP  60       /* Tempo para o ESP32 ficar em deep sleep (segundos) */

void setup() 
{
    /* Configura GPIO do LED e o inicializa desligado */
    pinMode(GPIO_LED, OUTPUT);
    digitalWrite(GPIO_LED, LOW); 
}

void loop() 
{
    int i;

    /* Pisca o LED 10 vezes */
    for (i=0; i<10; i++)
    {
        digitalWrite(GPIO_LED, HIGH);
        delay(250);
        digitalWrite(GPIO_LED, LOW);
        delay(250);
    }

    /* Entra em deep sleep */
    esp_sleep_enable_timer_wakeup(TEMPO_DEEP_SLEEP * FATOR_US_PARA_S);
    esp_deep_sleep_start();
}

Recapitulando: após a conversão de energia solar em energia elétrica feita pelos painéis solares, a bateria Li-Ion 18650 é carregada. Esta mesma bateria alimenta o ESP32, o qual possui um LED e um resistor (470Ω 1/4W) ligados ao GPIO 5. O ESP32, por sua vez, acorda de um em um minuto para piscar o LED dez vezes.

Desta forma, a bateria é utilizada (descarga) no tempo que o ESP32 está ativo (inicializando e, posteriormente, piscando o LED) e carregada enquanto o ESP32 está “dormindo” (em modo deep sleep).

Considerações finais

Este exemplo mostrou o uso do ESP32 com bateria (carregada por energia solar), respeitando boas práticas e entrando em modo deep sleep por uma parcela considerável do tempo.

Porém, em aplicações mais robustas e utilizadas na vida real, sensores e outros periféricos são utilizados. Sendo assim, os seguintes cuidados devem ser tomados nestes cenários:

  • Antes de entrar em modo deep sleep, desligue todos os periféricos (sensores, motores, LEDs, etc.). Caso contrário, estes continuaram alimentados durante o deep sleep do ESP32 e consumirão energia sem necessidade;
  • Para ligar e desligar a alimentação de periféricos, prefira o uso de transistores do tipo MOSFET canal N para o chaveamento.
    O principal motivo disso é que transistores MOSFET canal N entram em saturação em função da tensão entre Gate e Source, consumindo uma corrente muito pequena (na ordem de nano Amper ou menos) para isso. Dessa forma, gasta-se muito pouca energia elétrica da bateria para ligar ou desligar periféricos, contribuindo para uma maior autonomia do projeto. Uma ótima sugestão de MOSFET canal N para isso é o FQP30N06L;
  • Na prática, sistemas embarcados alimentados a bateria normalmente ficam em modo deep sleep por muitas horas (em algumas aplicações, até dias). Isso permite um maior tempo de carga da bateria, elevando a autonomia do sistema como um todo;
  • Baterias tem tempo grande de vida útil, mas não infinito. Após sua vida útil, uma bateria vai ter um desempenho muito inferior ao original. Dessa forma, manutenções periódicas para troca de bateria devem ser planejadas quando se trata de sistemas embarcados em campo;
  • Baterias tendem a ter sua vida útil reduzida (ou entrarem em risco de vazamento e fogo) quando submetidas a altas temperaturas. Projete o case / encapsulamento de seu projeto de modo a proteger ao máximo a bateria do calor.

Gostou deste post sobre como alimentar um ESP32 com bateria carregada por energia solar? Deixe seu comentário logo abaixo. Em caso de dúvidas, caso queira trocar uma ideia, ou até mesmo dividir seu projeto, acesse nosso Fórum!

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

2 Comentários

  1. Era bom indicar que a biblioteca esp_sleep.h deve ser incluída no cabeçalho !

    1. Pasini, não é necessária essa inclusão. Ao menos, não quando usando Arduino IDE.