ESP8266-Arduino编程实例-BMI160惯性测量传感器驱动

BMI160惯性测量传感器驱动

1、BMI160介绍

BMI160 是一种高度集成的低功耗惯性测量单元 (IMU),可提供精确的加速度和角速率(陀螺仪)测量。

BMI160 集成:

  • 16位数字,三轴加速度计
  • 16位数字,三轴陀螺仪

在这里插入图片描述

BMI160特性:

  • 高性能加速度计和陀螺仪(硬件同步)

  • 极低功耗:typ.925µA(加速度计和陀螺仪全速运行)

  • Android Lollipop 兼容:运动和计步器/计步器(每个 5µA)

  • 非常小的 2.5x3.0mm^2封装,高度 0.83mm

  • 内置电源管理单元 (PMU) 用于高级电源管理

  • 陀螺仪快速启动模式省电

  • 宽电源范围:1.7V … 3.6V

  • 可分配 1024 字节的 FIFO 缓冲区(能够处理外部传感器数据)

  • 用于增强自主运动检测的集成中断

  • 灵活的数字主接口,可通过 I2C 或 SPI 连接到主机

  • 用于 OIS 应用的附加二级高速接口

  • 能够处理外部传感器数据(例如 Bosch Sensortec 的地磁或气压传感器)

  • 可编程测量范围:

    • 加速计:± 2 g, ± 4 g, ± 8 g, ± 16 g
    • 陀螺仪:± 125°/s, ± 250°/s, ± 500°/s, ± 1000°/s, ± 2000°/s
  • 校正灵敏度:

    • 加速计:

    ±2g: 16384LSB/g
    ±4g: 8192LSB/g
    ±8g: 4096LSB/g
    ±16g: 2048LSB/g

    • 陀螺仪:

    ±125°/s: 262.4 LSB/°/s
    ±250°/s: 131.2 LSB/°/s
    ±500°/s: 65.6 LSB/°/s
    ±1000°/s: 32.8 LSB/°/s
    ±2000°/s: 16.4 LSB/°/s

  • 零重力偏移:

    • 加速计:±40mg (G): ± 10°/s

典型应用

  • 增强现实
  • 室内导航
  • 3D扫描/室内测绘
  • 高级手势识别
  • 身临其境的游戏
  • 9轴运动检测
  • 空中鼠标应用程序和指针
  • 计步器/计步
  • 用于移动应用的高级系统电源管理
  • 相机模块的光学图像稳定
  • 自由落体检测和保修记录

2、硬件准备

  • ESP8266 NodeMCU开发板一块
  • BMI160传感器模块一个
  • 面板板一个
  • 杜邦线若干
  • 数据线一条

硬件接线如下:

传感器引脚 ESP8266开发板引脚
Vin 5v
Gnd Gnd
SCL D1
SDA D2

3、软件准备

  • Arduino IDE或VSCode + PlatformIO

在前面的文章中,对如何搭建ESP8266开发环境做了详细的介绍,请参考:

ESP8266 NodeMCU的引脚介绍在前面的文章中做了详细的介绍,请参考:

4、代码实现

本次实例使用的BMI160驱动库如下:

1)导入依赖库头文件

1
2
3
4
5
#include <BMI160Gen.h>

const int select_pin = 10;
const int i2c_addr = 0x69;

2)设备初始化

1
2
3
4
5
6
7
8
9
10
 
void setup() {
// 初始化串口
Serial.begin(9600);
while (!Serial);

// BMI160初始化
BMI160.begin(BMI160GenClass::I2C_MODE, i2c_addr);
}

3)数据采集

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void loop() {
int gx, gy, gz; // raw gyro values

// read raw gyro measurements from device
BMI160.readGyro(gx, gy, gz);

// display tab-separated gyro x/y/z values
Serial.print("g:\t");
Serial.print(gx);
Serial.print("\t");
Serial.print(gy);
Serial.print("\t");
Serial.print(gz);
Serial.println();

delay(500);
}

文章来源: https://iotsmart.blog.csdn.net/article/details/126436769