UPM

The UPM API is a high level sensor library for IoT devices using MRAA. See examples here. Back to index page.
SparkFun sensor images provided under CC BY-NC-SA-3.0.

BMI160 Class

Module: bmi160

The Bosch BMI160 is a 3-axis Accelerometer and Gyroscope. Additionally it supports an external Magnetometer, accessed through the BMI160 's register interface. This driver was developed with a BMI160 "Shuttle" board, which included a BMM150 Magnetometer.
The device is driven by either 1.8v or 3.3vdc. This driver incorporates the Bosch BMI160 driver code at https://github.com/BoschSensortec/BMI160_driver
The Bosch driver code does not provide a mechanism for passing user data around (like the device context). For this reason, only one instance of this driver can be used in a given process, due to the use of static data in the driver.
While not all of the functionality of this device is supported initially, the inclusion of the Bosch driver in the source code makes it possible to support whatever features are required that the driver can support.

Methods

BMI160

(
  • bus
  • address
  • csPin
  • enableMag
)
Number

BMI160 constructor. The default arguments inititialize I2C operation and the default I2C address.

Parameters:

  • bus Number

    i2c bus to use

  • address Number

    The address for this device if using I2C. If using SPI, supply -1 for this parameter.

  • csPin Number

    The GPIO to use for Chip Select (CS). This is only needed for SPI, and only if your SPI implementation requires it. Otherwise, just pass -1 if not using SPI, or your CS is handled automatically by your SPI implementation.

  • enableMag Boolean

    true to enable the magnetometer, false otherwise

Returns:

Number:

update

()

Take a measurement and store the current sensor values internally. This function must be called prior to retrieving any sensor values, for example getAccelerometer() .

setAccelerometerScale

(
  • scale
)

set the scaling mode of the accelerometer

Parameters:

  • scale BMI160_ACC_RANGE_T

    one of the ACCEL_RANGE_T values

setGyroscopeScale

(
  • scale
)

set the scaling mode of the gyroscope

Parameters:

  • scale BMI160_GYRO_RANGE_T

    one of the GYRO_RANGE_T values

getAccelerometer

() Float *

Get the Accelerometer values. This function returns a pointer to 3 floating point values: X, Y, and Z, in that order. The values returned are in gravities. update() must have been called prior to calling this method.
The caller is reponsible for freeing the returned pointer.

Returns:

Float *:

Pointer to 3 floating point values: X, Y, and Z in gravities.

getAccelerometer

(
  • x
  • y
  • z
)

Get the Accelerometer values. The values returned are in gravities. update() must have been called prior to calling this method.

Parameters:

  • x Float *

    A pointer into which the X value will be returned

  • y Float *

    A pointer into which the Y value will be returned

  • z Float *

    A pointer into which the Z value will be returned

getGyroscope

() Float *

Get the Gyroscope values. This function returns a pointer to 3 floating point values: X, Y, and Z, in that order. The values values returned are in degrees per second. update() must have been called prior to calling this method.
The caller is reponsible for freeing the returned pointer.

Returns:

Float *:

Pointer to 3 floating point values: X, Y, and Z in degrees per second.

getGyroscope

(
  • x
  • y
  • z
)

Get the Gyroscope values. The values returned are in degrees per second. update() must have been called prior to calling this method.

Parameters:

  • x Float *

    A pointer into which the X value will be returned

  • y Float *

    A pointer into which the Y value will be returned

  • z Float *

    A pointer into which the Z value will be returned

getMagnetometer

() Float *

Get the Magnetometer values. This function returns a pointer to 3 floating point values: X, Y, and Z, in that order. The values values returned are in micro Teslas. update() must have been called prior to calling this method. If the Magnetometer has been disabled, the return values will always be 0, 0, and 0.
The caller is reponsible for freeing the returned pointer.

Returns:

Float *:

Pointer to 3 floating point values: X, Y, and Z in micro Teslas.

getMagnetometer

(
  • x
  • y
  • z
)

Get the Magnetometer values. The values returned are in micro Teslas. update() must have been called prior to calling this method.

Parameters:

  • x Float *

    A pointer into which the X value will be returned

  • y Float *

    A pointer into which the Y value will be returned

  • z Float *

    A pointer into which the Z value will be returned

enableMagnetometer

(
  • enable
)

Enable or disable the Magnetometer. By default, the magnetometer is enabled.

Parameters:

  • enable Boolean

    true to enable the magnetometer, false to disable.

getSensorTime

() Number

Return the sensor time. This is a 24bit value that increments every 39us. It will wrap around once the 24b resolution is exceeded.

Returns:

Number:

The current sensor time.