Head Tracker

This devices tracks your head in video games, wirelessly and in 9 DOF. And it could be used in standalone projects.

Similar projects worth following
This bluetooth/rechargeable device tracks user head postion in 9 DOF in video games (facetracknoir HATIRE open source protocol, FreeTrack 2.0 /TrackIR compatible). It is wireless, using bluetooth and a battery.

It could also send its positionning data using a joystick emulation (for games that does not support FreeTrack protocol) using the micro-USB port on the Arduino, and raw serial data (for robotics) on the specially exposed pins.

The 3D printed enclosure uses 4 mounts, for easy use with rubber bands. This is very versatile, and could adapt on every helmet.

This is a device I could not live without in Elite: Dangerous, War Thunder, Asseto Corsa or every other sim game. This is a must have in simulations.
Update rate (device to display) is 61Hz, enough for very smooth tracking.

Note : youtube demo videos 1,2 and 3 are outdated, just keeping them for history.
Last youtube video is my allday setup (3 years without modification).

I enjoy playing simulation games. Head tracking is very important in these games, to look around, follow an enemy, or see the car on your side.

However I was not happy with the existing solutions : tracking using only a webcam barely works even with a good camera, and only with light on, and I felt stupid wearing a 3 leds cap device on my head. These solutions also could not track on 360 degrees.

So I designed a tracker based on an Arduino, and a 9 DOF IMU. It works wirelessly using bluetooth, and is fully configurable in the user interface (sensivity, deadzones, etc). It is rechargeable, and could last several hours (>12) on a single charge. Enough for a full gaming night !

It works using FaceTrackNoIR software (Freetrack protocol, TrackIR compatible), so it is well recognized in most games.

It could also send its positionning data using a joystick emulation (for games that does not support FreeTrack protocol) using the micro-USB port on the Arduino, and raw serial data (for robotics) on the specially exposed pins. Actually, I only added these 2 modes because I could, but I never use them.

One push-button sets the center point, and another push-button switches between modes (FaceTrackNOIR, joystick/mouse, raw serial). One push on both buttons starts the calibration mode. Now the device is well calibrated, and I'm using a VoiceAttack voice command for centering, So I don't use these buttons anymore. So in a later revision using this IMU, I may keep only one button for initial calibration. But I'm also planning to build another one using another IMU that does not need inital calibration (Intellisense MPU-9250) and will be way smaller.

The RGB led blinks briefly once every seconds to show the working mode : Blue = Freetrack, Yellow = joystick, Green = raw serial, Blue-Red = calibration.

The 3D printed enclosure uses 4 mounts, for easy use with rubber bands. This is very versatile, and could adapt on every headphones I own, even on my plastic Google Cardboard helmet.

I'm using it extensively since almost 3 years, and could not live without it.

Note : The youtube demo videos 1 and 2 have a high deadzone setting. The demo 3 shows no deadzone, and it is way more immersive. This is easily configurable via the FaceTrackNoIR UI.


Device's case and board Sketchup file

SSEYO Koan Play File - 1.26 MB - 05/26/2017 at 10:37



Top case part 3D model

Standard Tesselated Geometry - 187.35 kB - 05/26/2017 at 10:24



Bottom case part 3D model

Standard Tesselated Geometry - 130.76 kB - 05/26/2017 at 10:24



Board 3D model

Standard Tesselated Geometry - 119.90 kB - 05/26/2017 at 10:24


micro_headtracker_v5 - PCB_Top.pdf

Perfboard PCB - Top layer

Adobe Portable Document Format - 14.06 kB - 05/25/2017 at 14:39


View all 6 files

  • 1 × Arduino pro micro 5V
  • 1 × GY-80 Accelerometer, gyroscope and magnetometer
  • 1 × HC-05 bluetooth module Bluetooth module
  • 1 × 2000mAh li-po battery
  • 1 × TP4056 battery charger / protection

View all 8 components

  • Better hardware

    Arcadia Labs08/21/2018 at 01:25 0 comments

    Actual version is running very well, but it is hard to replicate, because of the calibration : 

    this part of the build is not documented, because I don't really know how to replicate the calibration process (the visual tool I used back in the days is overly innacurate. It worked for me once but I could not release it)...

    So I decided to build a new version of the device, with no need for calibration.

    Still bluetooth, still battery-powered, but without the usb-related fonctions (joystick, serial output).

    The new device will only have a 9-dof IMU, a microcontroller, a bluetooth transponder, a status LED and a 1000mah lipo and charging circuit (providing +20h running time). Using a custom, real PCB, and a 3d printed enclosure built to fit every headphones on the market (using rubber bands of course :D ).

    Parts are currently on their way, please wait 3-4 weeks for them to get home, and me to build a beta-version (alpha is working already)

  • Running very well

    Arcadia Labs07/21/2018 at 01:38 0 comments


    I did not update this project until now, because... well... it works well and I almost forgot about it while gaming, it is so obvious for me now. I could not play some games without it, including Elite: Dangerous, War Thunder and Asseto Corsa... This device is a must for sim games ! Looking around has no price !!!

    But I don't forget my fellow gamers, so I give you a new video, and my source code.

  • Case completed

    Arcadia Labs05/26/2017 at 10:32 0 comments

    The device's case 3D model is now complete and printed :

    I did not add buttons yet (only holes) because I don't use them actually : I recenter the device using a VoiceAttack voice command, and the case needs to be open to use the 2 other modes. I may add them including micro-USB and serial pins door access later if I ever need them.

    STL 3D files have been included in the files section.

    Edit : I also added the Sketchup file if someone ever need it.

  • Hand crafting the PCB

    Arcadia Labs05/25/2017 at 14:49 0 comments

    I added the 2 PDF I used to build the circuit on a 24x18 perfboard. There is one file for the top layer, and another file for the bottom layer.

    Usually, I print the 2 files at 1:1 scale, and simply follow the drawings. This time, I glued the top layer drawing on the perfboard prior to routing, so it was very easy and gives a nicer look.

    Here is the view of the PCB in DesignSpark. It is a 2 sides PCB with large traces, so it should be very easy to manufacture.

View all 4 project logs

Enjoy this project?



Everton Leite wrote 01/02/2021 at 00:36 point

Hi. Did you posted the arduino code? I couldn't find it...

  Are you sure? yes | no

Pattie Kemmer wrote 05/05/2020 at 11:49 point

I have developed a great interest in the Head Tracker because of my love for the simulation games. I prefer to read review for help in  essays online. Usage of this head tracker would be a very good idea for me for the standalone projects.

  Are you sure? yes | no

dabinn wrote 01/09/2019 at 10:22 point

Thank you for the sharing.
It seems the IMU is 9 DOF but output is 3 DOF (3 axes rotation and no position tracking) ?

  Are you sure? yes | no

mknechtel wrote 09/21/2018 at 12:56 point

I haven't been able to find a GY-80 for sale anywhere. Could you drop me a link for one or are you using a newer version for your updated build? I currently use trackIR for gaming but a lot of games do not support it so I am looking for an alternative. I have attempted to build my own with a gyroscope and a Arduino but couldn't get the code to work properly.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates