7 years ago

StageIF Concept

I have decided to reveal my plans, so here it is:

SpriteTech Stage Faction proudly presents its first revision of the Stage Interface ``StageIF''.

The basic idea behind this is to have a stage capable box with Ethernet, DMX and a bunch of GPIOs (currently planned are 8 input and 8 output channels). The box will be speaking UDP,OSC and ArtNet on the ethernet port. It'll have a webfrontend for setup and configuration.

You can configure the device to do the following things:

  • On reception of a udp packet, switch on/off/toggle an output gpio port.
  • On reception of a specific osc message, set a lighting scene via dmx.
  • When a specific input gpio port receives a signal, send a udp packet or osc message.
  • ...

Effectively the input events will be:

  • udp packet (maybe with specific content)
  • osc message (using address and parameters)
  • ArtNet message (still need to look into this a lot more)
  • input gpio port receives signal
  • DMX channel gets set to a value

And the output events will be:

  • send a udp message (with defined content)
  • send an osc message (with defined address and parameters)
  • send an ArtNet message (needs research - still no idea how ArtNet exactly works)
  • set/clear/toggle a gpio output port.
  • DMX set channel value

Additionally I want to add some presets for ease of use in standard situations:

  • ArtNet <-> DMX Converter
  • OSC -> DMX Converter
  • OSC <-> GPIO Converter

The gpio module will be built with an input stage, that can detect whether there's a connection between the two pins of the channel (pin1 of the channel will be ground and pin2 will be connected to an opto-isolator and that to Vcc. So if you connect some kind of button or switch to the two pins of the channel, you get a logical 1 when the button is pushed and a logical 0 when it's not. It should be sufficient to attach a bunch of buttons or other open/close sensors to this and use this to control some display logic via osc/udp. The output stage of the module will be built from classic relays (also opto-isolated to avoid interference on the board). The relays can be controlled via input events and will rated for 250VAC/10A. That should be enough to power some arduino contraptions and even larger devices in the show. (I'll definitely have to get some proper electrician to verify my design concern the larger power/load parts of the circuit)

Power for the box will be provided by an off-the-shelf open frame psu. No need to reinvent the wheel here.

Controlling everything will be a raspberry pi. But the hardware design is flexible enough to change some details to switch to something like an esp8266 or olimex a20 or whatever suits you best.

There will be 3 separate boards connected by ribbon cables (excl. the rpi). The first one is the DMX board. This holds a rs485 transceiver, opto-isolation, dmx termination and the 2 xlr connectors. The second one is the GPIO board. This holds a 16bit i2c port expander, opto-isolation and relays for all the ins and outs. The last board is the so called "X board". This is comparable to a backplane or crosspoint. The first two boards connect here and there is a big connector for the raspberry pi. You also have level converters here, because the rpi (and most microcontroller boards nowadays) runs 3.3v is not 5v compatible. Therefore all connections between the controller (rpi in this case) and the io boards (dmx,gpio) are level shifted between 3.3v and 5v. This feels a lot easier than finding all required parts for the io boards in 3.3v versions. If you want to switch the rpi to an esp8266 for example, you just have to adapt the X board to connect to the esp. The other boards are agnostic to the host controller.

Concerning the software side, I'm still unsure whether I want to run a full linux os on the box or build something on baremetal. baremetal has the nice feel of being lightweight and more realtime, but i think i'll probably just use a custom and lean linux distro to avoid having to write (or gather from other projects) lots of stuff like network stack, webserver, timeserver, ssh access for debugging/custom modification... And besides, a linux system (properly cleaned up and optimized) only takes a few seconds to boot, which is completely ok. The system software itself will be split into a backend (probably) as a c++ binary using fastcgi to connect to either lighthttpd or nginx. and the frontend will (if i get this done properly) be done in javascript.

That's the design. Not really a small project, but I think worthwhile. I could really use something like this and I know a few people who feel the same way. Oh, before I forget: The whole thing will be done as open hardware (excluding the psu and hostcontroller) and open software. I will put everything into a git repository (link will be posted here, when it's setup). I'm still fighting a bit with myself, how much write control i will give to other people (if anyone is interested at all). But be assured: Everything will be accessible for you to build it for yourself and modify any part you want - the board designs, hardware documentation, os install scripts, sources for backend and frontend. I guess everything will be something like an MIT license in the end (although i haven't finally decided this yet).

If you're interested about the current development state: I'm working on the board design right now (when I find some spare time). dmx board is almost done, gpio board is ~60% done, x board is ~80% done. when i have the first prototype revision done (in KiCad), I'll order the parts and build it on a breadboard for verification. If everything works as planned, I will send the board files out to get some manufactured prototype boards. While waiting on the boards, I will start to build the os setup and the software (using the breadboard for testing). Hopefully I then have a first basic version of the backend and a dummy for the frontend working already. Then I can switch between fleshing out/extending backend and frontend, as well as case design (atm i'm thinking of mdf boards with steel edges and ball corners to make it "stage compatible" and give it a nice flightcase styled look). So, all in all, still a lot to do. But the concept looks good in my eyes and i have a good feeling about the hardware and a lot of ideas for the software.

I'll keep you posted with updates.

shamada

  • This article is my 4th oldest. It is 1116 words long.
Add your comments

Function get_magic_quotes_gpc() is deprecated
The error has been logged in /anchor/errors.log
Uncaught Exception

Uncaught Exception

Function get_magic_quotes_gpc() is deprecated

Origin

system/boot.php on line 34

Trace

#0 [internal function]: System\error::shutdown()
#1 {main}