Skip to content

hydra-nano

RP2040 + W5500 LED controller in Rust: receives sACN (E1.31) over Ethernet and drives 8 WS2812B outputs; open PCB and MIT license.

TheoIm

Published November 10, 2026

Original author: jfrohnhofen · SwitzerlandOriginal source (new tab)

hydra-nano

Components

Hardware components

WIZnet parts

Project description

Overview

hydra nano is a wired lighting controller built from a Raspberry Pi Pico (RP2040) and a WIZnet W5500 Ethernet module. It listens for sACN (E1.31), the network form of DMX512 lighting data that lighting consoles and software send over a LAN, and turns it into eight outputs for WS2812B pixel strips or PWM dimmers. Firmware (Rust, Embassy), PCB source and enclosure models are all published in one repository by Johannes Frohnhofen (jfrohnhofen/hydra-nano, MIT license, first commits 2026-11-09).

It is useful wherever LED strips should follow the same lighting desk as the rest of the rig, over a cable: theatre and event stages, LED tape in clubs and bars, and permanent installations such as shop windows or museum displays where Wi-Fi is unwanted. One board can mix pixel strips and single-colour dimmer channels, and a built-in Fire mode lets a console run a flame effect by sending only brightness, speed and colour.

At a Glance

  • What it is: an 8-output sACN-to-pixel/dimmer node, firmware/app/src/main.rs:1-27
  • MCU: Raspberry Pi Pico (RP2040), dual-core, firmware/app/src/main.rs:705-714
  • Network: W5500 Ethernet module on SPI0 at 8 MHz, firmware/app/src/main.rs:717-726
  • Outputs: 8 channels on GP8–GP15, WS2812 via PIO at 800 kHz or hardware PWM, firmware/app/src/output.rs:1-23
  • Pixels: up to 1000 per output, firmware/sacn-core/src/channel.rs:11
  • Setup: web UI at http://hydra-xxxxxx.local/, DHCP with a link-local fallback, firmware/app/src/main.rs:23-26
  • Hardware source: atopile + KiCad layout in pcb/, enclosure STEP files in enclosure/
  • License: MIT, LICENSE

Why It Is Worth a Look

Most hobby pixel controllers are Wi-Fi boards. That is fine on a desk, but in a venue the radio band is shared with phones, wireless mics and the audience. hydra nano puts the lighting data on a cable instead. For a fixed installation or a touring rig, that is the main reason to look at it.

The second reason is that it is a complete small product, not just a firmware demo. The repository has the board design, an enclosure, and even a label-sheet generator that prints MAC, hostname and IP for each unit (enclosure/make_labels.py:2-12). Someone clearly planned to build more than one.

The third reason is the code quality for a three-week-old project. The sACN parser, channel mapping, fire effect and signal-loss logic sit in a hardware-independent crate (firmware/sacn-core) with host unit tests, and GitHub Actions runs format check, cargo test -p sacn-core and a release firmware build on every push (.github/workflows/firmware.yml:36-47).

How It Works

Lighting console / software (sACN sender)
        |  UDP 5568, multicast 239.255.<hi>.<lo>
        v
  [ W5500 module ]  Ethernet MAC + PHY, raw frames over SPI0 (8 MHz)
        |
        v
  RP2040 core 0: embassy-net stack -> sACN parser -> universe store (32 slots)
                 + DHCP / mDNS / web UI (port 80) / USB log
        |
        v
  RP2040 core 1: render 8 channels every 25 ms target
        |
        +--> PIO0 SM0-3  -> GP15..GP12 -> level shifter -> IDC headers
        +--> PIO1 SM0-3  -> GP11..GP8  -> level shifter -> IDC headers
             (or PWM slices 4-7 for dimmer channels)

The receiver binds UDP 5568 and joins one multicast group per universe the outputs need, using the sACN address pattern 239.255.<universe high byte>.<universe low byte> (firmware/app/src/main.rs:474-478, 508-513). Each packet is parsed and stored by universe number (main.rs:533-550). Core 1 reads that store, builds the pixel bytes, and pushes them out (main.rs:561-585).

What W5500 Actually Does

In this firmware the W5500 is used as an Ethernet MAC and PHY, not as a TCP/IP engine.

The board talks to the chip through the embassy-net-wiznet driver (firmware/app/Cargo.toml:35; main.rs:729-745). That driver puts the WIZnet chip in MACRAW mode, where the chip passes whole Ethernet frames to the MCU (upstream source: embassy-net-wiznet/src/device.rs, "Wiznet chip in MACRAW mode"). The frames then go to embassy-net, a software TCP/IP stack running on the RP2040, built with IPv4, UDP, TCP, DHCP, multicast and ICMP enabled (Cargo.toml:24-34; main.rs:753-758).

So the boundary is:

  • W5500 does: the 10/100 Ethernet link, MAC/PHY, buffering received frames, and signalling the MCU on its INTn pin (GP4).
  • RP2040 does: IP, UDP, the sACN receive socket, IGMP multicast joins, DHCP, mDNS and the HTTP server.

This is a valid design choice. A software stack gives the author one Rust networking API for UDP, TCP and mDNS together. The trade-off is that the W5500's built-in hardware TCP/IP sockets are not used here, so the RP2040 spends its own CPU time and RAM on the network stack. The author keeps that work on core 0 and gives core 1 to LED output, which is how the two loads stay apart.

How Does One Pico Feed Eight Outputs at Once?

Each output has its own PIO state machine: PIO0 handles channels 1–4 and PIO1 handles channels 5–8 (output.rs:1-23). The WS2812 program uses 10 PIO cycles per bit at a 15.625 clock divider, giving 875 ns / 375 ns high times for a 1 and 0 bit (output.rs:55-59).

Each channel also has its own DMA channel. All eight strips are started together and awaited with join4, so they transmit in parallel instead of one after another (output.rs:268-286). A 100 µs gap after each frame gives the WS2812 latch reset (output.rs:288-291). The render loop targets a 25 ms period, which the comment calls 40 Hz (main.rs:579).

Every channel can be set to one of five modes (firmware/sacn-core/src/channel.rs:45-70):

  • Ws2812: 3 DMX slots per pixel (R, G, B). A long strip can span several consecutive universes, and pixels are never split across a universe boundary (channel.rs:51-54).
  • Ws2812Fill: one RGB value for the whole strip.
  • Fire: a local Fire2012-style flame effect, with dimmer, speed and colour balance taken from three DMX slots (fire.rs:1-6).
  • Pwm: one DMX slot drives a dimmer through a MOSFET gate; PWM frequency is adjustable from 100 Hz to 20 kHz (channel.rs:13-14).
  • Off.

Outputs are paired into four groups because two outputs share one PWM slice (output.rs:13-17). The web UI also has built-in test patterns such as full white, RGB cycle, rainbow and a single moving pixel for checking strip order and length (test_pattern.rs:11-23).

What Happens When the Lighting Console Goes Quiet?

On a real show this matters as much as the happy path. hydra nano has a per-channel signal-loss setting (firmware/sacn-core/src/loss.rs:9-21):

  • Hold: keep the last frame.
  • Blackout: go dark after the timeout. This is the default.
  • Fade: fade to dark over a set time.

The default timeout is 2500 ms, the E1.31 network-data-loss value (loss.rs:9). When a console sends the sACN "stream terminated" flag, loss handling starts at once, and the three repeated termination packets the standard asks for do not restart the fade timer (firmware/app/src/state.rs:81-89).

There are also housekeeping details aimed at unattended installs. If DHCP fails, the board falls back to a link-local 169.254.x.y address derived from the flash unique ID (sacn-core/src/identity.rs:54-55). It retries DHCP every 5 minutes, but skips the retry while sACN data is flowing so a running show is not interrupted (main.rs:116-134). A hardware watchdog is fed only while core 1 keeps rendering frames (main.rs:771-782).

What Is on the PCB?

