- Métodos diferentes para minimizar o consumo de energia
- Componentes necessários
- Tipos de modos de dormir no ESP8266
- ESP8266 Deep Sleep Mode Programming
- Testando DeepSleep no ESP8266
Como a revolução da IoT está crescendo a cada dia, o número de dispositivos conectados está aumentando muito rapidamente. No futuro, a maioria dos dispositivos estará conectada entre si e se comunicará em tempo real. Um dos problemas enfrentados por esses dispositivos é o consumo de energia. Este fator de consumo de energia é um dos fatores críticos e decisivos para qualquer dispositivo IoT e Projetos IoT.
Como sabemos que ESP8266 é um dos módulos mais populares para construir qualquer projeto de IoT, neste artigo aprendemos sobre como economizar energia ao usar ESP8266 em qualquer aplicativo de IoT. Aqui, carregamos os dados do sensor de temperatura LM35 para a nuvem ThingSpeak em um intervalo de 15 segundos e durante esses 15 segundos o ESP8266 permanece no modo DeepSleep para economizar energia
Métodos diferentes para minimizar o consumo de energia
Existem várias maneiras de otimizar o consumo de energia nos dispositivos incorporados e IoT. A otimização pode ser feita em hardware e software. Às vezes, não podemos otimizar os componentes de hardware para reduzir o consumo de energia, mas certamente podemos fazer isso no lado do software, alterando e otimizando as instruções e funções do código. Além disso, os desenvolvedores também podem modificar a frequência do clock para reduzir o consumo de energia do microcontrolador.Podemos escrever um firmware para fazer o hardware hibernar quando não houver troca de dados e realizar a tarefa definida em um determinado intervalo. No modo de hibernação, o hardware conectado consome muito menos energia e, portanto, a bateria pode durar muito. Você também pode ler Minimizando o consumo de energia em microcontroladores, se quiser saber mais sobre as técnicas de consumo de energia.
Os módulos ESP8266 são os módulos Wi-Fi mais amplamente usados, vem com muitos recursos em tamanho pequeno, tendo diferentes modos, incluindo o modo de espera e esses modos podem ser acessados usando algumas modificações no hardware e software. Para saber mais sobre ESP8266, você pode verificar nossos projetos baseados em IoT usando o módulo ESP826 Wi-Fi, alguns deles estão listados abaixo:
- Interface do NodeMCU ESP8266 com o microcontrolador Atmega16 para enviar um e-mail
- Envio de dados do sensor de temperatura e umidade para o Firebase Real-Time Database usando NodeMCU ESP8266
- LED controlado por IoT usando o Google Firebase Console e ESP8266 NodeMCU
Aqui, vamos explicar os diferentes modos de suspensão disponíveis no ESP8266 e demonstrá-los enviando dados de temperatura para o servidor Thingspeak em um intervalo regular usando o modo de suspensão profunda.
Componentes necessários
- Módulo ESP8266 Wi-Fi
- Sensor de temperatura LM35
- Fios de ligação
Tipos de modos de dormir no ESP8266
O módulo Esp8266 opera nos seguintes modos:
- Modo ativo: Neste modo, todo o chip é ligado e o chip pode receber, transmitir os dados. Obviamente, este é o modo que mais consome energia.
- Modem-sleep mode: Neste modo, a CPU está operacional e os rádios Wi-Fi são desabilitados. Este modo pode ser utilizado em aplicações que requeiram o funcionamento da CPU, como no PWM. Isso faz com que o circuito do Modem Wi-Fi seja desligado enquanto estiver conectado ao AP (Ponto de Acesso) Wi-Fi sem transmissão de dados para otimizar o consumo de energia.
- Modo Light-sleep: Neste modo, a CPU e todos os periféricos são pausados. Qualquer ativação, como interrupções externas, ativará o chip. Sem transmissão de dados, o circuito do Modem Wi-Fi pode ser desligado e a CPU suspensa para economizar o consumo de energia.
- Modo de sono profundo: Neste modo, apenas o RTC está funcional e todos os outros componentes do chip são desligados. Este modo é útil quando os dados são transmitidos após longos intervalos de tempo.
Conecte o sensor de temperatura LM35 com o pino A0 do NodeMCU.
Quando o módulo ESP tem o pino HIGH no RST, ele está em estado de execução. Assim que recebe o sinal LOW no pino RST, o ESP reinicia.
Defina o cronômetro usando o modo de hibernação profunda, uma vez que o cronômetro termina, o pino D0 envia o sinal LOW para o pino RST e o módulo irá acordar reiniciando-o.
Agora, o hardware está pronto e bem configurado. As leituras de temperatura serão enviadas para o servidor Thingspeak. Para isso, abra uma conta no thingspeak.com e crie um canal seguindo as etapas abaixo.
Agora, copie a chave Write API. Que será usado no código ESP.
ESP8266 Deep Sleep Mode Programming
O Arduino IDE facilmente disponível será usado para programar o módulo ESP8266. Certifique-se de que todos os arquivos da placa ESP8266 estejam instalados.
Comece incluindo todas as bibliotecas importantes necessárias.
#incluir
Depois que todas as bibliotecas estiverem incluídas para acessar as funções, atribua a chave de gravação da API e configure seu nome e senha do Wi-Fi. Em seguida, declare todas as variáveis para uso posterior onde os dados serão armazenados.
String apiWritekey = "*************"; // substitua por sua chave THINGSPEAK WRITEAPI aqui char ssid = "******"; // seu nome SSID wi-fi char, senha = "******"; // senha wi-fi
Agora, faça uma função para conectar o módulo com a rede Wi-Fi usando a função wifi.begin () e verifique continuamente até que o módulo não esteja conectado ao Wi-Fi usando o loop while.
void connect1 () { WiFi.disconnect (); atraso (10); WiFi.begin (ssid, senha); enquanto (WiFi.status ()! = WL_CONNECTED) {
Faça outra função para enviar os dados para o servidor Thingspeak. Aqui, uma string será enviada contendo a chave de escrita da API, o número do campo e os dados que devem ser enviados. Em seguida, envie esta string usando a função client.print ().
void data () { if (client.connect (server, 80)) { String tsData = apiWritekey; tsData + = "& field1 ="; tsData + = String (tempF); tsData + = "\ r \ n \ r \ n"; client.print ("POST / atualizar HTTP / 1.1 \ n"); client.print ("Host: api.thingspeak.com \ n");
Chame a função connect1, que irá chamar a função para conectar o Wi-Fi, então tomar as leituras da temperatura e convertê-la em graus Celsius.
configuração vazia () { Serial.begin (115200); Serial.println ("o dispositivo está no modo Despertar"); conectar1 (); valor int = analogRead (A0); volts flutuante = (valor / 1024,0) * 5,0; tempC = volts * 100,0;
Agora, chame a função data () para fazer upload dos dados na nuvem thingspeak. Finalmente, a função importante a ser chamada é ESP.deepSleep (); isso fará o módulo hibernar pelo intervalo de tempo definido, que é em microssegundos.
dados(); Serial.println ("sono profundo por 15 segundos"); ESP.deepSleep (15e6);
A função de loop permanecerá vazia, pois toda a tarefa deve ser realizada uma vez e, em seguida, reinicializar o módulo após o intervalo de tempo definido.
O vídeo de trabalho e o código completo são fornecidos no final deste tutorial. Faça upload do código no módulo ESP8266. Remova o fio conectado RST e D0 antes de carregar o programa, caso contrário, ocorrerá um erro.
Testando DeepSleep no ESP8266
Depois de fazer o upload do programa, você verá que as leituras de temperatura são carregadas na nuvem ThingSpeak a cada 15 segundos e, em seguida, o módulo entra no modo de hibernação.
Isso conclui o tutorial sobre como usar o Deep Sleep no módulo ESP8266. O sono profundo é um recurso muito importante e foi incluído na maioria dos dispositivos. Você pode consultar este tutorial e aplicar este método para diferentes projetos. Em caso de dúvidas ou sugestões, por favor, escreva e comente abaixo. Você também pode acessar nosso fórum.