top of page

Overview

The purpose of the North Star device is to help me improve my sense of direction. I rely on this sense heavily when traveling, whether its to hiking trails or new cities. The North Star device makes me more aware of the cardinal directions by notifying me via a small buzz each time I am facing north. 

 

I developed the idea for this device after learning about the Guugu Yimithirr language. This aboriginal Australian language is known for its use of cardinal directions instead of relative directions (e.g. 'Please pass the salad that is northeast of you', or 'I left the Arduino on the southwestern corner of my desk'). In a variety of ways, linguistics research has demonstrated that the language a person uses shapes his perceptions. People who speak languages that use cardinal directions develop an intuitive sense of direction. I wished to develop that intuition as well, but because learning Guugu Yimithirr and finding someone else to converse with regularly was unrealistic, I thought of another way to make myself more aware of my geographical orientation and built this North Star device. 

 

I developed two separate designs. Both designs require a compass to determine my geographical orientation, and a vibration motor to signal when I face north. 

North Star

This design is a stand-alone device for which I have developed both the hardware and software. I had initially imagined that I would simply clip a small device containing just a compass board and a vibration motor to my waistband. I then added an Arduino board for data processing and a relay to trigger the vibration motor, and the device became much too bulky for my original vision. I developed this prototype just for fun, but I have some miniturizing work to do before I'll be able to wear it comfortably.

 

The components include a triple axis magnetometer, an Arduino with a USB cable, a vibration motor, a BC547 transistor, a 5K Ohm resistor, and jumper wire. 

The triple axis magnetometer is integrated onto a breakout board with filtering capacitors, which help to clean up erroneous data. To wire the board, I connected pins for ground, input voltage, clock (SCL), and data (SDA). 

I leveraged an existing program that is available with the magnetometer board to continuously read data for x, y, and z axis. Programming in Arduino, which is based on C/C++, I added code that determines if the compass heading is within 5 degrees of true north (between 355 degrees and 5 degrees, inclusive), and then triggers an alert that lasts 0.5 seconds. I also introduce a 60 second delay period between alerts, so that if I remain facing north, I would only receive a reminder once per minute. My objective is to optimize the duration and the timing of the alerts to be effective without becoming an annoyance.

 

To trigger the vibration motor I am using a BC547 transistor as a switch. When the alert is triggered, the output of channel D9 on the Arduino board goes high. This provides current to the base of the transistor, which allows current to flow from the collector to the emitter. The vibration motor is a load on this circuit.

Design #2: North Star Smartphone App 

Even as a packaged device, my hardware design for the North Star is slightly larger than a smartphone. By designing a custom PCB I could reduce its size by a factor of 4 or more, depending on the level of effort. However, a smartphone already has all of the necessary components, so I decided to develop an app that accepts compass data as an input and triggers a vibration when the user is facing north.

 

I am in the process of converting my Arduino program to Swift, an Objective-C based language created for iOS. I am able to request data from the iPhone's magnetometer by creating a CLLocationManager object, which is a class used to deliver all location and heading related information. As in the above design, the output of this function shall trigger an alert when my geographic orientation is within 5 degrees of north. 

 

 

Wearing this unpackaged version North Star device is cumbersome. I am currently testing this 1.0 version to identify any issues with this circuit design. Once I have nailed down the final design, I will solder the breadboard components into place and package the entire device. 

 

I intend to wear the device on my hip, clipped to the waistband, for two reasons: 1) this provides the most accurate estimation of my geographical orientation, and 2) comfort. With a vibration amplitude of 0.8 Gs, this vibration motor is easily detectable through clothing.  However, to make sure that the vibration motor remains pressed against either the clothing or the skin, I will place the it on one side of the clip, such that it rests against the inside of the waistband of a pair of pants. The Arduino and other components shall rest against the outside of the waistband. 

With the vibration motor and the transistor switch in place, the hardware setup is almost complete. The final step is to make it portable, so I wired a barrel jack to a 9V battery.

Design #1: Standalone North Star
bottom of page