风筝
发表于: 2022-7-18 22:45:26 | 显示全部楼层

惯性测量单元在无人机和机器人中是不可忽却的一部分,它帮助设备识别方向,变得更加智能。本文将使用Arduino开发板通过I2C方式连接BMI088惯性测量单元模块,实现获取加速度值和角速度值。


YBX-BMI088模块

YBX-BMI088(I2C)模块是博根工作室推出的扩展板,基于博世传感器的BMI088芯片。该传感器是一款六轴传感器模块,内部带有一个16位的加速度传感器模块和一个16位的陀螺仪模块。

该模块加速度传感器的I2C地址是0x19,陀螺仪的I2C地址是0x69。


硬件连接

Arduino开发板通过I2C连接到BMI088模块,以下是硬件连接原理图:

Arduino UNO连接BMI088(I2C)模块的示意图.jpg

BMI088模块的VCC连接到Arduino开发板的5V,GND连接到Arduino的GND。BMI088模块的SDA和SCL引脚分别连接到Arduino的I2C引脚(A4和A5)。硬件连接完成后如下图所示:

硬件连接.jpg


安装库文件

在进行编程之前,我们需要安装Bolder Flight Systems的BMI088库,可以在Github上面下载,下载链接:https://github.com/bolderflight/BMI088。也可以在库管理器中搜索BMI088,找到该库文件,然后进行安装。


代码

本文使用的是库文件中是Basic_I2C示例,代码如下:

  1. #include "BMI088.h"

  2. /* accel object */
  3. Bmi088Accel accel(Wire,0x19);
  4. /* gyro object */
  5. Bmi088Gyro gyro(Wire,0x69);

  6. void setup()
  7. {
  8.   int status;
  9.   /* USB Serial to print data */
  10.   Serial.begin(115200);
  11.   while(!Serial) {}
  12.   /* start the sensors */
  13.   status = accel.begin();
  14.   if (status < 0) {
  15.     Serial.println("Accel Initialization Error");
  16.     Serial.println(status);
  17.     while (1) {}
  18.   }
  19.   status = gyro.begin();
  20.   if (status < 0) {
  21.     Serial.println("Gyro Initialization Error");
  22.     Serial.println(status);
  23.     while (1) {}
  24.   }
  25. }

  26. void loop()
  27. {
  28.   /* read the accel */
  29.   accel.readSensor();
  30.   /* read the gyro */
  31.   gyro.readSensor();
  32.   /* print the data */
  33.   Serial.print(accel.getAccelX_mss());
  34.   Serial.print("\t");
  35.   Serial.print(accel.getAccelY_mss());
  36.   Serial.print("\t");
  37.   Serial.print(accel.getAccelZ_mss());
  38.   Serial.print("\t");
  39.   Serial.print(gyro.getGyroX_rads());
  40.   Serial.print("\t");
  41.   Serial.print(gyro.getGyroY_rads());
  42.   Serial.print("\t");
  43.   Serial.print(gyro.getGyroZ_rads());
  44.   Serial.print("\t");
  45.   Serial.print(accel.getTemperature_C());
  46.   Serial.print("\n");
  47.   /* delay to help with printing */
  48.   delay(20);
  49. }
复制代码

编译并将代码上传直Arudino开发板。连接开发板至计算机。


运行测试结果

打开串口监视器,查看Arduino开发板的输出结果。旋转模块,并观察输出数值的变化。

串口输出.jpg

跳转到指定楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 700 | 回复: 1487



手机版|

GMT+8, 2024-10-9 04:55 , Processed in 0.044187 second(s), 6 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表