这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 【M5stackS3】驱动板载的六轴传感器

共1条 1/1 1 跳转至

【M5stackS3】驱动板载的六轴传感器

高工
2026-06-13 08:42:50     打赏
一:BMI270芯片资料

  该设备是一款高度集成、低功耗的惯性测量单元(IMU),它集精确的加速度和角速度(陀螺仪)测量功能与智能的片上运动触发的中断特性于一体。

  BMI270集成了:

  16位数字三轴加速度计,量程为+2g/+4g/+8g/+16g

  16位数字三轴陀螺仪,范围为+125dps/+250dps/+500dps/+1000dps/+2000dps

二:原理图如下所示:

02-2 六轴传感器原理图.png

开发板的XYZ轴显示状态:

02-1 开发板六轴传感器图片.png

三:   软件代码:3.1 初始化

void setup(void)
{
    delay(2000);
    auto cfg            = M5.config();
    cfg.serial_baudrate = 115200;
    M5.begin(cfg);
}
3.2 主程序如下:

void loop(void)
{
    auto imu_update = M5.Imu.update();
    if (imu_update) {
        M5.Lcd.setCursor(0, 40);
        M5.Lcd.fillRect(0, 40, M5.Lcd.width(), 100, BLACK);

        auto data = M5.Imu.getImuData();

        // The data obtained by getImuData can be used as follows.
        data.accel.x;      // accel x-axis value.
        data.accel.y;      // accel y-axis value.
        data.accel.z;      // accel z-axis value.
        data.accel.value;  // accel 3values array [0]=x / [1]=y / [2]=z.

        data.gyro.x;      // gyro x-axis value.
        data.gyro.y;      // gyro y-axis value.
        data.gyro.z;      // gyro z-axis value.
        data.gyro.value;  // gyro 3values array [0]=x / [1]=y / [2]=z.

        if (M5.getBoard() == m5::board_t::board_M5AtomS3R) {
            data.mag.x;      // mag x-axis value.
            data.mag.y;      // mag y-axis value.
            data.mag.z;      // mag z-axis value.
            data.mag.value;  // mag 3values array [0]=x / [1]=y / [2]=z.
        }

        data.value;  // all sensor 9values array [0~2]=accel / [3~5]=gyro /
                     // [6~8]=mag

        Serial.printf("ax:%f  ay:%f  az:%f\r\n", data.accel.x, data.accel.y, data.accel.z);
        Serial.printf("gx:%f  gy:%f  gz:%f\r\n", data.gyro.x, data.gyro.y, data.gyro.z);
        Serial.printf("mx:%f  my:%f  mz:%f\r\n", data.mag.x, data.mag.y, data.mag.z);

        M5.Lcd.printf("IMU:\r\n");
        M5.Lcd.printf("%0.2f %0.2f %0.2f\r\n", data.accel.x, data.accel.y, data.accel.z);
        M5.Lcd.printf("%0.2f %0.2f %0.2f\r\n", data.gyro.x, data.gyro.y, data.gyro.z);
        M5.Lcd.printf("%0.2f %0.2f %0.2f\r\n", data.mag.x, data.mag.y, data.mag.z);
    }

    delay(1000);
}
四:实物测试如下:

如需再次下载:

请长按复位按键(大约 2 秒)直到内部绿色 LED 灯亮起,便可松开,此时设备已进入下载模式,等待烧录。

可以使用软件链接串口打印输出:

02-3  实物验证.png

可以使用串口的绘图工具对传感器的数据进行分析

02-4  实物验证2.png




关键词: stack     驱动     六轴    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]