The board is described in atopile source (pcb/main.ato), with a KiCad layout in pcb/layouts/hydra-nano/. It is a carrier for off-the-shelf modules (pcb/main.ato:395-403):

  • Raspberry Pi Pico on a 40-pin THT footprint
  • W5500 Ethernet module, 2×6 pins at 20.32 mm row spacing (main.ato:121-126), powered from the Pico's 3.3 V output (main.ato:438-439)
  • USB-C breakout supplying 5 V to the Pico, the level shifter and the LED headers (main.ato:432-436, 454-459)
  • An 8-channel 3.3 V→5 V level shifter module, with eight solder jumpers to bypass it if the module is left out (main.ato:305-313, 358-362)
  • Two 6-pin and one 10-pin right-angle IDC headers carrying data, 5 V and GND for the eight outputs (main.ato:409-412)
  • A 3-pin debug header (RUN, 3V3, GND)

The W5500 wiring in the PCB matches the firmware: MISO GP0, RSTn GP1, SCK GP2, MOSI GP3, INTn GP4, CSn GP5 (main.ato:103-110; firmware/app/src/main.rs:717-726). The USB-C port also gives a serial log stream and a picotool reset interface, so the board can be reflashed without pressing BOOTSEL (firmware/app/src/usb.rs:1-9).

Where You Could Use It

  • Theatre and event stages: pixel strips on set pieces, driven from the same sACN network as the moving lights.
  • Permanent installations: shop windows, museum displays or architectural accents where Wi-Fi is not wanted or not allowed.
  • Club and bar lighting: LED tape behind bars or ceilings, fed by lighting software over a switch.
  • Flame or candle effects: the Fire mode runs on the board, so a console only needs to send dimmer, speed and colour.
  • Mixed loads: some channels as pixel strips, others as PWM dimmers for single-colour LED tape through a MOSFET.

Before You Build One

  • Early stage. The repository was created on 2026-10-20 and its four public commits are dated 2026-11-09, labelled "pcb v0.1" and "initial firmware". Treat it as a first revision.
  • No README yet. Pinouts, modes and behaviour are documented in source comments, not in a user guide.
  • No published test record. The repository has no photos, measured frame rates or list of consoles it was tested with. The 40 Hz figure is the loop target in code, and long strips take longer to clock out.
  • sACN scope. The parser handles DMX data packets only; universe discovery and synchronization packets are out of scope (sacn-core/src/sacn.rs:1-4). Art-Net is not implemented.
  • Power. LED power comes from the USB-C breakout's 5 V rail. Long strips need their own supply; the repository does not describe a high-current power option.
  • Toolchain. Building needs Rust with the thumbv6m-none-eabi target; the CI file shows the exact commands.

Related WIZnet Maker Reading Path

Source-Backed Summary

hydra nano is an MIT-licensed, eight-output sACN (E1.31) LED controller built from a Raspberry Pi Pico and a W5500 Ethernet module. The W5500 provides the wired Ethernet link in MACRAW mode, and the RP2040 runs the IP stack, sACN receiver, DHCP, mDNS and web UI on core 0. Core 1 drives up to 1000 WS2812B pixels per output through PIO and DMA in parallel, or PWM dimmers. Per-channel hold/blackout/fade loss handling, a link-local fallback address and a frame-gated watchdog show it was designed for unattended lighting installs. Firmware, PCB source and enclosure are public, and the project is at its first revision.

FAQ

Does the W5500 handle TCP/IP for the Pico in this project?
No. The firmware uses the W5500 as a raw Ethernet interface, and the RP2040 runs the IP/UDP stack itself through embassy-net. The W5500 can process TCP/IP in hardware, but this design does not use that feature.

How many universes can it receive?
The receiver keeps up to 32 universes in its store (state.rs:16). One pixel output can span several consecutive universes; a 1000-pixel strip needs more than one 512-channel universe.

Does it support Art-Net?
No. Only sACN (E1.31) data packets are parsed in the current code.

Can I use it without the level shifter?
The PCB has a solder jumper per channel to bridge the 3.3 V signal straight to the header when the level shifter module is not fitted (main.ato:358-362). Whether a given strip accepts 3.3 V data depends on the strip.

Is it ready to buy or deploy?
It is an open-source first revision, not a product. The design files are public, so you can build one, but expect to read the source instead of a manual.

라즈베리 파이 피코와 W5500으로 sACN(E1.31) 신호를 받아 WS2812B 8채널을 구동하는 방법은?

개요

