Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Monitore sua conta de energia via Modbus, MKR WiFi 1010 e RS485

Componentes e suprimentos

Arduino MKR WiFi 1010
× 1
Arduino MKR 485 Shield
× 1
Cabo USB-A para Micro-USB
× 1
Fonte de alimentação USB
Qualquer fonte de alimentação compatível. A blindagem MKR485 tem um conversor buck de 7-24 V integrado.
× 1
Cabo blindado trançado de par único
× 1

Ferramentas e máquinas necessárias

Multímetro digital Digilent Mastech MS8217 Autorange
Tesouras para eletricista
Chave de fenda pequena
para terminais MKR485
Chave de fenda philips de tamanho médio

Aplicativos e serviços online

Assistente doméstico
Arduino Web Editor
MQTT

Sobre este projeto


Se você realmente deseja tornar sua casa mais inteligente, provavelmente vai querer começar com suas contas mensais (ou seja, energia, gás, etc ...). Como alguns dizem, Good for Planet, The Wallet and The Bottom Line . O hardware de código aberto é a nossa maneira de alcançar a sustentabilidade no ambiente doméstico! Esta ideia levou-nos a construir uma solução simples e segura, fácil de integrar com qualquer software de domótica, uma vez que expõe dados sobre MQTT (no nosso caso vamos mostrar-lhe como integrá-lo ao Home Assistant).





Visão geral


Para medir o consumo de energia elétrica, optou-se pelo uso do Finder Energy Meter, pois é projetado para uso em trilho DIN e se encaixa perfeitamente no gabinete principal de nossa casa. O legal desse produto é que ele tem um Modbus RS485 interface, um protocolo de comunicação padrão industrial que torna a conversa com um Arduino realmente fácil. Na verdade, o Arduino lançou um escudo oficial, o MKR485 e duas bibliotecas para decodificar o protocolo. Como placa principal, escolhemos o Arduino MKR WiFi 1010, uma vez que compartilha o fator de forma MKR e tem conectividade wi-fi.





Configuração


Aviso! Verifique os regulamentos de seu país sobre como lidar com o sistema elétrico de sua casa e seja extremamente cuidadoso porque pode ser mortal! Se você não sabe como , chame um eletricista. O primeiro passo é instalar o medidor em seu quadro elétrico. Para garantir que você esteja trabalhando em um ambiente seguro, desligue o terminal elétrico antes do sistema e verifique com o multímetro se não há tensão entre os terminais .

Em seguida, coloque o medidor de energia dentro do gabinete e conecte os fios vivo e neutro do disjuntor principal à entrada do medidor, lembre-se de usar a convenção de cores (azul para neutro e marrom / preto / cinza para vivo na UE). A saída deve ser conectada ao resto do sistema.

Feito? É hora de parafusar a conexão RS485! Usaremos cabo de par simples trançado com aterramento, normalmente usado para linhas telefônicas. Com este cabo você pode transmitir em longa distância (1,2 km). No entanto, usamos apenas um cabo longo o suficiente para sair do gabinete e colocar o arduino em um local acessível.

A interface RS485 denomina seus terminais A, B e COM.

Como a blindagem MKR também suporta Full Duplex, você verá dois outros terminais, Y e Z. Aqui vamos aparafusar a outra extremidade do cabo, pois sabemos pela ficha técnica que a comunicação half duplex acontece apenas em Y e Z terminais. O terminal COM deve ser conectado ao ISOGND. Como usamos uma conexão half duplex e o cabeamento é ponto a ponto, temos que configurar as chaves na blindagem MKR485 para corresponder à nossa configuração: configuramos HALF (2 para OFF) e terminação em YZ (3 para ON); o primeiro não importa. A terminação é uma resistência conectando os dois terminais de dados, para amortecimento de interferências.

É isso. Agora você pode fechar o gabinete e se concentrar no lado do software!





Software


Inicie o seu computador e abra o seu IDE. Você pode usar o Arduino IDE ou o Arduino Create Editor. O código está atendendo às seguintes solicitações:
  • comunicação Modbus,
  • gerenciamento de WiFi
  • protocolo MQTT

