Omega2+ controls Fog Machine via DMX
-
Thanks to Omega2 I am now able to control my DMX fog machine via SSH.
Hardware:
- Omega2+
- Arduino Dock 2
- Conceptinetics CTC-DRA-10-1 DMX RDM Shield for Arduino (bought on Ebay)
- Stairville AF-40 DMX Mini Fog Machine (or any device controllable via DMX)
- Standard DMX cable
Steps
- Plugged Omega2+ into dock
- Plugged DMX shield into dock
- Set TX & RX jumper on DMX shield to 'uart'
- Installed Arduino IDE
- Downloaded DMX Library for Arduino (https://sourceforge.net/projects/dmxlibraryforar)
- Connected fog machine and shield with the DMX cable
- Powered up fog machine and dock
- Compiled and uploaded Arduino code
- Set DMX channel of fog machine to 0x03 via dip switch
Arduino code:
#include <Wire.h> #include <Conceptinetics.h> #define I2C_ADDR 0x08 // Minimum is 1. Maximum depends on available memory. #define DMX_CHANNELS_NUM 16 // Pin number to change read or write mode on the shield #define DMX_RXEN_PIN 2 DMX_Master dmx_master(DMX_CHANNELS_NUM, DMX_RXEN_PIN); void setup() { dmx_master.enable(); Wire.begin(I2C_ADDR); Wire.onReceive(i2c_on_receive_handler); } void loop() { } void i2c_on_receive_handler(int bytes_num) { uint16_t channel = Wire.read(); uint16_t value = Wire.read(); dmx_master.setChannelValue(channel, value); }
omega shell:
$ i2cset -y 0 0x08 0x03 0x00 # fog machine off $ i2cset -y 0 0x08 0x03 0x80 # fog machine 50% $ i2cset -y 0 0x08 0x03 0xFF # fog machine 100% $ # i2cset -y 0 [arduino_i2c_addr] [dmx_channel] [dmx_value]
This setup might serve as a cheap alternative to the Open Source Lighting Board (OSL).
https://www.openlighting.org/
http://www.stellascapes.com/product-page/20736098-e4be-aef0-6cc7-3d69362cf5d5 ($75)I am now planning to connect some DMX LED strips / bars and integrate the Omega as my new DMX/TCP interface into FHEM.
-
Are you able to share the changes to the conceptinetics code you used with the omega?
The conceptinetics DMX library directly manipulates the AVR UART registers which dont exist on the Omega.
How have you changed the library to work with a Linux controlled Serial port that doesn not allow direct hardware access.Thanks
Lachlan