1. Art-Net 3 Node : DMX Out / RDM Controller / Pixel Controller
ArtNet Ethernet (1x DMX / RDM / Pixel Controller 4 Universes)
ArtNet Ethernet (4x DMX out / RDM)
Orange Pi One uImage
ArtNet Wifi (1x DMX / RDM / Pixel Controller 4 Universes)
Open hardware pixel driver board prototype -> https://github.com/vanvught/h3dmx512-zip/tree/master/eagle
DMX boards -> http://bitwizard.nl/shop/dmx
Pi baremetal programming controls DMX512 timing.
Open source Art-Net 3 implementation https://github.com/vanvught/rpidmx512/tree/master/lib-artnet
Supported Art-Net packages : ArtPoll, ArtPollReply, ArtDMX, ArtSync, ArtAddress, ArtDiagData, ArtTimeCode and ArtTimeSync.
Supported Art-Net packages (currently the Linux version only) : ArtIpProg and ArtIpProgReply.
Supported Art-Net RDM packages (Wifi version only) : ArtTodRequest, ArtTodControl, ArtTodData and ArtRdm.
Support for multiple controllers
Support for 4 DMX Universes DMX/RDM on Orange Pi One
Support for 4 DMX Universes WS2801, WS2811, WS2812, WS2812B, WS2813, WS2815, SK6812 (RGBW), APA102, APA102C
Plug & Play
Fully compliant with Art-Net 3 Protocol Release V1.4 Document Revision 1.4bk 23/1/2016
Support for OLED display 128 x 64 SSD1306 I2C
At power on or rest the RPi Node operates in non-synchronous mode. This means that ArtDmx packets will be immediately processed and output.
When the RPi Node receives an ArtSync packet it transfers to synchronous operation. This means that received ArtDmx packets will be buffered and output when the next ArtSync is received.
In order to allow transition between synchronous and non-synchronous modes, a the RPi Node will time out to non-synchronous operation if an ArtSync is not received for 4 seconds or more.
The following options are implemented:
NetSwitch : Bits 14-8 of the 15 bit Port-Address
SubSwitch : Bits 7-4 of the 15 bit Port-Address
SwOut0 : Bits 3-0 of the 15 bit Port-Address for the DMX Output Port
Short Name : The array represents a null terminated short name for the RPi Node.
Long Name : The array represents a null terminated long name for the RPi Node
AcCancel Merge : If the RPi Node is currently in merge mode, cancel merge mode upon receipt of next ArtDmx packet.
AcLedNormal : The Act LED the RPi Node operate normally (1Hz blink).
AcLedMute : The Act LED of the RPi Node are disabled and switched off.
AcLedLocate : Rapid flashing (3Hz) of the RPi Node’s Act LED. It is intended as an outlet locator for large installations.
AcMergeLtp0 : Set the DMX Ouput Port to Merge in LTP mode.
AcMergeHtp0 : Set the DMX Ouput Port to Merge in HTP (default) mode.
AcClearOp0 : Clear DMX Output buffer for the DMX Ouput Port.
Multiple Controllers support
The Art-Net protocol allows multiple nodes or controllers to transmit ArtDmx data to the same universe. The RPi Node detects this situation by comparing the IP addresses of received ArtDmx packets. If ArtDmx packets addressed to the same Universe are received from different IP addresses, the RPi Node automatically merge the data.
Merge mode is implemented as follows:
If ArtDmx is received from differing IP addresses, the data is merged to the DMX output. In this situation, ArtPollReply-GoodOutput-Bit 3 is set.
If Art-Poll-TalkToMe Bit 1 is set, an ArtPollReply is transmitted when merging commences.
Exit from Merge mode is handled as follows:
If ArtAddress AcCancelMerge is received, the Next ArtDmx message received ends Merge mode. The RPi Node then discards any ArtDmx packets received from an IP address that does not match the IP address of the ArtDmx packet that terminated Merge mode.
If either (but not both) sources of ArtDmx stop, the failed source is held in the merge buffer for 10 seconds. If, during the 10 second timeout, the failed source returns, Merge mode continues. If the failed source does not recover, at the end of the timeout period, the RPi Node exits Merge mode.
If both sources of ArtDmx fail, the output holds the last merge result.
Merging is limited to two sources, any additional sources will be ignored by the RPi Node.
When there are multiple controllers, the RPi Node will receive ArtPolls from different controllers which may contain conflicting diagnostics requirements. This is implemented as follows:
If any controller requests diagnostics, the RPi Node will send diagnostics. (ArtPoll->TalkToMe->2).
If there are multiple controllers requesting diagnostics, diagnostics will be broadcast. (Ignore ArtPoll->TalkToMe->3).
The lowest minimum value of Priority is used. (Ignore ArtPoll->Priority).