Wiznet makers

Lihan__

Published June 26, 2026 ©

73 UCC

8 WCC

3 VAR

0 Contests

0 Followers

0 Following

Original Link

OpenLaserDAC

Open-source ESP32-S3 laser DAC firmware with Ether Dream protocol

COMPONENTS
PROJECT DESCRIPTION

OpenLaserDAC — Turning a $10 Chip into a Professional Laser Show Controller

#LaserDAC #EtherDream #ESP32-S3 #W5500 #UDP #TCP-TOE #ILDA #OpenSource #RealTime #DualCore

📚 Open-source hobby/maker project — laser show control hardware from scratch ✅ Fully implemented: complete C codebase with ESP-IDF, PlatformIO build, hardware pin map, OTA update — all verified in source


01 — What is this project?

 

Laser show control has historically been the domain of specialized, expensive hardware. The Ether Dream is the industry-standard open laser DAC — a device that receives the ILDA (International Laser Display Association) point stream from show software over Ethernet and drives the galvanometer mirrors and RGB color channels of a laser projector with sub-millisecond precision. A real Ether Dream unit costs hundreds of dollars and ships its data through a proprietary network protocol on a dedicated Ethernet link.

OpenLaserDAC replaces all of that with an ESP32-S3 microcontroller and a W5500 Ethernet chip. The firmware implements the complete Ether Dream protocol — TCP command channel on port 7765, UDP broadcast discovery on port 7654, full state machine (Idle → Prepared → Playing → E-Stop) — so that any existing show software (MadMapper, Liberation, or any Ether Dream client) connects without modification. On the output side, a DAC80508 8-channel 16-bit SPI DAC drives X/Y galvo mirrors and R/G/B laser beams at scan rates from 1 kHz to 100 kHz.

The result: a complete, field-functional laser DAC at a fraction of commercial cost, compatible with the professional lighting ecosystem, and fully open-source under GPL v3.


02 — Why Ether Dream over the network?

🔷 Industry-standard protocol compatibility

MadMapper, Liberation, and dozens of other professional VJ and laser show tools speak Ether Dream natively. By implementing this protocol faithfully, OpenLaserDAC inherits an entire software ecosystem for free — the user gets timeline animation, beat-sync, ILDA file playback, and 3D vector graphics without writing a single line of show code.

🔷 Real-time determinism over Ethernet

Laser galvanometers are mechanical systems: the mirrors must follow the point stream with microsecond-level consistency, or the projected image wobbles, flickers, or the galvos stall. Ethernet's packet-switched delivery would seem ill-suited to this — but the Ether Dream protocol solves it with a deep, flow-controlled ring buffer. OpenLaserDAC implements an 8,192-point lock-free SPSC ring buffer between the Ethernet receive path and the GPTimer ISR that clocks out points to the DAC. The ISR reads from a 1,024-point sub-buffer refilled by a dedicated Core 1 task, achieving < 1 µs jitter per point at 10 kHz scan rate.

🔷 Dual network: Ethernet primary, WiFi AP fallback

The firmware tries Ethernet DHCP first (10 s timeout), falls back to static IP 192.168.77.1 if no lease arrives, and keeps a WiFi AP (OpenLaserDAC / openlaser) always running for web interface access and captive portal. This means the device works in any venue — wired shows with MadMapper, and wireless configuration without a laptop in the rig.


03 — System Architecture

 

04 — Why W5500?

🔷 Hardwired TCP/IP with interrupt-driven receive — no CPU overhead for the protocol stack

