REVIEWS

Fermion BMI323 6-Axis IMU Engineering Test Notes: Accelerometer, Gyroscope, Step Counter, and I2C Address Verification

DFRobot Jul 15 2026 35

The Fermion BMI323 6DOF IMU Sensor is a 6-axis inertial motion sensor module based on the Bosch BMI323. It integrates a 3-axis accelerometer and a 3-axis gyroscope, making it suitable for motion detection, tilt recognition, angular velocity measurement, step counting, and embedded motion data acquisition.

 

For embedded developers, robotics developers, wearable developers, and hardware makers, they usually focus on a few questions when choosing an IMU module:

  • Can the module stably output acceleration and angular velocity data?
  • Do the acceleration readings in a static state meet expectations?
  • Is the gyroscope reading close to 0°/s when stationary?
  • Does the data respond normally after rotation or motion?
  • Is the hardware step counting function usable?
  • Can the I2C address be switched to facilitate multi-sensor integration?

To help developers intuitively understand the performance of the Fermion BMI323 in practical development environments, the DFRobot engineering team conducted basic functional tests on this module, including 6-axis data reading, accelerometer stability, gyroscope response, hardware step counting, and I2C address switching.

This article is an engineering test note, mainly intended to demonstrate the actual performance of the module in common development scenarios, rather than a laboratory calibration report.

 

Test Environment

ItemConfiguration
Main Controller BoardFireBeetle 2 ESP32-C5
Sensor ModuleFermion BMI323 6DOF IMU Sensor
Communication MethodI2C
Default I2C Address0x69
Optional I2C Address0x68
Test LibraryDFRobot_BMI323
Example UsedSixAxisData, StepCounter, I2C Scanner

 

1. 6-Axis Acceleration and Angular Velocity Data Reading Test

Test Purpose

The most fundamental function of an IMU module is to output acceleration and angular velocity data. For robotic posture detection, motion interaction, wearables, and embedded motion acquisition projects, the sensor needs to be able to initialize stably and continuously output 3-axis acceleration and 3-axis gyroscope data.

 

Test Method

The test uses the SixAxisData example from the DFRobot_BMI323 library to read the acceleration and gyroscope data of the BMI323 via I2C.

During the test, the module was kept stationary, moved, tilted,and rotated to observe whether the serial port output changes with the posture and motion state.

 

Test Results

The module initialized normally and continuously output acceleration and angular velocity data.

When the module's posture or motion state changes, the Accel and Gyro data change accordingly, indicating that basic I2C communication, sensor initialization, and 6-axis data reading functions are working properly.

 

Significance to Developers

This test shows that the Fermion BMI323 can serve as a basic motion input module for platforms like Arduino, ESP32, Raspberry Pi, etc., to read acceleration, angular velocity, posture changes, and motion state data.

Suitable projects include:

  • Posture detection for small robots
  • Motion input for handheld controllers
  • Motion acquisition for wearables
  • Tilt detection and motion interaction
  • Embedded IMU function verification

 

2. Acceleration Static Stability Test

Test Purpose

In tilt detection, posture determination, and robot state monitoring, the stability of acceleration readings in a static state is very important.

When the module is placed horizontally and kept static, under ideal conditions:

  • The X-axis should be close to 0g
  • The Y-axis should be close to 0g
  • The Z-axis should be close to 1g

This test is used to verify whether the static output of the module is stable under different acceleration ranges.

 

Test Method

The test configures the four measurement ranges of the BMI323 accelerometer respectively:

  • ±2g
  • ±4g
  • ±8g
  • ±16g

The module is placed horizontally and kept static to observe the X/Y/Z triaxial acceleration output.

 

Test Results

Under the four measurement ranges of ±2g, ±4g, ±8g, and ±16g, when the module is placed horizontally and kept static, the X/Y axis readings are close to 0g, and the Z-axis reading is close to 1g, with stable overall output.

This indicates that the module performs stably in basic static posture detection scenarios, making it suitable for applications such as tilt detection, posture change determination, and robot horizontal status detection.

(±2g Range Configuration)

 

(±4g Range Configuration)

 

(±8g Range Configuration)

 

(±16g Range Configuration)

 

Development Suggestions

Different acceleration ranges are suitable for different application scenarios:

Acceleration RangeRecommended Application
±2gTilt detection, static posture recognition, slow motion
±4gGeneral motion detection, handheld devices, interactive projects
±8gSmall robots, wearable devices, more obvious motion
±16gShock detection, vibration detection, fast motion

For tilt detection or slow attitude changes, lower ranges can provide finer reading resolution. For shock, vibration, or fast motion, higher ranges can prevent data saturation.

 

3. Gyroscope static bias and dynamic response testing

Testing Purpose

The gyroscope is used to detect angular velocity and is a key data source in robot steering, attitude changes, gesture recognition, and motion control.

When stationary, the gyroscope output should be close to 0°/s. When rotating the module, the angular velocity of the corresponding axis should change with the direction and speed of rotation. After stopping rotation, the reading should return to close to 0°/s.

 

Testing Method

The gyroscope test configuration is as follows:

ParameterConfiguration
Range±2000°/s
ModeNormal

The test is divided into two parts:

  1. Place the module stationary on a horizontal surface, continuously sample 100 sets of data, and calculate the average zero bias of the X/Y/Z triaxial.
  2. Smoothly rotate the module and observe the changes in angular velocity at different rotation directions and speeds; after stopping rotation, observe whether the reading returns to close to 0°/s.

 

Test Results

When the module is stationary, the triaxial gyroscope data remains within the range of a few tenths of a °/s, which is overall stable.

