DM-10x DMX decoders with custom firmware

RobG

New member
dm2.jpg

I am going to use DM-103 for some of my floods, but I don't like DM's features, especially the need for extra programmer.
I wrote my own firmware, which will allow me to program start channel using any sequencer.
DMX out will cascade by default, just like Ren, so anything connected to the output will not have to be reprogrammed.
There will be no silly test sequence and I will also include servo mode (DM-103 only, will require extra resistors since outputs are OC.)

Any suggestions for extra features?

Version 1 for DM-103/YX-103 with STM8S003F3P6 chip. (updated 5/9/17 to fix missing red channel, removed rainbow effect.)
You can set start channel.
DMX data on the output will be truncated up to start channel + 2 and will start at channel 1.

To program start channel, send DMX message with DMX Test start byte and the following values:
0x55 (start byte,) 'R','o','b','G','S' (set start channel,) 0 (MSB of start channel,) 10 (LSB of start channel, in this case 10,) 0x55 (terminator)

binary removed, will upload new one later on
 
Last edited:
The only thing I ever wished for from these is the ability to have them NOT go into the random cycle mode if they don't detect a DMX signal.
 
The only thing I ever wished for from these is the ability to have them NOT go into the random cycle mode if they don't detect a DMX signal.
I had this same issue with the 27 channel dmx controller and asked joe to implement an "all off" command in HLS that fixed it for me.
 
View attachment 28455

I am going to use DM-103 for some of my floods, but I don't like DM's features, especially the need for extra programmer.
I wrote my own firmware, which will allow me to program start channel using any sequencer.
DMX out will cascade by default, just like Ren, so anything connected to the output will not have to be reprogrammed.
There will be no silly test sequence and I will also include servo mode (DM-103 only, will require extra resistors since outputs are OC.)

Any suggestions for extra features?
Just curious rob if this is going to be offered as a product in your tindie store or will be offered for loading onto the dm103. If so, how would you load the firmware onto the DM?
Thanks.
 
I actually have become fond of the rainbow test on these types of devices. I use it as a nice warm-up before the show starts and something that can run after the show for an hour or so.

I just bought a bunch of the ones Dave Moore sells with the DIP switches because I refuse to buy the programmer.

Ah, well.

\dmc
 
Well, I can add free running rainbow test, but it could be triggered by some command, DMX test start byte for example
 
Version 1 for DM-103/YX-103 with STM8S003F3P6 chip (see first post for the hex file.)
You can set start channel and enable/disable "rainbow" effect, which will kick in after 5 sec of DMX inactivity. No servo yet.
DMX data on the output will be truncated up to start channel + 2 and will start at channel 1.

To program start channel, send DMX message with DMX Test start byte and the following values:
0x55 (start byte,) 'R','o','b','G','S' (set start channel,) 0 (MSB of start channel,) 10 (LSB of start channel, in this case 10,) 0x55 (terminator)
To enable/disable idle "rainbow" effect:
0x55 (start byte,) 'R','o','b','G','A' (set animation,) 1 (1 enable, 0 disable,) 0 (always 0,) 0x55 (terminator)
 
Rob:

Thanks so much for following through on this.

I'm curious -- how do you program the chip in place? There don't seem to be any breakouts on the board for the four lines that SWIM needs ... ?

\dmc

\dmc
 
There are 4 pads between MCU and MAX485, that's SWIM connector. I just insert male header, apply little pressure, program, and voilà!
 
Dumb question, do you need one of these? The comment below said you could flash them from a sequencer which I read as hls, vixen, etc. though I have no idea how to send the data values you mentioned with any of those so perhaps I've answered my own question. :)

Thank, great to see this. I'd emailed Ray after I bought these because I didn't like the rainbow sequence running all the time. Apparently I could have requested them to be flashed without it before Ray shipped them. Had I even known about the rainbow sequence or the option to remove it. Word to this that want to it buy the dm modules but haven't yet.

Thanks,

-Joni-

FYI,

you can use this ~$3 programmer to flash your boards. You will also need STVP, ST's free software.
 
How to program your DM board

You will need:

ST-LINK dongle or STM8 discovery board
STVP
HEX file
4 pin male header
4 M-M jumper wires (should come with the dongle, but not discovery boards)

BTW, my preferred wire colors are: red for Vcc, black for GND, white for RST, brown for SWIM

1. connect jumpers to the dongle (I can also show how to connect to discovery, but for now let's just stick with the dongle) as on the picture, top row: 1 - white, 3 - black, 5 - brown, 7 - red

dm2.jpg

2. connect jumpers to the header (red, white, brown, black)

dm1.jpg

3. insert male header into DM-10x board as on the picture and apply little pressure to make sure all pins make contact.

dm3.jpg

4. insert dongle into USB port and start STVP, go to Configuration (Configure menu) and make sure ST-LINK, USB, SWIM, and proper device is selected (in this case STM8S003F3)

dm5.png

5. open HEX file

6. if this is the first time you are programming the board, you will see "The device is protected" message if you try to program all. Select OPTION BYTE tab, make sure ROP byte is set to Read Out Protection OFF, and choose "Program current tab"

7. choose "Program all tabs"

dm6.png

You are done!
 
Dumb question, do you need one of these? The comment below said you could flash them from a sequencer which I read as hls, vixen, etc. though I have no idea how to send the data values you mentioned with any of those so perhaps I've answered my own question. :)

Thank, great to see this. I'd emailed Ray after I bought these because I didn't like the rainbow sequence running all the time. Apparently I could have requested them to be flashed without it before Ray shipped them. Had I even known about the rainbow sequence or the option to remove it. Word to this that want to it buy the dm modules but haven't yet.

Thanks,

-Joni-

You need one of those dongles to load new firmware.
Programming things like start channel requires anything that can output DMX or serial data (including BREAK.) I will post how-to in few days.
 
Here's another use for DM-103 board, DMX-Servo.

Since DM-103 has OC outputs, it will require pull-up resistors.

 
Last edited:
@rjchu, before I post programming via DMX solution, here's an easy way to do it with the dongle.

1. Load the HEX in PROGRAM MEMORY tab

1.png

2. Switch to DATA MEMORY tab, change values for start channel, animation, and servo

DMX start channel is stored at 0x4000 (int, marked yellow) - first byte is MSB, second LSB, 0 based. So to set start channel 1 = 00 00, start channel 16 = 00 0F, etc.
Animation on/off at 0x4002 (char, green) on = 01, off = 00
Mode pwm/servo at 0x4003 (char, pink) pwm = 00, servo = 01
Servo polarity at 0x4004 (char) polarity active high = 00, active low = 01 (this should be used for DM-103 module, since it has inverting transistors on the output.

2.png

3. "Program all tabs"

If you need to change any of the above after the initial programming, you don't have to load HEX file. Just change values on DATA MEMORY tab as needed and "Program current tab"
 
It's been a year since the last post, but I'll give it a try.
I bought some of these DMX decoders, but unfortunately this firmware won't work. Setting the start address works fine, but the first channel (red) won't work, it's always on or off (if you touch the pin). The other two channels work fine, startaddress +1 and +2, green and blue is swapped from original but thats not so bad. Color change at signal loss works neither, it turn to blue after 5sec and thats it.
My device look the same as in the pictures, a YX-103 with the STM8S003F3P6. I used the firmware file "DM-103-003.HEX" and the µC was programmed successful. I tried more than 1 devices and all do the same.
Any ideas to solve this problem, maybe there is another version of the firmware ?
 
What software/hardware are you using? Random behavior of red suggests hardware problem.
There's no signal loss detection (I am assuming you mean loosing signal in the middle of receiving RGB for that node.)
 
Back
Top