Como medir o gasto financeiro da régua WiFi com Esp32

Fala galera, tudo bem com vocês? Hoje vamos aprender como medir o gasto financeiro da régua Wifi com Esp32, em nosso post anterior aprendemos como controlar uma régua/extensão de energia pelo WiFi, se você ainda não leu a parte 1, clique aqui para ler, pois para continuar neste tutorial é imprescindível a leitura da primeira parte.

Então vamos recordar como ficou o projeto anterior.  

Terminamos com o sistema monitorando uma extensão de energia, onde  montamos em uma caixa sobreposta de energia elétrica, o nosso sistema é  controlado pelo app Blynk enviando comandos de ligar e desligar as tomadas  que servem para conectar o eletrodoméstico como o ventilador, por exemplo.  Este mesmo sistema, Régua WiFI parte 01, nos envia em tempo real, via WiFi,  o valor da corrente consumida pelo sistema caso tenha eletrodomésticos  consumindo carga.

O diagrama do projeto pode ser visto na imagem acima, foi usado um relé como chave geral e os outros 03  para alimentar a tomada, neste post, vamos alterar pouca coisa, na verdade a  proposta é indicar algumas formas de montar o circuito abaixo, por isso  redesenhei o circuito com imagens real dos componentes, assim, para quem  dificuldades em interpretar o circuito do Fritzing, vendo a imagem abaixo pode ficar mais fácil de entender.

Eita, parece uma bagunça não é? Mas o nome disso é arte…hehehe,  como disse as alterações foram poucas e optei por montar o circuito desta forma  para simular com as imagens reais dos componentes:

  • Item 02, troquei a posição da chave, fiz isso para aproveitar a própria  chave on/off do estabilizador, sim, isso mesmo, a minha primeira sugestão  é você pegar um estabilizador velho, com defeito, como esse do item 13  e retirar tudo de dentro, deixando apenas as tomadas (item 1), a chave  on/off (item 2), o cabo de alimentação (item 7) e o fusível (item 04). 
  • No item 01, no post passado usamos 03 tomadas controladas por 03 relés  para carga e neste optamos por aproveitar os 04 relés para controlar 04  cargas, ou seja, retirei o relé que funcionava como uma espécie de chave  geral e aproveitei ele para conectar em mais uma tomada.
  • A outra alteração na ligação do item 05(fonte 5V) e o item 06, este,  usamos um cabo USB, o mesmo de carregador de celular, já que a fonte  seria um carregador de celular, para conectá-la ao ESP e módulos, assim  evita buscar na placa fonte do carregador de celular um ponto Vcc e GND  para fazer a solda de um fio que levará para o esp, assim fica mais fácil a  montagem além da manutenção, pois sabemos que essas fontes de  celulares queimam fácil, isso acontecendo basta apenas desconectar e  substituí-la.
  • A última alteração foi com o item 10, no post passado usamos 03  resistores, um pra cada GND do LED RGB, não precisa, basta 01 assim  economizamos mais uma vez tempo de soldagem.

Pronto, esta é nossa primeira proposta de montagem, usando um estabilizador  velho, mas vou te dar mais 3 ideias d’hora, aí bastaria usar os mesmos  componentes, porém a montagem exigiria um pouco mais de manufatura.

Ideia Extra 1: Pegue um tubo de PVC de 100mm e use ele como uma torre de  tomadas, lembrou um local que tem uma torre dessa parecida? Isso mesmo, em  aeroportos, shoppings, então basta pegar os componentes e montar de uma  forma parecida com a imagem abaixo, ahhh, tem um detalhe, a base tem que ser  pesada ou fixa, pois o peso dos cabos fará sua extensão tombar.

Ideia Extra 2: Estamos chegando no período das férias, se seu filhote cismou  em que você deverá comprar um novo estojo de lápis, então vou te dá um conselho: compre…hehehe…assim você terá uma case super bacana para montar sua  régua, assista o vídeo abaixo, que é uma régua que produzi usando um estojo  de lápis para instalar os componentes, porém essa régua é controlada por  bluetooth, então fica mais um exemplo e possibilidade de montar sua régua de  energia automatizada.

