Kohtauskone

20091001 17:05

This one is a small project that I had to do twice to get right. It is a pedal used for controlling strobe light through DMX protocol. Technically it is built on top of a Pro Mini Arduino with simple DMX driver circuit. It has button to kick the action, rotating switch for choosing different presets and one switch for future expansion. You could basically control any DMX device with this hardware, but I built it for Stairville 1500DMX strobe light.

I made first version half year ago. At that time there wasn’t real DMX library available, just and example sketch that had suspicious elements in it. However it worked fine when powered through USB but for some reason quite buggy when external power supply was used.

The main difference with this second version is size. As Pro Mini is so tiny, I could build whole thing to a smaller box. I know there are lots of people who don’t understand what would be the point in using a non USB version of Arduino board, and this is a perfect example of the project where you will not want to fit Duemilanove inside. Also I wanted to minimize all external wires, so I made this one to work with 9V battery. Below is the picture of the finished product.

First step was to build a DMX driver. I used the instructions at Arduino Playground but built the circuit on tiny piece of circuit board. The circuit gets power through Arduino and outputs + and - data lines to xlr jack. Note that I used evil 3 pin XLR as my strobe light does use that one. Officially you would use 5 pin XLR jack. You can see the driver on the bottom right of the picture above.

I really like rotary switches as you can fit lots of different functions in such a small space. I basically soldered 100 ohm resistor between each pin, using the switch as stepped potentiometer. Similarly as potentiometer the values can be read to the Arduino using analogRead-function.

During the summer folks at Tinker.it did come up with this extremely simple DMX library called DmxSimple. It is basically doing all the hard stuff in background and enables you to focus completely on the actual features your device needs to have. The library comes with couple simple examples of which other one is for stand alone project like this and another to computer/DMX interaction.

DMX protocol in itself is rather simple. Each device has an address that can usually be changed somehow on that very device. For instance my strobe light has a dip switch that is used to select the address. I have selected address ‘1′. If you know the address of the device you can adjust the parameters by sending a value between 0 and 255 to that address through your DMX controller. That usually adjusts the brightness or does something more special for the light you are controlling of. In many cases you can control more than one parameter of the light. In that case addresses following the first address are used. For instance my strobe light has two parameters, speed and brightness. If I send DMX message ‘255′ to address ‘1′ and DMX message ‘100′ to address ‘2′, the strobe light blinks as fast as it can but not as bright that it could. If I would change the start address of the strobe light to 100, the channels I would need to send DMX messages to would be 100 and 101. Here is the picture of my strobo lights address selector switch.

At least my strobe light works such that if DMX flow (the library is continously sending DMX messages in the background) stops, after half second it updates it both channels to zero and stops blinking. Therefore it is possible to switch the controller of to save battery even if the strobe is on. However I am planning to install a relay to the pedal that would switch the power off of the DMX driver when it is not needed to extend battery life.

Here is the code I have used. It is fairly simple to modify to function with different lights and such:

/* Simple strobe light pedal example
** (c) Jari Suominen 2009
** This piece of software is hereby released to public
** domain.
**
** It uses DMX simple library which is available from:
** http://code.google.com/p/tinkerit/
 */

#include <DmxSimple.h>

#define button 6
#define rotary_switch 0
#define strobo_address 1

boolean button_pressed = false;

void setup() {
  DmxSimple.usePin(3);
  DmxSimple.maxChannel(2);

  pinMode(button,INPUT);
  digitalWrite(button,HIGH);
}

/*
  Main loop, checks if pedal has been pressed or released
  and works accordingly. For the sake of clarity I'm not using
  all possible presets here.
 */
