Índice:

Leia Medidor de eletricidade e gás (belga / holandês) e faça upload para o Thingspeak: 5 etapas
Leia Medidor de eletricidade e gás (belga / holandês) e faça upload para o Thingspeak: 5 etapas

Vídeo: Leia Medidor de eletricidade e gás (belga / holandês) e faça upload para o Thingspeak: 5 etapas

Vídeo: Leia Medidor de eletricidade e gás (belga / holandês) e faça upload para o Thingspeak: 5 etapas
Vídeo: Read Analog meters (water, gas, electricity) - with Computer Vision 2024, Dezembro
Anonim
Leia Medidor de eletricidade e gás (belga / holandês) e faça upload para o Thingspeak
Leia Medidor de eletricidade e gás (belga / holandês) e faça upload para o Thingspeak
Leia Medidor de eletricidade e gás (belga / holandês) e faça upload para o Thingspeak
Leia Medidor de eletricidade e gás (belga / holandês) e faça upload para o Thingspeak

Se você está preocupado com seu consumo de energia ou apenas um pouco nerd, provavelmente deseja ver os dados de seu novo medidor digital sofisticado em seu smartphone.

Neste projeto, obteremos os dados atuais de um medidor digital de eletricidade e gás belga ou holandês e faremos o upload para o Thingspeak. Esses dados incluem o consumo de energia atual e diário e a injeção (se você tiver painéis solares), tensões e correntes e o consumo de gás (se um medidor digital de gás estiver conectado ao medidor de eletricidade). Por meio de um aplicativo, esses valores podem ser lidos em tempo real no seu smartphone.

Ele funciona para um medidor digital belga ou holandês que segue o protocolo DSMR (Dutch Smart Meter Requirements), que deve ser todos medidores recentes. Se você mora em outro lugar, infelizmente, seu medidor provavelmente usará outro protocolo. Receio que este Instructable seja um pouco restrito regionalmente.

Usaremos a porta P1 do medidor, que aceita um cabo RJ11 / RJ12, coloquialmente conhecido como cabo telefônico. Certifique-se de que o instalador do medidor ativou a porta P1. Por exemplo, para Fluvius na Bélgica, siga estas instruções.

Para processar os dados e fazer upload para a internet, usamos um ESP8266, que é um microchip barato com wi-fi embutido. Custa apenas algo em torno de 2 dólares. Além disso, ele pode ser programado usando o IDE do Arduino. Armazenamos os dados na nuvem no Thingspeak, que é gratuito para no máximo quatro canais. Para este projeto, usamos apenas um canal. Os dados podem ser exibidos em seu smartphone usando um aplicativo como o IoT ThingSpeak.

Partes:

  • Um ESP8266, como um nodemcu v2. Observe que o nodemcu v3 é muito largo para uma placa de ensaio padrão, então eu prefiro o v2.
  • Um cabo micro USB para USB.
  • Um carregador USB.
  • Um transistor NPN BC547b.
  • Dois resistores de 10k e um resistor de 1k.
  • Um conector de terminal de parafuso RJ12.
  • Uma placa de ensaio.
  • Fios de ligação.
  • Opcional: um capacitor 1nF.

No total, isso custa algo em torno de 15 euros no AliExpress ou similar. A estimativa leva em consideração que alguns componentes, como resistores, transistores e fios, vêm em quantidades muito maiores do que o necessário para este projeto. Então, se você já tem um kit de componentes, ele sai mais barato.

Etapa 1: Conhecendo o ESP8266

Escolhi o NodeMCU v2, pois dispensa solda e possui uma conexão micro USB que facilita a programação. A vantagem do NodeMCU v2 sobre o NodeMCU v3 é que ele é pequeno o suficiente para caber em uma placa de ensaio e deixar orifícios livres nas laterais para fazer conexões. Portanto, é melhor evitar o NodeMCU v3. No entanto, se você preferir outra placa ESP8266, tudo bem.

