I2C 10-DOF Featherwing with Sensor Fusion

Public Chat
Similar projects worth following
This featherwing uses I2C to connect both the IMU (BNO055) and the altimeter (BME280) to the Feather. I made this to design projects that require a 10-DOF IMU in a tiny package where breakouts can affect the weight a lot and may not be a good option, such as a quadcopter, a model plane, or a model rocket.

I work with a lot of model flying machines, and build them from anything that I can get my hands on. I had an Adafruit Feather M0 Bluefruit LE, made a neat little rover, and inspired me to make a payload for my rocket by logging its flight data, with the help of an Adafruit Feather M0 Adalogger.

The problem is that I could not find a FeatherWing with 10-DOF capabilities, so I tried to learn how to make PCBs in a week, reverse-engineered breakout boards, and assembled a simple FeatherWing with  a 9-DOF IMU, plus an altimeter, which is the 10th DOF.

I actually did not have a problem with picking sensors, and I am not worried about writing drivers for it, since I plan to use Adafruit breakout drivers. I discovered that they offer the Adafruit Unified Sensor Driver, which made swapping out sensors easier, and may be a good thing since I know that somewhere during the sensor selection process, I may have picked the wrong sensor and mess up the whole project to start over again from scratch.

The choice for the altimeter was easy, the BME280. There are Unified Sensor Drivers for it, and it is widely used as an altimeter. It has temperature and humidity sensors, which would increase the accuracy of the altimeter, as both of these factors may affect the barometric pressure readings.

Now I have to pick the other 9 DOFs, and it boiled down to two (based on what's supported by the Unified Sensor Driver):

  • BNO055
  • LSM9DS1

Note that the LSM9DS0 is not here, since it had reached its end of life.

I picked the BNO055 over the LSM9DS1 because of one thing: sensor fusion. I feel that it increases the capabilities of my feather to be used at other projects, and I don't want to deal with coding to combine all the values.

But with the Unified Sensor Driver, we can easily replace the BNO055 with the LSM9DS1 if production is not feasible, or if I just to make a cheaper version without sensor fusion. (see 10AxisFeatherWingLE)

I2C 10-DOF Featherwing with Sensor Fusion

x-zip-compressed - 20.13 kB - 01/17/2020 at 22:09


  • 1 × BNO055 3 axis accelerometer, gyroscope, magnetometer, with sensor fusion IMU
  • 1 × BME280 Barometer, hygronometer, thermometer, altimeter
  • 5 × 10K 0603 resistor Pull up resistors
  • 3 × 100nF 0603 capacitor High frequency decoupling capacitor
  • 2 × 22pF 0603 capacitor Crystal capacitors

View all 8 components

  • Finally complete!

    Mark Aldritz Dela Virgen03/16/2020 at 03:21 0 comments

    After almost 2 months of not updating this page, I am finally happy to announce that the 10AxisFeatherWing is complete!

    I was busy trying to perfect the boards, and my gosh did it take two months!

    During those 2 months, I have learned the following:

    1. Use stencils rather than hand soldering. Especially if you have tiny parts and if some of your components have no leads. I threw away $100 worth of failed boards trying to go cheap.
    2. Check your board design before ordering. I uploaded a board design I did not check, and I got a board that does not have a trace to ground on one of the pads. I did not let that $20 go into the drain, though. I used it to make a partial board that tested the unaffected components. Here's a photo of it:
      It worked!
    3. Have a heat gun. You cannot solder parts under components using a soldering iron, unless the pads themselves are visible.

    My university hackerspace provided the right tools to prepare, solder, and test my boards.

    Also, I will be scrapping the 10AxisFeatherWingLE variant. I had made 3 prototypes, used a stencil, and tested them. All three of them released the magic smoke.

    I am thinking of making more hardware, since I wanted a modular Thrust Vector Control system for rockets. Like what Joe Barnard does in!

  • I ordered the parts!

    Mark Aldritz Dela Virgen01/17/2020 at 22:08 0 comments

    Today is a good day for 10AxisFeatherWing (and LE)!

    After checking the PCBs for the 10AxisFeatherWing and 10AxisFeatherWingLE, I ordered the parts from DigiKey, and the PCBs from OSH Park. I am so excited to try these things myself!

    Also, I just found out that my school just had reflow ovens, so I look forward to making (or baking) these PCBs!

    Here are a few pictures of the PCB renders from OSH Park:

    Ain't those purple PCBs cute?

  • Migration to KiCad

    Mark Aldritz Dela Virgen12/31/2019 at 23:42 2 comments

    I recreated the whole project using KiCad, because I feel like it's easier to use than EAGLE.

    Because of it, I was able to create 3D renders of 10AxisFeatherWing!

    Also, I recreated the 10AxisFeatherWingLE with much more cheaper parts. Instead of BME280, I used the BMP280, which does not have the humidity sensor.

    Here are some screenshots of the new, improved 10AxisFeatherWingLE:

    One last thing: Happy New Year!

  • New Features! - Reset Switch and INT breakout

    Mark Aldritz Dela Virgen12/24/2019 at 14:03 0 comments

    After looking around for examples of FeatherWings in Adafruit store, I stumbled upon this Adalogger FeatherWing. It has the two things that I know I needed to implement: A reset switch and an INT breakout.

    I also tried to condense all the components together, since I was worried that the decoupling caps won't filter the signals effectively. After some few hours of rearranging the components and autorouting, I was able to implement these new features.

    Right now, my project is done on paper. I just need to find a good PCB printing service to print prototype PCBs for me, and collect money from my allowance so I will be able to buy the required components. I might use these prototype PCBs in my rockets, and use the data in my super secret science project I'm working on.

  • 10AxisFeatherWingLE

    Mark Aldritz Dela Virgen12/22/2019 at 16:53 0 comments

    I have made a 10AxisFeatherWingLE that uses LSM9DS1 instead of BNO055. The LE (Limited Edition) does not have sensor fusion, but it does not require a 32.768kHz crystal, and is cheaper than the original.

    Visit the project page on Github

View all 5 project logs

Enjoy this project?



Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates