22576浏览
楼主: 驴友花雕

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

[复制链接]

驴友花雕  中级技神
 楼主|

发表于 2021-9-8 20:15:35

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

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

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

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-9-8 20:19:34

实验串口返回情况

【Arduino】168种传感器系模块列实验(163)---BMI160 六轴陀螺仪图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-9-8 20:25:56

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

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

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

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-9-8 20:27:58

实验串口绘图器返回情况

【Arduino】168种传感器系模块列实验(163)---BMI160 六轴陀螺仪图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-9-8 21:05:39

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

通过 setStepPowerMode 设置计步器功耗模式(stepNormalPowerMode 表示正常模式,stepLowPowerMode 表示低功耗模式)

  实验开源代码

  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. bool readStep = false;
  20. #if defined ARDUINO_AVR_UNO || defined ARDUINO_AVR_MEGA2560 || defined ARDUINO_AVR_PRO
  21. //uno和mega2560的中断号为0
  22. int pbIn = 2;
  23. #elif ARDUINO_AVR_LEONARDO
  24. //uno和leonardo的中断号为0
  25. int pbIn = 3;
  26. #else
  27. int pbIn = 13;
  28. #endif
  29. //bmi160 有两个中断接口
  30. int int1 = 1;
  31. int int2 = 2;
  32. void stepChange() {
  33.   //一旦改变了步进控制器,就可以读取该值
  34.   readStep = true;
  35. }
  36. void setup() {
  37.   Serial.begin(115200);
  38.   delay(100);
  39.   //设置并初始化 bmi160 i2c 地址
  40.   while (bmi160.I2cInit(i2c_addr) != BMI160_OK) {
  41.     Serial.println("i2c init fail");
  42.     delay(1000);
  43.   }
  44.   //将中断号设置为 int1 或 int2
  45.   if (bmi160.setInt(int1) != BMI160_OK) {
  46.     Serial.println("set interrput fail");
  47.     while (1);
  48.   }
  49.   //将 bmi160 模式设置为计步器
  50.   if (bmi160.setStepCounter() != BMI160_OK) {
  51.     Serial.println("set step fail");
  52.     while (1);
  53.   }
  54.   //设置 bmi160 电源模型(微功耗电源模式)
  55.   if (bmi160.setStepPowerMode(bmi160.stepLowPowerMode) != BMI160_OK) {
  56.     Serial.println("set setStepPowerMode fail");
  57.     while (1);
  58.   }
  59. #if defined ARDUINO_AVR_UNO || defined ARDUINO_AVR_MEGA2560 || defined ARDUINO_AVR_LEONARDO || defined ARDUINO_AVR_PRO
  60.   //将板上的引脚设置为连接到 bmi160 的 int1 或 int2
  61.   attachInterrupt(digitalPinToInterrupt(pbIn), stepChange, FALLING);
  62. #else
  63.   attachInterrupt(pbIn, stepChange, FALLING);
  64. #endif
  65.   Serial.println(pbIn);
  66. }
  67. void loop() {
  68.   if (readStep) {
  69.     uint16_t stepCounter = 0;
  70.     //从硬件 bmi160 读取计步器
  71.     if (bmi160.readStepCounter(&stepCounter) == BMI160_OK) {
  72.       Serial.print("计步器 = "); Serial.println(stepCounter);
  73.     }
  74.     readStep = false;
  75.   }
  76. }
复制代码


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-9-11 07:08:12

BMI160 6轴惯性运动传感器电原理图


【Arduino】168种传感器系模块列实验(163)---BMI160 六轴陀螺仪图1
回复

使用道具 举报

kinpy  学徒

发表于 2022-11-12 00:49:11

非常棒就是动态读取陀螺仪 x/y/z 值,没有成功复现好像是库不一样。
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-11-12 05:27:08

kinpy 发表于 2022-11-12 00:49
非常棒就是动态读取陀螺仪 x/y/z 值,没有成功复现好像是库不一样。

相关库还有不少,可以实验试试
回复

使用道具 举报

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

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail