The initial idea originated at the University Osnabrück, Germany. Vibration motors were mounted onto a belt and activated to point to the geological north-pole. The belt was very heavy but the idea was rather interesting. (see link below)

I decided to make my father a self-made birthday present. He has a balance disorder ever since he traveled in an airplane while having a cold. Right after the journey he felt dizzy for months and as it turned out his right inner ear was damaged. His general practitioner told him his brain had to be trained, so it can work with only one healthy inner ear. Okay, if it works this way, what will happen if we add this inconspicuous extra compass sense?

How to build (short):

I created a small two layer PCB with a few components:

I ordered the PCB from OSHpark and a stencil from OSHStencil for a few bucks. The dc vibration motors were delivered from china but unfortunately the company only had 5 in stock.

The programming was done in Atmel Studio 6.2 and a PDI-Programmer. I use the Atmel Software Library (ASF), which saves time since I don't need to write I2C drivers. After a couple of hours the first prototype was ready to use.

The device itself is mounted on a 100%-Cotton ankle strap, made by my girlfriend.

How it works (at the moment):

After the calibration phase, the program is ready for the magnetometer readings. Push the small button and just turn the PCB around the different axis. Push the button again and the calibration data is written to the eeprom section.

The accelerometer is used to make a tilt compensated compass. This way the exact position of the PCB on the anklet doesn't matter too much.

However, the inconstant movement speed of the foot is a problem. When you walk the ground vector is moving with the acceleration of your feed. Since the acceleration is raising and falling in one step an additional filter is required to determine the true ground vector.

Once the magnetometer output is read, the two vectors can be used to calculate the angle to the magnetic north (Calculation is not part of the introduction yet).

Afterwards the correct motors are activated and set to the desired intensity. For my first test I used four motors. As it turns out 4 motors don't work well enough when it comes to exact positioning. The shin isn't sensitive enough to detect the small differences between two vibration sources. The solution for my second prototype is to use eight motors.

The actual sequence is: Read one second data and filter, afterwards regulate the correct motors for 300 ms.

At the time TheSixthSense works well and it is rather comfortable. I have been wearing it for 3 days during my time in the office and nobody could hear the vibration. Nevertheless, in a noise free environment, it is loud enough to be heard by other people in the same room. It can be easily washed since all of the electronic parts can be taken out of the belt. The fully charged 700 mAh LiPo battery delivers energy for about 30 hours. Enough energy to last the gadget for approximately three days, while active.

Useful for:


Challenges I would like to pass:

Challenges I wouldn't prefer:

You could download the whole Atmel Studio 6.2 and CADSoft Eagle 6.1 project from my github account. I would like to see a lot off pull requests!