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.