Acorde o ESP32 do sono profundo usando temporizadores-MicroPython

Acorde O Esp32 Do Sono Profundo Usando Temporizadores Micropython



O ESP32 é uma plataforma IoT baseada em microcontrolador. O consumo de energia é uma das principais preocupações ao trabalhar com uma placa microcontroladora. Desde que estejamos alimentando o ESP32 com uma fonte DC, não nos importamos mais com o consumo de energia, mas com projetos de backup de bateria para longo prazo, precisamos otimizar a energia geral.

Aqui estaremos discutindo como podemos definir o ESP32 no modo de hibernação profunda em um horário fixo para economizar energia. Antes de aprendermos como despertar o ESP32 do sono profundo usando o timer, vamos entender o conceito de sono profundo:

O que é Sono Profundo no ESP32

O ESP32 pode ser um dispositivo que consome muita energia devido ao seu módulo integrado de WiFi e Bluetooth. ESP32 normalmente desenha 75mA para operações nominais enquanto pode ir até 240mA ao transmitir dados por WiFi. No entanto, podemos otimizar isso ativando o modo de hibernação profunda.









No modo de hibernação profunda, os periféricos digitais ESP32, RAM e CPUs não utilizados são desligados. Apenas a seguinte lista de peças permanece operacional:



  • Controlador RTC
  • Coprocessador ULP
  • RTC memória rápida e lenta
  • Periféricos RTC





Quando o modo de suspensão profunda está ativado, a CPU principal é desligada; no entanto, o coprocessador ULP (UltraLowPower) ainda pode ler dados de sensores e ativar a CPU sempre que necessário.

Esta aplicação do ESP32 é útil quando queremos gerar saída em algum momento específico ou quando ocorre uma interrupção ou evento externo. Isso economiza energia do ESP32, pois sua CPU permanece desligada o resto do tempo e só liga quando é chamada.



Junto com a CPU ESP32 a memória principal também é flashada ou apagada, então qualquer coisa armazenada dentro desta memória não estará mais disponível. Apenas a memória RTC é mantida lá. Portanto, o ESP32 salva os dados WiFi e Bluetooth dentro da memória RTC antes de entrar no modo de hibernação profunda.

Depois que o modo de hibernação profunda é redefinido ou removido, o chip ESP32 inicia a execução do programa desde o início.

Do sono profundo, podemos acordar o ESP32 usando diferentes métodos.

Fontes de ativação no ESP32

Múltiplas fontes estão disponíveis para despertar o ESP32 do sono profundo:

  • Cronômetro
  • pinos de toque
  • Ativação externa ext0
  • Ativação externa ext1

Neste guia, abordaremos Temporizador para acordar fonte para ESP32.

Como usar o timer para acordar o ESP32 do sono profundo

O ESP32 vem com um controlador RTC que possui um módulo de timer integrado que pode ativar o ESP32 após um período de tempo predefinido. Esse recurso possui vastas aplicações em que precisamos marcar a hora ou executar instruções em horários específicos, mantendo o consumo de energia ideal.

Para colocar o ESP32 no modo de hibernação profunda usando o código MicroPython sono profundo() função do módulo da máquina será usado. A seguir está a sintaxe da função de sono profundo no MicroPython:

máquina. sono profundo ( sleep_time_ms )

Esta função leva 1 argumento que é um tempo predefinido em milissegundos .

Para entender o uso do timer do ESP32 para despertar, vamos dar um exemplo que pisca o LED após cada tempo definido e volta a dormir assim que a tarefa é concluída.

Código de exemplo

Abra qualquer editor MicroPython e carregue o código abaixo na placa ESP32. Aqui, usaremos o Thonny IDE para fazer upload de esboços do MicroPython.

# Fonte do código Linuxhint.com

a partir de máquina importar sono profundo

a partir de máquina importar Alfinete

a partir de Tempo importar dorme

conduziu = Alfinete ( 4 , Alfinete. FORA ) #PIN 4 definido para saída de LED

conduziu. valor ( 1 ) #Ligue o LED por 1 segundo

dorme ( 1 )

conduziu. valor ( 0 ) #Desligue o LED por 1 segundo

dorme ( 1 )

imprimir ( 'Indo dormir agora' )

sono profundo ( 5000 ) #Dormir por 5 segundos

O código começou importando as bibliotecas necessárias, como importamos a biblioteca deepsleep.

Depois disso, um novo objeto para o pino 4 do ESP32 é criado. Este pino mostrará a saída toda vez que o ESP32 for ativado.

conduziu = Alfinete ( 4 , Alfinete. FORA )

Os comandos indicados abaixo piscarão o LED com atraso de 1 segundo.

conduziu. valor ( 1 )

dorme ( 1 )

conduziu. valor ( 0 )

dorme ( 1 )

Aqui, para fins de demonstração, piscamos o LED. No entanto, qualquer outro dispositivo também pode ser controlado.

Antes de dormir, imprimimos uma mensagem informando que o ESP32 está entrando no modo de espera.

imprimir ( 'Indo dormir agora' )

Observação: Também podemos adicionar um atraso de 5 segundos ou mais aqui antes que o ESP32 entre no modo de hibernação. Isso nos ajuda na hora de construir um projeto e escrever um novo roteiro. Ao carregar um novo código, a placa deve estar ativa e não no modo de hibernação. Se não adicionarmos o atraso, será difícil para nós pegar o ESP32 no modo acordado e fazer o upload de um novo script.

Depois de escrever o novo script e quando o código final estiver pronto, podemos remover esse atraso na versão final do script.

Por fim, a placa ESP32 é colocada em hibernação profunda por 5 segundos (5000 ms).

máquina. sono profundo ( 5000 )

Passados ​​os 5 segundos, o ESP32 acorda e reinicia o código semelhante ao DENTRO botão.

  Interface gráfica do usuário, texto, aplicativo Descrição gerada automaticamente

Resultado

A saída a seguir pode ser observada no terminal shell do Thonny IDE. Aqui podemos ver que a cada 5 segundos o ESP32 acorda do sono profundo e pisca o LED no pino 4 do GPIO.

O LED no GPIO 4 acenderá SOBRE por 1 seg.

Após 1 segundo, o LED acenderá DESLIGADO .

Agora a placa ESP32 entrará novamente em modo de hibernação por 5 segundos e depois disso todo o processo se repete. Então é isso, controlamos com sucesso o modo de hibernação profunda do ESP32 usando o código do timer.

Conclusão

Aqui neste tutorial, configuramos o ESP32 para acordar do sono profundo usando um programa de timer escrito em MicroPython. Nós carregamos o código usando o Thonny IDE . Simplesmente imprimimos uma mensagem assim que o ESP32 acorda e pisca um LED; no entanto, usando este artigo, pode-se executar qualquer tarefa assim que o ESP32 acordar do sono profundo.