Medidor Energia Datalogger com PZEM004T e NodeMCU-ESP12

Diário de Projeto de Medidor de Energia Elétrica e Consumo usando Módulos PZEM004T, Arduino UNOR3 e ESP8266.

Amigos, garajistas.

Criei esse tópico do Fórum pra ir postando dúvidas e progressos com esses carinhas aí citados no título.

E sim, estou usando isso pra um projeto de TCC.

Situação anterior:

1. Consegui conectar e ler um módulo PZEM004T por meio serial, usando sua própria biblioteca e pequenos ajustes no código exemplo em um Arduino UNO R3.

2. Consegui fazer a leitura dos mesmos dados lidos no MonitorSerial para um display LCD16x2, também com uso de biblioteca e por meio de conexão serial (tenho uma plaquinha de hardware pra isso, para economizar pinos).

3. Configurei um RTC (Real Time Clock) para sincronizar os valores lidos com a hora:min:seg aproximados em que aconteceram, permitindo assim construir curvas de carga de uma residência ou aparelho.

4. Consegui gravar os dados lidos num cartão SD, em modo .csv e consegui ler num "Excel da vida". O código de um exemplo permitia não só escrever dados como criar arquivos diferentes a cada desligamentos das placas, evitando assim que sobrescrevesse por cima de dados antigos. Ainda preciso descobrir se tem como continuar a escrever no mesmo arquivo, mas na linha onde parou (mas se as placas não perderem alimentação, esse não será um problema). E também criar um novo arquivo a cada 24h.

Aqui tem um resumo em vídeo.

Situação atual:

1. Quero fazer a mesma coisa, só que apenas usando o módulo NodeMCU ESP8266-12F. Já descobri blogs, postagens ou vídeos sobre isso, inclusive uns específicos usando o mesmo módulo PZEM. A versão ESP que estou usando é ESTA. Também tenho as versões ESP201 e ESP07 (esta sem PCI)

2. Já consegui usar a IDE para programar meu módulo ESP e ele está funcional.

3. Não tive sucesso em fazer um "HelloWorld" tentando carregar um pequeno script html para um PC (Windows 7) e nem para meu Celular Samsung (Android 7, v8.1). O ESP até fica visível como conexão, mas não carrega a página atrás do navegador. Não entendo muito desse negócio de TCP/IP, conexões Internet e programação de páginas, então vai demorar um pouco para descobrir o problema. Minha principal hipótese é que as portas estejam protegidas

4. Vou usar armazenamento de dados localmente (ainda preciso definir melhor isso) e transmitir em pacotes a cada 60s ou mais para um Broker (escolhi esse método por indicação dos amigos garajistas aqui e perceber que atende ao que preciso). Já estive olhando como funciona: alguns serviços, configurações e APPs Android, que citaram como melhores. Não preciso transmitir e interpretar exatamente o que tem no SD (isso será uma melhoria futura, com certeza, por poderá ficar tanto como backup quanto debug dos dados via navegador).

Se precisarem de mais informações até aqui, basta perguntarem, porque são muito blocos distintos de projeto e seria muita coisa linkar tudo aqui, agora.

Exibições: 5221

Anexos

Responder esta

Respostas a este tópico

Bom dia , 

Veja isso :

Medidor do Consumo Elétrico com Arduino e Módulo PZEM004T

http://josecintra.com/blog/medidor-consumo-eletrico-arduino-pzem004t/

Obrigado, José.

Foi com base no código e instruções desse blog do Cintra que comecei a fazer o medidor usando Arduino. Tive que fazer uma pequena alteração no código para conexão serial, mas depois que funcionou fazer todo o resto foi só seguir os exemplos das bibliotecas.

Ele cita algo de ESP lá também, vou dar uma revisitada pra ver se não deixei passar alguma boa dica nessa plataforma.

Murta e Gerson, bom dia!

Ainda não usei esse módulo com o NodeMCU pois, por padrão, ele trabalha com 5V.

A documentação cita uma forma de adaptá-lo para trabalhar com 3.3V, mas ainda não tive tempo para testar.

Teria que alterar o R17, conforme figura abaixo:

Se for trabalhar com Arduino e ESP seria mais fácil, pois o PZEM poderia ser ligado no Arduino.

Outras formas que poderia ser testadas.

- Usar uma fonte separada para o módulo

- Usar um conversor de nível lógico

Olá, Cintra! Mais uma vez obrigado pelo material do Blog, me ajudou muito no pontapé inicial.

Eu descobri num outro blog, pelo menos 3 maneiras de interconectar o PZEM004T num ESP.

Aqui o artigo. Mas também não testei nenhum adelas ainda, o que deve ocorrer em breve.

Espero que seja útil aos demais. No mesmo blog tem um projeto completo, e ele tem um canal no YT, usando interfaces WEB e Android.

ATUALIZANDO O PROJETO

É com alegria que informo que consegui fazer o que pretendia com o ESP8266-12E na versão NodeMCU Lolin (é provável que nos outros também daria, mas neste tem mais portas ligadas a pinos e fica mais fácil mexer na protoboard).