Ideia Extra 3: E por último, e neste caso só quem te para será sua imaginação,  imprima na 3D uma case super legal e posta aqui para gente, essa case  imprimimos para uso na escola de robótica que ministro aula, ficou realmente muito bom e  estiloso, qualquer dúvida fala com a gente, estamos por aqui pra ajudar.

Pronto, com a parte elétrica e estrutural alinhado, vamos ver o que mudou no  software, lembremos que no post anterior a régua era controlada pelo wifi, e assim a gente ligava e desligava as tomadas, além de nos enviar em tempo real o consumo  da corrente, clique aqui para ver todo o processo que desenvolvemos na parte 1. O que vamos mudar neste post sobre como medir o gasto financeiro da régua WiFi com Esp32, em relação ao anterior é pegar  o valor da corrente, calcular a potência e com ela chegar no valor estipulado do  consumo em tempo real do valor gasto.

O código final ficou assim:

#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
BlynkTimer timer;

char auth[] = "Token de Autenticação gerado"; //esse codigo vc receberá por email no cadastro no blynk

//-------- Configurações de Wi-Fi -----------
char ssid[] = "sua rede"; //insira aqui a senha do seu wifi
char pass[] = "sua senha"; //insira aqui a rede do seu wifi

float vetCorrente[300]; //numero de amostras para fazer a media da corrente
float valor_medio;
float valor_Corrente;
float tariff = 0.75, account, valueAccount; //variaveis referente ao calculo do consumo da conta
unsigned long timeNow, timeReadConsumption = 0; //variaveis para controlar o tempo de verificar o consumo

BLYNK_CONNECTED()
{ // Se conectar com Blynk
  Blynk.syncVirtual(V3);    // Sincroniza com o pino V3
}

