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)