Arduino爱好者

 找回密码
 立即注册

QQ登录

只需一步,快速开始

楼主: eagler8

[经验] 【Arduino】168种传感器系模块列实验(163)---BMI160 六轴陀螺仪

[复制链接]
 楼主| 发表于 2021-8-27 20:19 | 显示全部楼层
28.jpg
 楼主| 发表于 2021-8-27 20:28 | 显示全部楼层
本帖最后由 eagler8 于 2021-9-8 19:18 编辑

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百六十三:BMI160 6轴惯性运动传感器 16位3轴加速度+超低功耗3轴陀螺仪  I2C/SPI 14LGA

项目之五:获取陀螺仪传感器的数据

实验开源代码

  1. /*
  2.   【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3.   实验一百六十三:BMI160 6轴惯性运动传感器 16位3轴加速度+超低功耗3轴陀螺仪  I2C/SPI 14LGA
  4.   项目之五:获取陀螺仪传感器的数据
  5.   I2C地址:
  6.   0x68:将 BMI160 的 SDIO 引脚连接到 GND,即默认 I2C 地址
  7.   实验接线:
  8.   BMI160     UNO
  9.   VIN        5V
  10.   GND        GND
  11.   SCL        A5
  12.   SDA        A5
  13.   SAO        GND
  14.   INT1       D2
  15. */

  16. #include <DFRobot_BMI160.h>
  17. DFRobot_BMI160 bmi160;
  18. const int8_t i2c_addr = 0x68;

  19. void setup(){
  20.   Serial.begin(115200);
  21.   delay(100);
  22.   
  23.   //init the hardware bmin160  
  24.   if (bmi160.softReset() != BMI160_OK){
  25.     Serial.println("reset false");
  26.     while(1);
  27.   }
  28.   
  29.   //set and init the bmi160 i2c address
  30.   if (bmi160.I2cInit(i2c_addr) != BMI160_OK){
  31.     Serial.println("init false");
  32.     while(1);
  33.   }
  34. }

  35. void loop(){  
  36.   int i = 0;
  37.   int rslt;
  38.   int16_t accelGyro[6]={0};
  39.   
  40.   //get both accel and gyro data from bmi160
  41.   //parameter accelGyro is the pointer to store the data
  42.   rslt = bmi160.getAccelGyroData(accelGyro);
  43.   if(rslt == 0){
  44.     for(i=0;i<6;i++){
  45.       if (i<3){
  46.         //the first three are gyro datas
  47.         Serial.print(accelGyro[i]*3.14/180.0);Serial.print("\t");
  48.       }else{
  49.         //the following three data are accel datas
  50.         Serial.print(accelGyro[i]/16384.0);Serial.print("\t");
  51.       }
  52.     }
  53.     Serial.println();
  54.   }else{
  55.     Serial.println("err");
  56.   }
  57.   delay(100);
  58.   /*
  59.    * //only read accel data from bmi160
  60.    * int16_t onlyAccel[3]={0};
  61.    * bmi160.getAccelData(onlyAccel);
  62.    */

  63.   /*
  64.    * ////only read gyro data from bmi160
  65.    * int16_t onlyGyro[3]={0};
  66.    * bmi160.getGyroData(onlyGyro);
  67.    */
  68. }
复制代码


 楼主| 发表于 2021-8-27 20:29 | 显示全部楼层
实验串口返回情况

31.jpg
 楼主| 发表于 2021-8-27 20:32 | 显示全部楼层
实验串口绘图器返回情况

32.jpg
 楼主| 发表于 2021-8-27 20:35 | 显示全部楼层
33.jpg
 楼主| 发表于 2021-9-8 18:58 | 显示全部楼层
BMI160 传感器 API概述
体积小、功耗低的 BMI160 是一款低噪声 16 位 IMU,专为 AR 或室内导航等移动应用而设计,可提供高度准确的传感器数据和实时传感器数据。BMI160 的低电流消耗使电池驱动设备中的应用成为可能。该传感器具有可配置的片上中断引擎,可提供基于运动的手势识别和上下文感知作为始终开启的后台功能。

34.jpg

主要特征
任意运动检测(加速度计)
显着运动检测(加速度计)
步进检测器(加速度计)
敲击感应(加速度计)
方向识别(加速度计)
平面检测(加速度计)
低重力/自由落体检测(加速度计)
高 G 检测(加速度计)
慢动作警报/无动作中断(加速度计)
数据就绪检测(加速度计、陀螺仪和外部传感器)
PMU触发器(陀螺仪)
FIFO 中断((加速度计、陀螺仪和外部传感器)

目标应用
增强现实和沉浸式游戏
室内导航
3D 扫描/室内测绘
高级手势识别
沉浸式游戏
9轴运动检测
空中鼠标应用程序和指针
计步器/计步
移动应用的高级系统电源管理
相机模组的光学防抖
自由落体检测和保修记录

 楼主| 发表于 2021-9-8 19:49 | 显示全部楼层
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百六十三:BMI160 6轴惯性运动传感器 16位3轴加速度+超低功耗3轴陀螺仪  I2C/SPI 14LGA
项目之六:简易计步器

实验开源图形编程(Mind+、Mixly、编玩边学)

35.jpg

 楼主| 发表于 2021-9-8 19:52 | 显示全部楼层
实验串口返回情况

36.jpg
 楼主| 发表于 2021-9-8 20:19 | 显示全部楼层
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百六十三:BMI160 6轴惯性运动传感器 16位3轴加速度+超低功耗3轴陀螺仪  I2C/SPI 14LGA
项目之七:简易测量三轴数据

实验开源图形编程(Mind+、Mixly、编玩边学)

37.jpg

 楼主| 发表于 2021-9-8 20:20 | 显示全部楼层
实验串口返回情况

38.jpg
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino爱好者

GMT+8, 2022-12-10 00:12 , Processed in 0.071163 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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