Wiznet makers

Lihan__

Published March 20, 2026 ©

46 UCC

8 WCC

3 VAR

0 Contests

0 Followers

0 Following

Original Link

micro bacnet bridge

BACnet MS/TP to BACnet/IP bridge running on WIZnet W5500-EVB-Pico-PoE (RP2040) or W5500-EVB-Pico2 (RP2350).

COMPONENTS
PROJECT DESCRIPTION

01 — 이 프로젝트는 무엇인가?

빌딩 자동화 시스템(BAS)에는 오래된 문제가 있습니다. 건물 안의 냉난방기, 환기 팬, 조명, 화재 경보기들은 BACnet MS/TP라는 프로토콜로 통신합니다. RS-485 시리얼 케이블로 연결되는 이 프로토콜은 수십 년 된 레거시 표준입니다.

반면 현대 건물 관리 소프트웨어와 클라우드 시스템은 BACnet/IP를 씁니다. 이더넷 기반의 현대적 프로토콜입니다.

두 프로토콜은 서로 직접 통신하지 못합니다. 그 사이를 잇는 브릿지 장비가 필요한데, 상용 BACnet 브릿지는 수백만 원을 호가합니다.

이 프로젝트는 WIZnet W5500-EVB-Pico 보드 하나로 그 브릿지를 구현합니다. PoE 지원 RJ45 케이블 하나만 꽂으면 전원과 네트워크가 동시에 해결됩니다.


02 — 시스템은 어떻게 동작하나?

 
[BACnet MS/TP 기기들]
  냉난방기 / 환기팬 / 조명 / 화재경보기
    ↕  RS-485 시리얼 (SP3485 트랜시버)
[W5500-EVB-Pico 브릿지]
  Core 1 (C) : MS/TP 마스터 FSM
  Core 0 (Rust) : 이더넷 + 모든 네트워크 서비스
    ↕  W5500 유선 이더넷 (PoE)
[BACnet/IP 네트워크]
  건물 관리 소프트웨어 / SCADA / Home Assistant

 

이 브릿지의 핵심 설계는 듀얼코어 분리입니다. RP2040/RP2350의 두 개 코어를 각각 다른 역할로 완전히 분리했습니다.

 

Core 1 (C언어 / bacnet-stack) RS-485 위의 MS/TP 마스터로 동작합니다. 현장 기기들과 직접 통신하며 포인트 값을 읽고 씁니다.

Core 0 (Rust / embassy-rs) W5500으로 BACnet/IP, HTTP, MQTT, mDNS, SNMP, NTP, Syslog를 동시에 처리합니다. 두 코어는 공유 링 버퍼와 스핀락으로 데이터를 주고받습니다.

 

폴리글랏 프로그래밍 - 각 목적에 가장 적합한 언어를 선택해 조합하는 방식

정밀도(C): 수십 년간 검증된 C 라이브러리로 마이크로초(ms) 단위의 까다로운 MS/TP 통신 타이밍을 완벽하게 보장합니다.

보안성(Rust): 해킹이나 버그에 취약한 외부 네트워크(IP) 영역을 Rust로 방어하여 시스템 전체의 안정성을 극대화합니다.

효율성: 기존 자산(C 스택)은 그대로 쓰면서, 최신 기술(Rust 비동기)을 결합해 수백만 원짜리 장비급 성능을 단돈 만 원대 보드로 구현합니다.


03 — 왜 W5500-EVB-Pico인가?

🔷 PoE — 케이블 하나로 전원 + 네트워크

건물 자동화 현장에서 별도 전원 공급은 번거롭습니다. 천장 위, 덕트 옆, 전기실 구석에 설치되는 브릿지 장치에 전원 콘센트를 따로 연결하기 어렵습니다. W5500-EVB-Pico-PoE는 RJ45 케이블 하나로 802.3af PoE 전원과 이더넷을 동시에 공급받습니다. 설치가 극적으로 단순해집니다.

🔷 W5500 하드웨어 TCP/IP 스택

BACnet/IP는 UDP 47808 포트를 사용하는 실시간 프로토콜입니다. RP2040의 소프트웨어 TCP/IP 스택으로 처리하면 MS/TP 마스터 타이밍에 영향을 줄 수 있습니다. W5500의 하드웨어 스택이 네트워크 처리를 MCU에서 분리해 실시간성을 보장합니다.

🔷 듀얼코어 — MS/TP 타이밍을 지키기 위해

