Leave a comment

When thinking of outdoors, one of the first things that came into our minds was GPS. We use it nearly constantly in our everyday activities – from locating your own position to finding the right directions to your goal. From this concept an idea started to form, and soon the GPS box was born.

What is it?

A box with a secret locked inside. The only way to reveal it is to bring the box to a specific location. Only then will the box open and allow you to access its contents.

The box lid is equipped with a distance meter (here the four LEDS), a needle and has a compass rose engraved on it. Once the box closes, the needle spins on itself and finally stops to point at the direction of the goal. As you walk, the less blink or turn off to signal when you are getting closer.

Overall, it is a very versatile object that can be put to several uses. One of them would be to use it for a sort of “inverses geocaching”, only instead of having to find a certain object, you have to bring the object to the location. Once you reach the destination, you can let to world know of your success, and then re-program the GPS coordinates for the next person to take up the challenge.

Another idea would be to use the GPS Box for an original blind date. In this case, there are two possibilities: in a first instance, the content of the box would be a little surprise such as cinema tickets for two or the box could lead you to a romantic restaurant with table for two. However, if you use two boxes, it can become even more interesting. In this situation, there would be two boxes leading to the same location. One person would have one, and the other would have the second. By following the indications on the box, the two lonely souls would eventually be lead to the same location, where the box would open and again reveal a little surprise – perhaps a dinner for two.

The potential of the box does not stop here, however. Some of the others situations we found where the box can be used would be: a birthday present, a treasure hunt, a game for kids, team building, finding your way home… with a little bit of creativity, the possibilities are endless.

How does it work?

Apart from its secret and reward, the box contains quite a few other pieces of electronics and mechanic that make it work.

On the outside:

  • 4 LEDs + engraved distance meter
  • a direction needle
  • an engraved compass rose

On the inside:

  • a power supply (batteries)
  • two servo motors
  • two meshing gears with a 2:1 mechanical advantage
  • a simple lock mechanism
  • Arduino + WiFly shield

The Arduino contains the GPS data and, through the TinyGPS library, allows to calculate the distance and direction between the starting spot and the coordinates of the goal’s location. The LEDs turn on and off according to this information, displaying the distance (>= 1000m, 500m, 100m, and 50m) from the goal. This also operates one of the two Servo-Motors, turning the needle so that it points at the linear direction of the goal. Because of technical constraints, the indication of the direction is static – meaning that if you turn on yourself, the needle won’t correct its position. To overcome this issue, there is a compass-rose engraved on the lid, so that by orienting oneself to the north, one is able to stay on track.

When a defined minimal distance to the goal has been reached, the software switches to “Unlock-Mode”. At this point, the second servo motor is activated and switched its position from “Locked” to “Unlocked”, allowing to open the box. When this happens, all LEDs start blinking.

This signals to the user that he has reached his destination and can now open the box.

While the Arduino has a compatible GPS Hardware, it was not provided in the material we were supplied. We were thus forced to find an alternative solution (see Problems) to be able to receive and use the GPS data. The final prototype thus worked with the Wlan-Hotspot function of the Android phone, which used the BlueNMEA software to send GPS strings to the Arduino. These were then processed through the TinyGPS Library of the Arduino code.

As explained on the TinyGPS website:

“TinyGPS is designed to provide most of the NMEA GPS functionality I imagine an Arduino user would want ñ position, date, time, altitude, speed and course ñ without the large size that seems to accompany similar bodies of code.  To keep resource consumption low, the library avoids any floating point dependency and ignores all but a few key GPS fields.” – TinyGPS website

BlueNMEA is an Android application which sends location data over Bluetooth (RFCOMM) or TCP in the NMEA format.


Due to time, budget and material constraint, we came across several issues while building our prototype:

  1.  The servo motors at our disposition would only turn 180°. The compass needle, however, needs to go all way round. The solution for this was a system of gears, one with a double amount of cogs or teeth than the other, thus creating a 2:1 mechanical advantage.  (amount of time involved: 2 hours + research on gear mechanisms)
  2. We did not have a GPS-shield compatible with the Arduino
  3. Transmission of GPS data via Bluetooth through a mobile phone also was not possible due to lack of a Bluetooth shield.

