nanoFramework.Iot.Device.Mpu6886 1.2.869

Prefix Reserved
dotnet add package nanoFramework.Iot.Device.Mpu6886 --version 1.2.869
                    
NuGet\Install-Package nanoFramework.Iot.Device.Mpu6886 -Version 1.2.869
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="nanoFramework.Iot.Device.Mpu6886" Version="1.2.869" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="nanoFramework.Iot.Device.Mpu6886" Version="1.2.869" />
                    
Directory.Packages.props
<PackageReference Include="nanoFramework.Iot.Device.Mpu6886" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add nanoFramework.Iot.Device.Mpu6886 --version 1.2.869
                    
#r "nuget: nanoFramework.Iot.Device.Mpu6886, 1.2.869"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#addin nuget:?package=nanoFramework.Iot.Device.Mpu6886&version=1.2.869
                    
Install nanoFramework.Iot.Device.Mpu6886 as a Cake Addin
#tool nuget:?package=nanoFramework.Iot.Device.Mpu6886&version=1.2.869
                    
Install nanoFramework.Iot.Device.Mpu6886 as a Cake Tool

Mpu6886 - accelerometer and gyroscope

The MPU-6886 is a 6-axis motion tracking sensor that combines a 3-axis gyroscope and a 3-axis accelerometer including the following features:

  • gyroscope programmable FSR of ±250 dps, ±500 dps, ±1000 dps, and ±2000 dps
  • accelerometer with programmable FSR of ±2g, ±4g, ±8g, and ±16g

Documentation

Usage

Create the Mpu6886 class and pass the I2C device. By default the I2C address for this sensor is 0x68.

// I2C pins need to be configured, for example for pin 22 & 21 for 
// the M5StickC Plus. These pins might be different for other boards.
Configuration.SetPinFunction(22, DeviceFunction.I2C1_CLOCK);
Configuration.SetPinFunction(21, DeviceFunction.I2C1_DATA);

I2cConnectionSettings settings = new(1, Mpu6886AccelerometerGyroscope.DefaultI2cAddress);

using (Mpu6886AccelerometerGyroscope ag = new(I2cDevice.Create(settings)))
{
    Debug.WriteLine("Start calibration ...");
    var offset = ag.Calibrate(1000);
    Debug.WriteLine($"Calibration done, calculated offsets {offset.X} {offset.Y} {offset.Y}");

    Debug.WriteLine($"Internal temperature: {ag.GetInternalTemperature().DegreesCelsius} C");

    while (true)
    {
        var acc = ag.GetAccelerometer();
        var gyr = ag.GetGyroscope();
        Debug.WriteLine($"Accelerometer data x:{acc.X} y:{acc.Y} z:{acc.Z}");
        Debug.WriteLine($"Gyroscope data x:{gyr.X} y:{gyr.Y} z:{gyr.Z}\n");
        Thread.Sleep(100);
    }
}

Sample output

Start calibration ...
Calibration done, calculated offsets 49.189 -86.21099999 -86.21099999
Internal temperature: 64.21664626 C
Accelerometer data x:-0.041503906 y:0 z:1.056884765
Gyroscope data x:4.94384765 y:-8.60595703 z:-15.68603515

Accelerometer data x:-0.040771484 y:-0.0051269531 z:1.062988281
Gyroscope data x:4.94384765 y:-7.56835937 z:-15.014648437

Accelerometer data x:-0.046630859 y:-0.0068359375 z:1.055175781
Gyroscope data x:3.60107421 y:-7.62939453 z:-15.1977539

Accelerometer data x:-0.049560546 y:-0 z:1.061279296
Gyroscope data x:4.39453125 y:-7.32421875 z:-14.28222656

See samples for a complete sample application.

Calibration

The gyroscope can be calibrated using the Calibrate function. With the iterations parameter you can specify how many values should be read from the sensor to calculate an average (1000 iterations seems to be a good number). During the calibration you want to keep the sensor still and in a fixed position (e.g. lying flat on a table). The Calibrate function will write the values to the corresponding compensation registers of the sensor, values are corrected when retrieved automatically.

The return value of the Calibrate method gives a vector containing the 3 (for the X,Y and Z axes) calculated compensation values.

