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.
O 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:
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.: O 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.
A 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