How to add a GPS receiver to the 9 Degrees of Freedom - Razor IMU - AHRS?

Hi all,


I wonder if anyone managed to add a GPS receiver to the

Sparkfun 9 Degrees of Freedom - Razor IMU - AHRS?


According to the comments at

this should be possible.


If so, how?

I like to have the GPS data available with the rest of the IMU data.


Also I couldn't find any contact data at

What is the appropriate way to contact the developers?


I send a PM to Jordi Muñoz. No answer for a few days.

Maybe he is on holiday?




janmartin AT diy-streetview DOT org

Views: 3626

Reply to This

Replies to This Discussion

Sure you can connect your GPS to it. Razor board have 1 uart port so to connect GPS you need to piggyback on it. Just connect your GND/TX from GPS to Razors GND and RX pins. Make sure that all serials are on same speed and voila, gps data starts to flow to it. 


Then it's totally another story on what to do with this GPS data, you can echo it to razors TX and read it from somewhere else or what ever. That's up to you and your needs.


Sending PMs to core developers can be missed sometimes, we are trying to follow all queries as often as possible.

The GPS model you are planning to use may have an impact on the most suitable connection in regards to direct compatibility with the existing parsers available in the libraries.  In order to use gps units that require initialization, such as increasing baud rate or switching to a binary protocol, both TX and RX from and to the 9DOF to the GPS would be required leaving no uart connections left to transmit 9DOF+GPS data.  I also have a couple of the 9DOFs laying around (non ITG3200 type) and have given some thought to this previously.  I have an extra older GS405 (SIRF III chipset) GPS I was thinking of connecting to one of them.


The solution seems to be to add an extra uart to the 9DOF in manner that uses available pins and has

arduino support.  The following is such a solution:


Breakout Board for SC16IS750 I2C/SPI-to-UART IC

sku: BOB-09981

4 SPI connections will connect between this board and the 9DOF.

The SPI to UART output pins will connect to the GPS.

The 9DOFs EM406 is left free for sketch development and to provide the required Sensor+GPS data.


The arduino library to control this chip is here:


Sparkfun forum discussing this this library is here:

If you're using a GPS that doesn't require full two way communication...disregard all of the !!!!




sounds easy to do.

Should it really be that simple to achieve?


My initial idea was to edit the AHRS code to read the data from the GPS, then add it to the IMU data, and then output it as it's done with the IMU data. Way more complicated than your approach.


I like your idea.

How would one read both the GS and IMU data from the TX, using another Arduino? The very same moment?






I have to many boards in my project already, and need to avoid adding more.

What do you think of Jani's approach?

Do you think it could work?




Jani's approach is fine . . . as long as you are using a GPS that doesn't require initialization.


The MediaTek MT3229:


comes pre-configured, meaning, no communication from the 9DOF TX to the GPS RX is required.


GPS library/test program will give you an idea of the code you will need to integrate into the 9DOF code:


This code is essentially what you will need to port/translate to the 9DOF board:


Use this code to start with so that GPIO assignments, A/Ds etc start off on the right foot:


Note that their are schematic differences between ArduIMU+ V2 (Flat) and the 9DOF board,

keep the schematics of the two handy and reference them against the software as you go along.

Adding the GPS parser/output code to this library example is possible as well:


This file provides the needed library for all of the sensors, especially the ITG3200 on the 9DOF,


The code example in the library supports the sparkfun 9DOF by following this information,

I'm attempting to use the Sparkfun 9DOF AHRS in a real aircraft using the sf9domahrs code running on the IMU.  With the AHRS taped to the top of the instrument panel, I am getting inaccurate pitch and roll data however everything works fine on the ground.  I suspect its due to soft/hard iron interference with the magnetometer.  Looking at the code the drift corrections are partially based upon the magnetomer heading stored in the MAG_Heading variable.  What I think may work is to connect a GPS to the IMU and substitute the gps heading in MAG_Heading in a noisy enviroment like this.  Can you guys tell me the DCM will work correctly with gps heading substituted this way, or am I missing anything?




Reply to Discussion



Season Two of the Trust Time Trial (T3) Contest 
A list of all T3 contests is here. The current round, the Vertical Horizontal one, is here

© 2020   Created by Chris Anderson.   Powered by

Badges  |  Report an Issue  |  Terms of Service