updated April 2022 - JDN

Arduino cansat and IMUs

There are many IMU boards to be used with Arduinos, ESP32, Teensy etc

In general they have

  1. An IMU

    1. measuring 3 axis acceleration and gyro (rotation)

  2. A high precision pressure sensor (typical bosch bmp085, bmp180 or bmp285)

  3. A 3 axis magnetometer

  • In principle very elegant and very usefull.

  • In real life beware of clones which have more or less same functionallity

  • Or even fake boards…

GY boards

There exist a number of GY boards - lower number oldest

  • GY-87, GY88, GY88A, GY89, GY91

All are based on IMUs from Invensense

Please notice the different sensors for same functionallity.

This means you need to download the right drivers

GY-80 GY-87 GY-88 GY-88A GY-91 HW-290
digital compass hmc5883L hmc5883L hmc5883L hmc5983 mpu9250 qmc5883L
pressure and temperature bmp085 1 bmp085/180 bmp085/180 bmp180 bmp280
3 axis accelerometer adxl345 mpu6050 mpu6050 mpu6050 mpu9250
3 axis digital gyro l3g4200d mpu6050 mpu6050 mpu6050 mpu9250
schematics schematics schematicsschematics som gy88 dog HMC5983 schematics

Data sheets


All drivers is a zip file you instal in your Arduino IDE by menu sketch -> include library -> add ZIP library

BEFORE starting install drivers you must install I2Cdev driver (link below)

Notice: AFAIR

on the boards with MPU6050 the the hmc5883L accelerometer is located on a secundary I2C bus behind the MPU6050

See snippets code below

See full code here

#include <Wire.h>
#include <MPU6050.h>
#include <hmc5883l.h>
#include <bmp085.h>
#include "I2Cdev.h"

MPU6050 mpu;
hmc5883l compass;

int error;

void setup() {
  // 2000 degrees pr second max and +/- 16 g max
  mpu.begin(MPU6050_SCALE_2000DPS, MPU6050_RANGE_16G);

  mpu.setI2CBypassEnabled(true); // set bypass mode for gateway to hmc5883L

  // now we can reach hmc5883L
  compass = hmc5883l(); // Construct a new HMC5883 compass.

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/280 which are a plugin compatible sucessors to bmp085.

Extra info

Driver/library SW for Arduino

You install the ZIP file libraries as usual:

  1. download library

  2. sketch->Include library/ add .ZIP file

  3. install

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.


take a look at a very small soldering tutorial