Modbus é um protocolo de código aberto para sensores e máquinas industriais. Para fazer o Arduino falar Modbus, vamos usar a biblioteca Arduino Modbus. Esta biblioteca reúne todos os manipuladores e torna a conexão de qualquer dispositivo Modbus muito rápida. Como vamos ler os registros, seguindo o datasheet do medidor, podemos encontrar todas as informações que precisamos como códigos de função, endereço do registro e tamanho do registro em palavras. Mas para deixar mais claro, vamos explicar como o Modbus funciona:

As mensagens do Modbus seguem uma estrutura simples:

01 03 04 00 16 00 02 25 C7

0x01 é o endereço do dispositivo

0x03 é o Código de Função que diz ao dispositivo se queremos ler ou escrever dados * neste caso, ler registros de retenção

0x04 para Contagem de Bytes00 16 - Enviamos 4 bytes de endereço de registro (00 16) que diz ao dispositivo o que queremos ler

00 02 - t uando o tamanho do registro (00 02) em palavras (cada palavra tem 2 bytes de comprimento)

Os últimos 4 bytes são código CRC . Este código é gerado a partir de uma função matemática sobre os bytes anteriores, o que garante que a mensagem foi recebida corretamente.

No Arduino, todas essas coisas são tratadas no if doença:
  // Criado por Alberto Perro - Officine Innesto //// Lê o inteiro de um dispositivo modbus segurando registradoresfloat readCurrent () {float ampere =0 .; // próximo comando formatar a solicitação e enviá-la por RS485 if (! ModbusRTUClient.requestFrom (0x01, HOLDING_REGISTERS, 0x0016, 2)) {// Tratamento de erro Serial.print ("falha ao ler a tensão!"); Serial.println (ModbusRTUClient.lastError ()); } else {uint16_t word1 =ModbusRTUClient.read (); // lendo MSW do buffer uint16_t word2 =ModbusRTUClient.read (); // lendo LSW do buffer int32_t miliampère =palavra1 <<16 | palavra2; // junte as palavras para recuperar int ampere =milliamp / 1000.0; // converter para ampere} retornar ampere;}  

No else parte temos o manipulador de resposta.

Como esse registro tem duas palavras, temos que juntá-las com matemática binária. Lemos as palavras do buffer e as armazenamos em um inteiro sem sinal de 16 bits de comprimento (2 bytes ou uma palavra), depois as juntamos em um inteiro com sinal de 32 bits de comprimento deslocando a primeira palavra à esquerda e aplicando um OU sobre a segunda palavra. Desta forma recuperamos a medição da corrente em mA, dividindo-a por 1000, temos a corrente em ampere.

Este mesmo processo é adaptado a tudo o que queremos ler.

O resto do código é dedicado a lidar com redes MQTT e WiFi.





Integração com o Assistente Doméstico


Adicionar o medidor ao Home Assistant é bastante simples. Supondo que você tenha um broker MQTT configurado (aqui está o guia), tudo o que você precisa fazer é incluir novas definições no arquivo configuration.yaml.
  sensor:- plataforma:mqtt name:"Main Voltage" state_topic:"energy / main / voltage" unit_of_measurement:"V"  

Aqui você deve colocar o nome da medida, o tópico MQTT a ser lido e a unidade de medida da quantidade. Salve o arquivo, verifique a configuração e recarregue o Home Assistant, agora as medidas aparecerão na página principal.

O Home Assistant se encarregará de criar gráficos e automatizar processos acionados por suas leituras. Este tutorial terminou, agora cabe a você adicionar recursos e personalizá-lo para seus próprios propósitos!

Código

Modbus RTU para ponte MQTT para Finder
Este esboço fornece uma ponte completa entre o medidor de energia do localizador e o mqtt. Desenvolvido para monitorar custos e uso de eletricidade na Casa Jasmina.

Processo de manufatura

  1. Construa seu robô de streaming de vídeo controlado pela Internet com Arduino e Raspberry Pi
  2. Faça Monitor Ambilight usando Arduino
  3. Como construir um monitor de energia Arduino e registrador de dados
  4. Animação de LCD e jogos
  5. Faça você mesmo voltímetro usando Arduino e Smartphone
  6. Monitor de freqüência cardíaca usando IoT
  7. Arduino Temp. Monitor e relógio em tempo real com tela 3.2
  8. WebServerBlink usando Arduino Uno WiFi
  9. Arduino - Enviar temperatura para a Web via serial
  10. Formas de energia:energia cinética e potencial