Creating a Compass for Cell Phones

November 27, 2008

Creating a Compass for Cell Phones
~James Dunn

Inspired by eFontana


[Google Android is an open architecture software that allows home grown software developers to create applications for cell phones. Anyone (you, me, anyone) can create applications to do whatever your imagination allows.

A software developer asked about having a digital compass chip included in cell phones for developers to use in their applications. The following was my input to provide them with a workable solution that doesn’t require cooperation with manufacturers to achieve his goals.]


A MEMS chip can be a collection of sensors (temperature, accelerometer (x,y,z), atmospheric pressure, Hall effect sensor (compass), …) all built into the same chip. In mass production the chip could be relatively inexpensive.….

However, an Android shortcut would be to use the GPS sensor and your relative direction of travel to produce a compass bearing over 100 feet of uniform travel. For each model of cell phone the antenna sensitivity changes as you rotate the cell phone about a point. This could potentially be tied in with relative position movement to estimate a compass bearing about a point.

But as I said, the lookup table would be different for each model of cell phone (i.e. the user would have to complete a calibration mode and then spin themselves 360 degrees around where they are standing; this would need to be done for each location to load the data sensativity into a lookup table).

This type of engineering where you take two sensors with low resolution to combine their results to provide greater resolution is called “Sensor Fusion”.

Basically a cell phone antenna signal does NOT have the same signal profile when you rotate left versus rotate right. This can be capitalized upon to determine the relative bearing of which the compass is facing. Coupled with the cell phone GPS the relative bearing can be referenced to the true bearing. A lookup table can provide a correction factor and thereby produce Magnetic Bearing; vis vi Compass.


By using the variable signal profile, it is useful for when a dedicated compass sensor is not available in the cell phone. The variability due to a persons body, phone orientation, obstructions, transponder location relative to cell phone, … all have to be taken into consideration to make a useful product.

One potentially useful scenario might be:

Instructions for using compass.

“Walk in a straight line in the direction the top of the cell phone is pointing; choose a target to walk toward and hold the cell phone flat like you would any mechanical compass. The cell phone will beep when you arrive at the calibration position.”

“After hearing the beep, rotate about your position smoothly and slowly (4 seconds, 1 second and 1 beep for each 90 degrees), until you return to face your starting position. The display will automatically display the compass bearing around this position.”

“If you move more than 15 feet from this position, the compass bearing will be removed from the display until Calibration is done for a new position. This prevents the user from using old data.”

This would be done every time a person wanted a compass bearing.

At this one position, they could rotate back and forth and get compass bearing information. When the GPS sensed any new position, the Compass would replace the compass readout with “Perform Calibration”.

They would have to repeat calibration every time they wanted a compass bearing unless higher level algorithms are running in the background while the user is walking. Updating lookup table(s) with information to derive similar data from moment to moment.

Again, this scenario is only useful if a compass sensor is not available in the cell phone. Which is almost all cell phones made today.

But I agree, if a compound MEMS chip (with Mag sensor) were incorporated in cell phones then this sensor fusion option would be unnecessary.


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: