DmxSerial - port to Spark Core


take a look here:

I modified it a bit to send “easier” commands like fade channel 1 to 100% and channel 20 to 50%: F1,255;F2,128;


Looks nice. Have you have it tested with say 10 rgb spotlighs? and run a complex scheme? That is usually the difficult thing with DMX, updating 128 channels flawlessly during a crossfade combined with the IO needs of the WIFI processor can be tricky.

It looks like a nice summer project!


Hi Marcus,

I use the second git-project for some LED lights, when the user turns it on it fades softly to 100% (or any specified value).

Regarding WiFi performance:

I tried QLC+ using ArtNet as output (and a wired receiver) and 32 PAR cans, 1 Moving Light and some special effects (moonflower etc). QLC+ did fine BUT the amount of broadcast packets completely smashed the WiFi because broadcasts reduce the WiFi rate to 1 Mbit or so.

So in short: it MAY work, if you have only the spark core and maybe your controlling PC in your WiFi but if you play in a bigger WiFi network your WiFi clients may slow down depending on how often your controller sends ArtNet packets. QLC+ does it quite often - no matter if any channel values changed or not.
If your controller supports sending ArtNet packets to specific hosts it shouldn’t be a problem at all.



The 120MHz ARM CPU in the core should be able to do all kinds of great things without needing 20MHz AVRs to help it along - that’s my belief. Set up timers & DMA to take care of outputting the data and fading should be a matter of updating data structures in memory.


I totally agree with you @joky and @AndyW. It should all be possible. But when a core needs to block on certain WiFi events, ordoes not like to be interrupted at those moments, the need for continues data flow, all be it a slow flow compared to the high speed of the processor will induce hick ups every now and then. A distributed approach is easier to implement and mission critical. And that’s the most important in show equipment, they say, the show must…


@joky Looking at the information you provided i feel stronger about my approach, each interface is in fact a sub processor only responsible for driving a DMX universe.
Basically the design paradigm is, separate interruptable environments from synchronous environments. AFAK all major DMX control systems comply to this paradigm. Even the free DMX software with a USB interface.


btw: it is possible to transform multicast packets to unicast packets somehow, it might be even possible to transform the packets using firewall rules.
I use OpenWRT and didn’t find any appropiate solution so far. My ArtNet is wired so I just put a separate network between controller and node.


Sure - I get that.

My goals were far more mundane. I want to create two things; one simple, one more complex:

  • a single universe ArtNet implementation.
  • a different firmware load that allows me to use a local wifi phone app as a Remote Focus Unit, with punch-in/out of select channels of a thru DMX connection, again single universe is fine by me.

Both these might be possible just writing sketches, but I do not want to rely on the cloud services because my world has some private wireless networks in auditoriums.


@AndyW @marcus Seems there’s no simple answer yet on DMX. Any ideas on how to control the Blinkytiles via the Spark Core and DMX?


Realise that this is an old topic people but I’ve got hold of a photon to replace an Imp in a DMX controller gizmo. I have used the DMXSimple library previous. Have there been any developments porting that library to the Photon or, like, anything else DMX related? Web search for info just returns this post which is a worry :-0


I haven’t seen any working DMX transmitting app for photon so far. The only I’ve seen is for the “core” and even that doesn’t compile on the cloud.


My impetus to complete this project vapourised when we replaced our old light desk with a new ETC Element, that has a fully featured remote focus ipad app. So, I’m unlikely to drive any progress now, since we solved our immediate problem another way.


Hi to All

I am new user and emigrate from AVR to STM Arm.
let me I ask a few questions.

1-can you help me to have a sample code that on stm32f103
i Receive dmx512 signal on usart3 and for example show dmx value of channel 1 as PWM on one of pins?

in AVR i use this library

Forgive me for bad English and tack your time.


@dehghan13, this forum is for Particle devices (Photon, Electron) that have their own software stack. You may want to check out the STM32Duino forum since they have an Arduino stack based on the STM32F103-based Maple Mini.


Hi Peekay123

Title is " DmxSerial - port to Spark Core ".
I will be grateful if anyone helps.
in STM32Duino forum Someone has not solved the problem [ dmx512 Receive ].
Forgive me for bad English and tack your time.