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
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!
Obrigado, pela respossta.
Vou preparar para mandar par vcs, já esta funcinando certinho, vou acrescentar o custo no blynk e graficos.
Vl
Show de bola! Ficamos no aguardo!
Abraço!
Pode me mandar o código também ??? Usou a função gráfico no Blynk para exibir o custo e o consumo ??? leossilva1396@gmail.com
Olá Leonardo tudo bem? O código está todo no tutorial, mas você pode baixa-lo também em nosso repositório no GitHub,
clicando neste link.
Sobre a exibição dos valores no Blynk, como dissemos na resposta ao Carlos, o valor não é exibido no Blynk, os valores são exibidos apenas na saída serial da IDE do Arduino.
Qualquer dúvida estamos a disposição. Abraços!