Any suggestions for an attitude sensor for signalk?
Hello
My sail boat uses a simrad RFC35 flux gate sensor for the autopilot, but i dont know how to get that data into signalk. On the other hand I wish to have a solid state sensor which provides me with heading info and roll pitch values as well.
In the past I tried to make one using arduino and mpu9052 or BNO085, but i wasn't able to get reliable results from them (at least in home environment).
I am looking for a pypilot compatible, reliable and reasonably priced sensor component that i can connect to raspberry pi.
Any suggestions?
8 Replies
I cannot answer the flux gate part but, for the solid-state sensor, you can use a BNO055, a smart 9-DOF sensor that can be directly connected to your RPi and does the sensor fusion for heading, roll and pitch values internally. For my part, I use a GY91 (MPU9255 + BMP280) and a ESP32 with SensESP connected by WiFi to my RPi 4 with SignalK. To get the roll, pitch and heading from the values measured by the MPU9255, I use a simple fusion process (library: bolderflight/Bolder Flight Systems MPU9250@^1.1.0) running on the ESP32 under SensEsp. I use Visual Studio Code with PlatformIO.
I use one of these, https://shop.pimoroni.com/products/icm20948?variant=27843993960531
Pypilot recommended, does very accurate roll and pitch plus all the other accell etc that pypilot uses but we don't see.
This icm20948 gives movement in nine different ranges of motion: 3-axis acceleration, 3-axis gyroscopic motion, and 3-axis compass heading but seems not to give the requested roll, pitch and magnetic heading asked by @Ba2. Fusion software needs to be added.
@Sailabout Thank you for your answer, I will give your code a try. I remember the madgwick library from before, but I trust Deepseek 😄
Do you think prototyping on a breadboard will have negative effects on the magnetometer sensors?
And do you perform a calibration?, putting the device in non ferrous gimbal rotating it all around, keep track of bunch of points etc...
Do not trust DeepSeek blindly, I needed a few iterations to arrive at a working app. 😊
My GY91 module is connected to a ESP32 board with 4 short wires (I2C) and booth are glued in a small plastic box. I moved this box by hand following the pypilot instructions for calibration but I have no idea about the resulting precision.

pypilot does all the calibration, it will run imu only
