In a previous post (Ref.1) we examined how to connect and detect a sensor module such as the GY-91 which is referenced in OpenPlotter documentation. This module has two ICs: an MPU-9250 motion detector IC and a BMP280 pressure/temperature IC. This gives us 11 variables: 3 x accelerometer, 3 x gyroscope, 3 x Magnetometer, 1 x air pressure, 1 x air temperature. In this post we will examine the properties of these variables.
GY-91 Sensor Module
The GY-91 sensor board contains a BMP280 pressure/temperature IC (Ref.2) and an MPU9250 accelerometer, gyroscope and magnetometer IC (Ref.3). These are commonly referenced with OpenPlotter. Figure 1 shows the board layout and pinouts. The MPU is the dark square IC and the BMP is the silvery rectangular IC with small air hole on top. Figure 2 shows the interconnection to the RPi GPIO.
The BMP280 measures air pressure and temperature:
Air Pressure: 300 to 1100hPa = +9000m (above sea level) to -50m (below sea level)
Air Temperature: -40degC to +85degC
Air pressure at mean seal level is typically 1013.25hPa and is known as a standard atmosphere.
Common units are: 1 Standard Atmosphere = 1013.25hPa = 1013.25mbar = 760mmHg = 29.9212inchesHg
Air pressure varies with the height above sea level at about -10hPa for every 100m. It also varies with weather conditions which is of most concern to sailors. Figure 3 shows a typical BMP280 reading and a comparison with a Thommen mountaineering altimeter. The difference of 3mbar is less than 1%. I ordered 2 x BMPs, one on Amazon and one on EBay. The Amazon one had a problem with the pressure being pegged at 300hPa. I suspect the unit got damaged in shipment, there is a tiny hole on top which is probably sensitive to force. The EBay one worked 100%. Considering the low cost and what is on the board, this is not a problem. I remember using a Scintrex Magnetometer in 1969 that weighed at least 10lbs and cost over 10K$!.
MPU9250 Acc/Gyro & Mag
The MPU9250 integrates two dies into a QFN package of 3x3x1mm. The first die has an accelerometer and gyroscope, the second has a AK8963 magnetometer. The acc/gyro/mag have variable ranges and are sampled with 16bit ADCs. There is a built in DMP digital motion processor and I2C interface. Figure 5 from the data sheet shows the block diagram. Hard to believe so much is in such a small package! Figure 6 shows the orientation of the x,y,z axes for the acc/gyro and mag. Note the different directions of y,z for the mag (right hand rule x to y then z). Figure 7 shows the pin 1 location dot on the GY-91 board.
In the previous post we detected the MPU9250 in PyPilot. Open PyPilot, ensure the GY-91 is in a horizontal plane and select the calibration menu item as shown in Figure 8. Once the GY-91 is level, press the “Boat is Level” button in the lower left corner. This will calibrate the MCU9250. Twisting the board around the vertical axis will generate Yaw, around the Y axis will generate Pitch and around the X axis Roll (see Fig. 11 YouTube movie). Once the calibration is done, you can see the results in the SignalK Instrument Panel Fig.10.
Please send your comments, questions and suggestions to:
#1. – “OpenPlotter – Sensors_a”
#2. – “BMP-280 Digital Pressure Sensor”, Bosch Data Sheet
#3. – “MPU-9250 Motion Tracking Device”, TDK Invasense Data Sheet
#4. – “OpenPlotter – AIS+”
#5. – “OpenPlotter – RTL-SDR for VHF/AIS”
#6. – “OpenPlotter – AIS Connection”
#7. – “OpenPlotter – GPS Connection”
#8. -“OpenPlotter – Naviagtion System on RPi”