Solution: using phone as a WlanHotspot combined with the BlueNMEA app.  which sends GPS data over TCP. We could thus receive this data with the Arduino’s WiFI-Shield. (amount of time involved: 1 day until everything worked)

4. Energy supply: one 9V battery for the two servos + WiFly + Arduino + LED is not enough. Solution: more batteries

5. The engravings and the lock mechanism required very precise measurements, which were often tricky to get especially due to the rounded shape of the lid. Solution: patience, trial & error, lots and lots of measurements.

 Tips & Tricks:

Code snippet: getting Data from BlueNMEA

The following code snippet is used to get the GPS data through WiFly:

Conclusion and short video:

The SHW stage was a fun, engaging and challenging experience. Due to the limited time and materials we were often forced to think outside the box and find alternative solutions to get everything to work. However, once seeing everything fall into place and overcoming these problems was a very rewarding and useful learning experience.


(Thanks to Team WAMP for posting)

PEO – Personal Energy Orb


PEO is a little energy device that limits your computer usage time to a value generated from the distance you traveled with your bicycle in advance. It raises awareness for the amount of time spent in front of computers nowadays and forces its users to seek physical exercise in compensation for their “screen hours”.

The Idea

the concept poster

The excessive use of computers is a common problem in todays connected world. Many jobs require the use of personal computers throughout the work day and also our spare time is frequently spent at home in front of computers or similar technical devices, whereas our time spent on physical activities decreases. This can lead to a lack of social interaction and can ultimately cause health problems.

While it is not possible to simply reduce the time of computer use for anyone, e.g. computer scientists, a way of mitigating this problem is to find the right balance between computer use and physical exercise. However, as is generally known, regular sportive activities require a certain level of self-control, therefore our idea was to create something that supports people with keeping that balance between computer use and being outside and doing sports.

The Scope

Following the topic of the course “outdoor electronics”, PEO is mobile and even encourages its users to go outside and rewards exercise with a raising energy level. Furthermore, PEO combines the two subtopics “distance” and “energy awareness”:

  • Distance: The distance you travel with your bike has a direct impact as it increases your virtual energy level
  • Energy Awareness: The virtual energy level serves as a metaphor for time as a limited resource that is wasted in front of a computer which should rather be used more consciously.

The Interaction

PEO allows no direct interaction, but can be influenced in two ways:

  • By using the computer with PEO connected, PEO’s energy level is constantly decreased
  • When riding your bicycle with PEO attached, its energy level can be increased again

Trough color and luminosity change, PEO provides visual feedback about its energy level as well as the mode it currently is in (for a detailed explanation, see next paragraph “Technical realization“). A more precise feedback on the energy level change can be achieved by using the PC application. When PEO’s energy decreases, it slows down the mouse speed of the computer it is connected to. At zero percent, the mouse speed is set to the slowest possible mouse speed on Windows computers. While at this speed it is not entirely impossible to work, operating your PC becomes so annoying that you will want to stop using your computer and recharge your PEO again.

PEO’s color represents its current energy level (red = low energy).

The PC software shows the exact energy level.

Technical realization

PEO contains an Arduino (Uno) programmed to be in one of three states:

    1. Connected to the bike:PEO knows that it is connected to the bike thanks to a reed switch in its base plate. The bike mount holds three magnets that serve two purposes:
      • They hold the PEO in place when attached to the mount
      • They activate the reed switch connected to an input pin of the Arduino, so that it knows that the orb is connected to the bike.

When connected to the bike, PEO keeps glowing all the time. That serves as feedback that it is connected correctly and shows the current energy level so that changes can be seen without delay. Only in bike mode, the Arduino will listen to input from the revolution counter on the bike. The internal energy level is increased with every revolution of the wheel and PEO changes its color to represent the current energy level.

  1. Connected to the PC: When connected to the PC, PEO is powered by current from the USB port instead of its built-in battery. On the PC a little python program pings the Arduino in a short time interval over a serial connection. The Arduino checks for incoming messages and sends an answer back when it receives a ping. This ensures that Arduino and PC know that they are connected to each other. Both will switch to the “disconnected” state when they don’t receive messages for more than a few seconds. While the PEO is connected to the PC, the lights stay on all the time. The PC program sends a message to the Arduino every few seconds to decrease its energy level. The Arduino then sends back its updated energy level so that it can be shown in the energy level monitor application on the PC.
  2. Idle: PEO changes to this state when it’s neither connected to the bike nor to the PC. To save energy, the lights inside won’t stay on all the time, but will flash every few seconds to show the energy level.

