2 Comentários

Usando o ULP do ESP32 em projetos Low Power

Este post faz parte da série Co-processador Ultra Low Power do ESP32. Leia também os outros posts da série:

Vamos dar início à programação do ULP do ESP32 e finalmente testar esse item incrível e relativamente raro entre microcontroladores. A programação do sistema principal é feita em C/C++, entretanto, o ULP é programado em Assembly e, por conta disso, afasta muitas pessoas que não têm um contato tão grande com programação de baixa abstração. Mas vamos em frente que tudo será devidamente explicado e comentado.

O código basicamente irá colocar o ESP32 em Deep Sleep, enquanto o ULP lê um sensor analógico (LDR) para detectar sombras no local. Caso perceba uma sombra, efetuará uma ação como acordar o ESP32 e incrementar uma variável persistente entre os ciclos de Sleep <-> Wakeup, que também é outro item importante, já que a Flash tem ciclo de escrita baixo.

Fluxograma do código executado pelo ULP do ESP32.
Figura 1 - Fluxograma do código.

Código em C++:

Código em Assembly:

Testando esse código, podemos observar que mesmo com o sistema principal em Deep Sleep, o ULP continua em execução normal, que no caso é fazendo a leitura do sensor analógico (LDR) e, caso o valor (luminosidade) chegue ao valor definido, irá piscar um LED indicativo e acordará o sistema principal, que também mostrará no Serial Monitor a quantidade de vezes que ocorreu o Wakeup. Em teoria, removendo todos os componentes extras do circuito, como sensores e atuadores, o consumo com o sistema principal em Deep Sleep enquanto o ULP está em execução deve ser <=150 uA. Imagine quantas aplicações podemos dar a esse pequeno guerreiro para projetos de Low Power? Praticamente um microcontrolador dentro de outro, porém de baixo consumo energético!

Utilizamos uma variável na memória RAM do RTC Domain, logo, não perdemos informação durante ou após o Deep Sleep, sendo uma ótima maneira de manter dados entre ciclos de Sleep <-> Wakeup sem precisar se preocupar com ciclos baixos de escrita na Flash.

No próximo post dessa série sobre o ULP do ESP32, vamos colocá-lo para ajudar o sistema principal no processamento, ficando encarregado de ler os sensores e ativar atuadores, já que essa tarefa interfere no bom funcionamento do Flow code.

Saiba mais

MSP430 - Modos de Low-Power

Idealização de um projeto IoT portátil

Embarcados interview: Jack Ganssle

Outros artigos da série

<< Conhecendo o co-processador ULP (Ultra Low Power) do ESP32Utilizando o ULP do ESP32 para co-processamento >>
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.

Software » Usando o ULP do ESP32 em projetos Low Power
Comentários:
Notificações
Notificar
guest
2 Comentários
recentes
antigos mais votados
Inline Feedbacks
View all comments
Welton .
12/05/2019 11:13

Muito bom irmão, vlw de mais. Ajudou muiiiittooooo!
Tenho uma bronca aqui quando vou compilar o código, as bibliotecas
#include ulp/ulp.c>
#include ulp_main.h>

Não são encontradas, e eu já instalei o que era necessário na IDe do arduino para usar o ESP 32.
O que devo fazer pra colocar essas bibliotecas serem adicionadas ?

Fabio Luiz
fabio
17/04/2018 06:29

Show de bola esse tutorial, aguardando os proximos!!

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