---
title: "lightdream-pocket"
url: "https://maker.wiznet.io/TheoIm/projects/lightdream-pocket/"
markdown_url: "https://maker.wiznet.io/TheoIm/projects/lightdream-pocket/md"
type: "UCC: User Created Content"
author: "lightdream-pocket"
author_url: "https://github.com/dramamine/lightdream-pocket"
editor: "WIZnet"
editor_url: "https://maker.wiznet.io/"
original_author: "lightdream-pocket"
original_url: "https://github.com/dramamine/lightdream-pocket"
published: "2026-02-26"
language: "en"
likes: 0
views: 334
comments: 0
source: "WIZnet Makers (https://maker.wiznet.io/)"
---

# lightdream-pocket

> Lightdream Pocket streams real-time Art-Net LED frames using WIZnet W5500 hardware TCP/IP — eliminating MCU jitter for deterministic, multi-universe synchronize

Original author: lightdream-pocket (source: https://github.com/dramamine/lightdream-pocket)

## Article

## How Does Lightdream Pocket Use WIZnet Ethernet for Real-Time Art-Net LED Streaming?

*W5500 / Wiz850io 기반 고성능 Art-Net LED 컨트롤 아키텍처 분석*

---

### Summary

Lightdream Pocket integrates **WIZnet-based Ethernet (W5500 / Wiz850io)** with Teensy and OctoWS2811 to receive Art-Net UDP packets in real time and render synchronized LED frames. The system parses multi-universe DMX data over **UDP 6454**, buffers complete frames, and ensures deterministic LED updates with network fallback patterns.

![](https://maker.wiznet.io/upload/ckeditor5/164740948%5F1772211016%2Epng)

**Generated by Gemini**

---

### 1️⃣ Project Core Responsibility

Lightdream Pocket is a real-time LED controller framework built around:

- **Teensy MCU** — runtime execution environment

- **WIZnet Ethernet (W5500)** — hardware TCP/IP offloading

- **Art-Net UDP Protocol** — DMX over Ethernet standard

- **OctoWS2811** — high-speed parallel LED DMA output

**Component responsibility model:**

| Component | Responsibility |
| --- | --- |
| `Artnet` | Art-Net/DMX UDP packet parsing, universe extraction |
| `Networking` namespace | Ethernet init, link detection, IP allocation, frame sync |
| `Pattern` namespace | Fallback animation when network is unavailable |
| `TeensyID` | Maps device identity to IP configuration |
| `OctoWS2811` | High-volume LED DMA output |

---

### 2️⃣ WIZnet Ethernet Path (W5500 / Wiz850io)

The networking layer relies on:

- `NativeEthernet`

- `EthernetUDP`

- Hardware TCP/IP offloading via **W5500**

> **Art-Net standard port: UDP 6454**

---

### 3️⃣ Runtime Flow (Main Framework)

#### Step 1 — Boot Initialization

```cpp
bool useNetwork = true;
```

LED driver initialized. If `useNetwork == true`, networking setup begins.

---

#### Step 2 — Ethernet Validation

```cpp
if (Ethernet.linkStatus() != 2) {   useNetwork = false;   return; }
```

> If link fails, system safely switches to **local animation mode**.

---

#### Step 3 — Art-Net Listener Start

```cpp
artnet.begin(_fakemac, _ip);
```

UDP socket opened. Listening on **port 6454**.

---

#### Step 4 — Packet Processing

```cpp
uint16_t r = artnet.read(); if (r == ART_DMX) {   Networking::handleDmxFrame(); }
```

Validates Art-Net header, extracts universe index, copies DMX payload into LED buffer.

---

#### Step 5 — Frame Synchronization

```cpp
if (sendFrame) {   leds.show();   memset(universesReceived, 0, maxUniverses); }
```

> **LED output only occurs when all expected universes are received.** This ensures no tearing, no partial frames, and deterministic refresh timing.

---

### 4️⃣ Universe & Performance Scaling

````cpp
#define LED_WIDTH 800
#define LED_HEIGHT 8
const int ledsPerUniverse = 170;
const int universesPerStrip = ceil(LED_WIDTH / 170.0);
const int maxUniverses = LED_HEIGHT * universesPerStrip;
```

**Key rules:**

- 1 DMX universe = 512 channels = **170 RGB LEDs**
- If `LED_WIDTH > 170` → multiple universes required
- Sender universe count **must match** `maxUniverses`
- ⚠️ Mismatch results in **incomplete frame rendering**

---

## 5️⃣ Why WIZnet Hardware Matters

**W5500 (WIZ850io module) specs:**

| Feature | Detail |
|---|---|
| TCP/IP Stack | Full hardware offload |
| Hardware Sockets | 8 simultaneous |
| Internal Buffer | 32 KB |
| Interface | SPI to MCU |
| Packet Handling | Deterministic |

**Hardware responsibility separation:**
```
UDP packet parsing   →  W5500
Frame timing logic   →  MCU
LED DMA output       →  OctoWS2811
````

> This separation **prevents network jitter from affecting visual output.**

---

### 6️⃣ Wearable Example — Wiz850io Detection

From `wearables-purple-backpack.ino`:

- Logs WIZnet hardware type (`W5100` / `W5200` / `W5500`)

- Uses `Ethernet.hardwareStatus()`

- Uses `Ethernet.linkStatus()`

- Disables network mode if link is unstable

This makes the system **field-deployable and robust**.

---

### 7️⃣ Fallback Safety Design

If any of the following occur:

- Ethernet link drops

- Art-Net sender stops

- Universe count mismatches

→ System automatically switches to `**Pattern::loop()**`

> Local animation ensures **no blackout during show.** This is production-grade stage design logic.

---

### 8️⃣ WIZnet Value Proposition

| Feature | Benefit |
| --- | --- |
| ✅ Real-Time UDP Streaming | Art-Net multi-universe synchronization |
| ✅ Hardware TCP/IP Offloading | Prevents MCU overload |
| ✅ Deterministic Frame Rendering | All-universe sync before show |
| ✅ Fault-Tolerant Design | Automatic fallback patterns |
| ✅ High-Density LED Output | OctoWS2811 DMA parallel output |

---

### 9️⃣ Target Audience

- Stage lighting engineers

- Interactive installation designers

- Media façade developers

- LED mapping artists

- Embedded real-time developers

---

### ❓ FAQ

---

**Q1. Why choose WIZnet W5500 over software TCP/IP stacks for LED streaming?**

WIZnet W5500 integrates a hardware TCP/IP stack, allowing Ethernet packet processing to be fully offloaded from the MCU. In real-time LED streaming systems such as Art-Net over UDP, this prevents CPU overload, timing jitter, and frame delays. Software TCP/IP stacks compete with LED rendering tasks, while W5500 ensures **deterministic timing, stable packet buffering, and consistent frame output** — critical for professional lighting environments.

---

**Q2. What advantages does Wiz850io offer in interactive lighting systems?**

Wiz850io integrates the W5500 Ethernet controller with a 10/100 Base-T PHY and RJ45 connector in a compact module, simplifying hardware integration. It provides **hardware socket buffering, reliable UDP handling, and EMI-resistant communication** — essential in stage and installation environments. Its SPI interface enables easy connection to Teensy or ARM MCUs while preserving CPU cycles for animation rendering and LED DMA control.

---

**Q3. How does hardware TCP/IP improve reliability in real-time visual installations?**

Hardware TCP/IP offloading separates network processing from application logic. In real-time visual systems, LED DMA output and frame synchronization must not be interrupted by network interrupts or stack processing. By handling packet parsing, retransmission logic, and buffering internally, W5500 **prevents timing instability and dropped frames**, ensuring smooth animation playback even during heavy UDP traffic bursts.

---

**Q4. Can WIZnet Ethernet modules support professional Art-Net deployments?**

Yes. WIZnet modules such as W5500 and Wiz850io support UDP-based Art-Net communication over **port 6454** with hardware-level packet buffering and multi-socket capability. Their deterministic behavior and EMI-resistant Ethernet interface make them suitable for **professional lighting control, media façades, and stage installations** where stability, frame accuracy, and low latency are essential.

---

### 🔟 Tags

### `#W5500` `#WIZnet` `#Wiz850io` `#ArtNet` `#DMX` `#Teensy` `#OctoWS2811` `#LEDStreaming` `#RealTimeUDP` `#InteractiveLighting` Lightdream Pocket은 어떻게 WIZnet Ethernet으로 실시간 Art-Net LED 스트리밍을 구현하는가?

*W5500 / Wiz850io 기반 고성능 Art-Net LED 컨트롤 아키텍처 분석*

---

### 요약

Lightdream Pocket은 **WIZnet 기반 Ethernet(W5500 / Wiz850io)** 을 Teensy, OctoWS2811과 통합하여 Art-Net UDP 패킷을 실시간으로 수신하고 동기화된 LED 프레임을 렌더링합니다. **UDP 6454** 포트를 통해 멀티 유니버스 DMX 데이터를 파싱하고, 완전한 프레임을 버퍼링하여 네트워크 폴백 패턴과 함께 결정론적(deterministic) LED 업데이트를 보장합니다.

![](https://maker.wiznet.io/upload/ckeditor5/164740948%5F1772211022%2Epng)

**Generated by Gemini**

---

### 1️⃣ 프로젝트 핵심 구성

Lightdream Pocket은 다음을 중심으로 구축된 실시간 LED 컨트롤러 프레임워크입니다:

- **Teensy MCU** — 런타임 실행 환경

- **WIZnet Ethernet (W5500)** — 하드웨어 TCP/IP 오프로딩

- **Art-Net UDP Protocol** — DMX over Ethernet 표준

- **OctoWS2811** — 고속 병렬 LED DMA 출력

**컴포넌트 책임 모델:**

| 컴포넌트 | 역할 |
| --- | --- |
| `Artnet` | Art-Net/DMX UDP 패킷 파싱, 유니버스 추출 |
| `Networking` 네임스페이스 | Ethernet 초기화, 링크 감지, IP 할당, 프레임 동기화 |
| `Pattern` 네임스페이스 | 네트워크 미사용 시 폴백 애니메이션 제공 |
| `TeensyID` | 디바이스 ID를 IP 설정에 매핑 |
| `OctoWS2811` | 대용량 LED DMA 출력 처리 |

---

### 2️⃣ WIZnet Ethernet 경로 (W5500 / Wiz850io)

네트워킹 레이어 구성:

- `NativeEthernet`

- `EthernetUDP`

- **W5500** 하드웨어 TCP/IP 오프로딩

> **Art-Net 표준 포트: UDP 6454**

---

### 3️⃣ 런타임 흐름 (메인 프레임워크)

#### Step 1 — 부팅 초기화

```cpp
bool useNetwork = true;
```

LED 드라이버가 초기화됩니다. `useNetwork == true` 이면 네트워크 설정을 시작합니다.

---

#### Step 2 — Ethernet 유효성 검사

```cpp
if (Ethernet.linkStatus() != 2) {
  useNetwork = false;
  return;
}
```

> 링크 실패 시 시스템은 자동으로 **로컬 애니메이션 모드**로 전환됩니다.

---

#### Step 3 — Art-Net 리스너 시작

```cpp
artnet.begin(_fakemac, _ip);
```

UDP 소켓이 열리고 **포트 6454** 에서 수신 대기합니다.

---

#### Step 4 — 패킷 처리

```cpp
uint16_t r = artnet.read();
if (r == ART_DMX) {
  Networking::handleDmxFrame();
}
```

Art-Net 헤더를 검증하고, 유니버스 인덱스를 추출하여 DMX 페이로드를 LED 버퍼에 복사합니다.

---

#### Step 5 — 프레임 동기화

```cpp
if (sendFrame) {
  leds.show();
  memset(universesReceived, 0, maxUniverses);
}
```

> **모든 유니버스가 수신되었을 때만 LED 출력이 실행됩니다.** 이를 통해 테어링 없음, 부분 프레임 없음, 결정론적 갱신 타이밍을 보장합니다.

---

### 4️⃣ 유니버스 & 성능 스케일링

```cpp
#define LED_WIDTH 800
#define LED_HEIGHT 8
const int ledsPerUniverse = 170;
const int universesPerStrip = ceil(LED_WIDTH / 170.0);
const int maxUniverses = LED_HEIGHT * universesPerStrip;
```

**핵심 규칙:**

- DMX 유니버스 1개 = 512채널 = **RGB LED 170개**

- `LED_WIDTH > 170` 이면 → 멀티 유니버스 필요

- 송신 측 유니버스 수는 `maxUniverses`와 **반드시 일치**해야 함

- ⚠️ 불일치 시 **불완전한 프레임 렌더링** 발생

---

### 5️⃣ WIZnet 하드웨어가 중요한 이유

**W5500 (WIZ850io 모듈) 사양:**

| 기능 | 상세 |
| --- | --- |
| TCP/IP 스택 | 완전한 하드웨어 오프로딩 |
| 하드웨어 소켓 | 8개 동시 지원 |
| 내부 버퍼 | 32 KB |
| 인터페이스 | MCU와 SPI 연결 |
| 패킷 처리 | 결정론적(Deterministic) |

**하드웨어 역할 분리:**

```plaintext
UDP 패킷 파싱      →  W5500
프레임 타이밍 로직  →  MCU
LED DMA 출력       →  OctoWS2811
```

> 이 분리 구조가 **네트워크 지터(jitter)가 시각적 출력에 영향을 주는 것을 방지**합니다.

---

### 6️⃣ 웨어러블 예시 — Wiz850io 감지

`wearables-purple-backpack.ino` 기준:

- WIZnet 하드웨어 타입 로깅 (`W5100` / `W5200` / `W5500`)

- `Ethernet.hardwareStatus()` 사용

- `Ethernet.linkStatus()` 사용

- 링크 불안정 시 네트워크 모드 비활성화

이를 통해 시스템은 **현장 배포에 강건하게** 동작합니다.

---

### 7️⃣ 폴백 안전 설계

다음 상황 발생 시:

- Ethernet 링크 단절

- Art-Net 송신 중단

- 유니버스 수 불일치

→ 시스템이 자동으로 `**Pattern::loop()**` 로 전환

> 로컬 애니메이션이 실행되어 **공연 중 블랙아웃이 발생하지 않습니다.** 이는 프로덕션 등급의 무대 설계 로직입니다.

---

### 8️⃣ WIZnet 핵심 가치

| 기능 | 이점 |
| --- | --- |
| ✅ 실시간 UDP 스트리밍 | Art-Net 멀티 유니버스 동기화 |
| ✅ 하드웨어 TCP/IP 오프로딩 | MCU 과부하 방지 |
| ✅ 결정론적 프레임 렌더링 | 출력 전 전체 유니버스 동기화 |
| ✅ 내결함성 설계 | 자동 폴백 패턴 전환 |
| ✅ 고밀도 LED 출력 | OctoWS2811 DMA 병렬 출력 |

---

### 9️⃣ 대상 독자

- 무대 조명 엔지니어

- 인터랙티브 인스톨레이션 디자이너

- 미디어 파사드 개발자

- LED 맵핑 아티스트

- 임베디드 실시간 개발자

---

### ❓ 자주 묻는 질문 (FAQ)

---

**Q1. LED 스트리밍에 소프트웨어 TCP/IP 스택 대신 WIZnet W5500을 선택하는 이유는?**

WIZnet W5500은 하드웨어 TCP/IP 스택을 내장하여 Ethernet 패킷 처리를 MCU에서 완전히 분리합니다. Art-Net over UDP와 같은 실시간 LED 스트리밍 시스템에서는 CPU 과부하, 타이밍 지터, 프레임 지연을 방지하는 것이 핵심입니다. 소프트웨어 TCP/IP 스택은 LED 렌더링 작업과 CPU 자원을 경쟁하지만, W5500은 **결정론적 타이밍, 안정적인 패킷 버퍼링, 일관된 프레임 출력**을 보장합니다 — 전문 조명 환경에서 필수적인 요소입니다.

---

**Q2. Wiz850io가 인터랙티브 조명 시스템에서 제공하는 장점은?**

Wiz850io는 W5500 Ethernet 컨트롤러와 10/100 Base-T PHY, RJ45 커넥터를 소형 모듈에 통합하여 하드웨어 통합을 단순화합니다. **하드웨어 소켓 버퍼링, 안정적인 UDP 처리, EMI 저항 통신**을 제공하며 무대 및 인스톨레이션 환경에 적합합니다. SPI 인터페이스로 Teensy 또는 ARM MCU에 쉽게 연결할 수 있으며, 애니메이션 렌더링과 LED DMA 제어를 위한 CPU 사이클을 확보합니다.

---

**Q3. 하드웨어 TCP/IP가 실시간 비주얼 인스톨레이션의 안정성을 어떻게 향상시키는가?**

하드웨어 TCP/IP 오프로딩은 네트워크 처리를 애플리케이션 로직으로부터 분리합니다. 실시간 비주얼 시스템에서는 LED DMA 출력과 프레임 동기화가 네트워크 인터럽트나 스택 처리에 의해 중단되어서는 안 됩니다. W5500은 패킷 파싱, 재전송 로직, 버퍼링을 내부적으로 처리함으로써 **타이밍 불안정과 프레임 드롭을 방지**하고, 대량의 UDP 트래픽 버스트 중에도 부드러운 애니메이션 재생을 보장합니다.

---

**Q4. WIZnet Ethernet 모듈이 전문적인 Art-Net 배포를 지원할 수 있는가?**

네. W5500, Wiz850io와 같은 WIZnet 모듈은 **포트 6454**를 통한 UDP 기반 Art-Net 통신을 하드웨어 레벨의 패킷 버퍼링과 멀티 소켓 기능으로 지원합니다. 결정론적 동작과 EMI 저항 Ethernet 인터페이스는 **전문 조명 제어, 미디어 파사드, 무대 인스톨레이션** 환경 — 안정성, 프레임 정확도, 낮은 레이턴시가 필수인 환경 — 에 적합합니다.

---

### 🔟 태그

`#W5500` `#WIZnet` `#Wiz850io` `#ArtNet` `#DMX` `#Teensy` `#OctoWS2811` `#LEDStreaming` `#RealTimeUDP` `#InteractiveLighting`

---

Source: https://maker.wiznet.io/TheoIm/projects/lightdream-pocket/