To prevent a loss of your current energy level when the battery runs empty, PEO automatically saves its energy level to the non-volatile EEPROM of its integrated Arduino and restores it on restart.

The Circuit

PEO’s circuit (made with Fritzing)

The Code

Arduino Sketch

Python Program

Problems encountered

In its first draft, PEO was intended to consist of two orbs instead of one. One smaller orb should be kept attached to the bike and the bigger one to the PC at home. The idea was to only carry the smaller one to your PC to recharge the bigger one. Therefore we built two orbs at first, the first one with the bike logic integrated and the second one with the PC logic. We were looking into ways to transfer the data between both orbs without wires. That is why we chose to use XBees because they seemed like a good compromise between complexity and possibilities. Both Arduinos inside the orbs had XBee wireless transmitters connected to them to exchange the energy level.

While we were able to get the XBees and the energy level transmission working, it turned out to be impossible to use the serial connection of the Arduino for both the XBee transmission and the transmission to the python program on the PC at the same time, because the XBee constantly interfered with the serial communication to the PC. After over one day of trying we decided to drop the wireless aspect and put everything into one orb.

At the day of the final presentation, we got everything running right on time, but realized that two minutes before the presentation, PEO’s battery ran empty, although we exchanged it with a new one two hours before. Apparently the Arduino needs at least 7V when connected to the external power supply. Fortunately we could power it over USB instead, but still that was a pity, because we therefore needed to keep it close to the laptop and people could not drive around and try the recharging process as we intended.


Prototypes & Project Progress

Final Project


Good looking Web interfaces for Arduino with Python

Designing a GUI for a project is always problematic. There are hundreds of different toolkits to create GUIs but learning them takes a lot of time. A very simple way to quickly create a nice looking interface to your Arduino project is pybottle.

Pybottle is a micro web-framework that simplifies creating a small website. Combined with pyserial to read Arduino output from the COM port this is a good way to prototype your GUI. We used it for PEO’s energy level monitor application in the PC.

import bottle
from bottle import static_file

def index():
return open('./html/index.html','r')

This small peace of code already serves you the index.html file. The standard pybottle server starts on port 8080 so this page is accessible on http://localhost:8080/.

If your site contains images and other resources you should define a static_filepath:

def static(filepath):
return static_file(filepath, root='./html/')

@bottle.route also allows you to directly return JSON like objects by adding key, value pairs to a dictionary.

def getArduino():
dic = {}
dic['sensor1'] = sensor1
return dic

Now for the tricky bit. The Pybottle server is running in an endless loop this means that if we want to continuously read the sensor values from an Arduino we need
a separate thread.

First we need additional modules:

import sys, threading, time, os, signal, operator

And a little helper class:

class MyThread(threading.Thread):
def __init__(self, target, *args):
threading.Thread.__init__(self, target=target, args=args)

In this thread we have another endless loop that reads from the COM port and updates the sensor values.

def arduino_serial_connection():
global credits

while running:
serial_connection = serial.Serial(mySerialPort,9600)
line = serial_connection.readline()
print line
except SerialException, e:
print e


To update the value on the HTML page we can use a simple jquery javascript function.

