NOTE: this has been superceded by https://github.com/roberttwomey/bluetooth-headtracker. Please go there for supercollider code, etc.
- 1 NOTE: this has been superceded by https://github.com/roberttwomey/bluetooth-headtracker. Please go there for supercollider code, etc.
- 2 Hardware
- 3 Software
- 4 Enclosure
- 5 Reference
Built with simple, ready to order parts from common suppliers. Purchase 1 each of the following:
- Bluefruit EZ-Link - bluetooth modem w/ baud rate detection - http://www.adafruit.com/product/1588
- Arduino Pro Mini 3.3V - https://www.sparkfun.com/products/11114
- Power switch - https://www.sparkfun.com/products/102
- GY-86 - 10 DOF flight control module with MPU6050 + HMC5883L + MS5611 - http://www.amazon.com/Arrela-Control-Ms5611-Hmc5883l-Mpu6050/dp/B00KKJYMO6/
- LiPo Battery - https://www.sparkfun.com/products/731
- LiPo Charger - https://www.sparkfun.com/products/10217 (note you need to cut off the JST connector to fit it in the enclosure)
- Small quantity of stranded ribbon cable.
One of the following, needed to program the arduino. (One use only! Borrow from a friend?)
- FTDI Basic 3.3V - https://www.sparkfun.com/products/9873
- FTDI Cable 3.3V - http://www.adafruit.com/product/70
You can also choose to leave the LiPo charger out of the enclosure for small space savings.
This project uses the FreeIMU library to read the motion sensors and calculate sensor-fused orientation.
We are using the straight FreeIMU_quaternion example from FreeIMU v0.4. This reads the attached sensors, calculates the AHRS quaternion, and transmits via serial print. I've attached a copy of the FreeIMU_quaternion code here with the baud rate set to 38400, the max rate for the Arduino Pro Mini.
You should only need to upload this to your arduino once.
This is the demo app in Processing included with FreeIMU v0.4.
- With the headtraker powered on, pair your computer with the bluefruit device.
- Change the serial port screen to match your bluefruit device, for example /dev/tty.AdafruitEZ-Link3e2f-SPP on my system.
- Run the example. Press 'h' to store the home position.
Simple python program to read from the IMU headtracker and record to file. Additionally opens second serial device and feeds values to pan-tilt camera in matching orientation.
coming soon... :)
Solidworks Files - File:btht_solidworks.zip
STL Files - File:btht_enclosure_stl.zip
other intertial Measurement Units
Head-tracking with the MPU6050
- using Wire interface - http://www.varesano.net/blog/fabio/initial-tests-freeimu-v04-and-mpu6050
- using i2cdevlib - https://github.com/jrowberg/i2cdevlib/tree/master/Arduino/MPU6050/Examples/MPU6050_DMP6
- IMU - https://dev.qu.tu-berlin.de/projects/sf-razor-9dof-ahrs/wiki/Tutorial
- https://www.sparkfun.com/products/11028 or even cheaper from Amazon
Example with Arduino Nano