FVM Learning

Nosso maior compromisso é compartilhar conhecimentos, somos simples, mas não simplórios, astuto, mas não pacóvio, nos posicionamos empenhados em mostrar o caminho para desmistificação do opróbrio em legítima defesa do conhecimento compartilhado. Eng. Jemerson Marques!

terça-feira, 2 de julho de 2019

Como funcionam os Modos: Modem-sleep - Light-sleep - Deep-sleep - Nos ESP8266

Como funcionam os Modos: Modem-sleep - Light-sleep - Deep-sleep - Nos ESP8266

Olá a Todos!!!

No Post de hoje, iremos analisar os três Modos de Suspensão que funcionam com o ESP8266, essa função na programação do ESP8266, traz muitos benefícios para a economia de energia, que para quem utiliza o ESP8266 com baterias ou pilhas, notarão um aumento significativo no consumo das baterias, como sabemos, os ESPs não são tão econômicos assim se compararmos com os Arduínos. Como a maioria dos módulos ESP8266, não é possível alterar o hardware para economizar energia, mas é possível criar manobras nos códigos para esse fim. Se utilizar-mos as funções de suspensão com o ESP8266, ele consumirá menos energia e as suas baterias dependendo do modo de escolha, durarão por muito mais tempo.

Tipos de Suspensões: Sleep Modes

O chip da série ESP8266 oferece 3 modos de suspensão configuráveis. Que fornecemos alguns soluções de economia de energia relacionadas a esses modos de suspensão. Os usuários podem escolher e configurar os modos conforme necessário. Todos eles têm propósitos diferentes e devem ser usados ​​em diferentes aplicações.

São três modos de suspensão:

  • Modem-sleep
  • Light-sleep
  • Deep-sleep

Modem-sleep

Esse modo é ativado somente quando o ESP8266 se conecta ao roteador no modo estação. O ESP8266 permanece conectado ao roteador através do mecanismo de sinalização DTIM.
  • DTIM - Delivery Traffic Indication Message - "Mensagem de indicação de tráfego de entrega"
  • DTIM intervalos - É o período de tempo pelo qual os DTIMs são enviados para os clientes de uma rede.
ESP8266 fechará o circuito do módulo Wi-Fi entre os dois Intervalos de sinalização DTIM para economizar energia, O intervalo de sinalização DTIM do roteador é geralmente de 100 ms a 1000 ms. O ESP8266 será automaticamente acordado antes da próxima chegada da sinalização. O tempo de suspensão é decidido pelo tempo de intervalo da sinalização DTIM do roteador. Durante a suspensão, o ESP8266 pode permanecer conectado ao Wi-Fi e receber a informações de um telefone celular ou servidor.

Ativar o modo Modem-sleep

O sistema entra em Modem-sleep utilizando a seguinte interface de programação.
wifi_set_sleep_type(MODEM_SLEEP_T)

OBS.: Em Modem-sleep, o sistema pode ser ativado automaticamente. Os usuários não precisam configurar a interface.

Aplicação:
modem-sleep é geralmente usado nas aplicações onde necessitam do uso contínuo da CPU. Um bom exemplo de aplicações é uma luz por pulso com - Pulse Width Modulation (PWM) que precisa em tempo real  do Controle da CPU.

Light-sleep

Esse modo é semelhante ao modo Modem-sleep. A diferença é que, durante o modo Light-sleep, exceto no circuito Wi-Fi, o ESP8266 também desliga o clock e suspende a CPU interna, resultando em menos energia do que no modo Modem-Sleep.

OBS.: Devemos configurar os pinos no status de saída para o status de entrada, como MTDO, U0TXD, GPIO0, antes de ativar o modo Light-sleep para eliminar a corrente de fuga, para que o consumo de energia possa ser ainda menor.

O sistema entra no modo Light-sleep através da seguinte interface.
wifi_set_sleep_type(LIGHT_SLEEP_T)

OBS.: ESP8266 entra automaticamente no modo Light-sleep quando conectado ao Wi-Fi com a CPU ociosa.

Wake-up externo
Durante o modo Light-sleep, a CPU fica suspensa e não responde aos sinais e interrompe as interfaces de hardware periféricas. Portanto, ESP8266 precisa ser acordado via GPIO externo. O processo de despertamento é inferior a 3ms.

