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:
An EM7180 class providing a convenient API for the full functionality of the EM7180 unit
An EM7180_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 mastertest.py. To install the library for access from other directories, do sudo python3 setup.py 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.