MS/TP 프로토콜은 토큰 패싱 방식으로 마이크로초 단위 타이밍이 중요합니다. 네트워크 처리와 같은 코어에서 실행하면 타이밍이 깨집니다. Core 1 전체를 MS/TP 전용으로 격리한 설계가 이 문제를 해결합니다.

 소프트웨어 TCP/IP + 단일 코어W5500 + 듀얼코어 분리
MS/TP 타이밍간섭 가능격리 보장
PoE 지원별도 전원 필요RJ45 하나로 해결
네트워크 부하MCU 점유하드웨어 오프로드

04 — 핵심 구성 요소

🏗️ W5500-EVB-Pico-PoE / W5500-EVB-Pico2

WIZnet이 만든 RP2040/RP2350 기반 개발 보드입니다. W5500 이더넷 칩과 802.3af PoE 회로가 내장되어 있습니다. RS-485 트랜시버(SP3485)를 UART1에 연결하면 MS/TP 마스터로 동작합니다.

🦀 Rust + embassy-rs (Core 0)

비동기 임베디드 프레임워크 embassy-rs로 작성된 Core 0 펌웨어입니다. BACnet/IP, HTTP 서버, MQTT, mDNS, SNMP, NTP, Syslog, OTA 업데이트를 단일 비동기 런타임에서 동시 처리합니다. bridge-core 라이브러리는 no_std 환경에서 호스트(Mac/Linux)에서도 테스트 가능하도록 설계되어 287개 단위 테스트를 포함합니다.

⚙️ C + bacnet-stack (Core 1)

검증된 오픈소스 BACnet C 라이브러리를 Core 1에서 실행합니다. MS/TP 마스터 FSM이 RS-485 위에서 현장 기기들과 직접 통신합니다.

🖥️ SvelteKit 웹 대시보드

브라우저에서 접속하는 실시간 관리 UI입니다. Server-Sent Events(SSE)로 포인트 값이 실시간으로 업데이트되고, 변경된 값은 초록색으로 깜빡입니다. 포인트 쓰기, 스케일/오프셋 설정, MQTT Home Assistant 연동까지 웹에서 모두 처리합니다.

📡 MQTT + Home Assistant 자동 발견

포인트 값을 MQTT로 발행하고 Home Assistant 자동 발견 프로토콜을 지원합니다. 설정한 prefix로 토픽이 자동 생성되어 HA에서 즉시 엔티티로 나타납니다.


05 — 지원하는 네트워크 서비스

이 브릿지 하나가 제공하는 서비스 목록이 인상적입니다.

서비스포트용도
BACnet/IPUDP 47808MS/TP ↔ BACnet/IP 브릿지
HTTP80웹 대시보드 + REST API
MQTT1883포인트 값 발행 + HA 연동
mDNS5353bacnet-bridge.local 자동 발견
SNMP v2c161네트워크 모니터링 시스템 연동
NTP-시간 동기화
Syslog-중앙 로그 서버로 로그 전송
OTAHTTP펌웨어 무선 업데이트

06 — 응용 시나리오

01. 중소형 빌딩 — 레거시 BAS를 클라우드로 연결

수십 년 된 MS/TP 기반 냉난방 제어 시스템을 교체하지 않고 BACnet/IP 네트워크에 연결합니다. 기존 설비를 그대로 두고 현대적인 건물 관리 소프트웨어에서 모니터링·제어할 수 있습니다. #레거시통합 #건물자동화 #HVAC

02. 스마트홈 고급형 — Home Assistant로 상업용 HVAC 제어

상업용 HVAC 장비의 BACnet MS/TP를 Home Assistant에 연결합니다. MQTT 자동 발견으로 온도, 습도, 팬 속도, 밸브 상태가 HA 엔티티로 자동 등록됩니다. #HomeAssistant #스마트홈 #HVAC

03. 데이터센터 — 냉각 시스템 실시간 모니터링

서버실 냉각 장비의 BACnet 포인트를 SNMP와 MQTT로 동시에 노출합니다. 기존 네트워크 모니터링 인프라(Zabbix, Grafana)와 바로 연동할 수 있습니다. #데이터센터 #냉각모니터링 #SNMP

04. 병원 / 제약 시설 — 환경 데이터 이력 관리

청정실, 수술실, 약품 보관실의 온도·습도·기압 포인트를 실시간으로 수집하고 MQTT로 데이터베이스에 저장합니다. 규제 기관 제출용 환경 데이터 이력을 자동으로 구축합니다. #병원 #청정실 #규제준수

05. 빌딩 에너지 관리 — 소비 패턴 분석

조명, 냉난방, 환기 장비의 BACnet 포인트를 MQTT로 수집해 에너지 소비 패턴을 분석합니다. PoE 단일 케이블로 각 층에 브릿지를 설치하면 층별 에너지 모니터링이 가능합니다. #에너지관리 #스마트빌딩 #탄소중립


