node-redscape
node-redscape
프로젝트가 하는 일
Node-REDscape는 방탈출 룸의 여러 퍼즐 장치를 하나의 운영 시스템으로 묶습니다. 버튼, RFID, 스위치, 센서, 릴레이 같은 물리 장치는 prop controller에 연결되고, 각 controller는 Node-RED 서버와 메시지를 주고받습니다.
운영자는 Node-RED 대시보드에서 게임을 시작하거나 정지하고, 타이머를 관리하며, 특정 prop을 수동으로 해결 처리하거나 리셋할 수 있습니다. 게임 중에는 prop에서 발생한 이벤트가 Node-RED 플로우로 들어오고, 플로우는 다음 퍼즐, 힌트 출력, 조명, 사운드 같은 동작을 실행합니다.
상업용 방탈출 룸에서는 이 구조가 특히 유용합니다. 한 번 동작하는 데모가 아니라 여러 회차를 반복 운영해야 하므로, prop 상태 확인, 강제 리셋, 수동 개입, 네트워크 상태 확인이 운영 품질에 직접 영향을 줍니다.
이미지 출처 : AI 생성
이미지 출처 : https://github.com/playfultechnology/node-redscape
WIZnet이 들어가는 위치
이 프로젝트에서 확인되는 WIZnet 관련 제품은 W5500입니다. 저장소에는 ESP32와 W5500을 유선 Ethernet으로 연결하는 배선 문서가 포함되어 있으며, ESP32 Ethernet 예제는 UDP 기반 버튼 prop controller 구조를 사용합니다.
W5500은 prop controller와 방탈출 룸 내부 LAN 사이에 위치합니다. MCU는 버튼 입력이나 퍼즐 상태를 처리하고, W5500은 SPI를 통해 Ethernet 통신을 담당합니다. Node-RED 서버는 이 네트워크 메시지를 받아 대시보드와 게임 플로우에 반영합니다.
상업용 설치에서는 Wi-Fi보다 유선 Ethernet이 더 안정적인 선택이 될 수 있습니다. 방 구조, 금속 소품, 방문객 스마트폰, 여러 무선 AP가 섞이면 Wi-Fi 품질이 일정하지 않을 수 있습니다. W5500은 하드웨어 TCP/IP 오프로드, 32 KB 내부 버퍼, 8개 소켓을 제공하므로 작은 MCU에서도 안정적인 네트워크 prop을 구성하기 쉽습니다.
구현 메모
이 저장소의 예제 코드는 W5500 저수준 드라이버를 직접 호출하지 않습니다. 대신 Arduino 계열 Ethernet API를 사용하고, W5500은 유선 네트워크를 제공하는 하드웨어 계층으로 동작합니다.
파일 경로: ESP32/Ethernet/PropControl_UDP_Button/PropControl_UDP_Button.ino
역할: 버튼 prop의 네트워크 ID, IP 주소, UDP 서버, 포트, 버튼 핀, Ethernet CS 핀을 설정합니다.
const char* deviceID = "Button-1";
byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
const IPAddress localIPAddress(192, 168, 1, 177);
const char* remoteUDPServer = "192.168.0.114";
const int remoteUDPPort = 161;
const int localUDPPort = 161;
const byte buttonPin = 16;
const byte ssPin = 5;이 설정은 하나의 버튼 prop을 네트워크에서 식별 가능한 장치로 만듭니다. deviceID는 Node-RED에서 prop을 구분하는 이름이고, remoteUDPServer는 Node-RED 서버 주소입니다. ssPin은 ESP32와 W5500 Ethernet 모듈 사이의 SPI chip-select 핀입니다.
파일 경로: Node-RED/NodeREDscape_Prop_Button_flow.json
역할: prop에서 들어오는 MQTT/UDP 메시지를 받고, 운영자 대시보드에서 RESET 또는 SOLVE 명령을 다시 prop으로 보냅니다.
"topic": "FromDevice/Button-1",
"type": "mqtt in",
"name": "MQTT FromDevice"
"port": "161",
"type": "udp in"
"payload": "{\"command\":\"RESET\"}"
"payload": "{\"command\":\"SOLVE\"}"이 플로우는 실제 방탈출 운영에 필요한 기본 패턴을 보여줍니다. prop은 자신의 상태를 Node-RED로 보내고, 운영자는 대시보드에서 해당 prop을 리셋하거나 수동 해결 처리할 수 있습니다.
실전 팁 / 주의점
- 상업용 룸에서는 prop마다 고정 IP 또는 DHCP reservation을 사용하는 것이 좋습니다.
- W5500 SPI 배선은 짧고 단순하게 구성해야 합니다. SCK, MISO, MOSI, CS, 3.3 V, GND 연결을 먼저 확인해야 합니다.
- 잠금장치, 게임 진행 핵심 버튼, 세션 리셋 장치에는 Wi-Fi보다 유선 Ethernet을 우선 고려하는 것이 안전합니다.
- Node-RED 대시보드에는 prop별 online 상태나 heartbeat 표시를 추가하는 것이 좋습니다.
- UDP는 가볍지만 전달 보장이 없으므로 중요한 명령에는 ACK 또는 상태 재확인 로직을 넣는 것이 좋습니다.
- MQTT는 토픽 관리가 편리하지만 broker 장애가 전체 통신에 영향을 줄 수 있으므로 broker 상태 감시가 필요합니다.
- W5500은 8개 소켓을 지원하므로, 다수 prop을 구성할 때는 장치당 연결 수를 단순하게 유지해야 합니다.
FAQ
Q: 왜 Node-REDscape에 W5500을 사용하는 것이 적합한가요?
A: W5500은 작은 MCU에 안정적인 유선 Ethernet을 추가할 수 있습니다. 방탈출 prop은 세션마다 반복적으로 동작해야 하므로, 무선 품질에 덜 의존하는 유선 연결이 운영 안정성에 유리합니다.
Q: W5500은 ESP32 또는 Arduino에 어떻게 연결하나요?
A: SPI로 연결합니다. 기본적으로 SCK, MISO, MOSI, CS, 전원, GND가 필요합니다. ESP32 예제에서는 Ethernet 모듈의 chip-select 핀으로 ssPin = 5를 사용합니다.
Q: 이 프로젝트에서 W5500은 정확히 어떤 역할을 하나요?
A: W5500은 prop controller의 유선 네트워크 인터페이스입니다. MCU가 버튼 입력과 퍼즐 상태를 처리하면, W5500이 그 데이터를 Node-RED 서버로 전달하고 서버의 제어 명령을 다시 prop으로 받습니다.
Q: 초보자도 따라할 수 있나요?
A: 단순 버튼 prop부터 시작하면 가능합니다. 다만 Node-RED, Arduino 또는 ESP32, IP 주소 설정, SPI 배선에 대한 기본 지식은 필요합니다. 상업용 설치에서는 전원, 케이블 고정, 장애 복구까지 함께 고려해야 합니다.
Q: Wi-Fi 기반 ESP32 prop과 비교하면 어떤 차이가 있나요?
A: Wi-Fi는 설치가 빠르고 배선이 적지만, 방 구조와 무선 간섭의 영향을 받습니다. W5500 기반 유선 Ethernet은 케이블이 필요하지만, 반복 운영되는 상업용 룸에서는 연결 안정성과 문제 추적성이 더 좋습니다.





