【Follow me第二季第4期】IMU 传感器
# 【Follow me第二季第4期】IMU 传感器IMU,即惯性测量单元(Inertial Measurement Unit),是一种用于测量和报告物体的三个基本线性运动(加速度)和三个基本角运动(角速度)的电子设备。
IMU 原理是采用惯性定律实现的。
IMU 通常包括一组加速度计和陀螺仪,他们是惯性系统的核心部件,是影响惯性系统性能的主要因素。
## 加速度计
加速度计是一种用于测量加速度的机电设备。
这些力可能是静态的,例如重力的连续力,或者像许多移动设备一样,动态的,用于感应运动或振动。
插图从左至右分别展示了上下、左右、前后加速度感知的情况。
快速移动开发板可在串口监视器中观察到 x, y, z 三个方向的数值曲线发生变化。
### 代码
```c++
#include <Arduino_LSM6DSOX.h>
void setup() {
Serial.begin(9600);
while (!Serial);
if (!IMU.begin()) {
Serial.println("Failed to initialize IMU!");
while (1);
}
Serial.print("Accelerometer sample rate = ");
Serial.print(IMU.accelerationSampleRate());
Serial.println(" Hz");
Serial.println();
Serial.println("Acceleration in g's");
Serial.println("X\tY\tZ");
}
void loop() {
float x, y, z;
if (IMU.accelerationAvailable()) {
IMU.readAcceleration(x, y, z);
Serial.print(x);
Serial.print('\t');
Serial.print(y);
Serial.print('\t');
Serial.println(z);
}
}
```
#### 流程图
### 效果
### 应用
#### 跌落检测
从实验结果可以看出,当开发板发生剧烈晃动时,其加速度发生明显改变,通过设定阈值,可以判断是否发生碰撞或跌落。
#### 步数检测
结合人体行走或奔跑时的曲线姿态,制定相应的步态检测方案,如设定曲线抖动间隔、抖动幅值,对可能的走路、跳跃、奔跑、慢跑等多场景状态进行反馈,实现步数统计。
## 陀螺仪
陀螺仪传感器是一种可以测量和保持物体的方向和角速度的设备。
陀螺仪比加速度计更先进,因为它们可以测量物体的倾斜和横向,而加速度计只能测量其线性运动。
陀螺仪传感器也称为“角速率传感器”或“角速度传感器”。角速度以 `度/秒` 为单位,是物体**单位时间内旋转角度的变化**。
插图从左至右分别描述了绕 z 轴、绕 x 轴、绕 y 轴旋转的情况。
旋转开发板可在串口监视器中观察到 x, y, z 三个数值曲线的变化。
### 代码
```c++
#include <Arduino_LSM6DSOX.h>
void setup() {
Serial.begin(9600);
while (!Serial);
if (!IMU.begin()) {
Serial.println("Failed to initialize IMU!");
while (1);
}
Serial.print("Gyroscope sample rate = ");
Serial.print(IMU.gyroscopeSampleRate());
Serial.println(" Hz");
Serial.println();
Serial.println("Gyroscope in degrees/second");
Serial.println("X\tY\tZ");
}
void loop() {
float x, y, z;
if (IMU.gyroscopeAvailable()) {
IMU.readGyroscope(x, y, z);
Serial.print(x);
Serial.print('\t');
Serial.print(y);
Serial.print('\t');
Serial.println(z);
}
}
```
#### 流程图
### 效果
### 应用
飞机俯仰角变化,游戏模拟器,游戏手柄等
## 温度计
温度会影响 IMU 采样数据的稳定性,因此 IMU 传感器中包含高精度温度传感器,用来对温漂进行校正。
**温度漂移** TAR(Temperature Accelerometer Random Walk)**:**
- 描述IMU在温度变化时性能的稳定性。温度漂移小的IMU在不同环境条件下能够提供更一致的性能。
- 单位:$$m/s^2/\sqrt{Hz}/^\circ C$$
### 代码
```c++
#include <Arduino_LSM6DSOX.h>
void setup()
{
Serial.begin(9600);
while (!Serial);
if (!IMU.begin())
{
Serial.println("Failed to initialize IMU!");
while (1);
}
}
void loop()
{
if (IMU.temperatureAvailable())
{
int temperature_int = 0;
float temperature_float = 0;
IMU.readTemperature(temperature_int);
IMU.readTemperatureFloat(temperature_float);
Serial.print("LSM6DSOX Temperature = ");
Serial.print(temperature_int);
Serial.print(" (");
Serial.print(temperature_float);
Serial.print(")");
Serial.println(" °C");
}
}
```
### 效果
### 应用
手势识别、手势控制、温漂校准等。
## Arduino Cloud
若使用 (https://app.arduino.cc/) 编译代码,则首先需要对开发板进行固件升级
若开发板出现问题需要重置或初始化,也可采用 Firmware Updater 对开发板进行重置。
注意该升级过程需要时间较长,五分钟左右,当固件下载进度条走完后,需要保持连接,等待窗口显示 Successful 字样时表明升级完成。之后下载并安装 Arduino Cloud Agent 可成功连接 Arduino Cloud . gtq 发表于 2024-12-3 16:02
哇塞,学到啦,超感谢!多多积累经验哈,盼着有那么一天能派上用场呢。
<p>这款开发板的板载传感器较多,文中提到的 IMU 传感器在智能手机、手表、手环等可穿戴设备中应用较多,得益于在保持精度的前提下器件微型化技术的更新,因此还是有很多可以拓展的应用场景,如步数统计、姿态检测、速度监测等。</p>
<p>大佬,流程图用啥软件画</p>
慕容雪花 发表于 2024-12-4 16:56
大佬,流程图用啥软件画
<p>PowerPoint <img height="28" src="https://bbs.eeworld.com.cn/static/editor/plugins/hkemoji/sticker/facebook/smiling-face-with-open-mouth-and-cold-sweat_1f605.png" width="28" /></p>
<p> </p>
页:
[1]