<script type="text/javascript">// <![CDATA[
var allVals = []; function getArduinoValue(){ $.getJSON('/arduino/', function(data){ if(data.credits >=0) {

// ]]></script>

Just add your favorite HTML-Template a little bit CSS magic and presto you have a nice looking web interface for your Arduino.

A complete example can be found here.

Energy Fight

Leave a comment

Energy Awareness

Nowadays fossile energy sources are exploited to the farthest extent and the need for alternative ways of energy production is urgent. The awareness of new and clean forms of energy is an important issue, that already the youngest members of our society should be given an understanding of. This is why we have developed a concept of achieving a higher energy awareness for children in a playful manner.


What is it?

Enery Fight is a game that increases energy awareness. It illustrates different possibilities to produce energy. The produced energy is used to manipulate the game board, which is a circle shaped acrylic glass panel, placed on top of the Engergy Fight box. To start the game you place a small ball in the centre of the board.

The two players battle each other by producing energy on the four sides of the box to get the ball into the hole on their side of the game board. The two ways to produce energy are wind, created by blowing into a wind wheel, and motion energy, by cranking a wooden wheel on the side of the box.

How does it work?

Inside the Energy Fight box there are 4 motors which are used as electricity generators. They are connected to the two wind wheels and the two wooden wheels. The energy production of the motors is each visualised by an LED placed on top of the box.

The game board is manipulated by two servo motors.  One servo motor tilts the game board to the left and right and the other one tilts it towards the players. The first servo motor is glued to the second motor and thereby affects the second motor’s tilt by its own motion. The second motor is glued to the game board. This construction allows to move the game board in all directions. All motors are connected to an Arduino Uno, which senses the voltage of the generators and translates it into the movement of the game board.


Values, Potentials and Next Steps

As children are the central target group of our game, it should be located in schools and playgrounds. Therefore, Energy Fight should be improved in several ways: First of all, it has to be waterproof to make the outdoor use possible, independent of the weather situation. Up to now, Energy Fight relies on external power supply. In order to bring the idea of energy awareness to its fullest, Energy Fight should be supplied just by solar power.
A further step could include that the players produce all the power needed to play the game by blowing the wind wheel and cranking the wooden wheels. It might also be interesting for the players to be informed of the actual amount of produced energy, thereby making the player aware of the relation of everyday energy consumption and the effort of producing energy.

Lessons Learned

It was very helpful to first make a plan and a low fidelity prototype. Therefore, gaffa tape was very useful! We first wrote the code for the Arduino and tested it with our low-fi prototype,  as can be seen in the video. Building on this already working version, we were able to add functionality and went over to the high fidelity prototype. A 3D model of the inside of the Energy Fight-box helped us to estimate the proportions of the inner parts of the game. This was a great outline when we designed the laser-cutter files.


We also designed a Fritzing sketch in a quite early state of our game. At that time, the LEDs were powered directly by the motors and not by the Arduino:

Because the cables overlapped each other, the Fritzing sketch did not help us so much so we did not integrate the latest changes. The power coming from the motors in the final game setting was not sufficient to enlighten the LEDs. That is why the LEDs had to be connected to the Arduino which translated the generated power to a larger, proportional amount of power for the LEDs.

An important step that had to be taken before finishing the project was testing our game in realistic settings. Thereby we found out that the energy-production and the movement of the game board had to be balanced in order to make the game enjoyable.


On the final day we presented our result: The Energy Fight Game. After an introduction to the game, Hendrik and Fabius battled against each other. The winner could choose between bubblegums, Maltesers, M&Ms and the First Prize: A “Ranger”. Afterwards, our game was free to be tested by the audience.



Leave a comment

Environmental awareness

As long as anyone can remember our environment has been providing food, water and a space to live for all of us. However our behavior changed and nowadays the environment also is a very important energy supplier. With our project, called the EnvironmentalJukebox, we wanted to make people aware that our environment has capabilities we haven’t ever thought of. It can be used to be creative. Especially aspects referring weather can be used to control a machine we have created. Since music plays a big role in many people’s lives we thought it could be very interesting to connect music and environmental aspects. This is how our project emerged.

What is it?

The EnvironmentalJukebox is, as its name implies, some kind of jukebox. However it’s not a common one. Instead of letting the user choose a certain type of music or radio station, the EnvironmentalJukebox creates and changes music by itself based on four environmental parameters: wind, light, rain and temperature. This music consists of piano-chords and a drum-beat. Once one or more of the environmental parameters change, music changes accordingly. For example, if the speed of the wind increases, the speed of the music increases. If it begins to rain, music gets louder. Temperature is used to decide whether chords within a minor or major key should be played and the amount of light is crucial for the pitch of the tones. The more light is captured the higher is the pitch of the tones and chords.


How does it work?

In the EnvironmentalJukebox two sensors (one for light, one for temperature) and two motors are used to measure the four parameters mentioned before. See below for a short tutorial how to measure wind-speed and waterflow.

To change the music once one or more of the environmental parameters change, the output of the sensors and motors need to be read. Therefore we use d an Arduino Uno, the Processing programming language and SoundCipher, a sound-library for Processing. See the next paragraph to learn how to connect Arduino to Processing.

At the beginning of our Processing application we had to create all chords we wanted to use. This can by done by float-arrays containing four values, e.g.:

float[] fisdur = {6.0, 10.0, 13.0, 18.0};

Each value represents one key on a regular piano. Furthermore we created keys each of which contains six chords and two ArrayLists, one for minor keys and one for major keys. As mentioned above, temperature is used to decide whether to play minor or major keys. To guarantee diversion to a certain degree, chords within a key are chosen randomly. So if the temperature doesn’t change for some time different chords can be heard. However all of them are within a certain minor or major key depending on temperature. To transponse chords when more or less light is available we wrote a method which ensures that chords are transponsed only within octaves to avoid disharmony.

Methods to chose keys/chords randomly and to transponse chords.

Lessons learned:

How to connect Arduino to Processing?

The first issue we had to encounter was how to connect the Arduino board to a higher programming language – in our case: Processing.  Certainly the Arduino library has to go into the processing-folder but there is still a library mismatch, if the library files “librxtxSerial.jnilib” and “RXTXcomm.jar” are not copied from your Arduino-program-folder to the Java library of your operating system. Now the “Firmata” library has to be loaded onto the Arduino board. This is done by launching Arduino and selecting “Examples” > “Firmata” > “StandardFirmata”. But now you have to be really careful! When you load a normal Arudino sketch the “Firmata” is being erased and you would have to load it once again on your Arduino! After this has been done properly a serial connection to the Arduino can be set up in Processing by using the statements

import processing.serial.*;
import cc.arduino.*;

and creating a serial Arduino object for example as

Arduino arduino = new Arduino(this, Arduino.list()[4], 57600);

This object now can be addressed with most Arduino commands but unfortunately not with all, what brings us to our next issue.

Circuit Diagram (made with Fritzing)

How to measure wind?

Since we had to measure the speed of wind for our project the first idea was to simply grab the fan-speed of an old PC-fan that has not been connected to current but instead is just grounded with its sensor pin connected to one of the digital Arduino-pins. This works fine since there are many examples of Arduino-code for grabbing fan speed but sadly none of them worked for us in Processing, since not all needed Arduino commands are supported. So our solution was to mount the rotor of one fan to an electric motor and measure the speed by tracing the outgoing current. This can be done by connecting the plus-port of the motor to an Arduino’s analog input port. The value being read from the port (range goes from 0 to 1023) reflects the outgoing current of the motor.

Measuring the speed of wind was not so easy as it my sound at first.

How to measure water flow?

To measure the amount of rain the workflow is basically the same. Once the rotor was attached to the motor we had to use a pipe and a some kind of container to gather water on the top of the jukebox. For a working construction it’s crucial that the diameter of the pipe matches the width of the rotor. Furthermore the water has flow with a certain speed and the pipe needs to be perfectly aligned to the rotor to make it turn around. Unfortunately we didn’t test it thoroughly enough so this measurement didn’t work as we had expected.

Measurement of water flow can also be done by a rotor attached to a motor.

Parallel programming with processing?

Programming Processing is very similar to coding Arduino directly using the Arduino programming tool. There is a setup() method and also a permanently called method that is named draw() and not loop() like in Arduino. This is all in all no problem but when it comes to doing things real-time parallel it can get a little bit tricky. In our case we needed to play chords and a beat at the same time. But since only one of this can be done at one moment in the draw() method we had to find  a workaround. Our solution was to create different objects of our sound-library (SoundCipher) a SoundCipher-object and an SCScore-object and call them consecutive so (with a little tweaking) the sound seemed to be absolutely parallel. An other method could have been a callback-method that allows the program to jump back into the setup()-method, but this was a little to time intense for our purpose.

To give the impression of parallel execution the beats have to be played immediately before the chords.

Values and Potentials:

The Environmental Jukebox is a tool that creates random-music that always sounds very harmonic and adepts to the environmental influences. So it can be used as a tool of inspiration for musicians when they place it on some outdoor locations where they like to compose their tunes. Due to the fact that the Jukebox always sticks to a certain key and only changes it when the temperature drops below 20° it also works really nice as an accompanying instrument that can be joined by any thinkable solo instrument. Also the acoustic representation of the environment itself could make the Jukebox interesting for any environmentally aware companies or organizations that would like to have some smooth background-tunes at their place that are created by nature itself.

Next Steps:

Thus music almost offers endless possibilities, the options how to improve and enhance the Environmental Jukebox seem to be without much limit, too. Adding multiple channels and instruments, more sensors or even building a portable device, that not only reacts on environmental influences but also on the ones of his wearer, are just a few of the possibilities that could be done in the future. For more human interaction an interface with real instruments would certainly push the jukebox more in an interactive direction, that would give it more of the attitude of a real instrument, that could join in any musical arrangement. Even the combination of many devices to whole automated concerts that depend on environmental energies would be thinkable and would certainly be a lot of fun!

W.A.M.P- Where are my People?

1 Comment

What is it?

This years topics for the sketching with hardware course dealt with outdoor experiences. We chose the subtopic “distance” for our Prototype.

Two thoughts lead to this idea:

Korbinian experienced a situation, in which he had a partynight with a friend, whose wife tried to track his position via his smartphone and was worried, as the signal showed a place on a lawn.
Thomas on the other hand, thought of an utopic tool, which would be able to find the position of anything you are looking for and showing the spot with an interactive flying arrow in the sky.
Also the Idea was concepted for couples. Recently being in love with somebody makes you think of that person all the time. What is she/he doing? Where is she/he at the moment? The WAMP is a concept to fix the physical gap between two people by displaying the position of the partner, which could satisfy the emotional need of being close.
Pretty soon we made up our mind to use a weather vane to show a person´s position. Its normal task is to show the direction of blowing winds and cardinal directions. The WAMP shows where you will find your girl- or boyfriend or other people you are tracking via their smartphone or computer. It is designed as a decorative wind vane with special features, standing on your balcony or terrace.

A simple sketch we made for the prototype while planning:

How does it work?

The basic feature of the WAMP is to show the direction to a place or a person. So if you follow the direction the WAMP displays, you will meet that place or person eventually.

For fix places it would just be necessary to save a gps-point in the code so far (as the prototype doesn’t offer an interaction interface yet, to save more directions or change them quickly). For the Presentation we saved the position of Marienplatz and London (because of the current olympic games).

If you want to know the position of someone, it is necessary that this person has a smartphone connected to the net, because you need its gps-location tracked.

Via Google Latitude, this location will be send to the operating computer connected to an Arduino. A Python-Script translates the position of the signal into a vector and sends an angle to the Controller.

A servomotor on top of the prototype turns an arrow towards the right direction, depending on the position of the WAMP. Because the Servo-Motor turns only within 180°, we needed a gear ratio of 2:1 to get the full 360°.

As the tool has 3 possible directions to show, you find 3 colored buttons, in the middle of the bar. A visual signal on top shows you, which signal you are tracking at the moment.  Pushing the red button for example, which could be linked to the gps-signal of Max Mustermann, will color the arrow red and turns it towards the location of the person.

If there is no button pressed, the arrow turns slowly around, from north pole to north pole. A tightly installed compass rose makes it easy to adjust the system to the north after moving it.

The original idea was also to display the distance of a person. Concerning the software it would have been no problem to calculate this, but concerning the hardware, we decided to leave this feature out, because of the multiple circuits we would have had to install. Unfortunately we ran out of time for this.

Values and Potentials:

Disregarding the modern and unique design of that toy, it satisfies the human curiosity. As a lot of people are addicted to spread information about their current status like on facebook, this tool also gives information about the location of people – if they allow it by offering their Google-ID. That might be interesting when you think about coming together with friends. Maybe you use the WAMP and recognize that a person is just two blocks away. So why not trying to catch him for a short meeting?

And there is still the emotional aspect for couples. You touch the bar and you know exactly into which direction you can send your kitschy little thoughts.
And you could also learn to estimate directions better. I recognized that people tend to depend on buildings and streets, when they try to figure out a cardinal direction. The WAMP could also be a practice-tool to get a better feeling for directions.

Next Steps:

In lack of time and because of hardware issues, this prototype does unfortunately not apply all the nice features we planed to build up at the beginning. So there are still some improvements. The biggest one would be the distance-display. We thought about using a LCD-display, which could show the distance between the vane and tracked aim (person) in numbers. We also thought that it might be more elegant to display this information on the direction arrow on top. So maybe if the whole sign is lightened, it means the aim/person is very far away, let’s say more than 1000 km. Two third lightened, means between 100 and 1000 km. One third means below. With better LEDs, one could install even finer display bars like this or a very simple, but well designed code system like roman numbers.


Feel free to download our Source-Code.


Leave a comment

We all know how to open a box, but what if the box doesn’t want to be opened?

You are geocaching and found the cache. It’s slightly open but every time you get close, the mysterious chest locks itself. As you look around you see some strange objects blinking. Soon you notice that each object is reacting with your moves but there are far too many objects to activate all of them at the same time on your own. So if you don’t have a partner with you, go home or look for one, because you are playing TeamTwist.

What is it?

When playing TeamTwist you have to interact with the strange objects, called widgets. To finally open the chest, you have to activate different widgets depending on the current level. After each level the chest opens itself a little bit further.

After twisting yourself more and more from level to level, the chest is finally willing to let you raise its treasure.

How does it work?

The game consists of the chest and several widgets.

The chest

In an old sparkling wine box in we placed two servos: One for lifting the lid and the other to lock the box. Our first prototype (as you see in the video) was just a shoe box. Furthermore the box is secured by a light barrier (ultrasonic sensor) which prevents people to approach it before the end of the game.

The widgets

Although there are lots of possibilities to construct the widgets, we decided to build four different kinds of widgets for a start.

Each widget is featured with LEDs that blink when trying to attract the players attention. But they shine continuously when the player handles the widget the right way.

Human Conducting widget
Form a chain, linking both parts of the widget.
This widget consists of two nearly identical parts. Each part has a large contactor area composed of multiple stripes of copper tape (Yes, we use the players as conducting medium, but we hope that our test persons are still alive and well). One contactor is supplied with 5V whereas the other one has just a “sensor line-out” to measure the incoming current, telling us whether the players are electrified (a connection between both parts).

Light Widget
Shade or illuminate it e.g. by directing the cup to a light source.
We used plastic cups in which we placed a LDR and a layer of kitchen foil to scatter the incident light.

Weight Widget
Put a heavy object on it e.g. your partner.
Our first prototype consisted of the following layers (bottom to top): floor pads, acryl glass, FSR (Force Sensing Resistor), a layer of rubber to enlarge the working surface of the sensor and again acrylic glass. Since this was too slippery for Sebastian’s shoes we applied large snippets of the evil-smelling rubber blanket we found in the workshop. And it worked pretty well!

Distance Widget
Get close or keep away.
We fitted an infra-red distance sensor into an acryl glass triangle.

The coding

The game cycle is shown in the diagram below.

Further Ideas

TeamTwist can be easily extended by adding new or other widgets. Further widgets could be:

  • a spirit level widget, which must be held in a certain direction
  • an object, that has to be squashed or stretched

Lessons learned

Construct something that fits into a single movable box which doesn’t depend on the location for the final presentation: It took us the whole last day to extend the wires of the widgets to prepare the TeamTwist arena – lost crucial time for polishing and preventing heavy malfunctions.

Day 7 – The finish line

Leave a comment

Unfortunately this was the last day of the Sketching with Hardware course. In the morning all teams worked hard to finish their prototypes and to make the last changes. At lunchtime the inner yard and the garage were prepared for the final presentation by setting up tables and power strips. At about 13:30 students, research assistants and visitors being interested in the course came together to participate in the final presentation. One after another team introduced their prototype and talked about the idea the project is based on. Everybody was asked to try it out and to ask questions. After the presentation everything was cleaned up. Our advisors and we met again to consider the results of the course and to discuss feedback. This was the end of the Sketching with Hardware course.

Thanks again to our advisors, Hendrik and Sebastian and to all teams for this interesting and inspiring course. I think we all had a lot of fun and learned many new things.

Older Entries


Get every new post delivered to your Inbox.