2 Comentários

Estratégias de programação para portáteis

Este post faz parte da série Projeto IoT portátil. Leia também os outros posts da série:

No projeto montado anteriormente há algumas melhorias que podemos fazer. Nesse caso será otimizar o código a partir da verificação de dados e, assim, adicionar o Modem Sleep.

Vamos observar o código e pensar um pouco…É fácil perceber onde pode ser melhorado e será exatamente onde o consumo é maior, na transmissão de informações pela internet (uso do WiFi). Ao adicionar uma verificação de dados, podemos ignorar dados irrelevantes e, assim, prolongar a vida da nossa bateria. Veja o que será feito:

  • Adicionar a verificação da temperatura para enviar uma nova temperatura apenas se esta for diferente da última enviada, poupando, assim, envios desnecessários ao banco de dados e consumo desnecessário de energia com a transmissão WiFi;
  • Na verificação de temperatura, a conexão com a internet não é necessária, então iremos ligar o WiFi apenas quando a verificação acima for verdadeira. Neste meio tempo o ESP32 ficará com o WiFi OFF (Modem Sleep).

Anteriormente, melhoramos o consumo aumentando o intervalo de sleep, entretanto a temperatura pode variar bem mais rapidamente dependendo do local. Logo, dormir por 2 horas não é interessante. Agora vamos melhorar o código e depois as explicações!

Código do projeto pode ser visto abaixo:

Novo fluxograma do projeto IoT portátil para demonstrar estratégias de programação para portáteis
Figura 1 - Novo fluxograma do projeto IoT portátil.

O fluxograma está mais simplificado na parte de envio e conexão com WiFi (se comparado ao anterior), mas a ideia é apenas mostrar a condicional que verifica a última temperatura lida com a atual. Como vimos anteriormente, nos dados gerados pelo sensor, a temperatura se alterou 1°C a cada 2 horas, logo, percebemos que a “seta não” da condicional ocorrerá 24x mais que a “seta sim”, uma economia bem grande já que o maior consumo está no WiFi.

Foi feita uma nova medição do tempo de processamento para melhorar os cálculos e chegar a um novo e último consumo médio do projeto:

  • Consumo médio em transmissão (WiFi): 150 mA;
  • Consumo médio ao ler o sensor: 50 mA (clock a 240 MHz);
  • Consumo médio em Deep Sleep: 75 uA (15 uA + 60 uA do DHT11);
  • Tempo em transmissão (WiFi): 4,6 segundos;
  • Tempo lendo o sensor: 23 ms;
  • Tempo em Deep Sleep: 5 minutos.

Entretanto, devemos lembrar que a transmissão dos dados é ~24x menos frequente que a leitura do sensor. Logo, vamos dividir alguma das variáveis relacionadas com a transmissão por 24, iremos escolher o consumo em Deep sleep.

Consumo real do projeto IoT Portable:

Cm = \frac{(\frac{0.15}{24})*4.26 + 0.05*0.023 + 0.000075*300}{4.26+0.023+300} Cm \approx 172uA

Duração em horas do projeto (765 dias):

T = \frac{3}{0.000172} T \approx 17442 Horas

Você pode estar perguntando por que o consumo com as estratégias de programação deu um consumo maior (172uA) do que o último cálculo feito no artigo anterior (164uA). Isso se deve ao fato de que lá foi usado Deep sleep de 2 horas e, neste tempo, perdemos muitas leituras, inviabilizando vários tipos de projetos. Agora foi feito com Deep sleep de 5 minutos (24x mais frequente) e mesmo assim, podemos resumir que o consumo foi igual, mostrando como um código bem escrito e manipulado pode ser mais econômico do que usar sleep’s frequentes ou com tempo longo.

Observação importante: O consumo poderia ser facilmente reduzido aproximadamente 20-100x diminuindo a velocidade do clock, trocando por um sensor melhor e mais rápido e até usando o ULP.

Conclusão

Agora que nossa série chegou ao fim, podemos perceber a imensa importância de uma programação bem feita e principalmente os métodos de Sleep para o mundo de IoT, Sistemas embarcados e Wearables que fazem uso de baterias.

Aplicando os conceitos mostrados nesta série, você conseguirá criar inúmeros dispositivos portáteis que durem anos em uma barata e pequena bateria, o limite é sua imaginação.

Os conceitos mostrados aqui são aplicáveis a qualquer microcontrolador, desde PIC’s até ARM’s, diferenciando basicamente os consumos e nomes de Sleep’s.

Saiba mais sobre IoT

Enviando dados para a nuvem com Azure IoT Hub

IoT: Contexto geral, presente e perspectiva futura - Parte 1

Como conectar a DragonBoard 410C no IBM Watson IoT Platform

Editorial: IoT - Internet das Coisas - Mocinha ou Vilã?

Outros artigos da série

<< Construindo o projeto de IoT portátil
Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Internet Das Coisas » Estratégias de programação para portáteis
Comentários:
Notificações
Notificar
guest
2 Comentários
recentes
antigos mais votados
Inline Feedbacks
View all comments
Isac Zilli
Isac Zilli
13/02/2018 21:33

Olá José Morais, parabéns pelo artigo, me interessei pela parte que vi em seu programa, que você faz um banco de dados no seu próprio google.docs. Até procurei na NET, mas pelo que verifiquei tem de configurar o arquivo dentro do Google Drive para receber as informações (vi alguns scrips) e as informações são perdidas. É possível escrever um outro artigo, uma continuação deste talvez, abordando esta parte? Há anos utilizo o ThingSpeak.com. Este um dos mais famosos, mas existem n outros, mas o brabo é que fico refém de um serviço que estes sites proporcionam. Não sei se consegui… Leia mais »

Talvez você goste:

Séries



Outros da Série

Menu

WEBINAR
 
Sensores e soluções para aplicações em indústria inteligente

Data: 13/08 às 15:00h - Apoio: STMicroelectronics
 
INSCREVA-SE AGORA »



 
close-link