Check out the new User's Guide to the Ultimate Sensor Fusion Solution!

Just added CAD models of the board courtesy of Dylan Reynolds (dylan.r.reynolds@gmail.com). STEP files available on request.

What is it?

This is the EM7180 SENtral sensor hub combined with an MPU9250 9 DoF motion sensor with embedded accelerometer, gyroscope, and magnetometer on a 0.5 " x 0.7" breakout board that provides the most accurate and stable "hardware" sensor fusion solution available in this small size and at this low price. I have added a Bosch BMP280 pressure/temperature sensor.

There is a 64 kbyte M24512 I2C EEPROM on-board to store the configuration file and warm start parameters. The EEPROM comes preloaded with the correct configuration file for the sensors on the board. All you need to do is to connect 3V3/GND and SDA/SCL to start getting accurate yaw, pitch and roll data streaming to your serial monitor or display!

The SENtral motion sensor co-processor sports a 10 MHz core with a floating point engine and performs like an ARM Cortex M0 processor on steroids. The SENtral can update the quaternions at the rate of the gyro at up to 400 Hz. Yet the SENtral uses less than 1% of the power of an ARM Cortex M0 doing the same sensor management and fusion tasks with better accuracy, all in a tiny 1.6 mm x 1.6 mm package. The SENtral needs a ~24 kbyte configuration file that tells it which sensors it is to manage and the orientation of their axes, and this is stored on a 64 kbyte ST M24512 I2C EEPROM on the board, leaving ~32 kbytes of space to the user for data logging and warm start parameter storage. The user may write on the 256-byte pages above and including 0x81, so that pages 0x81 - 0xFF are available for user data.

The SENtral manages the sensors as slaves, initializing them, managing their interrupts, and reading their data as input to the SENtral sensor fusion engine. There are 4K7 I2C pullups on the board and either quaternions or Euler angles may be obtained by direct I2C reads of the corresponding SENtral registers; raw and scaled sensor data, gravity, and linear acceleration (gravity removed) are also available for reading from the SENtral by the host. The SENtral also has a pass-through mode allowing the host microcontroller to communicate directly with the sensors and EEPROM.

Because the SENtral also manages the pressure sensor, we have added drift-corrected altitude estimation to the SENtral fusion suite. Like the drift-correction for gyros, which uses the accel and mag data, the drift correction for the altitude uses the accelerometer to test whether changes in detected pressure are really due to changes in height or due to wind, closing doors, or other anomalous effects. This has enormous benefits for any type of flying vehicle, but also for applications like dead reckoning and robotics. The inherent 13 cm height discrimination possible with either of these pressure sensors means even robotic arm motion and (human)-hand-held devices can benefit from this technology.

Management of the sensors can be configured by the user via the host microcontroller. Sensor sample rates, full-scale ranges, bandwidths and quaternion rates are all configurable via I2C writes from the host program in either the pass-through or SENtral master (hardware fusion) modes. The quaternions are updated at a rate proportional to the gyro rate (via a 2^n divisor, n = 0, 1, ...) and is guaranteed up to 400 Hz but can work at even higher rates if necessary.

I have done away with the confusing solder jumpers and multiple power ports I usually use for Teensy add-ons and have designed a simple to use, breadboard-friendly, complete sensor fusion solution that requires just 3V3 power, ground, and I2C to start getting quaternions or 2-degree accurate heading output. It is such a low power device, however, it can still be mounted directly onto a Teensy and function using digitalWrite(HIGH/LOW) to provide 3V3 power and GND!

The SENtral is as easy to use as the BNO055, but requires less power, and offers benefits that the BNO055 simply can not: the SENtral allows user configuration of data and fusion rates, makes use of pressure sensor data in the sensor fusion, allows warm starts where the previous dynamic calibration is used as a starting point at power on, etc. All this at the same low price! Plus, the SENtral+MPU9250 is a more accurate solution by far.

Why did you make it?

Because I want the best!

I have been testing open-source sensor fusion algorithms, comparing motion sensor performance, evaluating hardware sensor fusion solutions, and exploring all things sensor fusion for two years now, and I believe this combination provides the lowest jitter, most stable and accurate, and easiest to use solution available at this size and price.

First of all, the MPU9250, composed of an MPU6500 accel/gyro with an embedded AK8963C magnetometer has proven to be the most consistent 9 DoF motion sensor with the least jitter and most accuracy when compared to, for example, the LSM9DS0 and BMX055. Secondly, the EM7180 allows access to sophisticated Kalman filtering, dynamic sensor calibration, magnetic anomaly detection, and is able to be paired with almost any motion sensor. Thus I was able to test the underlying sensor fusion solutions with a variety of inputs and have determined that this is the best combination of motion sensor and sensor fusion engine available this side of JPL!

What makes it special?