void sendSensor()
{
  double maior_Valor = 0;
  double valor_Corrente = 0;

  float tensao = 220; //Coloque aqui a tensão da rede de energia de sua cidade
  float potencia = 0;

  for (int i = 0; i < 300; i++) //laço que faz a leitura da corrente
  {
    vetCorrente[i] = analogRead(39);
    delayMicroseconds(600);
  }

  int somaTotal = 0;

  for (int i = 0; i < 300; i++)
  {
    somaTotal = vetCorrente[i] + somaTotal;
  }
  valor_medio = somaTotal / 300; //Calculo do valor medio da corrente
  valor_medio = valor_medio * 0.0012; //ajustando o valor medio com o fator de erro
  valor_Corrente = (valor_medio - 2.5); 
  valor_Corrente = valor_Corrente * 1000; //multiplicando a corrrente por 1000 pois estava em miliamperes
  valor_Corrente = valor_Corrente / 66; //sensibilidade : 66mV/A para ACS712 30A

  //Impressão dos resultados
  Serial.print("Corrente = ");
  Serial.print(valor_Corrente);
  Serial.println(" A");
  potencia = valor_Corrente * tensao;
  Serial.print("Potência = ");
  Serial.print(potencia);
  Serial.println(" W");
  Serial.print(".");

  //Conferencia de o tempo de 01 minuto passou para verificar o valor da conta
  timeReadConsumption = millis() - timeNow;
  if (timeReadConsumption > 60000) {
  //valor da conta = potencia em W * converte para KW * 1 minuto em fraçao de hora * tarifa da sua região
    account = potencia * 0, 001 * 0.0166 * tariff;
    valueAccount = valueAccount + account;
    Serial.print("Valor da conta: R$ ");
    Serial.print(valueAccount);
    Serial.println(" !");
    timeNow = millis();
  }

  delay(500);
  Serial.println("");
  Blynk.virtualWrite(V3, valor_Corrente);
  delay(100);
}
void setup()
{
  Serial.begin(115200);
  pinMode(13, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(14, OUTPUT);
  pinMode(27, OUTPUT);
  Blynk.begin(auth, ssid, pass); // TOKEN+REDE+SENHA
  timer.setInterval(1000L, sendSensor);
  timeNow = millis();
}
void loop()
{
  timer.run();
  Blynk.run();
}

A primeira alteração é inserir as variáveis responsáveis pelo cálculo em Reais do  valor consumo naquele momento do uso. 

float tariff = 0.75, account, valueAccount; //variaveis referente ao calculo do consumo da conta
unsigned long timeNow, timeReadConsumption = 0; //variaveis para controlar o tempo de verificar o consumo

O próximo passo é inserir dentro da função sendSensor() a lógica de cálculo do  consumo, o código está todo comentado, facilitando assim o entendimento. A  cada 1 min, o código entra na condicional if, faz as continhas e soma o valor  consumido no momento com o valor consumido do minuto passado, incrementando assim a cada  1 minuto o valor gasto.

//Conferencia de o tempo de 01 minuto passou para verificar o valor da conta
  timeReadConsumption = millis() - timeNow;
  if (timeReadConsumption > 60000) {
  //valor da conta = potencia em W * converte para KW * 1 minuto em fraçao de hora * tarifa da sua região
    account = potencia * 0, 001 * 0.0166 * tariff;
    valueAccount = valueAccount + account;
    Serial.print("Valor da conta: R$ ");
    Serial.print(valueAccount);
    Serial.println(" !");
    timeNow = millis();
  }

É isso pessoal, finalizamos o nosso tutorial de sobre como medir o gasto financeiro da régua WiFi com Esp32, gostaram? Antes de encerrar gostaria de deixar  um desafio para vocês, e quem conseguir realizar posta aqui nos comentários, e quem sabe sua  aplicação também é publicada aqui na Arduino Ômega!

O desafio é o seguinte, você viu que nossa aplicação faz o cálculo  do consumo em reais em tempo real, porém se você desligar a régua este valor  não será armazenado, até caso queira armazenar é bem simples, basta escrever  na eeeprom do Arduino, poderíamos até falar sobre ela em outro momento, mas  a ideia que iremos seguir será a seguinte:

Vamos fazer a nossa régua ir gravando os valores no cartão de memória e no dia 30 de cada mês geraria um relatório  de consumo, porém para isso você precisaria de um módulo Sd Card e um RTC (real time clock),  e aí? Se garante?

Façam as suas tentativas, caso fique muito difícil a gente pode fazer uma live resolvendo este problema, o que vocês acham?

Qualquer dúvida estamos a disposição, nos vemos em outro projeto. #TMJ

Sobre Sandro Mesquita 20 artigos
Prof. Sandro Mesquita, Msc. Eng de Software, CREA - 44680 .

6 Comentários

  1. Excelente tutorial, estou tentando com o SCT013 com o ADS1115, que esta fincionando certinho, agora estou tentando mesclar o seu codigo com o que estou usando, mas existe erros.
    Uma dúvida que ficou o consumo e nem o valor gasto não é mostrado no blynk certo?

    • Olá Carlos, ficamos muito felizes em saber que gostou do tutorial!
      Quanto a sua dúvida, o valor realmente não é exibido no Blynk, os valores são exibidos apenas na saída serial da IDE do Arduino.
      Acredito que para exibir os valores no App, teríamos que usar algum App próprio,
      mas como o Blynk é amplamente usado e testado, achamos que usá-lo seria mais prático!

      Quando o seu projeto com o SCT013 e ADS1115 estiver pronto e caso você quiser publicar aqui no blog, manda um e-mail para nós: contato@arduinoomega.com

      Nós temos prazer em compartilhar conhecimento por aqui, e todos os nossos desenvolvedores são recompensados por tutorial publicado!
      Abraço!

Deixe uma resposta

O seu endereço de email não será publicado.


*