The Ether Dream protocol runs over TCP. On a software-stack MCU (e.g., ESP32's built-in WiFi with LwIP), TCP processing competes with the application for CPU cycles. The W5500's hardwired TOE (TCP/IP Offload Engine) handles TCP state (SYN/ACK, retransmit, checksumming) entirely in silicon. The ESP32-S3 CPU only touches frames when the W5500 asserts its interrupt pin (GPIO 8), at which point the rx_task (priority 22, above LwIP's internal tasks at priority 20) wakes instantly and drains the 16 KB internal MACRAW RX buffer via SPI before it overflows.

This priority architecture is not incidental — the codebase documents it explicitly:

"CRITICAL: rx_task must be HIGHER priority than both tcpip_task (20) and network_task (19). At priority 15 (the default) it gets preempted while our server processes a large batch, so frames pile up inside the W5500's 16 KB MACRAW RX buffer. An 878-point batch = 11 TCP segments = ~16.4 KB of Ethernet frames → overflow → dropped segment → TCP retransmit after 200–300 ms → client times out → disconnect. At priority 22 the ISR wakes rx_task immediately, it reads the frame from SPI in ~30 µs, hands it to LWIP, and returns — no starvation."

🔷 W5500 socket mode: TCP (TOE) + embedded Ethernet MAC/PHY via esp_eth_mac_new_w5500

This project uses the W5500 through Espressif's official esp-eth-drivers component (esp_eth_mac_new_w5500 / esp_eth_phy_new_w5500). In this mode, the ESP-IDF Ethernet subsystem manages the W5500 as an external MAC+PHY — the TCP/IP stack remains LwIP on the ESP32 side, but the W5500's internal 32 KB buffer and SPI framing provide deterministic, interrupt-driven frame delivery. The W5500 SPI bus runs at 50 MHz on SPI2_HOST for maximum frame throughput.

🔷 Dual SPI topology: W5500 on SPI2, DAC80508 on SPI3 — zero bus contention

The system has two simultaneous high-speed SPI peripherals:

BusDeviceSpeedFunction
SPI2_HOSTW5500 Ethernet50 MHzNetwork frames (interrupt-driven)
SPI3_HOSTDAC8050850 MHzDAC output (~1 µs/point in GPTimer ISR)

Running them on separate SPI hosts means the 10 kHz GPTimer ISR and the Ethernet rx_task never block each other. This is the key hardware insight that makes the design work: the W5500 frees SPI3 for the real-time DAC path entirely.

🔷 Software diagnostic: W5500 Version Register read-back at boot

The firmware performs a direct SPI read of the W5500 Version Register (0x0039, expected 0x04) before handing control to the ESP-IDF driver. If the register returns 0x00 (chip absent or floating SPI lines), the system logs the exact GPIO numbers and aborts Ethernet initialization cleanly, falling back to WiFi-AP-only mode.

🔷 Verified in hardware ✅

The README badge shows Beta status, and the codebase contains detailed performance tuning comments that are only possible with a real hardware setup — including measured TCP retransmit timings (200–300 ms), SPI transfer timing (~30 µs per frame drain), and per-point DAC timing (~1 µs).


05 — Key Components

🌐 WIZnet W5500 — TCP (TOE) Mode via ESP-IDF esp_eth_mac_new_w5500

  • SPI2_HOST, 50 MHz, CS GPIO 16, INT GPIO 8
  • Interrupt-driven receive, rx_task priority 22
  • 16 KB internal W5500 RX buffer — critical for burst absorption during batch delivery

⚡ ESP32-S3 (Dual Core, 240 MHz)

  • Core 0: Network stack, Ether Dream TCP/UDP server, HTTP/OTA server, WiFi AP
  • Core 1: GPTimer ISR (DAC output at scan rate), buffer refill task

🔊 DAC80508 (8-channel, 16-bit, SPI)

  • SPI3_HOST, 50 MHz — dedicated bus, zero contention with Ethernet
  • 5 active channels: R/G/B laser + X/Y galvo mirrors
  • ~1 µs per point direct SPI write from IRAM ISR

🔄 Lock-Free SPSC Ring Buffer (8,192 points)

  • Atomic load_explicit / store_explicit — no mutex, no blocking
  • 1,024-point ISR sub-buffer for deterministic interrupt latency
  • Refill task on Core 1 bridges ring buffer → ISR sub-buffer

🖥️ Web Interface + OTA

  • Status dashboard: connection state, buffer level, scan rate, heap
  • OTA firmware upload via HTTP POST — no USB cable after first flash

06 — Application Scenarios

01. Professional Laser Show with MadMapper or Liberation

Connect an RJ45 cable, plug in power, and OpenLaserDAC announces itself via UDP broadcast on port 7654. MadMapper discovers it identically to a hardware Ether Dream. The full Ether Dream command set (PREPARE / BEGIN / DATA / QUEUE_RATE / STOP / E-STOP / CLEAR_E-STOP) is implemented, so beam rate changes mid-show, emergency stops, and multi-universe setups all work as expected.

02. Portable Installation with WiFi-Only

No Ethernet cable on site? OpenLaserDAC falls back to WiFi AP mode (SSID: OpenLaserDAC). The Ether Dream server runs identically over WiFi — useful for compact art installations or temporary outdoor setups where cable routing is impractical.

03. DIY Laser Controller for Galleries and Events

The open BOM (ESP32-S3 dev board + W5500 module + DAC80508 breakout) means a maker can build a field-functional laser controller for under $30 in parts, compatible with the same industry-standard show software used in professional venues. The OTA update system removes the need for USB access after installation.

04. Basis for Custom Protocol Extensions

The firmware roadmap includes IDN (ILDA Digital Network) protocol support, multi-DAC chip compatibility, geometric correction, and color calibration — all on the same hardware. The W5500's deterministic Ethernet link is a prerequisite for any of these: WiFi jitter would break the flow-control model that keeps the ring buffer stable.


Conclusion

OpenLaserDAC is a complete proof-of-concept that a W5500 + ESP32-S3 at commodity cost can replace a dedicated professional laser DAC, without any compromise to the software ecosystem.

  • ✅ Full Ether Dream protocol: TCP + UDP, all commands, complete state machine
  • ✅ W5500 hardwired TCP/IP: interrupt-driven, 50 MHz SPI, priority-tuned rx_task
  • ✅ Dual SPI topology: W5500 on SPI2, DAC80508 on SPI3 — zero contention
  • ✅ Lock-free 8,192-point ring buffer with 1,024-point ISR sub-buffer
  • ✅ GPTimer ISR: scan rates 1–100 kHz, ~1 µs/point DAC output
  • ✅ WiFi AP always-on fallback with captive portal
  • ✅ OTA firmware update over HTTP — no USB cable after first flash
  • ✅ Web dashboard: real-time buffer level, scan rate, heap, connection state
  • ✅ GPL v3 — fully open, extensible, portable

The W5500 isn't just convenient here — its hardwired TCP/IP and interrupt-driven frame delivery are load-bearing. Without deterministic Ethernet, the tight timing coupling between the show software's flow control and the DAC's point consumption would collapse. Laser show control is also the kind of project that uses W5500.


07 — Similar Projects on WIZnet Makers

OpenLaserDAC is the first and only laser DAC project on the platform. The closest neighbors by W5500 usage are LED lighting controllers built on ArtNet, a completely different protocol. Two representative examples:

ProjectWIZnet ChipProtocolOutputNotes
OpenPixelNodeW5500ArtNet (UDP)WS2812 / DMX4-universe LED controller, open hardware PCB
2040-ArtNodeW5500ArtNet (UDP)WS281xKiCad PCB, RP2040 + W5500

These are fundamentally different applications. ArtNet is a UDP-based protocol for broadcasting DMX512 lighting values to LED fixtures — it is connectionless, stateless, and tolerant of occasional packet loss (an LED strip that flickers for one frame is acceptable). Ether Dream is a TCP-based streaming protocol with explicit flow control, designed for analog galvanometer mirrors that must follow a continuous point stream with no interruption — a 200 ms TCP gap produces a visible mirror stall or overshoot. The two share only the fact that they carry lighting-related data over Ethernet.

What the comparison reveals is the breadth of W5500 deployments across the creative lighting stack: from pixel LED arrays driven by ArtNet UDP, all the way to analog mirror-and-beam laser systems driven by Ether Dream TCP. Both ends of that spectrum use W5500.


Q&A

Q: How does the W5500 mode differ from a typical ArtNet/UDP project on WIZnet Makers? A: Most ArtNet LED controllers on the platform use W5500 in UDP socket mode (Sn_MR_UDP) for ArtNet, where the protocol is connectionless and frame loss causes visible LED flicker but not system failure. OpenLaserDAC uses W5500 through the ESP-IDF driver as an external Ethernet MAC/PHY with TCP (SOCK_STREAM), because the Ether Dream flow-control model depends on TCP ACKs to pace the show software's data rate to the DAC's consumption rate. Laser galvos have zero tolerance for stream interruption — a 200 ms TCP retransmit stall would produce a visible galvo freeze or mirror overshoot.

Q: Can the scan rate be changed mid-show? A: Yes. The Ether Dream QUEUE_RATE command queues a rate change that takes effect at the next point with POINT_CONTROL_RATE_CHANGE set in its control field. The firmware implements a 16-slot rate change queue, allowing show software to schedule smooth rate transitions without dropping the connection.

Q: What happens if the W5500 is not connected? A: The boot sequence reads the W5500 Version Register directly over SPI at 1 MHz before handing control to the ESP-IDF driver. If the register returns 0x00, Ethernet initialization is aborted cleanly, the SPI GPIOs are "parked" (driven low to prevent RF noise near the WiFi antenna), and the system boots in WiFi-AP-only mode. The Ether Dream server still starts and is accessible over WiFi.


Original Link: https://github.com/gabgabe/OpenLaserDAC



OpenLaserDAC — $10 짜리 칩으로 전문 레이저 쇼 컨트롤러 만들기

#LaserDAC #EtherDream #ESP32-S3 #W5500 #UDP #TCP-TOE #ILDA #오픈소스 #실시간 #듀얼코어

📚 오픈소스 메이커/취미 프로젝트 — 레이저 쇼 제어 하드웨어를 처음부터 직접 구현 ✅ 완전히 구현됨: 전체 C 코드베이스(ESP-IDF), PlatformIO 빌드, 하드웨어 핀맵, OTA 업데이트 — 소스 코드에서 직접 검증


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

 

레이저 쇼 제어는 오랫동안 고가의 전문 장비 영역이었다. Ether Dream은 업계 표준 오픈 레이저 DAC이다. 쇼 소프트웨어가 ILDA(국제 레이저 디스플레이 협회) 포인트 스트림을 Ethernet으로 전송하면, 이 장치가 레이저 프로젝터의 갈바노미터 거울과 R/G/B 색상 채널을 수 밀리초 이내의 정밀도로 구동한다. 실제 Ether Dream 장비는 수백 달러에 달하며, 전용 Ethernet 링크에서 독자적인 네트워크 프로토콜로 동작한다.

OpenLaserDAC는 이 모든 것을 ESP32-S3 마이크로컨트롤러와 W5500 Ethernet 칩으로 대체한다. 펌웨어는 Ether Dream 프로토콜 전체를 구현한다 — TCP 명령 채널(포트 7765), UDP 브로드캐스트 디스커버리(포트 7654), 완전한 상태 머신(Idle → Prepared → Playing → E-Stop). 기존 쇼 소프트웨어(MadMapper, Liberation, 기타 Ether Dream 클라이언트)는 수정 없이 그대로 연결된다. 출력 측에서는 DAC80508 8채널 16비트 SPI DAC가 X/Y 갈보 미러와 R/G/B 레이저 빔을 1 kHz~100 kHz 스캔 레이트로 구동한다.

결과: 상용 대비 몇 분의 1 비용으로, 전문 조명 생태계와 완전히 호환되는, GPL v3 오픈소스 레이저 DAC 완성.


02 — 왜 Ether Dream인가?

🔷 업계 표준 프로토콜 호환성

MadMapper, Liberation 등 수십 종의 전문 VJ·레이저 쇼 도구가 Ether Dream을 기본으로 지원한다. 이 프로토콜을 충실히 구현함으로써 OpenLaserDAC는 거대한 소프트웨어 생태계를 무상으로 상속받는다 — 타임라인 애니메이션, 비트 싱크, ILDA 파일 재생, 3D 벡터 그래픽 등을 별도의 쇼 코드 없이 바로 활용할 수 있다.

🔷 Ethernet을 통한 실시간 결정론

레이저 갈바노미터는 기계적 시스템이다. 미러는 포인트 스트림을 마이크로초 수준의 일관성으로 따라가야 한다 — 그렇지 않으면 투영 이미지가 흔들리거나 갈보가 멈춘다. Ethernet의 패킷 스위칭 특성이 이에 불리해 보이지만, Ether Dream 프로토콜은 깊은 플로우 제어 링 버퍼로 이를 해결한다. OpenLaserDAC는 Ethernet 수신 경로와 GPTimer ISR(DAC 포인트 출력 클럭) 사이에 8,192포인트 락프리 SPSC 링 버퍼를 구현한다. ISR은 Core 1의 리필 태스크가 채우는 1,024포인트 서브 버퍼에서 읽어 10 kHz 스캔 레이트에서 포인트당 < 1 µs 지터를 달성한다.

🔷 듀얼 네트워크: Ethernet 우선, WiFi AP 폴백

펌웨어는 Ethernet DHCP를 먼저 시도하고(10초 타임아웃), 임대가 실패하면 정적 IP 192.168.77.1로 폴백한다. WiFi AP(OpenLaserDAC / openlaser)는 항상 켜져 있어 웹 인터페이스 접근과 캡티브 포털을 제공한다. 유선 쇼와 무선 설정 모두를 커버하는 구조다.


03 — 시스템 아키텍처


04 — 왜 W5500인가?

🔷 하드웨어 TCP/IP — CPU 프로토콜 스택 오버헤드 없음

Ether Dream 프로토콜은 TCP 위에서 동작한다. 소프트웨어 스택 MCU(예: WiFi + LwIP)에서는 TCP 처리가 애플리케이션과 CPU를 공유한다. W5500의 하드와이어드 TOE(TCP/IP Offload Engine)는 TCP 상태 관리(SYN/ACK, 재전송, 체크섬)를 실리콘에서 완전히 처리한다. ESP32-S3 CPU는 W5500이 인터럽트 핀(GPIO 8)을 어서트할 때만 프레임에 접근하며, rx_task(우선순위 22, LwIP 내부 태스크 우선순위 20보다 높음)가 즉시 깨어나 W5500의 16 KB 내부 RX 버퍼를 SPI로 드레인한다.

이 우선순위 설계는 단순한 설정값이 아니다. 코드베이스는 이를 명시적으로 문서화하고 있다: 기본 우선순위 15에서는 대용량 배치 처리 중 rx_task가 선점되어 W5500 내부 버퍼(16 KB)가 오버플로우하고, 878포인트 배치(= TCP 세그먼트 11개 = 약 16.4 KB 이더넷 프레임)가 버퍼를 넘쳐 TCP 재전송(200~300 ms)과 클라이언트 타임아웃을 유발한다. 우선순위 22에서는 ISR이 rx_task를 즉시 깨우고, 약 30 µs 만에 SPI 드레인을 완료한다.

🔷 W5500 소켓 모드: TCP(TOE) — esp_eth_mac_new_w5500

이 프로젝트는 Espressif 공식 esp-eth-drivers 컴포넌트(esp_eth_mac_new_w5500 / esp_eth_phy_new_w5500)를 통해 W5500을 사용한다. 이 모드에서 ESP-IDF Ethernet 서브시스템은 W5500을 외부 MAC+PHY로 관리하며, TCP/IP 스택은 ESP32 측 LwIP에서 동작하지만 W5500의 내부 32 KB 버퍼와 SPI 프레이밍이 인터럽트 구동 프레임 전달을 보장한다. W5500 SPI 버스는 SPI2_HOST에서 50 MHz로 운용된다.

🔷 듀얼 SPI 토폴로지: W5500(SPI2) + DAC80508(SPI3) — 버스 경쟁 없음

시스템에는 두 개의 고속 SPI 페리퍼럴이 동시에 동작한다:

버스디바이스속도기능
SPI2_HOSTW5500 Ethernet50 MHz네트워크 프레임 (인터럽트 구동)
SPI3_HOSTDAC8050850 MHzDAC 출력 (~1 µs/포인트, GPTimer ISR)

별도 SPI 호스트를 사용하므로 10 kHz GPTimer ISR과 Ethernet rx_task가 서로 블로킹하지 않는다. 이것이 이 설계의 핵심 하드웨어 통찰이다 — W5500이 SPI3를 실시간 DAC 경로에 완전히 개방한다.

🔷 부트 시 W5500 Version Register 읽기 검증

펌웨어는 ESP-IDF 드라이버에 제어권을 넘기기 전에 1 MHz SPI로 W5500 Version Register(0x0039, 예상값 0x04)를 직접 읽는다. 0x00이 반환되면(칩 없음 또는 SPI 라인 부유) Ethernet 초기화를 중단하고 WiFi AP 전용 모드로 폴백한다.

🔷 실제 하드웨어에서 검증됨 ✅

코드베이스에는 실제 하드웨어 없이는 알 수 없는 성능 튜닝 주석이 상세히 기록되어 있다 — TCP 재전송 타이밍(200~300 ms), SPI 프레임 드레인 타이밍(~30 µs), 포인트당 DAC 타이밍(~1 µs)의 실측값이 포함되어 있다.


05 — 핵심 컴포넌트

🌐 WIZnet W5500 — TCP(TOE) 모드 (esp_eth_mac_new_w5500)

  • SPI2_HOST, 50 MHz, CS GPIO 16, INT GPIO 8
  • 인터럽트 구동 수신, rx_task 우선순위 22
  • 내부 16 KB RX 버퍼 — 배치 전달 시 버스트 흡수에 결정적

⚡ ESP32-S3 (듀얼 코어, 240 MHz)

  • Core 0: 네트워크 스택, Ether Dream TCP/UDP 서버, HTTP/OTA 서버, WiFi AP
  • Core 1: GPTimer ISR(DAC 출력), 버퍼 리필 태스크

🔊 DAC80508 (8채널, 16비트, SPI)

  • SPI3_HOST, 50 MHz — 전용 버스, Ethernet과 경쟁 없음
  • 활성 채널 5개: R/G/B 레이저 + X/Y 갈보 미러
  • IRAM ISR에서 ~1 µs/포인트 직접 SPI 쓰기

🔄 락프리 SPSC 링 버퍼 (8,192포인트)

  • load_explicit / store_explicit 원자 연산 — 뮤텍스 없음, 블로킹 없음
  • 1,024포인트 ISR 서브 버퍼로 인터럽트 레이턴시 결정론 보장
  • Core 1 리필 태스크가 링 버퍼 → ISR 서브 버퍼를 브리지

🖥️ 웹 인터페이스 + OTA

  • 상태 대시보드: 연결 상태, 버퍼 레벨, 스캔 레이트, 힙
  • HTTP POST OTA 펌웨어 업로드 — 최초 플래시 이후 USB 케이블 불필요

06 — 활용 시나리오

01. MadMapper / Liberation으로 전문 레이저 쇼

RJ45 케이블을 연결하고 전원을 켜면 OpenLaserDAC가 포트 7654 UDP 브로드캐스트로 자신을 알린다. MadMapper는 하드웨어 Ether Dream과 동일하게 인식한다. 쇼 중 빔 레이트 변경, 긴급 정지, 멀티 유니버스 설정이 모두 정상 동작한다.

02. WiFi 전용 포터블 설치

현장에 Ethernet 케이블이 없어도 WiFi AP 모드로 폴백(SSID: OpenLaserDAC)한다. Ether Dream 서버가 동일하게 WiFi 위에서 동작한다 — 케이블 배선이 어려운 갤러리나 야외 임시 설치에 적합하다.

03. 전시·이벤트용 DIY 레이저 컨트롤러

ESP32-S3 개발 보드 + W5500 모듈 + DAC80508 브레이크아웃으로 $30 미만의 부품 BOM으로 전문 쇼 소프트웨어와 완전 호환되는 레이저 컨트롤러를 구성할 수 있다. OTA 업데이트로 설치 후 USB 없이 펌웨어를 갱신한다.

04. 커스텀 프로토콜 확장 기반

펌웨어 로드맵에 IDN(ILDA Digital Network) 프로토콜, 다중 DAC 칩 지원, 기하 보정, 색상 캘리브레이션이 포함되어 있다. W5500의 결정론적 Ethernet 링크는 이 모든 기능의 전제 조건이다 — WiFi 지터는 링 버퍼 플로우 제어 모델을 붕괴시킨다.


Conclusion

OpenLaserDAC는 W5500 + ESP32-S3를 조합해 상용 전문 레이저 DAC를 소프트웨어 생태계 호환성 손실 없이 대체할 수 있음을 완전히 증명한 프로젝트다.

  • ✅ Ether Dream 프로토콜 완전 구현: TCP + UDP, 전체 명령셋, 완전한 상태 머신
  • ✅ W5500 하드와이어드 TCP/IP: 인터럽트 구동, 50 MHz SPI, 우선순위 튜닝된 rx_task
  • ✅ 듀얼 SPI 토폴로지: W5500(SPI2) + DAC80508(SPI3) — 경쟁 없음
  • ✅ 락프리 8,192포인트 링 버퍼 + 1,024포인트 ISR 서브 버퍼
  • ✅ GPTimer ISR: 1~100 kHz 스캔 레이트, ~1 µs/포인트 DAC 출력
  • ✅ WiFi AP 상시 켜짐 폴백 + 캡티브 포털
  • ✅ HTTP OTA 펌웨어 업데이트 — 최초 플래시 이후 USB 불필요
  • ✅ 실시간 대시보드: 버퍼 레벨, 스캔 레이트, 힙, 연결 상태
  • ✅ GPL v3 — 완전 오픈, 확장 가능, 포터블

W5500은 단순히 편리한 선택이 아니다 — 하드와이어드 TCP/IP와 인터럽트 구동 프레임 전달이 구조적으로 필수다. 레이저 쇼 제어 또한 W5500을 사용하는 프로젝트다.


07 — WIZnet Makers의 유사 프로젝트

OpenLaserDAC는 플랫폼 최초이자 유일한 레이저 DAC 프로젝트다. W5500 사용이라는 접점으로 가장 가까운 이웃은 ArtNet 기반의 LED 조명 컨트롤러들이다. 대표 사례 두 가지:

프로젝트WIZnet 칩프로토콜출력비고
OpenPixelNodeW5500ArtNet (UDP)WS2812 / DMX4유니버스 LED 컨트롤러, 오픈 하드웨어 PCB
2040-ArtNodeW5500ArtNet (UDP)WS281xKiCad PCB, RP2040 + W5500

이 둘은 근본적으로 다른 응용이다. ArtNet은 UDP 기반의 DMX512 브로드캐스트 프로토콜로, 비연결식·무상태이며 패킷 손실을 허용한다(LED 스트립이 한 프레임 깜빡이는 것은 수용 가능). Ether Dream은 명시적 플로우 제어를 갖춘 TCP 스트리밍 프로토콜로, 중단 없는 연속 포인트 스트림을 요구하는 아날로그 갈바노미터 미러를 위해 설계됐다 — TCP 200 ms 공백은 미러의 가시적 멈춤이나 오버슈트를 유발한다. 두 프로토콜의 공통점은 조명 관련 데이터를 Ethernet으로 전송한다는 것뿐이다.

이 비교가 보여주는 것은 W5500이 크리에이티브 조명 스택의 양 극단을 모두 커버한다는 사실이다: ArtNet UDP로 구동하는 픽셀 LED 어레이부터, Ether Dream TCP로 구동하는 아날로그 미러·빔 레이저 시스템까지. 그 스펙트럼의 양 끝 모두 W5500을 사용한다.


Q&A

Q: W5500 모드가 플랫폼의 일반적인 ArtNet/UDP 프로젝트와 어떻게 다른가? A: 플랫폼의 대부분 ArtNet LED 컨트롤러는 W5500을 UDP 소켓 모드(Sn_MR_UDP)로 사용한다. 프로토콜이 비연결식이어서 프레임 손실이 LED 깜빡임을 유발하지만 시스템 실패로 이어지지는 않는다. OpenLaserDAC는 ESP-IDF 드라이버를 통해 W5500을 외부 Ethernet MAC/PHY로 사용하며 TCP(SOCK_STREAM)를 적용한다. Ether Dream 플로우 제어 모델이 TCP ACK에 의존해 쇼 소프트웨어의 데이터 전송 속도를 DAC 소비 속도에 맞추기 때문이다. 레이저 갈보는 스트림 중단을 전혀 허용하지 않는다.

Q: 쇼 도중 스캔 레이트를 변경할 수 있는가? A: 가능하다. Ether Dream의 QUEUE_RATE 명령이 레이트 변경을 큐에 넣고, POINT_CONTROL_RATE_CHANGE 플래그가 설정된 다음 포인트에서 적용된다. 펌웨어는 16슬롯 레이트 변경 큐를 구현하여 쇼 소프트웨어가 연결을 끊지 않고 부드러운 레이트 전환을 예약할 수 있다.

Q: W5500이 연결되지 않으면 어떻게 되는가? A: 부트 시퀀스에서 ESP-IDF 드라이버에 제어권을 넘기기 전에 1 MHz SPI로 W5500 Version Register를 직접 읽는다. 0x00이 반환되면 Ethernet 초기화를 중단하고, SPI GPIO를 "파킹"(WiFi 안테나 근처의 RF 노이즈 방지를 위해 LOW로 구동)한 뒤 WiFi AP 전용 모드로 부팅한다. Ether Dream 서버는 WiFi를 통해 그대로 동작한다.

Documents
Comments Write