This is a small, well-designed four-layer board where I have taken care to reduce noise with proper capacitor filtering and digital trace routing, and it shows. Take a look at the plot above in the image list at the top of the page. I am plotting yaw, pitch, and roll in absolute degrees (North == 0) as a function of time in seconds. The first eighty seconds I am moving the breadboard containing the SENtral device and a Teensy 3.1 host microcontroller in a figure eight pattern to calibrate the magnetometer with the SENtral dynamic calibration routine. After this calibration and with the breadboard flat on a table, the pitch and roll are zero to within 1 degree at all times except near the end. The heading for both the Madgwick MARG open-source solution and the hardware sensor fusion solution of the SENtral start at about 45 degrees and change by about 90 degrees when I rotate the breadboard by ninety degrees on the table top after about 75 seconds. I continue to do this until the breadboard is back in its original orientation. You can see that the SENtral heading solution is incredibly stable after each rotation, while there is a bit more jitter for the Madgwick solution. The end result of this experiment is that the average heading change recorded by the SENtral was 90.4 degrees with a standard deviation of just 1.8 degrees (Try this with your cellphone!). Notice also, at the end, I changed the pitch and roll in sequence by about 45 degrees and the yaw was stable within my ability to manipulate the breadboard by hand. This is superb performance unmatched by any other sensor fusion solution of this size and price I am aware of. Yes, it is only a short test, but it shows what you should expect from a nearly ideal sensor fusion solution.

The warm start capability allows you to calibrate the EM7180 once, store the results onto the on-board EEPROM, and subsequently start with the sensors fully calibrated (for similar environmental conditions) from the get go. The last plot in the sequence above shows the absolute heading (North == 0) output from the EM7180 as a function of time from power on. Notice there is no 80 second calibration step in the plot. The sensor bias calibration is taken from that stored in the EEPROM and the heading starts with proper calibration 17 seconds after the serial port is opened during which time the sensors are initialized and configured. This time can be shortened significantly by removing delays to allow the user to view the serial data output. The plot shows the results from three test runs separated by either several minutes in one case or one hour in another. This shows that the results maintain the two degree heading accuracy even without start up calibration. Two degree heading accuracy with no further calibration every time. What other sensor fusion solution can make the same claim?

Also unique, I have broken out the SENtral master bus and unused SENtral GPIO pins so additional sensors can be added if you learn how to change the configuration file loaded on the EEPROM. This is useful for both comparison of sensor fusion solutions with different sensor data sources and to add new sensors which might outperform the MPU9250 or add a new capability (like gas or humidity sensor).

I have written a comprehensive and well-commented Teensiduino sketch to operate the SENtral board with either pressure sensor. It allows the user to configure the sensors and run them with commands from the host to the sensors directly (pass-through mode) or by reading sensor data directly from the SENtral master (sensor fusion or master mode).

*One word of caution:* two of the components, the EM7180 and M24512 EEPROM are wafer-level, chip-scale packages. This means they are thin silicon wafers supported on solder balls and can't stand rough handling or direct, bright sunlight. Please be careful when soldering machine pin headers on the board that the soldering iron doesn't come into contact with these components since it is easy to chip and, therefore, ruin them and the board.

Order the board from OSH Park and assemble your own SENtral motion sensor solution or buy the assembled and fully tested board from me and see what a nearly ideal sensor fusion solution can do for your application!

Excellent product and documentation

It really is 'ultimate'. The User Guide/Wiki has lots of great crucial and also beneficial/context information. Kris Winer has created multiple great arduino/teensy programs. My teensy 3.5 worked on first try and is updating at a staggering 4300Hz, that is some incredible update rate.

Shipping was really fast (to europe) and the receipt even included a hand-written thanks note. This brought a smile to my face (I was very surprised) and the first impression lasted.

An issue/question raised in one github repo by Kris with old code to read from an MPU6050 was swiftly answered, which makes me optimistic about solving issues and evolving the library in the future.

One thing I could criticize: the software presented on github could be dramatically improved with very little work: use some code formatter, even the one integrated in the arduino IDE. There is also plenty of trailing whitespace.

Highly satisfied with results and service

Tried GY-80 board then shifted to MPU9250 but was not able to achieve a decent accuracy as i was using ESP82XX. I came across this USFS and could not be more happy with the results. Providing clients with written documentation and extensive practical code backed by responsive technical support is what set this company apart from others.

Ultimate Sensor fusion

If you are looking for a high quality , affordable inertial sensor, look no further. It's easy to integrate into designs thanks to very helpful examples.Plus it's backed by excellent support. I would highly recommend it. Great product !!

Well worth the money

This is a great board. Fast & easy & ridiculously small. Kris has proven to know the tech & is committed to continued development. Excellent communication/support. Highly recommended. Once you use a fusion board, you'll find it hard to go back to having to write code for basic orientation calculations.

amazing small/light package

Response from Pesky Products | Dec. 31, 2015

Thanks for the feedback; I'm glad it's working for you John.

Coming soon will be added host-side coding to allow warm start so the accuracy is achieved from power on without the need to recalibrate every time, and pressure sensor fusion which will provide drift-stabilized altitude estimation. This last will likely require that a new configuration file be loaded into the EEPROM; I'll post instruction for how to do so. Of course, not everyone will bother since altitude is only really useful for UAVs and robotics, as well as dead reckoning and motion tracking, etc.

What is a Tindarian?

We recognize our top users by making them a Tindarian. Tindarians have access to secret & unreleased features.

How does one become a Tindarian?

We look for the most active & best members of the Tindie community, and invite them to join. There isn't a selection process or form to fill out. The only way to become a Tindarian is by being a nice & active member of the Tindie community!

About onehorse

One-man maker shop with a focus on appallingly small, value-added products. Specialties include motion sensing and motion control applications.

If you don't see what you want, let me know what it is at tleracorp@gmail.com , I might be able to help!

See here for my story: https://www.maker.io/en/interviews/2016/interview-with-kris-winer---pesky-products