1. Art-Net 4 Node : DMX / RDM Controller / Pixel Controller
Download with instructions link
Open hardware pixel driver board prototype -> https://github.com/vanvught/h3dmx512-zip/tree/master/eagle
DMX boards -> http://bitwizard.nl/shop/dmx
Baremetal programming controls DMX512 timing.
Open source Art-Net https://github.com/vanvught/rpidmx512/tree/master/lib-artnet
Supported Art-Net packages : ArtPoll, ArtPollReply, ArtDMX, ArtSync, ArtAddress, ArtDiagData, ArtTimeCode and ArtTimeSync, ArtIpProg and ArtIpProgReply.
Supported Art-Net RDM packages: ArtTodRequest, ArtTodControl, ArtTodData and ArtRdm.
Support for multiple controllers
Support for 2 DMX Universes DMX/RDM on Orange Pi Zero
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, TLC59711
Support for DMX Real-time monitor
Plug & Play
Support for OLED display 128 x 64 SSD1306 I2C
At power on or rest the Node operates in non-synchronous mode. This means that ArtDmx packets will be immediately processed and output.
When the 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 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 Node.
Long Name : The array represents a null terminated long name for the Node
AcCancel Merge : If the Node is currently in merge mode, cancel merge mode upon receipt of next ArtDmx packet.
AcLedNormal : The Act LED the Node operate normally (1Hz blink).
AcLedMute : The Act LED of the Node are disabled and switched off.
AcLedLocate : Rapid flashing (3Hz) of the 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 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 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 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 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 Pi Node.
When there are multiple controllers, the Node will receive ArtPolls from different controllers which may contain conflicting diagnostics requirements. This is implemented as follows:
If any controller requests diagnostics, the 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).