hydra nano는 Raspberry Pi Pico(RP2040)와 WIZnet W5500 이더넷 모듈로 만든 유선 조명 컨트롤러다. 조명 콘솔이나 조명 소프트웨어가 LAN으로 보내는 sACN(E1.31, DMX512 조명 데이터를 네트워크로 보내는 방식)을 받아, WS2812B 픽셀 스트립이나 PWM 디머용 출력 8개로 바꿔 내보낸다. 펌웨어(Rust, Embassy), PCB 소스, 케이스 모델이 Johannes Frohnhofen의 저장소 하나에 모두 공개돼 있다(jfrohnhofen/hydra-nano, MIT 라이선스, 첫 커밋 2026-11-09).

LED 스트립을 나머지 조명 장비와 같은 조명 콘솔로, 케이블 하나로 제어해야 하는 곳에서 쓸모가 있다. 연극·행사 무대, 클럽·바의 LED 테이프, Wi-Fi를 쓰기 어려운 쇼윈도·전시 공간 같은 상설 설치물이 대표적이다. 보드 하나에서 픽셀 스트립과 단색 디머 채널을 섞어 쓸 수 있고, 내장 Fire 모드 덕분에 콘솔은 밝기·속도·색만 보내면 불꽃 효과를 낼 수 있다.

한눈에 보기

  • 정체: sACN을 받아 픽셀/디머 8채널로 내보내는 노드, firmware/app/src/main.rs:1-27
  • MCU: Raspberry Pi Pico(RP2040), 듀얼코어 사용, firmware/app/src/main.rs:705-714
  • 네트워크: SPI0 8 MHz로 연결한 W5500 Ethernet 모듈, firmware/app/src/main.rs:717-726
  • 출력: GP8–GP15 8채널, PIO 800 kHz WS2812 또는 하드웨어 PWM, firmware/app/src/output.rs:1-23
  • 픽셀 수: 출력당 최대 1000개, firmware/sacn-core/src/channel.rs:11
  • 설정: http://hydra-xxxxxx.local/ 웹 UI, DHCP 실패 시 링크 로컬 주소로 대체, firmware/app/src/main.rs:23-26
  • 하드웨어 소스: pcb/에 atopile + KiCad 레이아웃, enclosure/에 케이스 STEP 파일
  • 라이선스: MIT, LICENSE

왜 눈여겨볼 만한가

취미용 픽셀 컨트롤러는 대부분 Wi-Fi 보드다. 책상 위에서는 문제없지만, 공연장에서는 휴대폰·무선 마이크·관객이 같은 전파 대역을 함께 쓴다. hydra nano는 조명 데이터를 케이블로 보낸다. 고정 설치나 투어 장비에서 이 프로젝트를 볼 가장 큰 이유다.

두 번째 이유는 펌웨어 데모가 아니라 작은 완성형 장비 구성이라는 점이다. 저장소에 보드 설계, 케이스, 그리고 유닛마다 MAC·호스트 이름·IP를 찍어 주는 라벨 시트 생성기까지 있다(enclosure/make_labels.py:2-12). 여러 대를 만들 계획을 세운 구성이다.

세 번째 이유는 3주 된 프로젝트치고 코드 구성이 깔끔하다는 점이다. sACN 파서, 채널 매핑, 불꽃 효과, 신호 끊김 처리가 하드웨어와 분리된 크레이트(firmware/sacn-core)에 있고 PC에서 단위 테스트가 돈다. GitHub Actions가 push마다 포맷 검사, cargo test -p sacn-core, 펌웨어 릴리스 빌드를 실행한다(.github/workflows/firmware.yml:36-47).

어떻게 동작하는가

조명 콘솔 / 조명 소프트웨어 (sACN 송신)
        |  UDP 5568, 멀티캐스트 239.255.<hi>.<lo>
        v
  [ W5500 모듈 ]  Ethernet MAC + PHY, SPI0(8 MHz)로 프레임 전달
        |
        v
  RP2040 코어 0: embassy-net 스택 -> sACN 파서 -> 유니버스 저장소(32칸)
                 + DHCP / mDNS / 웹 UI(80번 포트) / USB 로그
        |
        v
  RP2040 코어 1: 목표 25 ms마다 8채널 렌더링
        |
        +--> PIO0 SM0-3  -> GP15..GP12 -> 레벨 시프터 -> IDC 헤더
        +--> PIO1 SM0-3  -> GP11..GP8  -> 레벨 시프터 -> IDC 헤더
             (디머 채널은 PWM 슬라이스 4-7)

