omni-electronica
Além do Arduino #3: Sistemas Low Power
Em nosso último post, explicamos como fazer um módulo de energy harvesting e agora vamos falar um pouco de reduzir o consumo de energia! Já percebeu né? Energia é essencial e seu consumo deve ser otimizado!!
Quando estamos fazendo projetos que vão além do Arduino, já discutimos que a energia é um fator limitante (Energia para internet das coisas)! Além disso, se estiver desenvolvendo produtos para aplicações profissionais, é interessante que ele esteja ligado na tomada ou que dure muito tempo na bateria. A opção da bateria é muitas vezes melhor por ser mais cômodo (e eventualmente econômico) para seu cliente apenas trocar a bateria bi-anualmente do que modificar as instalações elétricas para adicionar pontos de energia para seu produto. Aqui falaremos dos tópicos mais importantes de economia de energia e como estender a vida de uma bateria, porque simplesmente ligar na tomada com energia infinita é brincadeira de criança. Não, peraí.
Antes de começar, vamos propor um produto novo como exemplificação! Cansado de queimar a boca com sua sopa? Ou quando vai esquentar e o centro fica gelado? Que tal um sensor de temperatura de sopa? O novo produto servirá como exemplo nesse artigo, sem perda de generalidade.
Wireless x Powerless
Disparadamente, o que mais consome energia em um sistema é a transmissão de dados sem fio. Então se for construir um módulo com comunicação sem fio, essa seção te dá as dicas necessárias!
Reduza sua mensagem! Se cada bit conta, reduza os bits! A redução de bits de uma mensagem não é simples, pois envolve muitas vezes algoritmos ou operações que não são triviais. Aqui vão algumas dicas:
1.1. Você realmente precisa da precisão de ponto flutuante para a temperatura da sua sopa com seu novo projeto de sensor de sopa? Um pont)! Além disso, se estiver desenvolvendo produtos para aplicações profissionais, é interessante que ele esteja ligado na tomada ou que dure muito tempo na bateria. A opção da bateria é muitas vezes melhor por ser mais cômodo (e eventualmente econômico) para seu cliente apenas trocar a bateria bianualmente do que modificar as instalações elétricas para adicionar pontos de energia para seu produto. Aqui falaremos dos tópicos mais importantes de economia de energia e como estender a vida de uma bateria, porque simplesmente ligar na tomada com energia infinita é brincadeira de criança. Não, peraí.
1.2. JSON? Tá louco? Codificar número em texto, jamais em Low Power! É claro que JSON é maravilhoso, o que seria de REST sem ele, mas quando quer economizar, melhor codificar (encoding) seus dados em uma estrutura pré-determinada e econômica; Mas se ainda gosta do JSON e suas estruturas, aqui tem um binário super econômico https://tools.ietf.org/html/rfc7049 e se quiser sua implementação opensource em várias linguagens seu nome é CBOR e pode ser achado aqui http://cbor.io/
1.3. Junte os dados! Dificilmente você vai enviar uma mensagem sem header para o ar (sério, não faça isso) e isso significa que toda mensagem que enviar terá um certo overhead, portanto se a temperatura da sua sopa não é tão crítica no tempo, espere um pouco mais e acumule dois ou três medições em um único pacote! Seu overhead vai cair em 2-3 vezes!
É claro que existem ainda diversas técnicas para redução dos dados, mas muitas vão depender do tipo de informação que vai transmitir. Mas sempre mantenha baixa, cada byte conta! Pessoalmente costumo contar minha bateria/energia disponível em bytes, por exemplo, que minha bateria vai durar 1megabyte e faço a contagem regressiva de todos dados que posso enviar
2. Module seu rádio! Você sabia que o maior consumo de energia é de recepção? Isso porque a recepção está SEMPRE ativa. Deixar seu sistema RF ativo é muito caro para a bateria. Para isso existe o famoso RDC ou Radio Duty Cycling. RDC é um algoritmo que liga e desliga seu rádio em certa frequência ou comportamento sem prejudicar muito sua transferência de pacotes, apesar de haverem perdas, vale a pena! Exemplos de RDC são S-MAC, T-MAC, X-MAX e o Famoso ContikiMAC o melhor dentre todos. A modulação de rádio é excelente quando você usa redes Mesh ou clientes que se comunicam. Mas se sua aplicação é apenas um cliente enviando dados para um servidor apenas … Desligue o rádio! Sabe que não vai transferir? Mantenha o rádio desligado! Além disso, verifique se seu sistema tem opção de desligar apenas recepção durante a transmissão, isso garante que seu rádio funcione apenas com a funcionalidade que precise.
Programação orientada a eventos
A programação orientada a eventos é um modelo de programação em que o principal estado do MCU é dormindo e quando acontecer algo ele acorda para realizar uma tafera. Nesse modelo o uso de interrupções é vital, pois são elas que vão ativar o MCU, use e abuse! Muitos sistemas operacionais embarcados modernos já utilizam esse modelo ou podem facilmente controlar esse tipo de proposta, além de dispor de inúmeros timers e mecânismos de interrupção. Isso é muito diferente do delay(x) do Arduino, que continua ativo enquanto espera o tempo desejado, o que é ruim para sua bateria. Na verdade, o Arduino não tem em suas bibliotecas padrão as funções de dormir, mas elas podem ser baixadas de terceiros. Além disso, todo MCU tem esse tipo de opção, é muito comum tudo dormir quase o tempo todo. Afinal, se seu sensor de sopa vai medir a cada minuto, porque deixar ele processando sem fazer nada os outros 59.999 segundos? É uma economia de quase 100% (99.998%) da energia de processamento, que geralmente é baixa (da ordem de uA) mas significativa, já que cada elétron conta!
Modos de operação low power
Quando escolhermos uma MCU para desenvolver uma aplicação Low Power, é muito importante analisar os modos de operação que cada microcontrolador oferece. Os modos de operação para reduzir o consumo de potencia são chamados de Power Modes. Esses Power Modes reduzem a frequência de operação, desligam certas modulos internos de SOC (System on Chip) e/ou reduzem a voltagem de alguns modulos internos com a finalidade de economizar o consumo de energia. Cada fabricante oferece diferentes modos de low power de acordo com a arquitetura do SOC.
Um exemplo de como utilizar os modos de low power de um MCU é encontrada aqui: https://www.embarcados.com.br/msp430-low-power/ Outra leitura interessante: https://www.embedded.com/design/power-optimization/4237635/Understanding-MCU-sleep-modes-and-energy-savings
LEDS
LEDs são uma invenção maravilhosa. Quase não consumem energia, Iluminam bem e veja as lâmpadas de hoje, com 5W fazemos o mesmo que com 60W há 10 anos atrás. Mas em IoT são os beberrões de energia! LEDS (bons) consomem certa de 10-20mA, isso é, muitas vezes, mais até do que o rádio!
É claro que muitas vezes os LEDS são necessários, nesses casos, tente piscar apenas para indicar o que deseja, ou, alternativamente, se tiver realmente que utilizar o LED continuamente, use um PWM para reduzir o consumo com duty cicle. Ou seja, lique e desligue seu LED rapidamente, matendo mais tempo desligado do que ligado. Em frequências altas (1kHz) pode deixar 20% de duty cycle e nem vera diferença, seu consumo cai para 2-4mA.
Gaste
Se energia é problema no seu sistema, então dinheiro não deve ser. Módulos de comunicação de U$ 1,00 são realidade e muito legais! Mas provavelmente o rádio desse módulo consome 200mA vai acabar com sua bateria em 1 dia (ou menos). Para comparar, seu celular consome no máximo 150mA em média durante o dia. Cada módulo tem sua aplicação e esses baratos são para habilitar internet das coisas porém conectados à tomada, quando se trata de energia lembre-se que seus custos serão, pelo menos, duas vezes maiores que o comum, então não tenha medo de gastar se julgar necessário, no final, o custo compensa! Porque instalar um ponto de tomada é muito mais caro que um chip low power.
Essa foi a discussão de sistemas low power além do Arduino! É claro que são apenas dicas e suas implementações e necessidades devem ser feitas por você, leitor, mas devem ser o suficiente para fazer seus módulos durarem mais de um ano na bateria! Se tiverem dúvidas ou queiram informação de algum sistema específico, estaremos de olho nos comentários para ajudar! Boa sorte com o sensor de sopa e nos vemos no próximo artigo!
Comments