I followed the APM instructions to setup the PX4FLOW sensor with the Navio+. Then, I did the “First Flight” test to validate the values expected for OF.flowX and OF.flowY as well as OF.bodyX and OF.bodyY.
The first 3 indoors test flights were simple and successful (takeoff in stabilized mode, switch to alt-hold for few seconds, and land), less than a minute each flight. However, when I tried to do the same with the 4th test-flight, it crashed. The optical flow value just disappeared, the baro went into an unhealthy state, and the quad crashed.
I’ve gone through the logs (attached), but I’m still not able to figured out what went wrong (3 good flights and the 4th crashes). At this point any thoughts or comments will be appreciated!
27.BIN.NAV (2.5 MB)
I had a look trough your logs and it seems like the I2C bus was completely shut down at some point, Raspberry Pi has only one I2C and on Navio+ it is used for PWM (PCA9685), ADC, Baro and external accessories. In Navio2 it is only used for baro and accessories.
Here you can see that baro data, optical flow data and adc data stops arriving while IMU is functioning properly (it is on SPI bus). This indicates a bus failure and APM was working till the end. This looks like electrical issue, maybe the wires were not insulated properly or they were too long.
Thanks Igor for looking into this, your assestment is correct. We found out that we had a faulty 3DR I2C splitter. This also explains why the Baro also went bad and we were not able to disarm the motors either since they both are on the same I2C bus.
You also pointed out that the Navio2 (which we are not testing with it yet) now only uses the I2C bus for baro and accessories; which is good since we at least we’ll be able control the PWMs if this happens again. However, I’m still concern that we have 2 accessories connected to the I2C bus and they can make the Baro go bad if they shutdown the I2C bus. Can we use an external laser altimeter like the SF11 connected via UART as the EKF_ALT_SOURCE and take the built-in barometer out of the I2C equation?
You can definitely connect the altimeter to the ADC port on Navio2, UART should work as well but this has not been tested.