Skip to main content

Module imu

Module imu 

Source
Expand description

BMI270 IMU on the internal I²C bus (0x69).

The chip’s INT1/INT2 pins are not connected on the Cardputer ADV, so it can only be polled, and it cannot wake the ESP32 from sleep.

§Axes

Imu::read returns readings in the board frame. Hold the Cardputer in landscape, screen facing you, keyboard below:

  • +X points right,
  • +Y points up, toward the top edge (away from the keyboard),
  • +Z points out of the screen, toward you.

Lying flat on a table, screen up, acceleration reads about [0, 0, +1] g. Standing on its keyboard edge, screen vertical, it reads [0, +1, 0]. The gyro follows the right-hand rule about the same axes.

The chip is mounted rotated relative to the board; BOARD_AXES is the mapping applied. Only its Z axis is confirmed on hardware so far. The imu_axes example in the repository measures all three in under a minute and prints the constant to use; until then, Imu::set_axes overrides the default and Imu::read_chip gives untranslated readings.

Structs§

AxisMap
Which sensor axis each board axis reads.
Config
Sensor configuration applied by Bmi270::init.
Imu
The IMU driver.
ImuResources
Ownership token for the IMU. It has no pins of its own, but borrowing it keeps two drivers from initialising the chip at once.
RawSample
Raw two’s-complement readings, X/Y/Z.
Sample
Scaled readings, X/Y/Z.

Enums§

AccelRange
Accelerometer full-scale range.
Axis
One signed axis of the sensor’s own frame.
DataRate
Output data rate shared by both sensors.
GyroRange
Gyroscope full-scale range.

Constants§

BOARD_AXES
How the BMI270’s axes map onto the board frame (see the module docs).

Type Aliases§

Chip
The raw BMI270 driver on the shared bus.
Error
IMU errors.