산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

Modbus, MKR WiFi 1010 및 RS485를 통한 에너지 청구서 모니터링

구성품 및 소모품

Arduino MKR WiFi 1010
× 1
Arduino MKR 485 Shield
× 1
USB-A-마이크로 USB 케이블
× 1
USB 전원 공급 장치
모든 전원 공급 장치와 호환됩니다. MKR485 실드는 7-24V 벅 컨버터가 내장되어 있습니다.
× 1
트위스트 단일 쌍 차폐 케이블
× 1

필요한 도구 및 기계

Digilent Mastech MS8217 자동 범위 디지털 멀티미터
전기 가위
작은 일자 드라이버
MKR485 터미널용
중간 크기 십자 드라이버

앱 및 온라인 서비스

홈 어시스턴트
Arduino 웹 편집기
MQTT

이 프로젝트 정보

집을 더 똑똑하게 만들고 싶다면 아마도 월별 청구서(예:에너지, 가스 등...)부터 시작하고 싶을 것입니다. 일부에서는 지구, 지갑 및 결론에 도움이 됨이라고 말합니다. . 오픈 소스 하드웨어는 가정 환경에서 지속 가능성에 도달하는 우리의 방법입니다! 이 아이디어를 통해 MQTT를 통해 데이터를 노출하므로 모든 홈 자동화 소프트웨어와 쉽게 통합할 수 있는 간단하고 안전한 솔루션을 구축할 수 있었습니다(이 경우 Home Assistant에 통합하는 방법을 알려드립니다).

개요

전기 에너지 소비량을 측정하기 위해 Finder Energy Meter를 사용하기로 결정했습니다. Finder Energy Meter는 DIN 레일용으로 설계되었으며 우리 집의 메인 캐비닛에 완벽하게 들어맞기 때문입니다. 이 제품의 멋진 점은 RS485 Modbus가 있다는 것입니다. 인터페이스, Arduino와 정말 쉽게 대화할 수 있게 해주는 산업 표준 통신 프로토콜입니다. 실제로 Arduino는 공식 방패인 MKR485를 출시했습니다. 프로토콜을 디코딩하는 두 개의 라이브러리. 메인 보드로 Arduino MKR WiFi를 선택했습니다. 1010, MKR 폼 팩터를 공유하고 WiFi 연결이 있기 때문입니다.

설정

경고! 집 전기 시스템 취급에 대한 국가 규정을 확인하고 치명적일 수 있으므로 각별히 주의하십시오! 모르는 경우 어떻게, 전기 기술자에게 전화하세요. 첫 번째 단계는 전기 캐비닛에 미터를 설치하는 것입니다. 안전한 환경에서 작업하려면 시스템 앞에 있는 전기 단자의 전원을 끕니다 터미널 사이에 전압이 없는지 멀티미터로 다시 확인 .

그런 다음 캐비닛 내부에 에너지 미터를 놓고 메인 차단기의 라이브 및 중성선을 미터의 입력에 연결합니다. 색상 규칙을 사용하는 것을 기억하십시오(EU에서는 중성선은 파란색, 라이브는 갈색/검정색/회색). 출력은 시스템의 나머지 부분에 연결되어야 합니다.

완료? RS485 연결을 나사로 조일 때입니다! 일반적으로 전화선에 사용되는 접지가 있는 꼬인 단일 쌍 케이블을 사용합니다. 이 케이블을 사용하면 장거리(1.2km)까지 전송할 수 있습니다. 그러나 우리는 캐비닛을 빠져나오고 arduino를 접근 가능한 장소에 놓을 만큼 충분히 긴 케이블을 사용합니다.

RS485 인터페이스는 터미널 A, B 및 COM의 이름을 지정합니다.

MKR 실드는 전이중 통신도 지원하기 때문에 Y와 Z라는 두 개의 다른 터미널이 표시됩니다. 데이터시트에서 반이중 통신이 Y와 Z에서만 발생한다는 것을 알고 있기 때문에 여기에서 케이블의 다른 쪽 끝을 조이겠습니다. 터미널. COM 단자는 ISOGND에 연결해야 합니다. 우리는 반이중 연결을 사용하고 케이블링은 P2P이므로 설정과 일치하도록 MKR485 실드의 스위치를 설정해야 합니다. HALF(2를 OFF)로 설정하고 YZ(3 켜짐); 첫 번째 것은 중요하지 않습니다. 종단은 간섭을 줄이기 위해 두 데이터 단자를 연결하는 저항입니다.

이거 야. 이제 캐비닛을 닫고 소프트웨어 측면에 집중할 수 있습니다!

소프트웨어

컴퓨터를 시작하고 IDE를 엽니다. Arduino IDE 또는 Arduino Create Editor를 사용할 수 있습니다. 코드는 다음 요청을 충족합니다:

<울>
  • Modbus 통신,
  • WiFi 관리
  • MQTT 프로토콜
  • Modbus는 산업용 센서 및 기계용 오픈 소스 프로토콜입니다. 아두이노가 모드버스를 말하게 하기 위해 우리는 아두이노 모드버스 라이브러리를 사용할 것입니다. 이 라이브러리는 모든 핸들러를 포장하고 모든 Modbus 장치를 매우 빠르게 연결할 수 있도록 합니다. 미터의 데이터 시트를 따라 레지스터를 읽을 것이기 때문에 기능 코드, 레지스터 주소 및 레지스터 크기와 같은 필요한 모든 정보를 단어로 찾을 수 있습니다. 그러나 더 명확하게 하기 위해 Modbus의 작동 방식을 설명하겠습니다.

    Modbus 메시지는 다음과 같은 간단한 구조를 따릅니다.

    <코드>01 03 04 00 16 00 02 25 C7

    0x01 기기 주소 입니다.

    0x03 함수 코드입니다. 데이터를 읽거나 쓸지 여부를 장치에 알려주는 *이 경우 홀딩 레지스터 읽기

    0x04 바이트 수00 16의 경우 - 4바이트의 레지스터 주소를 보냅니다. (00 16) 읽고 싶은 내용을 기기에 알려줍니다.

    00 02 - 레지스터의 크기 (00 02) 말로 (모든 단어의 길이는 2바이트입니다)

    마지막 4바이트는 CRC 코드입니다. . 이 코드는 이전 바이트에 대한 수학 함수에서 생성되므로 메시지가 올바르게 수신되었는지 확인합니다.

    Arduino에서 이 모든 것은 if 상태:

    // 제작자 Alberto Perro - Officine Innesto//// 레지스터를 보유하는 모드버스 장치에서 정수 읽기float readCurrent(){ float ampere =0.; //다음 명령은 요청을 형식화하고 RS485를 통해 전송 if (!ModbusRTUClient.requestFrom(0x01, HOLDING_REGISTERS, 0x0016, 2)) { //Error Handling Serial.print("failed to read voltage! "); Serial.println(ModbusRTUClient.lastError()); } else { uint16_t word1 =ModbusRTUClient.read(); // 버퍼에서 MSW 읽기 uint16_t word2 =ModbusRTUClient.read(); // 버퍼에서 LSW 읽기 int32_t milliamp =word1 <<16 | 단어2; //검색하기 위해 단어를 결합합니다. int ampere =milliamp/1000.0; //암페어로 변환 } return 암페어;} 

    else 에서 부분에는 응답 핸들러가 있습니다.

    이 레지스터는 길이가 두 단어이므로 이진 수학으로 결합해야 합니다. 버퍼에서 단어를 읽고 부호 없는 정수 16비트 길이(2바이트 또는 워드)에 저장한 다음 부호 있는 정수 32비트 길이로 결합하여 첫 번째 단어를 왼쪽으로 비트시프트하고 또는 두 번째 단어 이상. 이 방법으로 mA 단위의 전류 측정값을 검색하고 이를 1000으로 나누면 암페어 단위의 전류가 있습니다.

    이 동일한 프로세스가 우리가 읽고자 하는 모든 것에 적용됩니다.

    나머지 코드는 MQTT 및 WiFi 네트워킹 처리 전용입니다.

    홈 어시스턴트 통합

    홈 어시스턴트에 미터를 추가하는 것은 매우 간단합니다. MQTT 브로커가 구성되어 있다고 가정하고(여기에 가이드가 있습니다), configuration.yaml 파일 아래에 새 정의를 추가하기만 하면 됩니다.

    센서:- 플랫폼:mqtt 이름:"주 전압" state_topic:"에너지/주/전압" unit_of_measurement:"V" 

    여기에 측정 이름, 읽을 MQTT 주제 및 수량의 측정 단위를 입력해야 합니다. 파일을 저장하고 구성을 확인한 다음 Home Assistant를 다시 로드하십시오. 이제 측정값이 메인 페이지에 나타납니다.

    Home Assistant는 그래프 생성을 처리하고 판독 값에 의해 트리거되는 프로세스를 자동화합니다. 이 튜토리얼은 끝났습니다. 이제 기능을 추가하고 자신의 목적에 맞게 사용자 정의하는 것은 귀하에게 달려 있습니다!

    <섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">

    코드

    Finder용 Modbus RTU-MQTT 브리지
    이 스케치는 파인더 에너지 미터와 mqtt 사이의 완전한 다리를 제공합니다. Casa Jasmina의 전기 비용 및 사용량을 모니터링하기 위해 개발되었습니다.

    제조공정

    1. Arduino 및 Raspberry Pi로 인터넷 제어 비디오 스트리밍 로봇 구축
    2. Arduino를 사용하여 모니터 Ambilight 만들기
    3. Arduino 에너지 모니터 및 데이터 로거를 구축하는 방법
    4. LCD 애니메이션 및 게임
    5. Arduino와 스마트폰을 사용한 DIY 전압계
    6. IoT를 사용한 심박수 모니터
    7. Arduino Temp. 3.2 디스플레이가 있는 모니터 및 실시간 시계
    8. Arduino Uno WiFi를 사용하는 WebServerBlink
    9. Arduino - 직렬을 통해 웹에 온도 보내기
    10. 에너지 형태:운동 에너지와 위치 에너지