수신부는 UDP 5568을 열고, 출력이 쓰는 유니버스마다 sACN 주소 규칙 239.255.<유니버스 상위 바이트>.<하위 바이트>의 멀티캐스트 그룹에 가입한다(firmware/app/src/main.rs:474-478, 508-513). 받은 패킷은 해석해서 유니버스 번호별로 저장한다(main.rs:533-550). 코어 1이 이 저장소를 읽어 픽셀 데이터를 만들고 내보낸다(main.rs:561-585).

W5500이 실제로 하는 일

이 펌웨어에서 W5500은 TCP/IP 처리 엔진이 아니라 Ethernet MAC과 PHY로 쓰인다.

보드는 embassy-net-wiznet 드라이버로 칩을 제어한다(firmware/app/Cargo.toml:35; main.rs:729-745). 이 드라이버는 WIZnet 칩을 MACRAW 모드로 두는데, MACRAW는 칩이 Ethernet 프레임을 통째로 MCU에 넘기는 모드다(상위 소스: embassy-net-wiznet/src/device.rs, "Wiznet chip in MACRAW mode"). 넘어온 프레임은 RP2040에서 도는 소프트웨어 TCP/IP 스택 embassy-net이 처리하며, IPv4·UDP·TCP·DHCP·멀티캐스트·ICMP 기능을 켜서 빌드한다(Cargo.toml:24-34; main.rs:753-758).

경계를 정리하면 다음과 같다.

  • W5500이 하는 일: 10/100 Ethernet 링크, MAC/PHY, 수신 프레임 버퍼링, INTn 핀(GP4)으로 MCU에 수신 알림.
  • RP2040이 하는 일: IP, UDP, sACN 수신 소켓, IGMP 멀티캐스트 가입, DHCP, mDNS, HTTP 서버.

이 구성은 타당한 설계 선택이다. 소프트웨어 스택을 쓰면 UDP·TCP·mDNS를 Rust 네트워크 API 하나로 다룰 수 있다. 대신 W5500에 내장된 하드웨어 TCP/IP 소켓 기능은 쓰지 않으므로 RP2040이 네트워크 처리에 CPU 시간과 RAM을 쓴다. 작성자는 네트워크를 코어 0에, LED 출력을 코어 1에 나눠서 두 부하가 서로 간섭하지 않게 했다.

피코 하나가 8개 출력을 어떻게 동시에 내보내는가?

출력마다 PIO 상태 머신이 하나씩 붙는다. PIO0이 1–4번, PIO1이 5–8번 채널을 맡는다(output.rs:1-23). WS2812 프로그램은 클럭 분주 15.625에서 비트당 PIO 10사이클을 쓰고, 1비트는 875 ns, 0비트는 375 ns 동안 High를 유지한다(output.rs:55-59).

채널마다 DMA 채널도 따로 있다. 8개 스트립을 한꺼번에 시작하고 join4로 기다리므로, 하나씩 차례로가 아니라 병렬로 전송된다(output.rs:268-286). 프레임마다 100 µs 간격을 두어 WS2812 래치 리셋 시간을 확보한다(output.rs:288-291). 렌더링 루프의 목표 주기는 25 ms이고, 주석에는 40 Hz로 적혀 있다(main.rs:579).

채널마다 다섯 가지 모드 중 하나를 고른다(firmware/sacn-core/src/channel.rs:45-70).

  • Ws2812: 픽셀당 DMX 3슬롯(R, G, B). 긴 스트립은 연속된 여러 유니버스에 걸칠 수 있고, 픽셀 하나가 유니버스 경계에서 쪼개지지 않게 처리한다(channel.rs:51-54).
  • Ws2812Fill: 스트립 전체를 RGB 한 색으로.
  • Fire: 보드에서 직접 돌리는 Fire2012 방식 불꽃 효과. 밝기·속도·색 균형만 DMX 3슬롯으로 받는다(fire.rs:1-6).
  • Pwm: DMX 1슬롯으로 MOSFET 게이트를 통해 디머를 구동. PWM 주파수는 100 Hz–20 kHz에서 조정한다(channel.rs:13-14).
  • Off.

PWM 슬라이스 하나를 두 출력이 나눠 쓰기 때문에 출력은 2개씩 4그룹으로 묶인다(output.rs:13-17). 웹 UI에는 전체 흰색, RGB 순환, 무지개, 픽셀 하나가 움직이는 패턴 같은 테스트 패턴이 있어 스트립 순서와 길이를 확인할 수 있다(test_pattern.rs:11-23).

조명 콘솔 신호가 끊기면 어떻게 되는가?

실제 공연에서는 정상 동작만큼 이 부분이 중요하다. hydra nano는 채널마다 신호 끊김 동작을 설정한다(firmware/sacn-core/src/loss.rs:9-21).

  • Hold: 마지막 프레임을 계속 유지.
  • Blackout: 타임아웃 후 끔. 기본값이다.
  • Fade: 정해진 시간 동안 서서히 꺼짐.

기본 타임아웃은 E1.31의 네트워크 데이터 손실 값인 2500 ms다(loss.rs:9). 콘솔이 sACN "stream terminated" 플래그를 보내면 즉시 끊김 처리를 시작하고, 표준이 요구하는 종료 패킷 3회 반복이 페이드 타이머를 다시 시작시키지 않게 막는다(firmware/app/src/state.rs:81-89).

무인 설치를 위한 세부 처리도 있다. DHCP에 실패하면 플래시 고유 ID로 만든 링크 로컬 주소 169.254.x.y를 쓴다(sacn-core/src/identity.rs:54-55). DHCP는 5분마다 다시 시도하지만, sACN 데이터가 들어오는 중이면 공연이 끊기지 않도록 재시도를 건너뛴다(main.rs:116-134). 하드웨어 워치독은 코어 1이 프레임을 계속 렌더링할 때만 갱신된다(main.rs:771-782).

PCB에는 무엇이 있는가?

보드는 atopile 소스(pcb/main.ato)로 기술되어 있고, KiCad 레이아웃은 pcb/layouts/hydra-nano/에 있다. 시중 모듈을 꽂는 캐리어 보드 구성이다(pcb/main.ato:395-403).

  • 40핀 THT 풋프린트의 Raspberry Pi Pico
  • 2×6핀, 열 간격 20.32 mm의 W5500 Ethernet 모듈(main.ato:121-126), 전원은 Pico의 3.3 V 출력(main.ato:438-439)
  • Pico·레벨 시프터·LED 헤더에 5 V를 공급하는 USB-C 브레이크아웃(main.ato:432-436, 454-459)
  • 3.3 V→5 V 8채널 레벨 시프터 모듈과, 모듈을 빼면 연결해 우회하는 솔더 점퍼 8개(main.ato:305-313, 358-362)
  • 8개 출력의 데이터·5 V·GND를 내보내는 직각 IDC 헤더 6핀 2개, 10핀 1개(main.ato:409-412)
  • 3핀 디버그 헤더(RUN, 3V3, GND)

PCB의 W5500 배선은 펌웨어와 일치한다. MISO GP0, RSTn GP1, SCK GP2, MOSI GP3, INTn GP4, CSn GP5다(main.ato:103-110; firmware/app/src/main.rs:717-726). USB-C 포트로는 시리얼 로그와 picotool 리셋 인터페이스도 나오므로 BOOTSEL 버튼 없이 펌웨어를 다시 쓸 수 있다(firmware/app/src/usb.rs:1-9).

이런 곳에 사용할 수 있다

  • 연극·행사 무대: 무대 세트의 픽셀 스트립을 무빙 라이트와 같은 sACN 네트워크로 제어.
  • 상설 설치물: Wi-Fi를 쓰기 싫거나 쓸 수 없는 쇼윈도, 전시 공간, 건축 조명.
  • 클럽·바 조명: 바 뒤나 천장의 LED 테이프를 스위치 하나로 조명 소프트웨어에 연결.
  • 불꽃·촛불 효과: Fire 모드가 보드에서 돌므로 콘솔은 밝기·속도·색만 보내면 된다.
  • 혼합 부하: 일부 채널은 픽셀 스트립, 나머지는 MOSFET을 통한 단색 LED 테이프 디머로.

