Results of the Coworking Disco Project

The idea of the project was to allow us to control a bunch of PAR LED lights over our wifi. For that we would either use the existing Arduino board connected to the wifi or a brand new BeagleBone. The beagle bone is much more powerful and has Linux and node.js pre-installed, so this was my preferred platform. The advantage of the Arduino was that there are multiple projects already for controlling DMX devices. While I was working on the BeagleBone software Gilbert produced a nice HTML frontend and Rudis soldered and programmed the Arduino.

After spending a bit of time on Google and not finding anything I tried to implement the DMX protocol myself. I found a nice PDF describing the protocol and started off in node.js. DMX works by switching a single data pin from high to low at the right time, where the timing is measured in microseconds. That turned out to be the blocker for implementing it. DMX requires me to wait for 4 microseconds, but with node.js the shortest I could get to was 15 or so. This is probably the point where I should have started with interrupts or Assembler, but the lowest level of programming I ever did was a bit of C at university - back in the day. I tried to port my node.js code to C but that wasn't any faster. This was not working.

Having spent most of the day with the BeagleBone but without any results I developed plan C (the C implementation on the BeagleBone being plan B). I would write a small node.js app that wold be the frontend for controlling the lights, and the BeagleBone would in turn control the Arduino board which would talk DMX to the lights. The node app's first version is ready and working, the software on the Arduino is almost working. Once it does I'll push the source to Github.