void loop() {
  if (!button_pressed &amp;&amp; digitalRead(button)==LOW) {
    // Button was just pressed
    int preset = get_preset();
    if (preset==0) { // FAST
      DmxSimple.write(strobo_address, 255);
      DmxSimple.write(strobo_address+1, 255);
    } else if (preset==1) { // MEDIUM
      DmxSimple.write(strobo_address, 150);
      DmxSimple.write(strobo_address+1, 255);
    }
    button_pressed = true;
  }
  else if (button_pressed &amp;&amp; digitalRead(button)==HIGH) {
     // Button was just released, lets turn the strobo off.
    DmxSimple.write(strobo_address, 0);
    DmxSimple.write(strobo_address+1, 0);
    button_pressed = false;
  }
}

/* returns the value the rotary switch is set to */
int get_preset() {
  int val = analogRead(rotary_switch);
  if (val < 50) {
    return 0;
  }
  if (val < 110) {
    return 1;
  }
  if (val < 210) {
    return 2;
  }
  if (val < 300) {
    return 3;
  }
  if (val < 400) {
    return 4;
  }
  if (val < 500) {
    return 5;
  }
  if (val < 600) {
    return 6;
  }
  if (val < 700) {
    return 7;
  }
  if (val < 800) {
    return 8;
  }
  if (val < 900) {
    return 9;
  }
  if (val < 1000) {
    return 10;
  }
  return 11;
}

Pallo

20090811 11:29

This is a gesture controlled MIDI controller I designed and built as a commissioned work. It has a tilt sensor which affects to MIDI parameters it is sending out but also the color of the ball. I built several stereotypes to get it work the way I preffered. The pictures are from third generation. I am currently putting together fourth generation with better LEDs.

Pallo has two groups of four LEDs: red, green, blue and white LEDs. All are LEDs are superbright. I’m using red, green and blue leds to for rgb colors and white to give white color, as it seemed that creating white with colored leds was difficult. In future models I’m testing true superbright RGB LEDs that shouldn’t have this problem.

Get the Flash Player to see this content.

The heart of the controller is Arduino microcontroller. I have used Pro Mini -version of Arduino. It is fully functional Arduino without usb connection and built to a circuit board size of a stamp. The tilt sensor is Lilypad Accelerometer and the device is powered from on 9V battery. One battery should last approzimately 10 hours.

The MIDI signal the device is sending out is two different CC parameters that are tilting in X- and Y-axis. Sadly there is no footage of using the MIDI out of the device which I didn’t have time to shoot before I sent the ball(s) to my client.

If you are interested of custom MIDI controllers, please contact me and I’ll see what I can do.

Making of with more details coming soon…

Test Drive

20090514 12:49

I finally managed to get the core system installed to my Hopeanuoli. At the moment it only reads the RPM from tachometer and left and right blinkers.


Here is a shot from first test. The voltmeter moved so everything looks bright!


Here I have installed the circuit board to this lovely VHS case. Also I have wired the system such that you can operate the audio system from inside of the car.


Here is shot of my experimental setup. The car have been attached to Arduino lying on the floor. Arduino is then connected to my EEEPC. For some reason system misbehaves badly if in addition to Arduino, the volt meter isn’t attached.


This last shot is from the FMod-project that takes care of transforming the RPM data coming from the Arduino to artificial engine sound.

Backend rising

20090513 23:41

As I need to present the prototype tommorrow within 14 hours time begins to run out. But after fighting with the serial protocol I finally managed to control RPM parameter at the FMod with small trimmer attached to Arduino. Soon enough I hope to be able to replace the screwdriver with real tachometer. Also adding accelerometer should be fairly straight forward task from now on.


This image reveals my highly professional setup. Breadboard still contains some remains from older projects so it is a bit messier than it would need to be. I have FMod running on my EEEPC and if I would not been as lazy as I am I could have uploaded a video that would actually prove that turning the screwdriver actually puts pedal to the metal at FMod side.

I will hopefully upload some code also at some point. At the moment it is quite evil so you will have to wait a bit.

Ford Fiesta Mk2.0 kick off

20090505 20:52

