ysoldak / HeadTracker

Zero configuration, auto-calibrating wireless DIY Head Tracker, for Nano 33 BLE and XIAO BLE Sense boards
The Unlicense
62 stars 8 forks source link

Zero configuration auto-calibrating DIY head tracker

Head Tracker runs on Seeeduino XIAO BLE Sense and Arduino Nano 33 BLE boards and connects to OpenTX and ETHOS radios via either wired (PPM) or wireless (Bluetooth) trainer link.

Quick Setup

Video Tutorials

Fully assembed

Don't feel DIY? Order the fully assembled head tracker with display and button from our shop at Etsy.


Camera Gimbal

Check our DIY 3D printed Micro Camera Gimbal
Join our dedicated Facebook group

Also available now to order ready to use on Etsy

Tested radios

Wiring reference

Supported boards

Listed boards are perfect for a head tracker project, since they have both IMU for orientation and Bluetooth for connectivity.

XIAO BLE Sense is a tiny board with UF2 bootloader and SoftDevice (bluetooth driver) pre-flashed that makes it very easy to use. The board is relatively new and may be harder to find. Please pay attention and order "Sense" variant, it has IMU.
Recommended for users w/o experience in embedded programming.

Nano 33 BLE is a larger board from Arduino that shall be easier to source. There are two variants of this board: "Nano 33 BLE" and "Nano 33 BLE Sense" -- both will work for this project. This board has no UF2 bootloader pre-flashed and a debug probe is required to flash UF2 bootloader to it.
Recommended for advanced users who have a debug probe (JLink or CMSIS-DAP compatible) and can use it.

For a long time, Nano 33 BLE was the only board supported. It has an additional sensor, magnetometer, that head trackers usually use to eliminate pan drift. In practice, however, magnetometer adds more problems than solves. Magnetometer is very sensitive to environment and tricky to calibrate properly. In this project we do not use magnetometer and have a good zero-configuration automatic continuous gyro calibration instead to solve the drift problem. Already after first 5 seconds the calibration is good enough to stop the drift.

As of now, Nano 33 BLE board does not provide any benefit over XIAO BLE Sense. Instead, the later board is actually easier to use, thanks to pre-flashed UF2 bootloader and smaller size. In the future, just for fun, magnetometer support can be added but only if we can make calibration automatic and transparent for the user.

You have another nRF52840-based board with IMU and want to use it? File a feature request. Better yet, make a PR directly!

Flash binary

XIAO BLE Sense (Simple)

Connect the board to your computer, double-tap on RST button and copy ht_xiao-ble_xxx.uf2 file to XIAO-SENSE usb drive.

Nano 33 BLE (Advanced)

First, you shall flash UF2 bootloader to the board. You only need to do this once for each new board. Then connect the board to your computer, double-tap on button and copy ht_nano-33-ble_xxx.uf2 file to NANO33BOOT usb drive.

Use head tracker

Attach the head tracker to your FPV goggles.
Power the head tracker via USB, 1 cell lipo battery or 5v source.

Hint: I personally use analog adapter bay on my DJI V1 goggles to source 5v.

Bare

The head tracker is usable "bare", no extra accessories needed, not even a button.
To reset the orientation without a button, simply double-tap the head tracker.

Hint: When the head tracker is mounted on your goggles directly, you can just double-tap your googles in any place to reset the orientation.

LEDs

On start, board shall blink continuously blue, red and green/orange leds.

Buttons

The head tracker records initial orientation on power up, place your goggles accordingly or reset orientation later by double-tapping the head tracker or by using a reset orientation button that can be wired to D2 and GND pins.
Keep reset orientation button pressed on power up to discard calibration parameters stored in flash memory.

Display

If you have a LED 128x32 display added you your board (via I2C), the board's bluetooth address is displayed on it. Blinking ":" symbols indicate bluetooth connection status, like blue led. Upon start, while gyroscope is calibrating, you shall see head tracker version briefly on the screen. The version is then replaced by 3 horisonal bars, one for each axis: pan, tilt and roll.

Connect to radio

HeadTracker can work either in wireless (Bluetooth) or wired (PPM) mode.
Bluetooth mode is active by default.

Bluetooth

Wire

Related links