직접 사용하기 전에 확인할 점

  • 초기 단계. 저장소는 2026-10-20에 만들어졌고, 공개 커밋 4개는 모두 2026-11-09 날짜이며 "pcb v0.1", "initial firmware"라는 이름이다. 첫 리비전으로 보는 것이 맞다.
  • README 없음. 핀맵·모드·동작은 사용자 가이드가 아니라 소스 주석에 적혀 있다.
  • 공개된 테스트 기록 없음. 저장소에 사진, 측정한 프레임 레이트, 테스트한 콘솔 목록이 없다. 40 Hz는 코드의 루프 목표값이며, 스트립이 길면 전송 시간도 길어진다.
  • sACN 지원 범위. 파서는 DMX 데이터 패킷만 처리하고, 유니버스 탐색(discovery)과 동기화(sync) 패킷은 범위 밖이다(sacn-core/src/sacn.rs:1-4). Art-Net은 구현되어 있지 않다.
  • 전원. LED 전원은 USB-C 브레이크아웃의 5 V 레일에서 나온다. 긴 스트립은 별도 전원이 필요하며, 저장소에 대전류 전원 구성은 나와 있지 않다.
  • 툴체인. 빌드에는 thumbv6m-none-eabi 타깃이 설치된 Rust가 필요하다. 정확한 명령은 CI 파일에 있다.

관련 WIZnet Maker 읽을거리

출처 기반 요약

hydra nano는 Raspberry Pi Pico와 W5500 Ethernet 모듈로 만든 MIT 라이선스의 8출력 sACN(E1.31) LED 컨트롤러다. W5500은 MACRAW 모드로 유선 Ethernet 연결을 담당하고, RP2040 코어 0이 IP 스택·sACN 수신·DHCP·mDNS·웹 UI를 돌린다. 코어 1은 PIO와 DMA로 출력당 최대 1000개의 WS2812B 픽셀을 병렬로 구동하거나 PWM 디머를 구동한다. 채널별 Hold/Blackout/Fade 끊김 처리, 링크 로컬 대체 주소, 프레임 렌더링과 연동한 워치독은 무인 조명 설치를 염두에 둔 설계다. 펌웨어·PCB 소스·케이스가 공개되어 있고, 프로젝트는 첫 리비전 단계다.

FAQ

이 프로젝트에서 W5500이 Pico 대신 TCP/IP를 처리하는가?
아니다. 펌웨어는 W5500을 원시 Ethernet 인터페이스로 쓰고, IP/UDP 스택은 RP2040이 embassy-net으로 직접 돌린다. W5500은 TCP/IP를 하드웨어로 처리할 수 있지만 이 설계는 그 기능을 쓰지 않는다.

유니버스를 몇 개까지 받을 수 있는가?
수신부 저장소는 유니버스를 최대 32개까지 보관한다(state.rs:16). 픽셀 출력 하나가 연속된 여러 유니버스에 걸칠 수 있으며, 1000픽셀 스트립은 512채널 유니버스 하나로는 부족하다.

Art-Net을 지원하는가?
아니다. 현재 코드는 sACN(E1.31) 데이터 패킷만 해석한다.

레벨 시프터 없이 써도 되는가?
PCB에는 레벨 시프터 모듈을 꽂지 않을 때 3.3 V 신호를 헤더로 바로 연결하는 채널별 솔더 점퍼가 있다(main.ato:358-362). 3.3 V 데이터를 받아들이는지는 사용하는 스트립에 따라 다르다.

바로 사서 쓰거나 현장에 설치할 수 있는가?
제품이 아니라 오픈소스 첫 리비전이다. 설계 파일이 공개되어 있어 직접 만들 수는 있지만, 매뉴얼 대신 소스를 읽을 각오가 필요하다.

Comments

Similar projects you might like

Comments