This is thew first post of the most retarded project I may ever have started. The idea is to take a crappy car and update its soundscape with better sounds and improve the driving experience this way. Someone could want to change their car to sound like Ferrari. Someone would want to feel like Luke Skywalker riding his landspeeder. By using isolating headphones it is possible to isolate existing realworld soundscape more or less totally and replace it what ever you can imagine to. Also someone would want his/her vehicle to have more attention on the streets could feed artificial audiosignal to the car stereo, open the windows and pump up the volume.

So this is the plan. I have this old Ford Fiesta that is 25 years old and barely moves. First step - make it street legal. Second step - create couple audio themes using FMod Designer. Step three - insert the themes to the FMod audio engine running on my trusty EEE PC. Step four - connect Arduino to the Fiesta and track rpm, g-forces, blinkers etc with it, using this info to trigger event on FMod sound engine. This way my old Ford Fiesta Mk2 will become a Ford Fiesta Mk2.0!

I will document the progress of this project here every time some progress have been seen.

Openings

20090323 21:09

Openings is project by Axel Straschnoy that I have been working on. It is a book that reflects the intimate relationship of a reader with his/her books. As such the actual content of the book remains between the owner of the book and the book in it self, leaving mostly all technical details as a secret. We have however took some x-rays of the book to let you have a peek while considering whether you actually want to purchase it and reveal the secret. From x-rays you might recognize a Lilypad Arduino board. My task was to design and solder the electronics of the book.

The print sale of the project Opening is coming to an end. On July 2, at 11:30 Central European Time the drawing of the winning numbers will take place at the Musée Régional d’Art Contemporaine Languedoc-Roussillon in Sérignan. If you are interested in participating and buying your print these are the last three weeks …to do it.

Opening is a new kind of catalog, one that that is able to present the works themselves and does not refer to a previous exhibition situation. It is the result of two years of research.

It is funded, distributed and sold through an edition of prints. These are available for 55 euros each. With the money from the sale of the prints an edition of books is made. The book are then given out in a lottery to some of the buyers of the prints. The more prints are sold, the more books that get made and the bigger the chances for each participant.

Prints are available at the Museum, Galerie Xippas in Paris, Tijuana-Galeria Vermelho in São Paulo and online.

Opening has been featured at the Finnish Museum of Photography, Galerie Xippas, Salon Light/SP at Galeria Vermelho, Koh-i-noor and the catalog of Ange Leccia et Le Pavillon at Musée Bourdelle.

Images © 2008 Axel Straschnoy

Making of - Super Ball - The Animator Unit

20081215 00:04

For installation Super Ball my task was to implement a control unit for controlling a network of 49 1-Wire switches. Each switch is basically a programmable microcontroller though it was not necessary to actually program them, just alter value of one bit to switch a led connected to it on or off. In this article I’ll go through the design and building process on that very unit. Designing and building the light chain part of the installation (1-Wire network, led-units, balloon valves etc) was done by Martti Kalliala, Jenna Sutela and Jukka Rehu, not me, so I can’t cover them here.

First step in the process was to accomplish a hello world. I had one switch which I connected to the Arduino board and tried to make it blink. 1-Wire protocol is pretty straight forward but the command api of a switch was not. There is a ready made library for 1-Wire protocol. After some struggling I finally understood the order on 1-Wire commands to make the LED blink.

Next step was designing and building a box for Arduino. I bought sturdy Hammond Box for a case. We figured with Jenna that one potentiometer and couple of switches were enough for an interface. I also added connectors for power supply, fuse, USB (so there would not be any need to open the box for re-programming Arduino) and for light chain itself. Sadly I don’t have better images of the innards of the controller but the blurry pic above.

Get the Flash Player to see this content.

Testing the controller with the chain was a nightmare. It took hours of me to realise that innocent looking loops on a 150m light chain cable were actually blocking the dataflow inside the cable. The last switches in the chain were behaving badly and sometimes the whole chain could freeze. I added more code for error checking but when we finally did spread the cable more straight in Jenna’s studio, the chain started to behave. On the video above you see the before behaviour as two LEDs are on at the same moment. Belowe is the after behaviour. Although it can be hard to understand that it actually works as it should.

Get the Flash Player to see this content.

Video and images © 2008 Jenna Sutela

Best Wishes A

20081110 23:35


This is second gadget from my Best Wishes line. It is used for controlling playback of different audio samples via USB on a computer. It has an USB Arduino inside that sends serial data back to the computer. The computer is running a simple program which is using FMod Music & Sound Effects System. This basically means that you are making sound banks using FMod Designer. As you can run FMod dlls in all major OSs (Linux, Windows, OSX…), the implementation is platform independent. I have used both EEEPC 701 and PowerPC G4 as host computer and they both run fine.

It works like this: The potentiometer is actually a rotating switch which you use for choosing right sample bank. Switches are then used to start and stop samples in that bank. Buttons are used for fireing samples in the bank. LEDs show whether the sample is playing or not. It also has an option for delaying the updating of the position of the switches: You can choose which samples are going to be stopped and which fired at the next switch which you are performing by the black button (or footswitch) at the right.

The reason in using FMod is that it offers a variety of options of how events should trigger different sounds. You can randomly pick samples from a pool, have multilayered events etc… Also after you have built the project with it, you can run it from a lightweight C-program from command line. I usually don’t need any GUI at the computer side. I have to say that I would welcome a truely open source solution as a computer end. FMod is free for non-commercial use anyways so it is a good option for now. At the moment I am not that proud of the source code of my tiny program so I won’t be releasing it yet, but hopefully soon.

Let it Bleep

20081110 00:30


This project is a result of a workshop that Andrei Smirnov, the director of the Theremin Center for Electroacoustic Music at Moscow State Conservatory, gave at Sibelius Academy in November 2008. I installed a theremin sensor inside Beat the Bleep game I purchased from Smyths at Cork, Ireland one week earlier. I also installed Arduino to read the sensor and synthesize (brutally) audio.
This post is more or less documenting the state of this instrument when one week workshop ended. I will probably modify this somehow in the future. Maybe control lights with it…who knows.

This is the actual prototype. As you see, it uses old Arduino NG USB board that I would not have been able to install inside the case. I also needed to use the USB cable to feed DC to the board (not in the picture).

Get the Flash Player to see this content.

Above is a video demonstrating the earlier proto version. After I replaced USB Arduino with tiny Wee Arduino inside the case, I realized that this connection between computer and the board made to theremin sensor more stable. Final standalone version does work pretty poorly compared to proto version. It is suppose to divide 500Hz frequency with integers derived from the distance from the antenna. And this is suppose to form a harmonic series downwards. And it kind of does it, but the values from the sensors are a bit noisy, which will cause arpeggios which I on the other hand kind of like.

Here is one picture where you can actually see the theremin sensor board and a tinyest Arduino board I have ever seen. I will probably start using the Wee on all projects that can be done with 3.3v signals.

Super Ball / Cluster

20080923 19:20

Super Ball is a large scale balloon installation I was working on together with Jenna Sutela and Martti Kalliala based on their concept. Their initial idea was to animate a super sized balloon taking three giant leaps in the night sky. Installation was made for Coachella festival 2008. However, hostile wind conditions at the location made the implementation of the original concept impossible and Jenna and Martti cleverly refactored the installation into Super Cluster. I´m hoping that in the future the installation can be displayed in the Super Ball form, which it was designed for.

Get the Flash Player to see this content.

Super Ball comprises of an Arduino powered Animator Unit that is controlling a network of 49 1-Wire LED-units, each attached to a balloon. Each balloon corresponds to a one frame of the whole 49 frame animation. I was responsible of building and programming The Animator Unit.

Video and images © 2008 Jenna Sutela