Skip to content

Releases: duongtruongdp/ND-PicoDMX-System

V2.1 - 1.3 inch OLED

Choose a tag to compare

@duongtruongdp duongtruongdp released this 11 Aug 20:11

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:

  1. Disconnect the power / USB cable of the Raspberry Pi Pico from your computer.
  2. Press and hold the BOOTSEL button on the Raspberry Pi Pico board.
  3. While holding the BOOTSEL button, plug in the USB cable to connect the Pico to your computer.
  4. Release the BOOTSEL button. Your computer will recognize the Pico as a new USB drive named RPI-RP2.
  5. Drag and drop (or Copy & Paste) the ND_DMX_NODE_4U_v2_1_STABLE.ino.uf2 file onto the RPI-RP2 drive.
  6. 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 (CHANGE mode on both pins) for highly responsive navigation.
  • Added support for physical navigation buttons (Encoder Push, Confirm, Back) using internal pull-ups.
  • Utilizes the U8g2 graphics 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

Choose a tag to compare

@duongtruongdp duongtruongdp released this 05 Aug 10:47
204320b

🚀 Quick Start: Guide to Flashing Firmware (.uf2) for Beginners

  1. Disconnect the power / USB cable of the Raspberry Pi Pico from your computer.
  2. Press and hold the BOOTSEL button on the Raspberry Pi Pico board.
  3. While holding the BOOTSEL button, plug in the USB cable to connect the Pico to your computer.
  4. Release the BOOTSEL button. Your computer will recognize the Pico as a new USB drive named RPI-RP2.
  5. Drag and drop (or Copy & Paste) the *****.uf2 file onto the RPI-RP2 drive.
  6. The drive will automatically disappear, and the Pico will reboot and immediately start running the ND PicoDMX v2.0.2 system.
🚀 Stability & Performance Update

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.