When the module rotates, the angular velocity reading of the corresponding axis changes with the rotation direction and speed. After stopping rotation, the data can quickly return to close to 0°/s.

This indicates that the Fermion BMI323 performs stably in basic angular velocity detection scenarios, making it suitable for projects such as small robot steering feedback, handheld controllers, motion interaction, and attitude change detection.

 

Actual Effect

  • Under static conditions, the triaxial data of the module remains at a few tenths, demonstrating good numerical stability;
  • Smoothly rotate the sensor, the value of the corresponding axis changes with the direction and speed, and quickly returns to zero after stopping;

 

Development Suggestions

Different gyroscope ranges are suitable for different motion speeds:

Gyroscope RangeRecommended Applications
±125°/sSlow tilting, low-speed attitude changes
±250°/sGeneral direction change detection
±500°/sRobot motion feedback, handheld control
±1000°/sFast gestures, dynamic motion
±2000°/sHigh-speed rotation, UAVs, intense motion testing

For most robot and handheld device projects, ±500°/s can be used as the initial configuration. For fast rotation or UAV applications, it is recommended to select ±1000°/s or ±2000°/s.

 

4. Hardware Step Counter Testing

Testing Purpose

The BMI323 has a built-in hardware step counter function, which can perform some motion event recognition at the sensor side, reducing the main controller's burden of continuously processing motion data.

This function is suitable for wearable devices, activity detection devices, low-power motion nodes, and motion interaction prototypes.

 

Testing Method

The test uses the StepCounter example from the DFRobot_BMI323 library, enabling the hardware step counter function of the BMI323 and reading the accumulated step count.

During the test, the module is shaken at a fixed amplitude to simulate walking motion, and whether the accumulated step count increases is observed.

 

Test Results

Under simulated walking motion, the module can output the accumulated step count.

During the test, not every shake is recognized as a step because the step-counting algorithm filters out invalid vibrations and non-walking movements. This filtering mechanism is meaningful for practical wearable applications, as it reduces false triggers.

The actual step-counting effect is affected by the fixing method, wearing position, range of motion, enclosure structure, and movement patterns. For products that require high-precision step counting, secondary verification should be performed under the target structure and actual wearing method.

 

Actual Effect

  • Shaken 100 times in practice (alternating between strong and weak), the target data was 50, which served to debounce to a certain extent, and the accuracy was high;

 

Development Suggestions

The hardware step counter function is suitable for:

  • Wearable activity detection
  • Low-power motion state recognition
  • Handheld device activity detection
  • Motion algorithm demonstration in educational projects

If the target application is fitness tracking or long-term step recording, it is recommended to conduct multiple rounds of testing under the actual wearing position, combined with the device structure and target user action characteristics for verification.

 

5. I2C Address Switching Test

Testing Purpose

In actual embedded projects, multiple sensors may be connected to the same I2C bus. If two devices use the same address, an address conflict will occur.

The Fermion BMI323 supports I2C address switching, allowing for more flexible integration into multi-sensor systems.

 

Testing Method

Test using the I2C Scanner program to scan the bus device address, testing the module address pad in both disconnected and soldered states respectively.

 

Test Results

Address switching function is normal:

Address Pad StatusI2C Address
Pad Disconnected0x69
Pad Soldered0x68

When another device in the system already occupies the 0x69 address, the BMI323 can be switched to 0x68 to reduce the risk of I2C address conflicts.

 

Actual Effect

  • Pad disconnected, default address:

 

  • Pad soldered, address adjusted:

 

Test Summary

This engineering test verified the basic functional performance of the Fermion BMI323 6DOF IMU Sensor in common development scenarios:

Test ItemResult
6-axis acceleration and angular velocity data readingPass
Acceleration static stabilityPass
Gyroscope static zero bias and dynamic responsePass
Hardware step countingPass
I2C address switchingPass

Overall, the Fermion BMI323 is suitable for small robots, wearable devices, motion detection, low-power activity recognition, I2C multi-sensor systems, and embedded product prototype verification.

If the project requires stable reading of 6-axis acceleration and angular velocity data, the use of hardware step-counting functions, reduction of I2C address conflicts, and integration of the IMU into compact devices, this module can serve as a practical development choice.

For time-sensitive applications such as high-speed sampling, strict sample rate control, closed-loop control, or vibration analysis, developers are advised to perform individual validation in combination with the target controller, library version, and actual I2C bus configuration.

 

FAQ

Q1: Is this module suitable for wearable devices?

Yes. The module is small in size, supports low-power motion detection, and features hardware step counting, activity recognition, tilt, and motion event detection capabilities, making it suitable for wearable device prototyping.

 

Q2: Can it be used with multiple I2C devices?

Yes. The module's default address is 0x69, and it can also be switched to 0x68 via the address pad to reduce I2C address conflicts.

 

Q3: Is the step counting function equivalent to consumer-grade fitness tracker algorithms?

No, it is not equivalent. The BMI323 provides hardware step counting capabilities, but the actual step counting accuracy will be affected by the wearing position, fixing method, motion range, enclosure structure, and algorithm configuration. It is still recommended to validate consumer-grade step counting applications in the final device form.

 

Q4: Can the Fermion BMI323 output absolute heading angles?

No. The BMI323 is a 6-axis IMU, containing an accelerometer and a gyroscope, but no magnetometer. For absolute heading angle or electronic compass applications, a 9-axis IMU is recommended.

 

Q5: Can the Fermion BMI323 be used for altitude hold?

No. Altitude-related applications typically require a barometer or other altitude reference sensors. This module does not contain a barometric pressure sensor.