O ESP8266 pode ser facilmente programado usando o IDE do Arduino. Existem outros Instructables explicando isso em detalhes, então serei muito breve aqui.

  • Primeiro baixe o IDE do Arduino.
  • Em segundo lugar, instale o suporte para a placa ESP8266. No menu Arquivo - Preferências - Configurações, adicione o URL https://arduino.esp8266.com/stable/package_esp8266com_index.json aos URLs Adicionais do Gerenciador de Placa. Em seguida, no menu Ferramentas - Placa - Gerenciador de placas, instale o esp8266 pela comunidade esp8266.
  • Terceiro, selecione a placa mais próxima de seu ESP8266. No meu caso, escolhi NodeMCU v1.0 (Módulo ESP 12-E).
  • Por fim, selecione em Ferramentas - Tamanho do Flash, um tamanho que inclui SPIFFS, como 4M (1M SPIFFS). Neste projeto utilizamos o SPIFFS (SPI Flash File System) para armazenar valores de energia diários, para que não sejam perdidos caso o ESP8266 perca energia e mesmo quando for reprogramado.

Agora temos tudo pronto para programar o ESP8266! Discutiremos o código real em uma etapa posterior. Primeiro, faremos uma conta no Thingspeak.

Etapa 2: Crie uma conta e um canal do Thingspeak

Vá para https://thingspeak.com/ e crie uma conta. Assim que estiver logado, clique no botão Novo Canal para criar um canal. Nas configurações do canal, preencha o nome e a descrição como desejar. Em seguida, nomeamos os campos do canal e os ativamos clicando nas caixas de seleção à direita. Se você usar meu código inalterado, os campos são os seguintes:

  • Campo 1: pico de consumo hoje (kWh)
  • Campo 2: consumo fora do pico hoje (kWh)
  • Campo 3: pico de injeção hoje (kWh)
  • Campo 4: injeção fora do pico hoje (kWh)
  • Campo 5: consumo de corrente (W)
  • Campo 6: injeção de corrente (W)
  • Campo 7: consumo de gás hoje (m3)

Aqui, pico e fora de pico referem-se à tarifa de eletricidade. Nos campos 1 e 2 o consumo refere-se ao consumo líquido de eletricidade hoje: consumo de eletricidade hoje no período tarifário desde a meia-noite menos a injeção de eletricidade (produzida por painéis solares) hoje no período tarifário desde a meia-noite com um mínimo de zero. Isso significa que se hoje houvesse mais injeção do que consumo o valor seria zero. Da mesma forma, a injeção nos campos 3 e 4 se refere à injeção líquida de eletricidade. Os campos 5 e 6 indicam o consumo líquido e a injeção no momento atual. Finalmente o campo 7 é o consumo de gás desde a meia-noite.

Para referência futura, anote o ID do canal, a chave de API de leitura e a chave de API de gravação, que podem ser encontradas no menu Chaves de API.

Etapa 3: Construindo o Circuito Eletrônico

Construindo o Circuito Eletrônico
Construindo o Circuito Eletrônico
Construindo o Circuito Eletrônico
Construindo o Circuito Eletrônico

Nós lemos o medidor de eletricidade usando a porta P1, que usa um cabo RJ11 ou RJ12. A diferença é que o cabo RJ12 tem 6 fios enquanto o RJ11 tem apenas 4. Neste projeto não alimentamos o ESP8266 a partir da porta P1, então na verdade precisamos de apenas 4 fios, então um RJ11 seria suficiente.

Usei o breakout RJ12 mostrado na imagem. É um pouco largo e não há muito espaço ao redor da porta P1 no meu medidor. Ele se encaixa, mas é apertado. Como alternativa, você pode apenas usar um cabo RJ11 ou RJ12 e remover o conector em uma das extremidades.