var offset = ag.Calibrate(1000);
Debug.WriteLine($"Calibration done, calculated offsets {offset.X} {offset.Y} {offset.Y}");

It is possible to write directly to the compensation registers using the SetGyroscopeOffset function. You might want to do this when you create your own custom calibration method, or you retrieve existing calibration data from a persisted data store or memory location.

When the devices reboots, the offset registers are cleared. So if you don't persist the calibration data yourself you will have to run the calibration method every time the device boots.

Sleep mode

The sensor can be put in sleep mode by calling the Sleep function. After that the WakeUp function should be called.

Setting scales

Both for the gyroscope and accelerometer you can set the desired scales using the AccelerometerScale and GyroscopeScale properties.

// Set the scale of the accelerometer to 2G
ag.AccelerometerScale = AccelerometerScale.Scale2G;

Setting enabled axes

By default all gyroscope and accelerometer axes are enabled. If desired you can specify explicitly which axes should be enabled. In that case, all other axes will be disabled. When an axis is disabled, data can still be read for that axis but the values will not change anymore.

// Enable only the X axis of the gyroscope and accelerometer
ag.EnabledAxes = EnabledAxis.GyroscopeX | EnabledAxis.AccelerometerX;

Features not implemented

The following features are enabled in the MPU6886 but not yet implemented in this driver:

  • registers 0x05 to 0x0b: low noise to low power offset
  • registers 0x0d to 0x0F: self test
  • register 0x1a: FIFO mode, DLPF (digital low pass filter)
  • register 0x1d bit 0 to 3: DLPF
  • register 0x1e bit 4 to 6: averaging filter for low power mode
  • registers 0x20 to 0x22: threshold for wake-on motion
  • register 0x36: fsync interrupt status
  • register 0x37: INT/DRDY pin config
  • register 0x39 and 0x3a: FIFO watermark interrupt
  • register 0x60 and 0x61: FIFO watermark interrupt
  • register 0x68: signal path reset
  • register 0x69: acc. intelligence control
Product Compatible and additional computed target framework versions.
.NET Framework net is compatible. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (7)

Showing the top 5 NuGet packages that depend on nanoFramework.Iot.Device.Mpu6886:

Package Downloads
nanoFramework.M5Core2

This package includes the nanoFramework.M5Core2 assembly for .NET nanoFramework C# projects.

nanoFramework.M5StickC

This package includes the nanoFramework.M5StickC assembly for .NET nanoFramework C# projects.

nanoFramework.M5Core

This package includes the nanoFramework.M5Core assembly for .NET nanoFramework C# projects.

nanoFramework.M5StickCPlus

This package includes the nanoFramework.M5StickCPlus assembly for .NET nanoFramework C# projects.

nanoFramework.AtomMatrix

This package includes the nanoFramework.AtomMatrix assembly for .NET nanoFramework C# projects.

GitHub repositories (2)

Showing the top 2 popular GitHub repositories that depend on nanoFramework.Iot.Device.Mpu6886:

Repository Stars
nanoframework/nanoFramework.IoT.Device
📦 This repo includes .NET nanoFramework implementations for various sensors, chips, displays, hats and drivers
nanoframework/nanoFramework.M5Stack
:package: Board support package for M5Stack, M5StickC and M5StickCPlus for .NET nanoFramework
Version Downloads Last updated
1.2.869 398 a month ago
1.2.864 285 a month ago
1.2.852 521 2 months ago
1.2.846 338 2 months ago
1.2.822 1,147 2 months ago
1.2.775 1,415 3 months ago
1.2.772 119 3 months ago
1.2.755 604 3 months ago
1.2.743 382 3 months ago
1.2.737 118 4 months ago
1.2.718 356 4 months ago
1.2.704 322 4 months ago
1.2.696 283 4 months ago
1.2.673 913 6 months ago
1.2.656 1,025 7 months ago
1.2.639 846 8 months ago
1.2.631 401 8 months ago
1.2.613 744 9 months ago
1.2.601 312 9 months ago
1.2.590 571 9 months ago
1.2.573 887 6/19/2024
1.2.570 130 6/14/2024
1.2.536 1,285 4/15/2024
1.2.514 895 3/22/2024
1.2.494 630 2/28/2024
1.2.478 487 1/26/2024
1.2.462 685 1/5/2024
1.2.458 241 12/20/2023
1.2.436 895 11/10/2023
1.2.416 601 11/8/2023
1.2.403 734 10/6/2023
1.2.396 494 9/27/2023
1.2.384 508 9/6/2023
1.2.378 789 8/16/2023
1.2.369 676 8/2/2023
1.2.363 489 7/28/2023
1.2.357 525 7/19/2023
1.2.354 496 7/14/2023
1.2.345 898 6/21/2023
1.2.341 538 6/14/2023
1.2.337 538 6/7/2023
1.2.335 196 6/2/2023
1.2.329 851 5/26/2023
1.2.313 963 5/12/2023
1.2.302 654 5/10/2023
1.2.297 669 5/3/2023
1.2.273 2,913 3/17/2023
1.2.267 1,608 3/10/2023
1.2.263 1,380 3/8/2023
1.2.259 1,432 2/27/2023
1.2.256 1,093 2/24/2023
1.2.253 1,113 2/22/2023
1.2.222 2,964 1/9/2023
1.2.217 2,248 1/6/2023
1.2.212 2,242 1/5/2023
1.2.208 367 1/3/2023
1.2.203 1,755 12/28/2022
1.2.159 1,897 11/14/2022
1.2.153 4,357 11/5/2022
1.2.141 5,835 10/25/2022
1.2.128 532 10/22/2022
1.2.87 16,498 9/15/2022
1.2.63 5,425 9/3/2022
1.2.47 2,304 8/15/2022
1.2.40 2,504 8/6/2022
1.2.38 2,204 8/5/2022
1.2.28 7,021 8/1/2022
1.2.13 5,372 7/24/2022
1.2.10 2,202 7/23/2022
1.1.142.3202 5,525 7/7/2022
1.1.133.52556 7,265 6/30/2022
1.1.121.35854 6,035 6/26/2022
1.1.116.8772 3,880 6/24/2022
1.1.113.2032 479 6/23/2022
1.1.102.51394 3,712 6/15/2022
1.1.99.36719 2,121 6/14/2022
1.1.97.17326 2,516 6/13/2022
1.1.92.53000 2,298 6/8/2022
1.1.72.29765 10,298 5/31/2022
1.1.64.21380 6,034 5/26/2022
1.1.54.28879 5,337 5/23/2022
1.1.40 7,391 5/5/2022
1.1.3 24,666 4/15/2022
1.1.1 496 4/14/2022
1.0.303 2,335 4/12/2022
1.0.302 8,146 3/31/2022
1.0.300 522 3/31/2022
1.0.288-preview.114 192 3/25/2022
1.0.288-preview.113 151 3/25/2022
1.0.288-preview.106 174 3/23/2022
1.0.288-preview.104 144 3/22/2022
1.0.288-preview.103 148 3/21/2022
1.0.288-preview.100 162 3/19/2022
1.0.288-preview.99 168 3/18/2022
1.0.288-preview.98 153 3/18/2022
1.0.288-preview.95 190 3/15/2022
1.0.288-preview.93 157 3/15/2022
1.0.288-preview.86 214 3/8/2022
1.0.288-preview.77 194 2/27/2022
1.0.288-preview.75 156 2/26/2022
1.0.288-preview.65 183 2/18/2022
1.0.288-preview.63 167 2/16/2022
1.0.288-preview.61 169 2/12/2022
1.0.288-preview.58 159 2/10/2022
1.0.288-preview.53 160 2/9/2022
1.0.288-preview.50 182 2/5/2022
1.0.288-preview.48 185 2/4/2022
1.0.288-preview.41 185 1/31/2022
1.0.288-preview.29 236 1/28/2022
1.0.288-preview.22 222 1/27/2022
1.0.288-preview.20 177 1/27/2022
1.0.288-preview.18 184 1/27/2022
1.0.288-preview.5 187 1/24/2022
1.0.272 625 1/10/2022
1.0.260 1,161 12/10/2021
1.0.259 366 12/9/2021
1.0.258 366 12/7/2021
1.0.224 511 10/22/2021
1.0.218 460 10/18/2021
1.0.191 389 9/29/2021
1.0.172 394 9/20/2021