Como reduzir o consumo de módulos wifi em dez ou mais vezes

Bom dia a todos !!!

Este artigo trata principalmente do popular módulo ESP8266 (ESP8285).

Recentemente, em um dos fóruns, fui questionada sobre o protocolo ESP-NOW. Como resultado, decidi falar sobre maneiras de reduzir o consumo de sensores e atuadores que funcionam via WiFi, incluindo o ESP8266, em particular o Sonoff.

Primeiro, a essência do problema sendo resolvido.

Na solução clássica em WiFi, você deve usar um roteador especial ou um smartphone ou dispositivo no modo de ponto de acesso.

O procedimento para conectar e transmitir dados sem danças especiais com um pandeiro no ESP8266 é de 1 a 4 segundos. Nesse caso, o consumo atual é de pelo menos 70 mA.

Ao usar a energia da bateria, como um sensor de temperatura, é usado o modo de suspensão profunda. O dispositivo acorda periodicamente, envia dados e adormece.

Com base na minha experiência, posso dizer que o tempo de atividade do ESP8266 pode ser reduzido para 0,1-0,13 s.

Além disso, uma parte significativa desse tempo é o tempo de operação do carregador de inicialização: de 0,08 segundos a 0,1 segundos, mas o wifi ainda não está ativado naquele momento e, portanto, o consumo atual é em média de 25 mA.

Eu uso esse intervalo para verificar a carga da bateria.
Se não houver cobrança suficiente para a comunicação, envio o dispositivo para dormir novamente.
Uso esse tempo para verificar as leituras do sensor e comparar com um determinado intervalo de valores.

Se estiver no corredor, envie o dispositivo para dormir novamente.
Assim, o envio desnecessário de dados é reduzido significativamente.

Como regra, em projetos como uma “casa inteligente”, um luar ou uma unidade de cerveja, estações meteorológicas, é necessário medir a temperatura e ligar e desligar a lâmpada, a bomba, o motor.
Para controlar esses dispositivos e obter dados de temperatura ou pressão em um smartphone ou outro dispositivo, alguns bytes são suficientes.

Em relação ao ESP8266 na Internet, existem várias maneiras de reduzir o tempo de atividade dos dispositivos no modo de transferência de dados via Wi-Fi.

Opção 1: use TCP / IP e um endereço IP fixo.
O primeiro para ESP8266 foi feito por pvvx.
Desvantagens: O uso do SDK de fabricação própria.
Tempo de atividade de 0,54 seg.

Opção 2: fui o primeiro a usar esse método por um longo tempo, mas não o encontrei na internet hoje.
Usando o protocolo UDP, corrigindo parâmetros de conexão no RAM RTC, desabilitando o DHCP.
Vantagem: SDK padrão sem muletas, comprimento do pacote até 64K.
Tempo de atividade de 0,25 seg.

Opção 3: protocolo ESP-NOW.
Desvantagem: a dificuldade de compreensão por amadores, a necessidade de combinar com o protocolo wifi para trocar dados com um smartphone.
Vantagem: SDK padrão, sem muletas, tamanho de pacote de até 512 bytes.
Tempo de atividade: de 0,13 s (carregador de inicialização padrão); 0.1 (carregador de inicialização especial)

Opção 4: solução CNLohr baseada em SDK pvvx caseiro e uso de pacotes brutos.
A diferença da solução ESP-NOW é que o pacote transmitido é menor, mas o protocolo WiFi é usado.
Desvantagem: é muito difícil dominar por amadores, não pode ser implementado em um ambiente arduino, requer alterações no software do roteador.
Tempo de atividade: como na opção 3.

Opção 5: um método universal para redes privadas baseadas em WiFi.
Sem muletas. É fácil de implementar no arduino, o software é padrão.
Pode ser usado não apenas para ESP.
Não requer um roteador.
Desvantagem: comprimento do pacote 4 bytes
Tempo de atividade: como nas opções 3 e 4.

Método:
Na rede local, usamos endereços MAC especiais.
O primeiro byte do endereço, por exemplo, 0x36.
O segundo byte do endereço indica o número do dispositivo.
3,4,5,6 bytes contêm as informações transmitidas.
Como resultado, para receber as informações transmitidas, é necessário apenas concluir a conexão.
O tempo para transferir dados é zero, pois obtemos os dados no momento da conexão.

Uma modalidade deste método para o arduino pode ser baixada aqui .

No exemplo acima, apenas uma variante desse método de transferência de dados é implementada.

Não possui um modo de suspensão profunda. Portanto, a economia de energia é devida apenas ao tempo zero para transferência de informações. O transmissor funciona apenas quando conectado e a corrente sobe para 300 mA por apenas 2-4 ms.

Para obter o efeito de economia total por qualquer uma das opções, é necessário implementar o modo de suspensão profunda de maneira padrão.

Assim, nas opções 3 a 5, a operação da unidade WiFi não leva mais que 0,04 segundos.
Foi nessa época que o consumo atual variou de 70 a 300 mA.
O resto do tempo, o consumo atual do ESP8266 não é superior a 20 mA.
Como resultado, em vez de consumir energia por uma sessão de 70 mA * s, obtemos cerca de 3 mA * s.
Aqueles que desejam podem calcular com mais precisão as economias para dispositivos específicos.

Explicarei com mais detalhes a opção 2 .
Ao sair do depp-sleep, há três opções para conectar-se ao WiFi para mensagens.

1) login e senha - novos valores.
O tempo de conexão e transmissão da mensagem UDP é de 4 segundos.

2) login, senha e IP são armazenados no RTC.
O tempo de conexão e transmissão da mensagem UDP é de 1,2 segundos.

3) faça login, senha, IP, salve no RTC e desative o dhcp.
O tempo para conectar e transmitir uma mensagem UDP é de 0,25 segundos.

O tempo é calculado levando em consideração o tempo de operação do carregador de inicialização,
que é 0,12 segundos em uma inicialização padrão.
Se reescrevermos o gerenciador de inicialização, o tempo poderá ser reduzido ainda mais em 0,04-0,06 segundos adicionais.

Assim, se salvarmos o login, a senha e o IP no RTC, a duração da bateria aumentará 3 vezes mais do que sem salvar. Esse método de economia é conhecido na Internet e é usado por muitos.

Mas se você desabilitar o DHCP, a duração da bateria aumentará cerca de 13 vezes.
É exatamente isso que estou fazendo, mas ainda não vi essa solução na Internet.

Todo o sucesso em economizar energia.

Source: https://habr.com/ru/post/pt480316/


All Articles