Wiznet makers

irina

Published April 06, 2026 ©

172 UCC

5 WCC

104 VAR

0 Contests

0 Followers

0 Following

Original Link

Phone Prop Controller — ESP32-S3 + W5500 Escape Room Telephone with MQTT & ProSLIC

ESP32-S3 + W5500 Ethernet escape room telephone prop. Decodes rotary/DTMF dialing, plays audio via ProSLIC FXS, connects to MQTT. PoE or barrel jack

COMPONENTS Hardware components

WIZnet - W5500

x 1

Software Apps and online services

platformio - PlatformIO Core

x 1


mqtt - MQTT

x 1


PROJECT DESCRIPTION

📌 Overview

Phone Prop Controller는 실제 POTS(Plain Old Telephone Service) 유선 전화기를 방탈출 게임 소품으로 변환하는 오픈소스 ESP32-S3 기반 컨트롤러 펌웨어입니다. WIZnet W5500 유선 이더넷(기본)과 WiFi(폴백)로 MQTT 브로커에 연결하며, Si32177-C ProSLIC FXS 칩을 통해 실제 전화선 신호를 에뮬레이션합니다. 로터리 다이얼 펄스 디코딩, DTMF 버튼 감지, 핸드셋 오디오 재생, 링 발생을 지원합니다. 방탈출 제어 시스템(Mythric Mystery Master)과 MQTT로 통합됩니다.

📌 하드웨어 구성 (두 보드 설계)

두 보드로 구성됩니다:

메인 보드 (~70×80mm, 2레이어)

  • MCU: ESP32-S3-WROOM-1-N16 (16MB 플래시, WiFi/BT)
  • 이더넷: WIZnet W5500 SPI 이더넷 컨트롤러
  • PoE: AG9800MT PoE PD (선택적 DNP)
  • SD카드: microSD (SPI/HSPI)
  • USB: CH340N USB-C (프로그래밍용)
  • LED: WS2812B RGB 상태 LED
  • 전원: PoE 또는 배럴잭

SLIC 도터보드 (~45×55mm, 2레이어)

  • FXS SLIC: Si32177-C ProSLIC (DTMF + 로터리 디코딩)
  • DC-DC: 부스트 컨버터 → VBAT
  • 커넥터: RJ11 전화 잭
  • 보호: TIP/RING TVS 다이오드
  • 경고: VBAT = –48V ~ –110V DC (위험 전압)

SPI 버스 구성

버스호스트GPIO장치
VSPISPI210/11/12/13ProSLIC (타이밍 크리티컬, 전용)
HSPISPI318/19/20 + CS14/15W5500 + SD카드 (CS 분리)

📌 시스템 아키텍처


📌 개발 단계 (Project Status)

단계내용상태
1A이더넷 + WiFi + MQTT + WebUI 프로비저닝✅ 완료
1BSD카드 오디오 파이프라인 (외부 브레이크아웃)⏳ 부품 대기
2ProSLIC 브링업 — 훅 감지, 다이얼, 링, 오디오⏳ 부품 대기
3프로덕션 PCB 완전 통합🔲 미시작

