Arduino cansat and IMUs

Two very common IMU boards are GY80 and GY87(and GY-88 which is component identical to GY-87).

They are both 10 DOF (degree of freedom) boards and all sensor handling is by i2c bus.

GY-80 IMU board

GY-80 GY-80 GY-80
function name 1 or 3 axis i2c address
digital compass hmc5883l 3 axis 0x1e
pressure and temperature bmp085 1 axis 0x77
digital accelerometer adxl345 3 axis 0x53
digital gyro l3g4200d 3 axis 0x69

GY-87/88 IMU board

GY-87/88 GY-87/88 GY-87/88
function name 1 or 3 axis i2c addr
digital compass hmc5883l 3 axis 0x1e
pressure and temperature bmp085 1 axis 0x77
gyro and accelerometer MPU6050 3 axis 0x68(0x69 if AD0 pin is high)

Arduino drivercode

Unzip the zip files in youe … arduinosketchbooklibraries directory See in ardunio Preferences where your sketcbook directory is located. You can find libraries directory in the sketchbook directory.

NB NB NB : in some of the democode they initalise the serial port to 9600 and in some to 115200
Check it so you can adjust your arduino terminal to same speed.


Some might use bmp180 which is compatible sucessor to bmp085.

NB NB NB hmc5883l

On the GY-87 board the hmc5883l is located behind the MPU6050. So you have to activate a bypass mode in the MPU6050:

Plug in replacement

GY-80 and GY-87 can both be used on the AAU cansat shield version 4.

The GY-80 fills all holes - the GY-87 shall be located most far away from the openlog as shown on image below.


AAU cansat shield v 4 with GY-80 / GY-87 attached.


#include <Wire.h>
#include <MPU6050.h>
#include <hmc5883l.h>

MPU6050 mpu;  // the mpu6050

hmc5883l compass; // Store our compass as a variable.

void setup()
  mpu.begin();  // initalise MPU6050
  mpu.setI2CBypassEnabled(true); // set bypass mode
  // now we can reach hmc5883l
  compass = hmc5883l(); // Construct a new HMC5883 compass.

Image of shield vrs 4


Our cansat shield with a GY80, an apc220 radio og openlog logger attached.


take a look at a very small soldering tutorial

Other sensor code