Releases: duongtruongdp/ND-PicoDMX-System
Release list
V2.1 - 1.3 inch OLED
ND DMX NODE 4U — v2.1 Stable
🚀 Quick Start: Guide to Flashing Firmware (.uf2) for Beginners
If you already have the compiled file ND_DMX_NODE_4U_v2_1_STABLE.ino.uf2, you do not need to use the Arduino IDE or perform complex code installation. Simply follow these steps to flash it onto the Raspberry Pi Pico board:
- Disconnect the power / USB cable of the Raspberry Pi Pico from your computer.
- Press and hold the
BOOTSELbutton on the Raspberry Pi Pico board. - While holding the
BOOTSELbutton, plug in the USB cable to connect the Pico to your computer. - Release the
BOOTSELbutton. Your computer will recognize the Pico as a new USB drive namedRPI-RP2. - Drag and drop (or Copy & Paste) the
ND_DMX_NODE_4U_v2_1_STABLE.ino.uf2file onto theRPI-RP2drive. - The drive will automatically disappear, and the Pico will reboot and immediately start running the ND PicoDMX v2.1 system.
Note: If hardware display and physical controls are not required for your deployment, you can continue using the v2.0.2 - STABLE release. It provides the exact same high-performance 4-port Art-Net/sACN DMX core engine without the OLED/UI overhead.
This release builds upon the rock-solid v2.0.2 architecture, introducing a physical hardware interface while strictly maintaining zero-latency network parsing and deterministic DMX performance.
1. Hardware Pinout & Wiring (RP2040 Setup)
To use the 1.3-inch SH1106 OLED module with the rotary encoder and control buttons, connect the module to your RP2040 board according to the following GPIO mapping:
| Module Pin | Function | RP2040 GPIO Pin | Note |
|---|---|---|---|
| VCC | Power | 3.3V | Operating voltage: 3.3V - 5V |
| GND | Ground | GND | Common ground |
| SDA | I2C Data | GP4 | I2C0 SDA |
| SCL | I2C Clock | GP5 | I2C0 SCL (400 kHz / 1 MHz) |
| TRA | Encoder Phase A | GP2 | Hardware Interrupt (CHANGE mode) |
| TRB | Encoder Phase B | GP3 | Hardware Interrupt (CHANGE mode) |
| PSH | Encoder Push Switch | GP6 | Internal INPUT_PULLUP |
| CON | Confirm Button | GP7 | Internal INPUT_PULLUP |
| BAK | Back Button | GP10 | Internal INPUT_PULLUP |
2. Hardware UI Integration
- Added support for a 1.3-inch SH1106 I2C OLED display.
- Integrated a rotary encoder with hardware interrupts (
CHANGEmode on both pins) for highly responsive navigation. - Added support for physical navigation buttons (Encoder Push, Confirm, Back) using internal pull-ups.
- Utilizes the
U8g2graphics library for efficient, lightweight hardware rendering using monospaced terminal fonts.
3. On-Device Interface & Tree Menu
- Implemented a complete hierarchical state machine driven by the rotary encoder and navigation buttons:
- Home Screen: Live IP Address, Network Status, Firmware Version, and System Uptime.
- Main Menu: Navigable tree structure (Ports, Network, DMX Settings, Test Mode, System Info, Reboot, Factory Reset).
- Port Status & Detail: Live individual status per port (Output Mode, Universe, Active DMX FPS, and Active/Standby status).
- Network Page: Live IP Address, Subnet Mask, Link speed (100 Mbps), and Connection status.
- DMX Settings: View assigned Port Universes, Start Address, and Active Protocol (Art-Net / sACN / Auto).
- Test Mode: Direct standalone output override on all ports without requiring a computer (Blackout, Full, 50%, Chase).
- System Info: Firmware build details, RP2040 Core status, Uptime, and Core 1 DMX Engine loop diagnostics.
- Safety Controls: Reboot confirmation screen and a 3-second hold requirement for Factory Reset to prevent accidental triggers.
- Burn-in Protection & Sleep Wake-up: Automatically enters sleep mode after 60 seconds of inactivity. Pressing any button or turning the encoder wakes the screen immediately without accidentally triggering menu items.
4. Core 0 Architecture & Network Safety
- The UI display routine is completely non-blocking.
- UI buffer updates are strictly rate-limited to every 150 ms (~6.6 Hz) within the main
loop(). - The I2C clock operates at 400 kHz (Fast Mode) for maximum signal stability across various SH1106 OLED modules.
- These precautions guarantee that Ethernet packet polling (Art-Net and sACN) via the W5500 SPI interface is never starved or blocked by screen drawing.
5. Core 1 DMX Engine Integrity
- Core 1 architecture remains exactly as validated in v2.0.2.
- The deterministic 40 Hz frame schedule, 35 ms PIO/FIFO timeouts, and atomic diagnostics counters are fully preserved.
- The
spin_lock_blocking()pair continues to protect shared buffer memory safely between Core 0 and Core 1 without being affected by the UI state machine.
Validation Completed in This Environment
- Resolved display deadlock state during sleep wake-up transitions.
- Verified smooth menu scrolling and edge detection for Confirm/Back buttons.
- Confirmed zero interference between U8g2 I2C rendering and W5500 SPI Art-Net/sACN reception.
V2.0.2 - STABLE
🚀 Quick Start: Guide to Flashing Firmware (.uf2) for Beginners
- Disconnect the power / USB cable of the Raspberry Pi Pico from your computer.
- Press and hold the
BOOTSELbutton on the Raspberry Pi Pico board. - While holding the
BOOTSELbutton, plug in the USB cable to connect the Pico to your computer. - Release the
BOOTSELbutton. Your computer will recognize the Pico as a new USB drive namedRPI-RP2. - Drag and drop (or Copy & Paste) the
*****.uf2file onto theRPI-RP2drive. - The drive will automatically disappear, and the Pico will reboot and immediately start running the ND PicoDMX v2.0.2 system.
New
- Automatic recovery if the DMX engine unexpectedly stops.
- More reliable system uptime tracking.
- Dashboard restores the latest uptime after refreshing the browser.
Improved
- Significantly improved overall firmware stability.
- Faster loading Web Dashboard.
- Reduced dashboard size for quicker loading.
- Improved DMX synchronization and packet handling.
- More reliable Art-Net and sACN communication.
Removed
- Removed MCU temperature monitoring.
- Removed experimental firmware components from previous test builds.