ÍNDICE DE CONTEÚDO
- Idealização de um projeto IoT portátil
- Aplicando conceitos de economia em microcontroladores
- Construindo o projeto de IoT portátil
- Estratégias de programação para portáteis
Você já deve ter se questionado como baterias de relógios duram tanto tempo, e que em muitos casos duram vários anos. Então, vamos tentar chegar a este “patamar incrível” com IoT ou até sistemas embarcados? Para isso, serão aplicados desde métodos de baixo consumo em microcontroladores chamados de Sleep Modes, até estratégias de programação que podem diminuir extraordinariamente o consumo do seu projeto portátil.
Nesta série de artigos sobre projeto IoT portátil vamos abordar os conceitos básicos para se ter uma grande economia energética pela parte lógica, o microcontrolador.
Um pouco mais sobre dispositivos portáteis
Se você já se fez a pergunta acima, provavelmente acha fascinante a ideia de algo durar vários anos sem precisar trocar a pilha ou bateria. Isso é muito importante principalmente para o cliente e também para os desenvolvedores, visto que caso seu dispositivo seja um “comilão de baterias”, terá uma má reputação e, consequentemente, as vendas podem ser inferiores do que um dispositivo igual mas com maior economia.
“Como essa bateria minúscula pode durar anos?”. Certamente quem faz projetos portáteis precisa pensar em cada detalhe na questão energética, qualquer descuido pode arruinar o tempo de vida da sua bateria, sendo necessário a troca inconveniente ou recarregá-la.
Vamos abordar alguns parâmetros para cálculo de autonomia de baterias em nossos projetos:
- T: Tempo (Horas)
- C1: Capacidade da bateria
- C2: Consumo médio do circuito
Como citado sobre os relógios, vamos pegar alguns dados aleatórios apenas para verificar as fórmulas:
- Bateria SR626: 28mAh
- Consumo do sistema: ?
- Tempo: 3 Anos
Podemos observar que o consumo médio do relógio para durar aproximadamente 3 anos é 1uA, que é bem pequeno se você comparar com um LED 5mm por exemplo, que é ~15mA. A potência também deve ser levada em consideração, visto que se podemos trabalhar com uma tensão mais baixa e mantendo a corrente, o consumo será menor (P = V * I).
Baixo consumo em microcontroladores
Normalmente em um projeto de IoT ou em um sistema embarcado de forma geral, temos muitos itens além do microcontrolador (MCU) e, mais especificamente para IoT, onde são amplamente utilizadas comunicações Wireless, o transmissor é provavelmente o culpado com maior consumo do sistema, juntamente com motores ou similares se for o caso.
Serão abordados nesta série métodos para minimizar este maior consumo do nosso sistema, podendo, assim, elevar a duração da bateria em patamares semelhantes aos do exemplo do relógio visto acima.
Na grande maioria dos microcontroladores existem modos de economia chamados “Sleep Modes” ou similares. Esses modos desligam setores específicos do microcontrolador ocasionando no menor consumo e, assim, aumentando o tempo que a bateria aguentaria.
Com o foco é em IoT, será utilizado o ESP32 WROOM, que é um microcontrolador relativamente potente. Veja algumas de suas características:
- Processador: Dual-Core (lx6 32-bit) que trabalha de 2 até 240MHz;
- Conexões Wireless: Wi-Fi e Bluetooth (BLE);
- Conexões Wired: SPI, I2C, I2S, SDIO, UART, CAN, ETHERNET…;
- Memória RAM: 520KB;
- Memória FLASH: 4MB.
Um item muito interessante no ESP32 em relação a alguns MCU’s desse porte, como PIC32 ou SMT32, é a existência de um terceiro processador chamado ULP (Ultra Low Power coprocessor). Este pequeno “processador” pode ser usado em Deep Sleep para não precisar acordar o MCU para colher dados de sensores ou efetuar comunicações Wired, ocasionando em um consumo médio muito menor.
O ESP32, em modo normal de transmissão (Tx) ou recepção (Rx), consome:
- Wi-Fi Ativo (Tx): 180 – 240mA;
- Wi-Fi Ativo (Rx): 95 – 100mA.
Modem Sleep: A parte de transmissão e recepção de dados (Antena WiFi/Bluetooth) é desligada, o consumo varia de acordo com o clock do MCU, que pode ser selecionado (2, 80, 160, 240MHz).
- Consumo: 2 – 50mA.
Light Sleep: Apenas o core principal, Digital Domain, está em “pausa”, mantendo dados nos registradores e RAM.
- Consumo: 800uA.
Deep Sleep: Todo o Digital Domain, incluindo os processadores, são desligados perdendo todos os dados armazenados na RAM e registradores.
- Consumo: 10 – 150uA.
- Obs: 150uA se aplica ao usar o ULP, caso não, o consumo tende a ~10uA.
Hibernação: São desligados praticamente todos setores do RTC Domain, incluindo as memórias RTC, exceto o RTC Timer e RTC GPIO’s, que fazem o MCU acordar.
- Consumo: 5uA.
No próximo post da série começaremos a calcular os Sleep’s Modes em nosso projeto de IoT portátil, que incluirá desde as contas teóricas para autonomia, até otimizar a programação (Code-Flow) para aumentar o tempo de duração da bateria.