Se você segurar o break-out como na imagem, os pinos são numerados da direita para a esquerda e têm o seguinte significado:

  • Pino 1: fonte de alimentação 5V
  • Pino 2: Solicitação de dados
  • Pino 3: Terra de Dados
  • Pino 4: não conectado
  • Pino 5: linha de dados
  • Pino 6: aterramento de energia

Os pinos 1 e 6 podem ser usados para alimentar o ESP8266, mas não testei isso. Você teria que conectar o pino 1 ao Vin do ESP8266, de modo que o regulador de tensão interno da placa seja usado para reduzir a tensão de 5 V para 3,3 V que o ESP8266 aceita. Portanto, não o conecte ao pino de 3,3 V, pois isso pode danificar o ESP8266. Além disso, a alimentação da porta P1 com o tempo esgotaria a bateria do medidor digital.

Definir o pino 2 alto sinaliza ao medidor para enviar telegramas de dados a cada segundo. Os dados reais são enviados pelo pino 5 com uma taxa de transmissão de 115200 para um medidor digital moderno (DSMR 4 e 5). O sinal é invertido (baixo é 1 e alto é 0). Para um tipo mais antigo (DSMR 3 e inferior), a taxa é 9600 baud. Para tal medidor, você deve alterar a taxa de transmissão no código do firmware da próxima etapa: alterar a linha Serial.begin (115200); na configuração ().

O papel do transistor NPN é duplo:

  • Reverter o sinal para que o ESP8266 possa entendê-lo.
  • Para alterar o nível lógico de 5 V da porta P1 para 3,3 V esperado pela porta RX do ESP8266.

Portanto, crie o circuito eletrônico na placa de ensaio como no diagrama. O capacitor aumenta a estabilidade, mas também funciona sem.

Não conecte o pino RX até que você tenha programado o ESP8266 na próxima etapa. Na verdade, o pino RX também é necessário para se comunicar por USB entre o ESP8266 e o computador.

Etapa 4: faça upload do código

Disponibilizei o código no GitHub, é apenas um arquivo: P1-Meter-Reader.ino. Basta fazer o download e abri-lo no IDE do Arduino. Ou você pode selecionar Arquivo - Novo e apenas copiar / colar o código.

Há algumas informações que você deve preencher no início do arquivo: o nome e a senha da WLAN a ser usada, e o ID do canal e a chave de API de gravação do canal ThingSpeak.

O código faz o seguinte:

  • Lê um telegrama de dados do medidor a cada UPDATE_INTERVAL (em milissegundos). O valor padrão é a cada 10 segundos. Normalmente, há um telegrama de dados do medidor a cada segundo, mas definir a frequência como alta sobrecarregará o ESP8266, de modo que ele não poderá mais executar o servidor da web.
  • Carrega os dados de eletricidade para o canal Thingspeak a cada SEND_INTERVAL (em milissegundos). O valor padrão é a cada minuto. Para decidir sobre essa frequência, leve em consideração que o envio de dados leva algum tempo (normalmente alguns segundos) e que há um limite para a frequência de atualização no Thingspeak para uma conta gratuita. São cerca de 8200 mensagens por dia, então a frequência máxima seria uma vez a cada 10 segundos se você não usar o Thingspeak para mais nada.
  • Carrega os dados do gás quando ele muda. Normalmente, o medidor atualiza os dados de consumo de gás apenas a cada 4 minutos ou mais.
  • O medidor acompanha o consumo total e os valores de injeção desde o início. Portanto, para obter o consumo diário e a injeção, o código salva os valores totais à meia-noite todos os dias. Em seguida, esses valores são subtraídos dos valores totais atuais. Os valores à meia-noite são armazenados no SPIFFS (SPI Flash File System), o que persiste se o ESP8266 ficar sem energia ou mesmo quando for reprogramado.
  • O ESP8266 executa um mini servidor da web. Se você abrir o endereço IP em seu navegador, terá uma visão geral de todos os valores atuais de eletricidade e gás. Estes são do telegrama mais recente e incluem informações que não são carregadas para o Thingspeak, como tensões e correntes por fase. A configuração padrão é que o endereço IP seja determinado dinamicamente pelo seu roteador. Mas é mais conveniente usar um endereço IP estático, que é sempre o mesmo. Neste caso, você deve preencher staticIP, gateway, dns e subnet no código e descomente a linha WiFi.config (staticIP, dns, gateway, subnet); na função connectWifi ().

