With Funky Light we describe two different Layers, one of them is the server side and the other one is the client side. We want to design the server side independent from the client, so we could easily exchange the client for an off the shelf product (DIY didn’t work all the time in a school environment especially when the developers left the school).
The Server Side is quiet complex and should be the hub between the physical world (Lights) and the client, but with the addition that the server uses a common used communication protocol to talk to the client. In our case we choose OSC (Open Sound Protocol), because it is commonly used to control mixing tables. To build our server we used an Arduino Yun with a custom made Shield, you find more details in the Server section below.
Besides the fact that you could use Funky Light with any Software that is capable of using the OSC protocol we start designing our own software that is specially build for this case. So we have an easy to use bundle that consists of the server as well as a client. We wrote a detailed description in the Client section below.
We already managed to build a prototype and tested it in the assembly hall of our school. We would love to get your opinion on our project so we can improve Funky Light.
The Server Side of Funky Light
Okay let’s talk about the server side, first of all I want to give a short overview. The Hardware of Funky Light is based on an Arduino Yun with a custom made PCB that controls 3 DMX universes. Two of them are outputs and the third universe is used as an input form mixing consoles or whatever.
Before we describe the actual design of our hardware we want you to know why we use this type of setup, if you are not interested you can skip that part and continue reading in the Hardware section.
One of the first question that we had in mind was, how the client talks to the server. After a lot of research we decided for OSC, because it is a commonly used protocol in similar projects. And since every teacher and student should be able to control the whole system with their own device, we needed the server to support ethernet as well as wifi. At this point we started searching for a the right development hardware that supports wifi as well as ethernet in association to a microcontroller that should handle all the DMX stuff. The cheapest and easiest Hardware we found was the Arduino Yun, so we continued working with the Arduino Yun.
So why to outputs and one input universes, the main reason why we used to output universes isn’t that we actual need it, we will never have enough lights that need all the two times 512 channels. Moreover it is the fact, that most schools use the 5 pin DMX cables, which are capable of two DMX channels, so they can easily distinguish between audio cables and data cables. So why not supporting two output universes.
Additionally we build in a safety feature, because complex hardware and software always fails when it matters. The safety feature is a switch that defines the source of the output signal, you could choose between the generated signal from the Arduino and the signal from the input universe, so we can ensure that the lighting control never fails.
The Hardware
Okay let’s start digging deep into the Hardware, especially the Arduino shield.
The Hardware of the server side consist of several parts:
- A Linux operating system that runs some python scripts to manage all the clients and bumping messages around. For that we used the Linino of the Arduino Yun.
- A Microcontroller manages the he whole DMX data output, for that we use the microcontroller of the Arduino Yun.
- A custom Arduino shield separates the circuit of the Arduino Yun from the DMX signals with some Optocouplers. Additional it does all the additional work to get from a Single Bus to the DMX pinout. The schematicsfile are here (The Geber Files).
You could find a detailed overview of the whole structure in the nice diagram at the end of the detailed description.
The Client Side of Funky Light
One of the main aspects of Funky Light is that it should be an easy to use tool, so the software is deftly one of the main features. The main ideas behind the Funky Light Client Software are being smart, simple and easy to use.
At the moment the software is based on Java so we aren’t bound to any operating system. For use it is imported that everyone could use the software without any instructions, so we trying to keep it simple.
There are several mode in the software that address different situations and levels of experience. We planning these modes:
- Live Control
(Finished)
The Live Control is simply a digital version of the mixing table. - Record Mode
(Nearly Finished)
The Record Mode gives users the ability to plan the lighting, so where lights should move or how intense they should glow, for different scenes. - Play Mode
(Work in progress)
The Play Mode helps the user to activate particular scenes during a performance. - Sound Mode
(Future)
Since we have a lot of concerts of school bands, we want the Light react to the music, so hopefully some days we implement the Sound Mode into our software.
Here is a screenshot of the Software (Live Control). Please have in mind that the UI is not final!
Why is there no source code?
We deeply want this project to be fully open source and we will release all the source code, documentation and the rest, when we finished our work to a certain level. At the actual stage the software isn’t as well documented and finished that we could release it.
The awesome diagram that shows everything
Congratulations you made it at the end and reached a new level of awesomeness.
If you got some feedback for us please leave a comment. :)
As a little bonus we
have a short video about our awesome project for you.
But we have to admit that this video was recorded very early in the morning.