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:
- µC (Atmel ATXMega32E5)
- 6 D Accelerometer and Magnetometer IC (STM LSM303D)
- LiPo Charger (Microchip MCP73831T-2DCI/OT)
- 2,5 V LDO (Microchip MCP1700T-2502E/TT)
- MOSFETs for motor driving
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:
- blind people
- people with a lack of orientation
- cloudy days (because it's harder to know cardinal direction without sun and time)
- hackers
TO-DO-List:
- improve the filter
- test adaptive vibration time → leg is not moving, lesser vibration interval
- add bluetooth low enery functionality
- make a proper case for the PCB and the battery
Challenges I would like to pass:
- doing a hike in the woods in a region I don't know
- coming out of a new york city subway station and knowing how I can get from 34th street to the 35th without walking to the nearest sign and noticing I went the wrong way
Challenges I wouldn't prefer:
- introduce the security man at the airport scanner about TheSixthSense, because you forget to take off the anklet
- getting kidnapped and blindfolded,...
Use ULN2003 instead of those transistors. Each ULN2003 contains 7 Darlington pairs plus the required resistor and protection diode. It's a cheap, easier, and small replacement for transistors and to drive those vibration motors. You can find it for 10cents per IC and omit the complicated driving circuit you designed. I bet it's a nightmare to solder them clean, but one IC is much much smaller and easier.