2
\$\begingroup\$

I want to transmit a DMX signal over a Xbee RF module. I came to realize that sending 1 Universe of DMX can be problematic.

Looking at the Open DMX page we see that the computer's DMX information is sent via USB, then converted to Serial output(via the arduino) and then converted to DMX (via a driver block max485).

My question is, can't I just send the serial output of the arduino over the Xbee at 115200baud, and convert the signal to DMX at the receiving end using the max485?

\$\endgroup\$
1
\$\begingroup\$

If you really want to transmitting a full universe of DMX, I would not reinvent the wheel and use a ready made and proven solution, this is because DMX is not a rugged protocol and needs a lot of bandwidth (for a serial protocol), there are number of solutions out there in varying levels of complexity including using ip over wifi as a transport.

If it is only a few channels you want to get across, how about just extracting the changes in those channels and transmit them and then create a new stream at the other end?

\$\endgroup\$
0
\$\begingroup\$

can't I just send the serial output of the arduino over the Xbee at 115200baud, and convert the signal to DMX at the receiving end using the max485?

No, you cannot. The DMX serial signal must be sent at 250kbps, and sends an 88mS or larger (typically 100mS) break at the start of the frame.

Neither of these requirements can be met by the XBee hardware*.

The max485 chip is only an RS-485 transceiver. It doesn't translate or alter the bit rate or produce a break for you - it merely converts your digital serial signal to an RS-485 signal.

Therefore your plan will not work without additional effort.

You can use an Arduino or another microcontroller between the XBee and the max485 to do the translation for you. The Arduino would receive channel value updates at 115200bps from the XBee, and store them. It would then periodically send them out on the max485 by sending a break, then a frame's worth of data.

This should accomplish your goal of sending DMX channel information over the XBee.

* There is a programmable XBee that includes a microcontroller onboard. If you reprogram that, you may be able to generate the required signals, and then simply connect it to a max485.

\$\endgroup\$
  • \$\begingroup\$ The implication here is that the entire DMX burst must be sent with consistent internal timing, without gaps from a retry-based radio protocol or baud rate conversion from the feeder. As a result, there's basically a requirement for enough buffer memory to hold the entire message, or at least enough to absorb any baud rate difference for the length of the message. There are micros which will easily have 512 bytes of memory to spare for buffers, but there are also those where that will be hard or impossible to find. \$\endgroup\$ – Chris Stratton Mar 17 '14 at 21:28

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.