07 — 확장 경로

단계내용현황
기본 브릿지MS/TP ↔ BACnet/IP 양방향 변환✅ 완료
웹 대시보드SSE 실시간 업데이트, 포인트 쓰기✅ 완료
MQTT + HAHome Assistant 자동 발견✅ 완료
OTA 업데이트HTTP로 펌웨어 무선 업데이트✅ 완료
Pico2 지원RP2350 (150MHz, 520KB RAM)✅ 완료
SNMP / Syslog엔터프라이즈 모니터링 연동✅ 완료
BACnet COVChange-of-Value 구독🔲 예정
TLS/HTTPS보안 통신🔲 가능성 있음

결론

수백만 원짜리 상용 BACnet 브릿지를 WIZnet 보드 하나가 대체한다.

건물 자동화 현장의 오래된 문제 — MS/TP와 BACnet/IP의 단절 — 를 PoE 한 줄로 해결합니다. Rust의 메모리 안전성과 embassy-rs의 비동기 런타임, 검증된 C bacnet-stack의 조합으로 엔터프라이즈급 안정성을 추구합니다. 287개 단위 테스트가 이를 뒷받침합니다.

클라우드 의존성이 없습니다. 모든 기능이 로컬에서 동작합니다.

  • ✅ BACnet MS/TP ↔ BACnet/IP 양방향 브릿지
  • ✅ PoE — RJ45 하나로 전원 + 네트워크
  • ✅ 듀얼코어 분리로 MS/TP 타이밍 보장
  • ✅ MQTT + Home Assistant 자동 발견
  • ✅ SNMP, Syslog, mDNS, NTP, OTA 내장
  • ✅ 287개 단위 테스트 포함 오픈소스 공개
  • ✅ 클라우드 없는 완전 로컬 동작

Q&A

Q. BACnet이란 무엇인가요? BACnet(Building Automation and Control Networks)은 건물 자동화 시스템을 위한 통신 표준 프로토콜입니다. ASHRAE와 ISO에서 표준화했으며 냉난방공조, 조명, 화재 경보, 엘리베이터 등 다양한 건물 설비 제어에 사용됩니다.

Q. BACnet MS/TP와 BACnet/IP의 차이는 무엇인가요? BACnet MS/TP는 RS-485 시리얼 케이블 위에서 동작하는 구형 프로토콜로 현장 기기 간 저속 통신에 사용됩니다. BACnet/IP는 이더넷 UDP 위에서 동작하는 현대적 프로토콜로 건물 관리 소프트웨어와 클라우드 시스템에서 주로 사용합니다. 두 프로토콜은 직접 호환되지 않아 브릿지가 필요합니다.

Q. PoE란 무엇이고 왜 중요한가요? PoE(Power over Ethernet)는 이더넷 케이블로 전원을 함께 공급하는 기술입니다. 건물 자동화 현장에서 브릿지 장치를 설치할 때 별도 전원 콘센트가 필요 없어 설치 비용과 복잡성을 크게 줄입니다. W5500-EVB-Pico-PoE는 802.3af 표준을 지원합니다.

Q. 왜 Rust로 작성했나요? 임베디드 환경에서 메모리 안전성을 컴파일 타임에 보장하기 위해서입니다. C로 작성된 MS/TP 스택과 Rust로 작성된 네트워크 스택을 듀얼코어로 분리해 각 언어의 강점을 활용했습니다. bridge-core 라이브러리는 하드웨어 없이 호스트에서 287개 단위 테스트를 실행할 수 있습니다.

Q. Home Assistant와 어떻게 연동하나요? MQTT 브로커를 통해 연동합니다. 이 브릿지는 BACnet 포인트 값을 MQTT로 발행하고 Home Assistant의 자동 발견 프로토콜을 지원합니다. 설정한 prefix로 토픽이 자동 생성되어 HA에서 별도 설정 없이 엔티티로 등록됩니다.

Q. 클라우드 연결이 필요한가요? 아닙니다. 모든 기능이 로컬 네트워크에서 완전히 동작합니다. 인터넷 연결 없이 웹 대시보드, MQTT, BACnet/IP 브릿지 모든 기능을 사용할 수 있습니다.

Q. 어떤 하드웨어가 필요한가요? WIZnet W5500-EVB-Pico-PoE(RP2040) 또는 W5500-EVB-Pico2(RP2350) 보드와 SP3485 RS-485 트랜시버가 필요합니다. PoE 지원 이더넷 스위치 또는 PoE 인젝터도 필요합니다.

Documents
Comments Write