Depois de fazer essas alterações, você está pronto para fazer o upload do firmware para o ESP8266. Conecte o ESP8266 através do cabo USB ao seu computador e pressione o ícone com a seta no IDE do Arduino. Se você não conseguir se conectar ao ESP8266, tente alterar a porta COM no menu Ferramentas - Porta. Se ainda não funcionar, é possível que você tenha que instalar manualmente o driver para a porta USB COM virtual.

Etapa 5: Teste

Após fazer o upload do firmware, desconecte o USB e conecte o fio RX do ESP8266. Lembre-se de que precisávamos do canal RX do ESP8266 para fazer o upload do firmware, então não o conectamos antes. Agora conecte o breakout RJ12 no medidor digital e reconecte o ESP8266 ao seu computador.

No IDE do Arduino, abra o Serial Monitor por meio do menu Ferramentas e certifique-se de que esteja definido como 115200 baud. Se você tiver que alterar a taxa de transmissão, talvez precise fechar e reabrir o Monitor serial novamente antes que ele funcione.

Agora você deve ver a saída do código no Monitor Serial. Você deve verificar se há mensagens de erro. Além disso, você deve ser capaz de ver os telegramas. Para mim, eles são assim:

/ FLU5 / xxxxxxxxx_x

0-0: 96.1.4 (50213) 0-0: 96.1.1 (3153414733313030313434363235) // Medidor de número de série hexadecimal 0-0: 1.0.0 (200831181442S) // Timestamp S: horário de verão (verão), W: não horário de verão (inverno) 1-0: 1.8.1 (000016.308 * kWh) // Pico de consumo líquido total 1-0: 1.8.2 (000029.666 * kWh) // Consumo líquido total fora do pico 1-0: 2.8.1 (000138,634 * kWh) // Injeção líquida de pico total 1-0: 2.8.2 (000042,415 * kWh) // Injeção líquida total fora de pico 0-0: 96.14,0 (0001) // Tarifa 1: pico, 2: fora do pico 1-0: 1.7.0 (00.000 * kW) // Consumo de corrente 1-0: 2.7.0 (00.553 * kW) // Injeção de corrente 1-0: 32.7.0 (235,8 * V) // Fase 1 tensão 1-0: 52.7.0 (237,0 * V) // Tensão da fase 2 1-0: 72.7.0 (237,8 * V) // Tensão da fase 3 1-0: 31.7.0 (001 * A) // Corrente da fase 1 1-0: 51.7.0 (000 * A) // Corrente da fase 2 1-0: 71.7.0 (004 * A) // Corrente da fase 3 0-0: 96.3.10 (1) 0-0: 17.0.0 (999,9 * kW) // Potência máxima 1-0: 31.4.0 (999 * A) // Corrente máxima 0-0: 96.13.0 () // Mensagem 0-1: 24.1.0 (003) // outros dispositivos no M-bus 0-1: 96.1.1 (37464C4F32313230313037393338) // Número de série gas mete r hexadecimal 0-1: 24.4.0 (1) 0-1: 24.2.3 (200831181002S) (00005.615 * m3) // Consumo total do carimbo de data / hora de gás! E461 // Soma de verificação CRC16

Se houver algo errado, você pode verificar se você tem os mesmos tags e você possivelmente terá que alterar o código analisando os telegramas na função readTelegram.

Se tudo funcionar, agora você pode alimentar o esp8266 com o carregador USB.

Instale o aplicativo IoT ThingSpeak Monitor em seu smartphone, preencha o ID do canal e Leia a chave de API e pronto!

Recomendado: