zettelkasten

Sense Of Direction

Last updated: 1/9/2025

This is a sensory addition device that will tell the user which direction is north.

Drawing 2023 07 10 12.08.32
Drawing 2023 07 10 12.08.32

It is using a Seeeduino XIAO, a 9-Axis IMU, and vibration motors to tell the user that north is where the motors are vibrating. For this prototype, it will have 4 vibration motors and I will see if it needs to be increased to 8 for better resolution (i think 4 will be enough).

What the device has to do:

  • Account for [[magnetic-distortions|magnetic distortions]] through calibrations.
  • Turn on the motors based on the azimuth angle
  • Update what it thinks the current azimuth angle is based on where north is (this is to account for gyro [[Drift|drift]]).
  • Indicate to the user some status stuff:
    • When the battery is low?
    • When it thinks its measurement is inaccurate?
  • Work even if the device is titled on its side (i.e. do some complex vector transformations)

Pseudo code

  1. Device turns on
  2. Move the device around so that it figures out where it is

Problems

The device does not know where it is

Drawing 2023 07 10 12.42.27
Drawing 2023 07 10 12.42.27

Here is a graph showing the strength of the magnetic field where east is at theta=0. A problem is that our device does not know where it starts out at. A way to solve this would be to have the device level and then start rotating it, once it reaches a maximum value then it will assume that that direction is north. This is a sub-optimal solution. I don't want to have the user have to take off the device to calibrate it. Ideally, after the user spins around one time the compass should be calibrated. Because of gravity, it does know its phi value, so that can give us some information but that is not enough.

Earths magnetic field is really weak!

Even moving a wire that has current (i.e. the USB-C wire that is powering the device) makes the field change quite a bit (the equivalent of 10's of degrees change of the earths magnetic field).

Todo

Physical stuff

  • Figure out how to wire the vibration motors so that they actually get powered
  • Anklet design
    • Mark out where the motors have to go
    • Figure out how wiring is going to be
    • Figure out how the MC is going to be integrated with the bracelet in a weather proof box
    • Figure out where battery is going to go
    • Figure out how everything is going to be wired
  • Anklet building
    • Make CAD of 3d printed things
  • [ ]

Software/Theoretical stuff

  • Make it so that the gyroscope greatly reduces its drift when moving quickly (solutions: trapazoidal integration, higher precision, faster update times)
  • #todo ⏫ Make it so that, to counter this drift, our north prediction is constantly being updated when the user rotates
  • Make an indication that anklet is not calibrated yet
  • Make indication that anklet has an error
  • Think about adding an on/off switch??

See Also