Skip to content
Cross-platform libraries for the EM7180 Ultimate Sensor Fusion Solution
C++ Python Makefile C
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
extras EM7180 => USFS Oct 19, 2019
src Fixed typo in yaw calculation Jan 10, 2020
.gitignore First public commit; added license Mar 26, 2017 EM7180 => USFS Jan 10, 2020
keywords.txt EM7180 => USFS Oct 19, 2019 EM7180 => USFS Oct 19, 2019

This repository contains Arduino, Python (MicroPython, WiringPi), and Linux i2cdev libraries and examples for working with the incredible EM7180 Ultimate Sensor Fusion Solution boards (both the MPU9250 version and the LSM6DSM + LIS2MD version) from Pesky Products.

To use this library with C++ you will also need my cross-platform support library.

The library has been tested on the following hardware:

  • Ladybug and Butterfly STM32L4 boards from Tlera Corp

  • Teensy 3.2, 3.6, 4.0

  • Raspberry Pi 3 (C++, Python)

  • NVIDIA Jetson TX1 (C++)

  • PYBV1.0 : thanks to JonHylands for the MicroPython support

The library provides two classes for working with the EM7180 SENtral sensor hub on this board:

  • A USFS class providing a convenient API for the full functionality of the EM7180 unit

  • A USFS_Master class that runs the EM7180 in master mode, for simple access to the sensor-fusion features

The examples directory contains sketches showing how to use these two classes. As usual, just clone the repo into your Arduino libraries folder to get started. The class library and examples were adapted from Kris Winer's repository. I strongly recommend reading Kris's wiki for a comprehensive overview of the EM7180 and other sensor-fusion solutions, and for instructions on how to calibrate the EM7180 before you start using it. (You can use my version of the calibration sketch.)

Python on Raspberry Pi

To try the library out in Python, cd to the extras/python folder and do python3 To install the library for access from other directories, do sudo python3 install.

C++ on Raspberry Pi, NVIDIA Jetston

RaspberryPi users should download and install WiringPi, then cd to extras/wiringpi, and run make to build the examples. You may have to run the example as root: sudo ./MasterTest.

Users of NVIDIA Jetson and other Linux-based boards should install I2C support by running the command:

  sudo apt-get install libi2c-dev i2c-tools

You can then can cd to extras/i2cdev, and run make. You may have to run the example as root: sudo ./MasterTest.

An asynchronous version of this library is also available for Teensy 3.5.

You can’t perform that action at this time.