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
0
Project description
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 |
System Data Flow
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 StripPC 소프트웨어가 화면의 색상 정보를 분석한 뒤 네트워크를 통해 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)
WIZnet Role in This Project
이 프로젝트에서 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() 기능을 제안했습니다.
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)
2. projectMM: A Multi-Platform Lighting Engine
ESP32를 비롯한 다양한 플랫폼에서 LED 효과를 생성하고 Art-Net, E1.31, DDP 등의 프로토콜을 통해 조명 데이터를 전달하는 프로젝트입니다. W5500을 Ethernet 인터페이스로 사용하며, IRQ가 없는 환경에서 Polling 방식으로 데이터를 수신하는 구조도 다룹니다. Firefly Luciferin의 W5500 Polling 최적화 사례와 함께 참고할 수 있습니다. (Maker Site)
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)
이러한 프로젝트들은 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)
Q2. Wi-Fi와 Ethernet을 동시에 사용할 수 있나요?
네. Firefly Luciferin은 Wi-Fi와 Ethernet의 동시 사용을 지원하며, 두 연결이 모두 활성화되면 Ethernet을 우선합니다. (Release)
Q3. W5500의 Hardware TCP/IP Offload 기능을 사용하나요?
확인된 Arduino-ESP32 구현은 ETHClass 기반 Ethernet 인터페이스를 사용합니다. W5500의 Hardware TCP/IP Socket Offload를 직접 사용하는 구현은 현재 확인된 자료에서 확인되지 않습니다. (Pull Request)
Verified Scope and Sources
| Source | Link | Checked Date |
|---|---|---|
| Firefly Luciferin | GitHub | 2026-10-26 |
| Glow Worm Luciferin | GitHub | 2026-10-26 |
| Official PCB & Ethernet Module | Wiki | 2026-10-26 |
| W5500 Polling Improvement | PR #12856 | 2026-10-26 |
| Luciferin v3.0 Development | PR #470 | 2026-10-26 |
| Software Releases | GitHub 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