A função de despertar do GPIO só pode ser ativada por triggers de nível. A interface é a seguinte.


void wifi_enable_gpio_wakeup(uint32 i, GPIO_INT_TYPE intr_state); 

Por exemplo: O GPIO12 pode ser definido como o pino de ativação externo por meio da seguinte interface:
GPIO_DIS_OUTPIT(12);
PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDI_U, FUNC_GPIO12);
wifi_enable_gpio_wakeup(12, GPIO_PIN_INTR_LOLEVEL); 

uint32 i
O número de série do IO da função de wake-up.

GPIO_INT_TYPE
intr_state
O modo de  trigger do wake-up.

  • GPIO_PIN_INTR_LOLEVEL
  • GPIO_PIN_INTR_HILEVEL

OBS.: O GPIO16 não pode ser usado para processo de despertamento wake-ups.

Aplicação:
O modo Light-sleep pode ser usado nos cenários em que os aplicativos precisam permanecer conectados ao roteador e podem responder aos dados de envio do roteador em tempo real.
CPU pode ficar inativa antes de receber comandos. Um exemplo é o comutador Wi- Fi cuja CPU fica inativa a maior parte do tempo e realiza operações GPIO somente até receber os comandos de controle.

Deep-sleep

Ao contrário dos outros dois modos, o sistema não pode entrar em Deep-sleep automaticamente. Os usuários podem chamar a função de interface system_deep_sleep para ativar imediatamente o modo Deep-sleep.
Neste modo, o chip desligará a conectividade Wi-Fi e a conexão de dados; somente o módulo RTC permanecerá funcionando, responsável por despertares periódicos.
No modo Deep-sleep, a GPIO mantém o estado do seu nível em alto e tem uma potência de 2 μA.

O sistema entra no modo Deep-sleep através da seguinte interface.
void system_deep_sleep(uint32 time_in_us)

Parâmetros:
uint32 time_in_us = 0 ➾ O chip não será despertado em intervalos regulares, ou seja, 
não será ativado automaticamente.
uint32 time_in_us ≠ 0 ➾ O chip será automaticamente acordado em intervalos 
regulares (em μs).

Configurar o modo Deep-sleep

Os usuários podem configurar o fluxo de trabalho do software durante o wake-up do modo Deep-sleep através da interface a seguir para ajustar o consumo médio de energia durante a execução de longa duração.
bool system_deep_sleep_set_option(uint8 option)


deep_sleep_set_option(0) ➾ O 108º byte do parâmetro init decide se a calibração de RF
será executado depois que o chip acordar do Deep-sleep.
deep_sleep_set_option(1) ➾ O chip fará a calibração de RF depois de acordar
do Deep-sleep. O consumo de energia é alto.
deep_sleep_set_option(2) ➾ O chip não fará a calibração de RF depois de acordar
do Deep-sleep. O consumo de energia é baixo.
deep_sleep_set_option(4) ➾ O chip não liga o RF depois de acordar do Deep-sleep.
 A Potência do consumo é o mais baixo, igual ao do Modem-sleep.

Despertamento Automático

No modo de Deep-sleep, o GPIO16 (XPD_DCDC) pode ser conectado a EXT_RSTB. Quando o tempo de suspensão termina, o chip pode ser ativado e inicializado por um pulso de nível baixo gerado no pino EXT_RSTB via GPIO16.

Aplicação:
O modo deep-sleep pode ser usado em aplicações de sensores de baixa potência ou em cenários onde a transmissão de dados não é necessária durante a maior parte do tempo. O dispositivo é ativado a partir do Deep-sleep em intervalos para medir e fazer o upload de dados e, em seguida, vai para o modo Deep-sleep novamente. O dispositivo também pode armazenar dados na memória RTC (que ainda pode salvar dados no modo Deep-sleep) e enviá-los de cada vez.


E por hoje é só, espero que tenham gostado!!!

Qualquer dúvida, digita nos comentários que logos estaremos respondendo.

Se inscreva no nosso Blog!!! Click aqui - FVM Learning!!!

Forte abraço.

Deus vos Abençoe

Shalom


Nenhum comentário:

Postar um comentário