Usei as configurações ensinadas em diversos blogs de como configurar a IDE do Arduino para gravar no ESP.

AQUI tem um resumo em vídeo.

Situação atual:

1. Precisei corrigir erros de interpretação dos valores lidos pelo NodeMCU vindos do PZEM. A biblioteca com certeza é incompatível ou então algum ajuste de hardware (linguagem de baixo nível) precisa ser usada no ESP para este não devolver valores espúrios. Fiz isto a partir de laços de comparação de 3 leituras seguidas e mantendo sempre a maior, para garantir que o erro não era falta de energia e sim dados perdidos.

2. Após a parte mais difícil, que foi ajustar as leituras, o restante foi relativamente fácil. Usei um módulo genérico de leitor de cartões SD, e a biblioteca <SD.h> para gravar os dados. Usei também o módulo RTC DS3231 com as bibliotecas <Wire.h> e <RTCLib.h> (ainda não testei se a primeira realmente precisa estar declarada se estiver instalada na IDE.

3. Fiz testes com a plataforma e aplicativo móvel Blynk de serviços MQTT. Ao conseguir conexão e resultados satisfatórios, juntei todos os códigos em um e estão funcionais. Todos os valores de tensão, corrente, potência ativa e energia consumida podem ser acessado do meu celular com o app instalado. As configurações do Blynk, bem como o pacote de configuração e exemplos de aplicação eu encontrei no próprio site e alguns vídeos tutoriais na internet.

4. Para facilitar manobras e configurações, criei uma "sub-Rede" doméstica para acesso e conexão com a Internet com um roteador Multilaser N150 comum (que eu tinha disponível) e fiz todas as configurações de Wi-Fi do ESP com base nele.

5. Vou implementar agora o display LCD, LEDs de monitoramento dos processos e fazer uma comparação dos dados lidos pelo meu protótipo com as leituras de um Analisador de Qualidade de Energia Fluke 43B. A ideia não é fazer testes em diversos ambientes, mas apenas ter uma ideia de como os valores se comportam diante de cargas reais num ambiente residencial unifamiliar.

6. Após tudo concluído (ou da melhor maneira que ficar) pretendo disponibilizar o projeto GitHub.

ATUALIZANDO...

O RTC deu problema.

O DS3231 é maravilhoso em recursos, além de ter vindo com uma bateria recarregável (sim, ele tem esse opção de dar carga, e é preciso ter cuidado, modificando o circuito fisicamente se for usar baterias CR comuns, pois podem vazar ou explodir depois de um tempo). Mas o problema não é este...

O módulo citado funcionou muito bem tendo apenas ele conectado ao NodeMCU, mas ao incluir a biblioteca do PZEM algo acontece e ele simplesmente não tem sua memória de data e hora acessados (ou atualizados).

Assim, ao desligar ou resetar o NodeMCU este perde contato com o RTC e não mais lê sua data e hora da EEPROM. Fiz várias análises no módulo, na alimentação e mudei pra diversas bibliotecas Arduino que funcionaram para o ESP, e ainda sem sucesso.

Estou agora tentando usar os recursos do próprio NTP do BLYNK pra resolver esse problema, pois meu tempo pra resolver isso está cada vez menor.

Resumindo, ao usar esse módulo junto ao PZEM eu fico sem a data e hora corretas pra gravar no SD card, inviabilizando meu datalogger...

Boa tarde , informe o diagrama da montagem do seu projeto.

Com certeza deve ser um conflito no barramento I2C que é usado pelo RTC DS3231.

Pegando a hora na WEB :

http://blog.eletrogate.com/nodemcu-esp12-usando-arduino-ide-2/

Obrigado, José. Vou olhar o link... as referências parecem interessantes

Eu não tinha mais nada ligado nas portas D1 e D2 do node quando notei esse problema... é estranho mesmo assim, porque o SD card usa barramento SPI e o módulo PZEM está ligado nos pinos D7 e D8 (e por padrão ele usaria barramento UART)...

Pior que sozinho o RTC não tem problema algum, essa biblioteca do PZEM que estraga com tudo no ESP (ao menos é o que parece, pois basta incluir ela e rodar os códigos que coisas estranhas começam a acontecer).

6. GitHub:

Meu trabalho foi postado integralmente lá.
Estou postando o LINK como prometido.

Não encontrei o diagrama da montagem completa...

Vai ser adicionado na conclusão (daqui um mês ou mais, provavelmente).

O artigo escrito também será postado o finalizado (tem muita coisa faltando e ainda não corrigida naquele ali), mas postei assim mesmo pra ir dando tempo de comentários...

Ainda não está pronto... essa é uma demanda que está na minha lista de conclusão do projeto:
- Digrama de fiação;

Como estou tendo dificuldades (quando acerto um bloco outro para de funcionar) não tive tempo ainda de fazer o diagrama todo... até porque não estou simulando isso em lugar algum.

Ok , se não tem o diagrama pelo menos nos informe o Sketch.

Os aquivos RAR do seu link estão corrompidos. 

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço