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

Modbus·MKR WiFi 1010·RS485로 가정용 전력량 모니터링 시스템 구축

부품 및 소모품

부품 수량 비고
아두이노 MKR WiFi 1010 1 MKR 폼팩터, WiFi 내장
아두이노 MKR 485 실드 1 RS485/RS422 변환, 7-24V 벅 컨버터 내장
USB-A to 마이크로 USB 케이블 1
USB 전원 어댑터 1 MKR 485 실드 벅 컨버터로 7-24V 입력 가능
트위스트 단일 쌍 쉴드 케이블 (전화선 타입) 1 RS485 통신용, 1.2km 장거리 전송 가능

필요 도구

앱 및 온라인 서비스

프로젝트 개요

스마트 홈을 진지하게 생각한다면 월간 요금(전기, 가스 등)부터 시작해야 합니다. "지구에도, 지갑에도, 비즈니스에도 좋다"는 말처럼 오픈소스 하드웨어로 지속가능한 홈 환경을 구축해봅시다. 본 프로젝트는 간단하고 안전한 솔루션으로, MQTT로 데이터를 노출해 어떤 홈 오토메이션 소프트웨어와도 쉽게 연동됩니다 (여기선 Home Assistant 예시).

시스템 개요

전력량 측정을 위해 파인더(Finder) 에너지 미터를 선택했습니다. DIN 레일 장착형으로 가정용 분전함에 딱 맞고, RS485 Modbus 인터페이스를 탑재해 산업 표준 프로토콜로 아두이노와 통신하기 쉽습니다. 아두이노 공식 MKR 485 실드와 두 라이브러리로 프로토콜 디코딩이 간단합니다. 메인 보드는 MKR 폼팩터 공유 및 WiFi 내장의 MKR WiFi 1010을 사용했습니다.

하드웨어 설치 (⚠️ 안전 필독)

경고! 국가별 전기 공사 규정을 확인하고 극히 주의하세요. 감전 위험이 치명적입니다. 모르면 전기기사에게 의뢰하세요.
  1. 분전함 차단기 내려서 전원 차단 → 멀티미터로 단자간 전압 없음 이중 확인
  2. 에너지 미터를 분전함 내 DIN 레일에 장착
  3. 메인 차단기에서 나온 활선(갈색/검정/회색)과 중성선(파란색)을 미터 입력단에 연결 (EU 색상 규약 준수)
  4. 미터 출력을 기존 회로(부하 측)에 연결
  5. RS485 통신선 연결: 트위스트 페어 케이블로 미터 A/B/COM 단자 ↔ MKR 485 실드 Y/Z/ISOGND 연결
    • 하프 듀플렉스 모드이므로 Y/Z만 사용, COM은 ISOGND와 연결
    • MKR 485 실드 스위치 설정: HALF(2번 OFF), 종단저항 Y-Z(3번 ON), 1번은 무관
  6. 분전함 닫고 아두이노를 접근 좋은 위치에 배치

Modbus·MKR WiFi 1010·RS485로 가정용 전력량 모니터링 시스템 구축

Modbus·MKR WiFi 1010·RS485로 가정용 전력량 모니터링 시스템 구축

Modbus·MKR WiFi 1010·RS485로 가정용 전력량 모니터링 시스템 구축

소프트웨어: Modbus RTU → MQTT 브리지

아두이노 스케치는 세 가지 역할을 수행합니다:

  1. Modbus RTU 마스터로 에너지 미터 레지스터 폴링
  2. WiFi 네트워크 관리 및 재접속
  3. MQTT 클라이언트로 브로커에 측정값 발행

Modbus 통신 원리 (핵심)

Modbus 메시지 구조 예시: 01 03 04 00 16 00 02 25 C7

아두이노 구현 예시 (전류 읽기)

// 알베르토 페로(Alberto Perro) - Officine Innesto 작성
float readCurrent() {
  float ampere = 0.0;
  // 요청 전송 및 응답 수신
  if (!ModbusRTUClient.requestFrom(0x01, HOLDING_REGISTERS, 0x0016, 2)) {
    Serial.print("전압 읽기 실패! ");
    Serial.println(ModbusRTUClient.lastError());
  } else {
    uint16_t word1 = ModbusRTUClient.read(); // 상위 워드 (MSW)
    uint16_t word2 = ModbusRTUClient.read(); // 하위 워드 (LSW)
    int32_t milliamp = (word1 << 16) | word2; // 32비트 정수로 조합
    ampere = milliamp / 1000.0; // mA → A 변환
  }
  return ampere;
}

같은 방식으로 전압, 전력, 역률, 적산 전력량(kWh) 등 미터 데이터시트의 모든 레지스터를 읽어 MQTT 토픽으로 발행합니다.

Home Assistant 연동

MQTT 브로커가 설정되어 있다고 가정할 때, configuration.yaml에 센서 정의만 추가하면 됩니다.

sensor:
  - platform: mqtt
    name: "Main Voltage"
    state_topic: "energy/main/voltage"
    unit_of_measurement: "V"
  - platform: mqtt
    name: "Main Current"
    state_topic: "energy/main/current"
    unit_of_measurement: "A"
  - platform: mqtt
    name: "Main Power"
    state_topic: "energy/main/power"
    unit_of_measurement: "W"
  - platform: mqtt
    name: "Total Energy"
    state_topic: "energy/main/energy"
    unit_of_measurement: "kWh"
    device_class: "energy"
    state_class: "total_increasing"

저장 → 설정 검사 → Home Assistant 재시작하면 대시보드에 실시간 그래프와 함께 나타납니다. 이후 자동화(예: 전력량 임계치 초과 알림, 태양광 연계 제어 등) 자유롭게 구성 가능.

Modbus·MKR WiFi 1010·RS485로 가정용 전력량 모니터링 시스템 구축

코드 저장소

Modbus RTU → MQTT 브리지 스케치 (파인더 미터용)
Casa Jasmina 전력 모니터링용으로 개발. 전체 코드는 깃허브 저장소 참고.

확장 포인트

제조공정

  1. 아두이노 & 라즈베리 파이로 인터넷 제어 영상 스트리밍 로봇 만들기
  2. 아두이노로 모니터 앰비라이트(Ambilight) 시스템 직접 만들기
  3. 아두이노 에너지 모니터 & 데이터 로거 만들기 – Dr. Wattson 보드 활용
  4. 아두이노 우노로 만드는 LCD 애니메이션 & 게임 기초
  5. 아두이노와 스마트폰으로 만드는 스마트 전압계 – 초간단 DIY 프로젝트
  6. 아두이노와 MAX30100으로 만드는 실시간 IoT 심박수 모니터
  7. 아두이노 듀(Due) + 3.2″ TFT로 만드는 실시간 시계 & 온도 모니터
  8. 아두이노 우노 와이파이 웹 서버: 브라우저로 LED 제어하기
  9. 아두이노 우노 & WiFi 실드로 웹에서 실시간 온도 모니터링 - 시리얼 통신 활용
  10. 운동 에너지와 위치 에너지 이해: 형태, 공식, 일상 사례