---
title: "Firefly Luciferin: A Real-Time Ambient Lighting System Using ESP32 and W5500 SPI Ethernet"
url: "https://maker.wiznet.io/Aimee0/projects/firefly-luciferin-a-real-time-ambient-lighting-system-using-esp32-and-w5500-spi-ethernet/"
markdown_url: "https://maker.wiznet.io/Aimee0/projects/firefly-luciferin-a-real-time-ambient-lighting-system-using-esp32-and-w5500-spi-ethernet/md"
type: "UCC: User Created Content"
author: "sblantipodi"
author_url: "https://github.com/sblantipodi/firefly_luciferin"
editor: "WIZnet"
editor_url: "https://maker.wiznet.io/"
original_author: "sblantipodi"
original_url: "https://github.com/sblantipodi/firefly_luciferin"
published: "2026-10-26"
language: "en"
hardware: ["WIZnet W5500"]
likes: 0
views: 13
comments: 0
source: "WIZnet Makers (https://maker.wiznet.io/)"
---

# Firefly Luciferin: A Real-Time Ambient Lighting System Using ESP32 and W5500 SPI Ethernet

> Firefly Luciferin: A Real-Time Ambient Lighting System Using ESP32 and W5500 SPI Ethernet

Original author: sblantipodi (source: https://github.com/sblantipodi/firefly_luciferin)

## Components

- **WIZnet W5500** x 1 ([docs](https://docs.wiznet.io/Product/Chip/Ethernet/W5500))

WIZnet parts: W5500 ([Datasheet](https://docs.wiznet.io/Product/Chip/Ethernet/W5500/datasheet?utm_source=maker&utm_medium=project&utm_campaign=w5500), [product hub](https://maker.wiznet.io/products/w5500/))

## Article

## Overview

**Firefly Luciferin**은 PC 화면의 색상을 실시간으로 분석하여 모니터 주변 LED Strip의 색상을 동기화하는 오픈소스 Ambient Lighting 시스템입니다. PC에서 실행되는 Firefly Luciferin과 ESP32 기반 LED Controller용 Glow Worm Luciferin 펌웨어로 구성되며, **WIZnet W5500을 활용한 SPI Ethernet 연결**을 지원합니다.

이 시스템은 화면의 색상 변화에 맞춰 모니터 뒤에 설치된 WS2812B LED Strip을 제어하여 화면 밖으로 조명 효과를 확장합니다.

기본적인 Wi-Fi 연결뿐 아니라 Ethernet도 지원하며, 두 네트워크를 동시에 사용할 경우 Ethernet을 우선하는 구조를 제공합니다. 이를 통해 개발자는 설치 환경에 따라 유선 또는 무선 네트워크를 선택할 수 있습니다.

## Technical Architecture

Firefly Luciferin은 화면 데이터를 처리하는 PC 소프트웨어와 LED를 직접 제어하는 MCU 펌웨어로 구성됩니다.

| Item | Confirmed Details |
| --- | --- |
| WIZnet Chip | W5500 |
| MCU | ESP32, ESP32-S3 등 |
| Ethernet Interface | SPI |
| Network | Ethernet / Wi-Fi |
| Protocol | UDP, TCP (장치 검색 fallback) |
| LED | WS2812B |
| Firmware | Glow Worm Luciferin |
| Ethernet API | Arduino-ESP32 `ETHClass` |

([Wiki](https://github.com/sblantipodi/firefly_luciferin/wiki/Ready-to-print-PCB), [GitHub](https://github.com/sblantipodi/glow_worm_luciferin))

### System Data Flow

```plaintext
PC Screen
    |
    v
Firefly Luciferin
(Screen Capture / Color Processing)
    |
    | UDP Streaming
    v
Ethernet Network
    |
    v
W5500 Ethernet Controller
    |
    | SPI
    v
ESP32 / Glow Worm Luciferin
    |
    | LED Control Signal
    v
WS2812B LED Strip
```

PC 소프트웨어가 화면의 색상 정보를 분석한 뒤 네트워크를 통해 LED Controller에 전달하면, ESP32가 해당 데이터를 처리하여 LED Strip의 색상을 변경합니다.

### Luciferin Ethernet Module

프로젝트에서는 기존 Luciferin Official PCB에 Ethernet 기능을 추가할 수 있도록 별도의 **Luciferin Ethernet Module**을 제공합니다.

공식 하드웨어 문서에서 안내하는 주요 구성은 다음과 같습니다.

- ESP32 또는 ESP32-S3 기반 MCU Board

- W5500 Lite Ethernet Board

- Luciferin Ethernet Module

- Luciferin Official PCB

Ethernet 설정은 Luciferin Web Interface 또는 Network 설정 화면에서 수행할 수 있으며, SPI 통신에 필요한 `MISO`, `MOSI`, `SCLK`, `CS` GPIO를 지정할 수 있습니다.

또한 프로젝트에서는 PCB 제작에 활용할 수 있도록 Ethernet Module의 GERBER 파일도 제공합니다. ([Wiki](https://github.com/sblantipodi/firefly_luciferin/wiki/Ready-to-print-PCB#luciferin-ethernet-module-for-the-official-pcb))

## WIZnet Role in This Project

![](https://maker.wiznet.io/upload/ckeditor5/e412b2a1bbbd453a8c39e61576df04fd.png)

*https://github.com/sblantipodi/firefly_luciferin/wiki/Ready-to-print-PCB#luciferin-ethernet-module-for-the-official-pcb*

이 프로젝트에서 WIZnet W5500은 ESP32에 유선 Ethernet 연결을 추가하는 역할을 담당합니다.

W5500은 SPI를 통해 ESP32와 연결되며, Arduino-ESP32의 Ethernet API를 이용하여 네트워크 인터페이스로 동작합니다.

### W5500 Ethernet Polling Optimization

이 프로젝트에서 특히 주목할 부분은 W5500의 Ethernet 수신 Polling 주기 개선입니다.

W5500의 `INT` 핀을 MCU에 연결하지 않은 환경에서는 주기적으로 수신 상태를 확인하는 Polling 방식이 사용될 수 있습니다.

기존 Arduino-ESP32 W5500 드라이버는 IRQ GPIO를 사용하지 않을 때 기본 10 ms Polling 주기를 사용했습니다.

Firefly Luciferin 개발자는 이 주기를 애플리케이션에서 설정할 수 있도록 `ETH.setPollPeriod()` 기능을 제안했습니다.

```cpp
ETH.setPollPeriod(5);

ETH.begin(
    ETH_PHY_W5500,
    -1,
    cs,
    -1,
    -1,
    SPI
);
```

위 예제는 W5500의 Polling 주기를 5 ms로 설정하고 SPI Ethernet 인터페이스를 초기화하는 방법을 보여줍니다.

Polling 주기에 따른 이론적인 확인 빈도는 다음과 같습니다.

| Polling Period | Polling Cycles |
| --- | --- |
| 10 ms | 약 100회/초 |
| 5 ms | 약 200회/초 |
| 1 ms | 약 1,000회/초 |

실제 데이터 수신 및 LED 업데이트 속도는 MCU 처리 성능과 시스템 부하에 따라 달라질 수 있습니다.

이 개선 사항은 2026년 8월 26일 Arduino-ESP32 프로젝트에 Merge되었으며, ESP32-S3, ESP32-C5, ESP32-C6와 W5500 SPI Ethernet 구성에서 테스트되었습니다.

이 사례는 W5500을 사용하는 애플리케이션에서 네트워크 수신 처리 주기가 실시간 데이터 스트리밍에 어떤 영향을 줄 수 있는지 보여줍니다.

## Developer Takeaways

**1. SPI Ethernet 확장 구조**

ESP32와 W5500을 SPI로 연결하여 기존 Wi-Fi 기반 프로젝트에 Ethernet 기능을 추가하는 설계를 참고할 수 있습니다. 공식 PCB 문서에서는 W5500 Lite Board와 SPI GPIO 설정 방법을 제공합니다.

**2. Ethernet Polling과 Interrupt 선택**

W5500의 IRQ GPIO를 사용할 수 없는 하드웨어에서는 Polling 주기 설정을 통해 수신 처리 빈도를 조정할 수 있습니다. 다만 Polling 주기를 줄이면 CPU 사용량이 증가할 수 있으므로 애플리케이션 요구사항에 맞게 설정해야 합니다.

**3. Wi-Fi와 Ethernet을 결합한 Hybrid Network**

Firefly Luciferin은 Wi-Fi와 Ethernet이 동시에 활성화된 환경에서 Ethernet을 우선하는 기능을 지원합니다. 이러한 구성은 네트워크 연결 방식의 선택이 필요한 IoT 및 LED Controller 설계에 참고할 수 있습니다.

**4. 확장 가능한 PCB 구조**

Luciferin Official PCB는 MCU Board를 교체하거나 Ethernet Module을 추가할 수 있도록 설계되었습니다. 개발자는 공개된 GERBER 파일과 하드웨어 구성 자료를 활용하여 자신에게 맞는 LED Controller를 제작할 수 있습니다.

## Related Maker Content and Application Value

WIZnet Maker Site에는 W5500 Ethernet을 활용하여 LED 조명 데이터를 실시간으로 전송하고 제어하는 다양한 프로젝트가 소개되어 있습니다.

**1. Open-Source Pixel Artnet Node now supports WLED!**

ESP32와 W5500을 활용하여 Art-Net/sACN 조명 데이터를 수신하고 Addressable LED를 제어하는 오픈소스 프로젝트입니다. WLED와의 연동을 지원한다는 점에서 Firefly Luciferin과 유사하지만, PC 화면 색상 동기화보다는 전문 조명 프로토콜과 LED 제어에 초점을 맞추고 있습니다. ([Maker Site](https://maker.wiznet.io/gunn/projects/open-source-pixel-artnet-node-now-supports-wled/))

**2. projectMM: A Multi-Platform Lighting Engine**

ESP32를 비롯한 다양한 플랫폼에서 LED 효과를 생성하고 Art-Net, E1.31, DDP 등의 프로토콜을 통해 조명 데이터를 전달하는 프로젝트입니다. W5500을 Ethernet 인터페이스로 사용하며, IRQ가 없는 환경에서 Polling 방식으로 데이터를 수신하는 구조도 다룹니다. Firefly Luciferin의 W5500 Polling 최적화 사례와 함께 참고할 수 있습니다. ([Maker Site](https://maker.wiznet.io/matthew/projects/projectmm-a-multi-platform-lighting-engine-combining-a-16k-led-and-dmx-pipeline-with-w5500-ethernet/))

**3. 4-Universe Art-Net LED Controller with WIZnet W5500-EVB-Pico**

RP2040 기반 W5500-EVB-Pico를 사용하여 Art-Net UDP 패킷을 수신하고 WS2812B LED Strip을 제어하는 프로젝트입니다. Firefly Luciferin과 MCU 및 데이터 생성 방식은 다르지만, W5500 Ethernet을 통해 실시간 LED 제어 데이터를 전달한다는 공통점이 있습니다. ([Maker Site](https://maker.wiznet.io/Lihan__/projects/4-universe-art-net-led-controller-with-wiznet-w5500-evb-pico/))

이러한 프로젝트들은 W5500이 실시간 조명 시스템에서 Ethernet 연결을 제공하는 다양한 활용 사례를 보여줍니다. Firefly Luciferin은 그중에서도 **PC 화면 색상 분석, Wi-Fi/Ethernet Hybrid Network, W5500 Polling 최적화**를 결합했다는 점에서 차별화됩니다.

이 구조는 PC Gaming Ambient Lighting뿐 아니라 Media Art, Interactive Lighting, LED Display와 같은 네트워크 기반 조명 시스템을 설계할 때도 참고할 수 있습니다.

## FAQ

**Q1. Firefly Luciferin에서 W5500은 어떤 역할을 하나요?**

W5500은 ESP32에 SPI 기반 Ethernet 연결을 제공하며, PC에서 전송되는 LED 제어 데이터를 유선 네트워크로 수신할 수 있도록 합니다. ([Wiki](https://github.com/sblantipodi/firefly_luciferin/wiki/Ready-to-print-PCB))

**Q2. Wi-Fi와 Ethernet을 동시에 사용할 수 있나요?**

네. Firefly Luciferin은 Wi-Fi와 Ethernet의 동시 사용을 지원하며, 두 연결이 모두 활성화되면 Ethernet을 우선합니다. ([Release](https://github.com/sblantipodi/firefly_luciferin/releases))

**Q3. W5500의 Hardware TCP/IP Offload 기능을 사용하나요?**

확인된 Arduino-ESP32 구현은 `ETHClass` 기반 Ethernet 인터페이스를 사용합니다. W5500의 Hardware TCP/IP Socket Offload를 직접 사용하는 구현은 현재 확인된 자료에서 확인되지 않습니다. ([Pull Request](https://github.com/espressif/arduino-esp32/pull/12856))

## Verified Scope and Sources

| Source | Link | Checked Date |
| --- | --- | --- |
| Firefly Luciferin | [GitHub](https://github.com/sblantipodi/firefly_luciferin) | 2026-10-26 |
| Glow Worm Luciferin | [GitHub](https://github.com/sblantipodi/glow_worm_luciferin) | 2026-10-26 |
| Official PCB & Ethernet Module | [Wiki](https://github.com/sblantipodi/firefly_luciferin/wiki/Ready-to-print-PCB) | 2026-10-26 |
| W5500 Polling Improvement | [PR #12856](https://github.com/espressif/arduino-esp32/pull/12856) | 2026-10-26 |
| Luciferin v3.0 Development | [PR #470](https://github.com/sblantipodi/firefly_luciferin/pull/470) | 2026-10-26 |
| Software Releases | [GitHub Releases](https://github.com/sblantipodi/firefly_luciferin/releases) | 2026-10-26 |

Firefly Luciferin은 화면 색상 분석과 네트워크 기반 LED 제어를 결합한 오픈소스 Ambient Lighting 시스템입니다. W5500을 활용하여 ESP32에 SPI Ethernet 기능을 추가하고, Wi-Fi와 Ethernet을 선택적으로 활용할 수 있습니다. 특히 W5500 Polling 주기 개선이 Arduino-ESP32 프로젝트에 반영되었다는 점에서, 실제 애플리케이션의 요구사항이 Ethernet 드라이버 개선으로 이어진 사례로도 의미가 있습니다.

---

<https://github.com/sblantipodi/firefly_luciferin/pull/470>

<https://github.com/espressif/arduino-esp32/pull/12856>

<https://github.com/sblantipodi/firefly_luciferin/wiki/Ready-to-print-PCB#luciferin-ethernet-module-for-the-official-pcb>

---

Source: https://maker.wiznet.io/Aimee0/projects/firefly-luciferin-a-real-time-ambient-lighting-system-using-esp32-and-w5500-spi-ethernet/
