Proof of Concept

QuinLED Penta Plus EtherNet/IP

EtherNet/IP controller firmware for the QuinLED Penta Plus (ESP32 + Ethernet)

Status: This project is a proof-of-concept implementation and requires further development, testing, and validation before production use.

QuinLED Penta Plus

Overview

A proof-of-concept port of the OpENer EtherNet/IP stack to ESP32 with Ethernet, targeting the QuinLED Penta Plus LED controller board. This implementation was developed to address a specific industrial automation requirement: an RGB stack light controller for a Motoman robotic manufacturing workcell.

The system enables direct integration of visual status indicators with the workcell's EtherNet/IP network infrastructure, allowing PLCs and other industrial control systems to programmatically control stack light colors and patterns for operator feedback and system status indication. The Motoman Robot can directly control the stack light through EtherNet/IP implicit messaging, providing real-time visual feedback synchronized with robot operations and workcell status.

Hardware Platform

Target board: QuinLED Penta Plus (QuinLED.info). The QuinLED Penta Plus is an advanced ESP32-based LED controller board designed for professional lighting control applications.

LED Channels

The board provides comprehensive LED control capabilities:

Digital Inputs

Three digital inputs provide status feedback and control signals:

Note: GPIO 34, 36, and 39 are input-only pins on ESP32 and cannot be configured as outputs. These pins do not support internal pull-up resistors, so external pull-ups are required (provided by the board hardware).

EtherNet/IP Assembly Structure

The device implements two EtherNet/IP assemblies for I/O data exchange:

Output Assembly (Instance 150)

11-byte output assembly used to send control data from the EtherNet/IP scanner (PLC) to the device:

Byte Offset Description Range
0 LED_OUTPUT_OFFSET_CW Cool White LED brightness 0–255
1 LED_OUTPUT_OFFSET_WW Warm White LED brightness 0–255
2 LED_OUTPUT_OFFSET_B Blue LED brightness 0–255
3 LED_OUTPUT_OFFSET_G Green LED brightness 0–255
4 LED_OUTPUT_OFFSET_R Red LED brightness 0–255
5 LED_OUTPUT_OFFSET_DIGITAL_COUNT_LOW Digital LED count (low byte) 0–255
6 LED_OUTPUT_OFFSET_DIGITAL_COUNT_HIGH Digital LED count (high byte) 0–255
7 LED_OUTPUT_OFFSET_DIGITAL_ENABLE Digital LED enable (0=off, 1=on) 0–1
8 LED_OUTPUT_OFFSET_DIGITAL_R Digital LED red component 0–255
9 LED_OUTPUT_OFFSET_DIGITAL_G Digital LED green component 0–255
10 LED_OUTPUT_OFFSET_DIGITAL_B Digital LED blue component 0–255

Implementation Notes:

Input Assembly (Instance 100)

14-byte input assembly used to send status data from the device back to the EtherNet/IP scanner:

Byte Offset Description Range
0–10 Mirrored from Output Assembly Same as Output
11 INPUT_OFFSET_DIGITAL_INPUTS Digital Input 1 state (0=low, 1=high) 0–1
12 INPUT_OFFSET_DIGITAL_INPUTS + 1 Digital Input 2 state (0=low, 1=high) 0–1
13 INPUT_OFFSET_DIGITAL_INPUTS + 2 Digital Input 3 state (0=low, 1=high) 0–1

Implementation Notes:

EtherNet/IP Connection Types

The device supports three standard EtherNet/IP connection types:

Device Identity

The device presents the following identity information to EtherNet/IP scanners:

Network Configuration

The device supports both DHCP and static IP configuration:

A minimal web interface is provided at http://<device-ip>/api/ipconfig for network configuration and diagnostics.

Software Stack

This project uses the following software components:

Disclaimer

This project is not affiliated with, endorsed by, or connected to QuinLED. QuinLED and QuinLED Penta Plus are trademarks of their respective owners. This project uses the QuinLED Penta Plus board as the target hardware platform for demonstration purposes only.