중앙난방과 아두이노 연동: OpenTherm 실드로 스마트 제어 구현
부품 및 소모품
| 부품 | 수량 |
| Arduino UNO | 1 |
| Arduino OpenTherm 실드 | 1 |
| 24V 파워 서플라이 | 1 |
프로젝트 개요
보일러가 언제 왜 가동되는지 궁금하셨나요? 아두이노로 난방 시스템을 자동화하고 싶으신가요? OpenTherm 실드가 그 해답입니다. OpenTherm 프로토콜 보일러를 아두이노로 모니터링하고 제어할 수 있게 해줍니다.
배경
작년 가스 보일러와 벽난로 조절기를 연동하고 싶었습니다. 제 BAXI 보일러와 온도조절기는 스마트한 편이라 벽난로도 같이 제어하고 싶었지만, 공식 BAXI 확장 모듈은 너무 비쌌습니다. 그래서 OpenTherm 게이트웨이를 직접 만들어 온도조절기와 보일러 간 통신을 가로채 알고리즘으로 보일러 점화 또는 벽난로 열 이용을 결정했습니다.
비슷한 니즈가 많은 분들이 계셔서, 누구나 쉽게 가정 난방을 제어할 수 있는 아두이노 실드 형태의 모듈을 제작하게 되었습니다.
실드의 활용 용도
- 자체 보일러 제작: 기존 OpenTherm 온도조절기와 연동하는 아두이노 기반 보일러 제작 (드문 케이스지만 가능)
- 자체 온도조절기 제작: 보일러와 가정 난방을 완전히 장악하는 아두이노 기반 온도조절기. 홈 오토메이션에 최적. 외부 5V 전원만 필요.
- 모니터 제작: 기존 보일러와 온도조절기 사이에 실드를 끼워 보일러 가동 시점과 방식을 모니터링. 무선 제어용으로 통신 가로채기도 가능.
- 게이트웨이/레귤레이터: 보일러와 온도조절기 양쪽과 통신하는 Man-in-the-middle 장치로, 양방향 메시지 포워딩하며 나만의 제어 알고리즘 삽입 가능.
획득 가능한 데이터 및 명령
- 실내 온도 / 설정 온도
- 난방수 온도 / 환수 온도
- 온수 온도*, 압력*, 유량*
- 외부 온도*
- 보일러 상태 (가동/정지/에러)
- 변조 레벨 (모듈레이션)
- 배기 온도*
- 보일러 가동 통계
* 보일러에 해당 액세서리가 장착된 경우에만 사용 가능
실드 제작
전자 회로는 PIC 마이크로컨트롤러 기반 OpenTherm 게이트웨이 프로젝트를 아두이노용으로 변환하고, 아두이노 우노 호환 레이아웃으로 설계했습니다. 회로도와 거버 파일로 직접 제작 가능하며, PCBWay 등에서 주문하거나 DIY 키트 구매도 가능합니다.
온도조절기로 활용하기
준비물: OpenTherm 보일러, 아두이노 우노/WeMos D1 등(핀 2, 3 인터럽트 지원 필요), 5V 전원(온도조절기 모드에서는 24V 불필요)
보일러를 실드에 연결하고 실드를 아두이노에 장착하면 프로그래밍 시작. Arduino OpenTherm IO 라이브러리에 통신 예제가 포함되어 있습니다.
모니터/게이트웨이/레귤레이터로 활용하기
준비물: OpenTherm 온도조절기, 24V 500mA 파워 서플라이
실드를 보일러와 온도조절기 버스 사이에 끼워 넣습니다. 통신이 끊기므로 아두이노에 게이트웨이 소프트웨어를 올려 온도조절기 명령을 보일러로, 보일러 응답을 온도조절기로 포워딩해야 합니다. 라이브러리에 훌륭한 예제가 있습니다.
게이트웨이는 온도조절기 요청을 수신해 파싱 후 보일러로 전달, 보일러 응답(800ms 내)을 다시 온도조절기로 보냅니다. 양쪽 모두 중간에 장치가 있음을 모릅니다. 이 사이에 메시지 캡처, 정보 추출, 요청/응답 변조/차단 등 커스텀 로직을 넣을 수 있습니다.
스마트 난방 시스템과 통신해 더 스마트하게 만드는 일이 정말 간단합니다. 다음 글에서는 제 OpenTherm 레귤레이터 실전 활용기를 다룰 예정입니다.
코드
OpenTherm IO 라이브러리 (아두이노용)
https://github.com/jpraus/arduino-opentherm
회로도