📌 Phase 1A — 현재 동작하는 기능

  • W5500 이더넷 (기본) — DHCP
  • WiFi STA 폴백 — 자동 전환
  • SoftAP 프로비저닝 — 첫 부팅 시 (PhoneProp-{device_id}, 오픈, 192.168.4.1)
  • NVS 설정 저장 — MQTT 브로커, 베이스 토픽, 디바이스 ID, 네트워크 모드 등
  • 4탭 WebUI (http://<ip>/)
    • Config — 전체 설정, NVS 저장, 재부팅
    • Dial Rules — 다이얼 번호 → 동작 매핑 (파일 재생, 톤, 무시) + MQTT 이벤트
    • Audio Files — WAV 파일 SD카드 업로드/삭제 (Phase 1B)
    • Status — 실시간 디바이스 상태 (네트워크, IP, MQTT, 업타임, 힙) 5초 자동 갱신
  • MQTT 클라이언트 — 자동 재연결
  • mDNS{device_id}.local로 전체 인터페이스 접근
  • WS2812B 상태 LED — 빨강 점멸=네트워크 없음, 주황 점멸=MQTT 없음, 초록=준비

📌 MQTT 토픽 구조

 

기본 토픽 루트: mqtt_base_topic (기본값: escape/phone, 유닛별 설정 가능)

Publishes (발행)

토픽페이로드시점
{base}/statuson_hook | off_hook훅 상태 변경 시
{base}/dialed"7"각 자리 다이얼 시
{base}/number"911"자릿수 간 타임아웃 후 완성 번호
{base}/eventring_start | ring_stop | audio_complete | 커스텀이벤트 발생 시
{base}/networkethernet | wifi | disconnected네트워크 상태 변경 시

Subscribes (구독)

토픽페이로드동작
{base}/command/ringstart | stop링 발생 시작/중지
{base}/command/playmsg_clue1.wavSD카드 오디오 파일 재생
{base}/command/hangup강제 온훅 전환
{base}/command/reset상태 머신 완전 초기화

📌 WebUI Dial Rules

규칙은 다이얼 번호를 동작에 매핑합니다. 순서대로 평가하며 첫 번째 매칭이 적용됩니다.

동작설명
playSD카드에서 WAV 파일 재생
busy통화 중 신호음
reorder재발신/빠른 통화 중 신호음
ringback링백 신호음
dial_tone발신음
silence무음
ignore응답 없음

규칙은 /spiffs/dial_rules.json에 저장되며 펌웨어 업데이트 후에도 유지됩니다.


📌 오디오 파일 형식

WAV, 8kHz, 8비트 µ-Law, 모노

SD카드 경로내용
/audio/system/dial_tone, busy_signal, ringback, reorder_tone
/audio/messages/msg_clue1.wav, msg_clue2.wav ... (MMM 트리거)

📌 빌드 및 플래시

요구사항: PlatformIO (VS Code 확장 또는 CLI), ESP-IDF (PlatformIO 자동 설치)

# 개발 환경 — Waveshare ESP32-S3-ETH (Phase 1A/1B)
pio run -e waveshare-s3-eth
pio run -e waveshare-s3-eth --target upload --upload-port COMx
 # 개발 환경 — ProSLIC 전용 / WiFi (Phase 2)
pio run -e waveshare-proslic-only
pio run -e waveshare-proslic-only --target upload --upload-port COMx
 # 프로덕션 — 커스텀 PCB (ESP32-S3-WROOM-1-N16)
pio run -e phone-prop
pio run -e phone-prop --target upload --upload-port COMx
 # 시리얼 모니터
pio device monitor --port COMx --baud 115200

첫 부팅 프로비저닝:

  1. WiFi 네트워크 PhoneProp-{device_id} (오픈, 비밀번호 없음) 연결
  2. http://192.168.4.1/ 접속
  3. WiFi SSID/비밀번호, MQTT 브로커 URL, 베이스 토픽, 디바이스 ID 입력
  4. Save ConfigurationReboot 클릭

이후 부팅 시 AP는 시작하지 않으며, WebUI는 아래 주소로 접근:

  • http://{device_id}.local/ — mDNS 호스트명
  • http://<assigned-ip>/ — 직접 IP

📌 배포 프로파일

영구 설치 (PoE + 이더넷) AG9800MT 및 플라이백 부품 실장, SB_POE 솔더 브릿지 연결, WebUI에서 network_mode = eth_only 설정. 고정 IP 또는 DHCP 예약 권장.

이동식 (배럴잭 + WiFi) AG9800MT 및 PoE 부품 DNP, SB_POE 솔더 브릿지 오픈, WebUI에서 network_mode = wifi_only 설정. 새 장소에서 SoftAP로 프로비저닝.

혼합/자동 (기본값) 이더넷과 WiFi 모두 설정, 링크 감지 시 이더넷 우선, 자동 WiFi 폴백.

📌 플래시 파티션 테이블

파티션크기용도
nvs20KBWiFi 크리덴셜, MQTT 설정, 디바이스 설정
otadata8KBOTA 슬롯 추적
app01.5MB실행 중인 펌웨어 (ota_0)
app11.5MBOTA 스테이징 슬롯 (ota_1)
spiffs~12MBWebUI 자산, Dial Rules JSON

오디오 파일은 SD카드에 저장 — 플래시 미사용.

📌 WIZnet W5500 칩의 역할

사용 칩 모델명: W5500

Phone Prop Controller에서 W5500은 기본 네트워크 인터페이스로 HSPI(SPI3) 버스에 연결됩니다. W5500 이더넷 링크가 감지되면 WiFi보다 우선 사용되며, 링크가 끊길 경우 자동으로 WiFi STA로 폴백합니다.

역할:

  • MQTT 연결 — 방탈출 제어 시스템(Mythric Mystery Master)과 실시간 통신
  • WebUI 서빙 — Config, Dial Rules, Audio Files, Status 4탭 웹 인터페이스
  • mDNS{device_id}.local로 이더넷과 WiFi 모두에서 접근 가능
  • OTA 업데이트 — 네트워크를 통한 무선 펌웨어 업데이트 (백로그)

방탈출 환경에서는 여러 소품이 동시에 네트워크에 연결됩니다. W5500 하드웨어 TCP/IP 스택은 ESP32-S3 CPU 부하를 줄이면서 ProSLIC 오디오 처리, 로터리 펄스 디코딩, MQTT 통신을 동시에 안정적으로 수행할 수 있게 합니다. 또한 PoE(Power over Ethernet) 배포 시 단일 이더넷 케이블로 전원과 네트워크를 동시에 공급하는 영구 설치 시나리오에 최적화됩니다.

📌 시장 및 활용 가치

방탈출 게임 업계, 이벤트 소품 제작자, 무대 연출 전문가, DIY 이스케이프룸 제작자가 핵심 시장입니다. 실제 POTS 전화기를 그대로 사용하면서 MQTT로 중앙 제어 시스템과 통합할 수 있어 몰입도 높은 방탈출 소품을 구현합니다. 동일한 ESP32/JLCPCB/MQTT 워크플로우를 공유하는 Raven Animatronic Controller와 함께 방탈출 소품 생태계를 구성합니다.

📌 요약

Phone Prop Controller는 실제 유선 전화기를 방탈출 소품으로 변환하는 ESP32-S3 + W5500 기반 오픈소스 컨트롤러입니다. W5500 유선 이더넷(기본)과 WiFi(폴백) 자동 전환, ProSLIC FXS를 통한 실제 전화선 에뮬레이션, MQTT 기반 방탈출 제어 시스템 통합, 4탭 WebUI, 로터리/DTMF 다이얼 디코딩을 지원합니다. PoE 배포로 단일 케이블로 전원과 네트워크를 동시에 공급 가능합니다.

⚠️ 안전 경고

SLIC 도터보드의 VBAT는 –48V ~ –110V DC — 위험 전압입니다. ProSLIC 내부에서 약 90VAC 링 전압을 생성합니다. TIP/RING 라인에 TVS(SMBJ100CA)는 필수입니다. 조립 후 도터보드에 컨포말 코팅을 적용하세요.

Waveshare 개발 보드에서 PoE와 USB-C를 동시에 연결하지 마세요. PoE 전원 레일과 USB 그라운드 사이에 절연이 없습니다.

📌 FAQ

Q1. W5500과 WiFi 중 어떤 것이 우선 사용되나요? W5500 이더넷 링크가 감지되면 자동으로 유선 이더넷이 우선 사용됩니다. 링크가 끊기면 자동으로 WiFi STA로 폴백합니다. network_mode 설정으로 eth_only, wifi_only, auto 중 선택 가능합니다.

Q2. 어떤 전화기가 호환되나요? Si32177-C ProSLIC FXS는 실제 FXS 전화선을 에뮬레이션합니다. 로터리 다이얼(펄스 디코딩)과 터치톤(DTMF) 전화기 모두 지원합니다.

Q3. ProSLIC은 어떤 기능을 하나요? Si32177-C ProSLIC FXS 칩이 완전한 FXS 전화선을 에뮬레이션합니다. 훅 감지(수화기 들기/놓기), 로터리 펄스 디코딩, DTMF 감지, 링 생성, 핸드셋 오디오 재생을 담당합니다.

Q4. PoE는 어떻게 설정하나요? AG9800MT PoE PD 칩을 실장하고 SB_POE 솔더 브릿지를 연결하면 단일 이더넷 케이블로 전원과 네트워크를 동시에 공급합니다. 이동식 배포 시에는 AG9800MT를 DNP로 두고 배럴잭을 사용합니다.

Q5. 오디오 파일 형식은 무엇인가요? WAV, 8kHz, 8비트 µ-Law, 모노 형식입니다. WebUI의 Audio Files 탭에서 SD카드로 업로드합니다. 시스템 톤(발신음, 통화중, 링백)과 메시지 파일을 별도 디렉토리로 관리합니다.

Q6. Dial Rules는 무엇인가요? 다이얼 번호를 동작에 매핑하는 규칙입니다. 예를 들어 911을 다이얼하면 특정 WAV 파일을 재생하거나 MQTT 이벤트를 발행하도록 설정할 수 있습니다. /spiffs/dial_rules.json에 저장되어 펌웨어 업데이트 후에도 유지됩니다.

Q7. 첫 부팅 시 어떻게 설정하나요? 첫 부팅 시 PhoneProp-{device_id} WiFi AP가 자동으로 시작됩니다. 이 네트워크에 연결 후 http://192.168.4.1/에서 WiFi, MQTT, 디바이스 설정을 입력하고 저장하면 됩니다.

Q8. 여러 소품을 동시에 관리할 수 있나요? 각 유닛은 고유한 디바이스 ID와 MQTT 베이스 토픽을 갖습니다. 여러 Phone Prop을 동일한 MQTT 브로커에 연결하여 방탈출 제어 시스템(Mythric Mystery Master)에서 중앙 관리할 수 있습니다.

Q9. SPI 버스가 두 개인 이유는? ProSLIC은 타이밍이 매우 중요하여 전용 VSPI(SPI2) 버스를 사용합니다. W5500과 SD카드는 HSPI(SPI3) 버스를 공유하되 칩 셀렉트(CS)로 분리됩니다. 이 설계로 ProSLIC의 타이밍 요구사항을 충족하면서 이더넷과 SD카드를 동시에 운용합니다.

Q10. OTA 업데이트는 지원하나요? OTA 펌웨어 업데이트는 백로그 항목입니다. 플래시 파티션 테이블에 OTA 슬롯(app0/app1, 각 1.5MB)이 이미 준비되어 있어 향후 WebUI를 통한 OTA 업데이트가 추가될 예정입니다.


🔍 EGOS SDK vs Phone Prop — 프로젝트 비교

EGOS SDK 프로젝트 : https://maker.wiznet.io/matthew/projects/egos-sdk-for-esp32/ 

구분EGOS SDK for ESP32Phone Prop Controller
프로젝트 목적

방탈출 퍼즐 장치를 위한 범용 SDK 플랫폼

방탈출 게임 제작자, 퍼즐 하드웨어 인테그레이터

실제 유선 전화기를 인터랙티브 소품으로 변환하는 특화 컨트롤러,

방탈출 운영자, 이벤트 소품 제작자, 무대 연출 전문가

MCUESP32ESP32-S3-WROOM-1-N16
WIZnet 칩W5500 (선택적 옵션)W5500 (기본 인터페이스)
네트워크 전략Ethernet 우선 → Wi-Fi 폴백 → 네트워크 스위칭Ethernet 우선 → Wi-Fi STA 자동 폴백
프로토콜MQTTMQTT
플랫폼 성격EGOS Games 생태계용 범용 SDK(Raspberry Pi 기반)Mythric Mystery Master용 전용 컨트롤러(MQTT 브로커)
추상화 수준높음 — 공통 SDK 레이어 제공낮음 — 특정 하드웨어 최적화
W5500 역할안정적 유선 네트워크 옵션핵심 네트워크 인터페이스
Ethernet 의미설치형 퍼즐 장치용 안정적 통신오디오·다이얼 처리 중 TCP/IP 오프로딩 및 PoE 지원
PoE 지원미언급AG9800MT 기반 PoE PD 지원
SPI 구조미명시HSPI(SPI3): W5500+SD / VSPI(SPI2): ProSLIC 분리
하드웨어 구조단일 ESP32 기반메인보드 + ProSLIC 도터보드
핵심 ICESP32 + W5500ESP32-S3 + W5500 + Si32177-C ProSLIC
특수 기능버튼/RFID/센서/모터 등 범용 지원FXS 전화선 에뮬레이션, 실제 벨/다이얼 지원
위험 전압 설계없음-48V ~ -110V VBAT 생성 ⚠
소프트웨어 구조ESP-IDF 기반 SDKESP-IDF + PlatformIO
입력 장치버튼, RFID, QR, 센서로터리 다이얼, DTMF
출력 장치LED, LCD, 릴레이, 모터핸드셋 오디오, 벨 울림
생태계EGOS Controller + Studio + 모듈형 플랫폼MQTT 기반 전화기 소품 생태계
확장성매우 높음전화기 특화
대표 활용 분야범용 퍼즐·인터랙티브 장치방탈출 전화기 소품 및 몰입형 연출
공통점Ethernet 우선, MQTT 기반, 설치형 장치 중심, W5500을 핵심 네트워크 인프라로 활용Ethernet 우선, MQTT 기반, 설치형 장치 중심, W5500을 핵심 네트워크 인프라로 활용

📌 참고 링크


📌 Overview

Phone Prop Controller is an open-source ESP32-S3-based controller firmware that converts a real POTS (Plain Old Telephone Service) landline telephone into an escape room prop. It connects to an MQTT broker via WIZnet W5500 wired Ethernet (primary) and WiFi (fallback), and emulates a real telephone line signal through the Si32177-C ProSLIC FXS chip. Supports rotary dial pulse decoding, DTMF button detection, handset audio playback, and ring generation. Integrates with an escape room control system (Mythric Mystery Master) over MQTT.


📌 Hardware Architecture (Two-Board Design)

Two boards make up the complete system:

Main board (~70×80mm, 2-layer PCB)

  • MCU: ESP32-S3-WROOM-1-N16 (16 MB flash, WiFi/BT)
  • Ethernet: WIZnet W5500 SPI Ethernet controller
  • PoE: AG9800MT PoE PD (optional DNP)
  • Storage: microSD (SPI/HSPI)
  • USB: CH340N USB-C (programming)
  • LED: WS2812B RGB status LED
  • Power: PoE or barrel jack

SLIC daughterboard (~45×55mm, 2-layer PCB)

  • FXS SLIC: Si32177-C ProSLIC (DTMF + rotary decoding)
  • DC-DC: Boost converter → VBAT
  • Connector: RJ11 telephone jack
  • Protection: TIP/RING TVS diode
  • Warning: VBAT = –48V to –110V DC (hazardous voltage)

SPI bus configuration

BusHostGPIODevices
VSPISPI210/11/12/13ProSLIC (timing-critical, dedicated)
HSPISPI318/19/20 + CS14/15W5500 + SD card (separate CS)

📌 System Architecture


📌 Development Phases (Project Status)

PhaseDescriptionStatus
1AEthernet + WiFi + MQTT + WebUI provisioning✅ Complete
1BSD card audio pipeline (external breakout)⏳ Waiting on parts
2ProSLIC bringup — hook detect, dial, ring, audio⏳ Waiting on parts
3Full integration on production PCB🔲 Not started

📌 Phase 1A — What's Working Now

  • W5500 Ethernet (primary) — DHCP
  • WiFi STA fallback — automatic switchover
  • SoftAP provisioning — on first boot (PhoneProp-{device_id}, open, 192.168.4.1)
  • NVS-backed config — MQTT broker, base topic, device ID, network mode, etc.
  • 4-tab WebUI (http://<ip>/)
    • Config — all device settings, save to NVS, reboot
    • Dial Rules — map dialed numbers to actions (play file, tones, ignore) + MQTT event
    • Audio Files — upload/delete WAV files to SD card (Phase 1B)
    • Status — live device status (network, IP, MQTT, uptime, free heap); auto-refreshes every 5 s
  • MQTT client — auto-reconnect
  • mDNS — device reachable as {device_id}.local on all interfaces
  • WS2812B status LED — red blink = no network, amber blink = no MQTT, green = ready

📌 MQTT Topic Structure

Base topic root: mqtt_base_topic (default: escape/phone, configurable per unit)

Publishes

TopicPayloadWhen
{base}/statuson_hook | off_hookHook state changes
{base}/dialed"7"Each digit as dialed
{base}/number"911"Complete number after inter-digit timeout
{base}/eventring_start | ring_stop | audio_complete | customEvents
{base}/networkethernet | wifi | disconnectedNetwork state changes

Subscribes

TopicPayloadAction
{base}/command/ringstart | stopStart/stop ring generator
{base}/command/playmsg_clue1.wavPlay audio file from SD card
{base}/command/hangupForce on-hook state
{base}/command/resetFull state machine reset

📌 WebUI Dial Rules

Rules map a dialed number to an action. Evaluated in order; first match wins. Unmatched numbers are silently ignored.

ActionDescription
playPlay a WAV file from SD card
busyBusy signal tone
reorderReorder / fast-busy tone
ringbackRingback tone
dial_toneDial tone
silenceSilence / dead air
ignoreNo response

Rules are stored in /spiffs/dial_rules.json and survive firmware updates.


📌 Audio File Format

WAV, 8 kHz, 8-bit µ-Law, mono

SD card pathContents
/audio/system/dial_tone, busy_signal, ringback, reorder_tone
/audio/messages/msg_clue1.wav, msg_clue2.wav ... (MMM-triggered)

📌 Build & Flash

Requirements: PlatformIO (VS Code extension or CLI), ESP-IDF (installed automatically by PlatformIO)

# Development — Waveshare ESP32-S3-ETH (Phase 1A/1B)
pio run -e waveshare-s3-eth
pio run -e waveshare-s3-eth --target upload --upload-port COMx
 # Development — ProSLIC only / WiFi (Phase 2)
pio run -e waveshare-proslic-only
pio run -e waveshare-proslic-only --target upload --upload-port COMx
 # Production — Custom PCB (ESP32-S3-WROOM-1-N16)
pio run -e phone-prop
pio run -e phone-prop --target upload --upload-port COMx
 # Serial monitor
pio device monitor --port COMx --baud 115200

First-boot provisioning:

  1. Connect to WiFi network PhoneProp-{device_id} (open, no password)
  2. Navigate to http://192.168.4.1/
  3. Fill in WiFi SSID/password, MQTT broker URL, base topic, device ID
  4. Click Save ConfigurationReboot

On subsequent boots the AP does not start. The WebUI remains accessible at:

  • http://{device_id}.local/ — mDNS hostname
  • http://<assigned-ip>/ — direct IP

📌 Deployment Profiles

Permanent install (PoE + Ethernet) Populate AG9800MT and flyback components, close SB_POE solder bridge, set network_mode = eth_only in WebUI. Fixed IP or DHCP reservation recommended.

Portable (barrel jack + WiFi) AG9800MT and PoE components: DNP. Leave SB_POE solder bridge open, set network_mode = wifi_only in WebUI. Provision via SoftAP at new venue.

Mixed / auto (default) Both Ethernet and WiFi configured. Ethernet preferred when link detected. Automatic failover to WiFi.

📌 Flash Partition Table

PartitionSizePurpose
nvs20 KBWiFi credentials, MQTT config, device settings
otadata8 KBOTA slot tracking
app01.5 MBRunning firmware (ota_0)
app11.5 MBOTA staging slot (ota_1)
spiffs~12 MBWebUI assets, dial rules JSON

Audio files are on the SD card — not in flash.

📌 Role and Application of the WIZnet's Chip

Chip model: W5500

In the Phone Prop Controller, W5500 is the primary network interface, connected via the HSPI (SPI3) bus. When W5500 Ethernet link is detected, it takes priority over WiFi. If the link drops, the device automatically falls back to WiFi STA.

Roles:

  • MQTT connection — real-time communication with the escape room control system (Mythric Mystery Master)
  • WebUI serving — 4-tab web interface: Config, Dial Rules, Audio Files, Status
  • mDNS{device_id}.local reachable over both Ethernet and WiFi
  • OTA update — wireless firmware updates over the network (backlog)

In escape room deployments, multiple props connect to the network simultaneously. The W5500 hardware TCP/IP stack reduces ESP32-S3 CPU load, allowing ProSLIC audio processing, rotary pulse decoding, and MQTT communication to run concurrently and reliably. In permanent PoE installations, a single Ethernet cable delivers both power and network connectivity — a key advantage for clean, cable-efficient escape room setups.

📌 Market and Application Value

Escape room operators, event prop builders, theatrical production designers, and DIY escape room creators are the core market. Using a real POTS telephone as-is while integrating it with a central MQTT control system enables highly immersive escape room props. Together with the Raven Animatronic Controller — which shares the same ESP32/JLCPCB/MQTT workflow — this project forms part of a growing escape room prop ecosystem.

 

📌 Summary

Phone Prop Controller is an open-source ESP32-S3 + W5500-based controller that converts a real landline telephone into an escape room prop. It features W5500 wired Ethernet (primary) with automatic WiFi fallback, real telephone line emulation via ProSLIC FXS, MQTT integration with an escape room control system, a 4-tab WebUI, and rotary/DTMF dial decoding. PoE deployment enables a single cable to deliver both power and network connectivity.

⚠️ Safety Warnings

VBAT on the SLIC daughterboard is –48V to –110V DC — hazardous voltage. The ProSLIC generates approximately 90 VAC ring voltage internally. TVS (SMBJ100CA) is mandatory on TIP/RING. Conformal coat the daughterboard after assembly.

Do NOT connect PoE and USB-C simultaneously on the Waveshare dev board. There is no isolation between the PoE power rail and USB ground.

📌 FAQ

Q1. Which takes priority — W5500 or WiFi? When W5500 Ethernet link is detected, wired Ethernet is automatically preferred. If the link drops, the device automatically falls back to WiFi STA. The network_mode setting allows you to choose eth_only, wifi_only, or auto.

Q2. Which telephones are compatible? The Si32177-C ProSLIC FXS emulates a real FXS telephone line. Both rotary dial (pulse decoding) and touch-tone (DTMF) telephones are supported.

Q3. What does the ProSLIC do? The Si32177-C ProSLIC FXS chip emulates a complete FXS telephone line: hook detection (off-hook/on-hook), rotary pulse decoding, DTMF detection, ring generation, and handset audio playback.

Q4. How do I set up PoE? Populate the AG9800MT PoE PD chip and close the SB_POE solder bridge. A single Ethernet cable then delivers both power and network connectivity. For portable deployments, leave AG9800MT as DNP and use the barrel jack instead.

Q5. What audio file format is required? WAV, 8 kHz, 8-bit µ-Law, mono. Upload via the Audio Files tab in the WebUI. System tones (dial tone, busy signal, ringback) and message files are managed in separate directories on the SD card.

Q6. What are Dial Rules? Rules that map a dialed number to an action. For example, dialing 911 can trigger a specific WAV file to play or publish an MQTT event. Rules are stored in /spiffs/dial_rules.json and survive firmware updates.

Q7. How do I provision on first boot? On first boot, the device automatically starts a PhoneProp-{device_id} WiFi AP. Connect to this network, navigate to http://192.168.4.1/, enter WiFi, MQTT, and device settings, then save and reboot.

Q8. Can multiple props be managed simultaneously? Yes. Each unit has a unique device ID and MQTT base topic. Multiple Phone Props can connect to the same MQTT broker and be centrally managed by the escape room control system (Mythric Mystery Master).

Q9. Why are there two separate SPI buses? ProSLIC has strict timing requirements and uses a dedicated VSPI (SPI2) bus. W5500 and the SD card share the HSPI (SPI3) bus with separate chip selects (CS). This design meets ProSLIC's timing requirements while running Ethernet and SD card simultaneously.

Q10. Is OTA update supported? OTA firmware update is a backlog item. The flash partition table already includes OTA slots (app0/app1, 1.5 MB each), so WebUI-based OTA updates are planned for a future release.

🔍 EGOS SDK vs Phone Prop — Project Comparison

EGOS SDK project : https://maker.wiznet.io/matthew/projects/egos-sdk-for-esp32/ 

CategoryEGOS SDK for ESP32Phone Prop Controller
Project GoalGeneral-purpose SDK platform for escape-room puzzle devicesSpecialized controller that transforms real telephones into interactive props
MCUESP32ESP32-S3-WROOM-1-N16
WIZnet ChipW5500 (optional)W5500 (primary interface)
Network StrategyEthernet-first → Wi-Fi fallback → network switchingEthernet-first → automatic Wi-Fi STA fallback
ProtocolMQTTMQTT
Platform TypeEGOS Games ecosystem SDKDedicated controller for Mythric Mystery Master
Abstraction LevelHigh — provides common SDK layersLow — optimized for dedicated hardware
Role of W5500Stable wired networking optionCore networking infrastructure
Meaning of EthernetReliable communication for permanently installed puzzle devicesTCP/IP offloading during audio + dial processing and PoE deployment
PoE SupportNot specifiedAG9800MT-based PoE PD support
SPI ArchitectureNot explicitly definedHSPI(SPI3): W5500 + SD / VSPI(SPI2): ProSLIC isolated
Hardware StructureSingle ESP32-based systemMainboard + ProSLIC daughterboard
Key ICsESP32 + W5500ESP32-S3 + W5500 + Si32177-C ProSLIC
Special FeaturesGeneric support for buttons, RFID, sensors, motorsFXS telephone line emulation, real ringing and rotary dialing
High Voltage DesignNone-48V to -110V VBAT generation ⚠
Software ArchitectureESP-IDF-based SDKESP-IDF + PlatformIO
Input DevicesButtons, RFID, QR, sensorsRotary dial pulses, DTMF
Output DevicesLEDs, LCDs, relays, motorsHandset audio, ring generation
EcosystemEGOS Controller + Studio + modular platformMQTT-based retro telephone prop ecosystem
ScalabilityVery highSpecialized for telephone props
Typical ApplicationsGeneric puzzle and interactive devicesEscape-room telephone props and immersive installations
Common PhilosophyEthernet-first, MQTT-based, installation-oriented systems using W5500 as critical infrastructureEthernet-first, MQTT-based, installation-oriented systems using W5500 as critical infrastructure

📌 Reference Links


 

Documents
Comments Write