使用IMU在NanoC上实现数据采集与可视化
一、LSM6DS3TR传感器介绍
LSM6DS3TR是一款集成了3D数字加速度计和3D数字陀螺仪的传感器,适用于运动检测和姿态识别等应用。
测量加速度
LSM6DS3TR-C有一个片上加速度计,可以在 ±2g、±4g、±8g 和 ±16g 四个可编程满量程范围内测量加速度。
测量角速度
MPU6050 有一个片上陀螺仪,可以在 ±125°/s ±250°/s、±500°/s、±1000°/s 和 ±2000°/s 的四个可编程满量程范围内测量角度旋转。
本文将介绍如何在NanoC开发板上使用LSM6DS3TR传感器,并通过串口绘图仪对采集到的六轴数据进行可视化处理。
连接方式 (如需外接)
将LSM6DS3TR传感器模块与NanoC连接如下:
LSM6DS3TR引脚 | NanoC引脚 |
VCC | 5V |
GND | GND |
SDA | A4 |
SCL | A5 |
二、安装库
在Arduino IDE中,需要安装SparkFun LSM6DS3
库以便于与LSM6DS3TR传感器进行通信。请按照以下步骤安装库:
- 打开Arduino IDE;
- 点击菜单栏的
工具
> 管理库
;
- 在库管理器中搜索
SparkFun LSM6DS3
;
- 找到库后,点击
安装
。
三、示例代码
以下是一个简单的Arduino代码示例,用于读取LSM6DS3TR传感器的数据并通过串口发送到计算机:
#include <Wire.h> // 引入Wire库,用于I2C通信
#include <SparkFunLSM6DS3.h> // 引入SparkFun LSM6DS3库,用于与传感器交互
// 创建LSM6DS3对象,使用I2C模式,默认地址为0x6B
LSM6DS3 myIMU(I2C_MODE, 0x6B); // I2C模式,默认地址为0x6B
void setup() {
// 初始化串口通信,波特率为115200
Serial.begin(115200);
while (!Serial) {
; // 等待串口连接,确保串口可用
}
Serial.println("LSM6DS3TR Test"); // 输出测试信息
// 初始化LSM6DS3传感器
if (myIMU.begin() != 0) {
Serial.println("Failed to initialize LSM6DS3. Check connections.");
while (1); // 如果初始化失败,进入死循环
}
Serial.println("LSM6DS3 Initialized Successfully!"); // 输出初始化成功信息
}
void loop() {
// 读取加速度计数据
float accelX = myIMU.readFloatAccelX(); // 读取X轴加速度
float accelY = myIMU.readFloatAccelY(); // 读取Y轴加速度
float accelZ = myIMU.readFloatAccelZ(); // 读取Z轴加速度
// 读取陀螺仪数据
float gyroX = myIMU.readFloatGyroX(); // 读取X轴角速度
float gyroY = myIMU.readFloatGyroY(); // 读取Y轴角速度
float gyroZ = myIMU.readFloatGyroZ(); // 读取Z轴角速度
// 将数据格式化为串口绘图仪可解析的格式
// 每行输出加速度计和陀螺仪的所有数据,用逗号分隔
Serial.print(accelX, 3); // 输出X轴加速度,保留3位小数
Serial.print(",");
Serial.print(accelY, 3); // 输出Y轴加速度,保留3位小数
Serial.print(",");
Serial.print(accelZ, 3); // 输出Z轴加速度,保留3位小数
Serial.print(",");
Serial.print(gyroX, 3); // 输出X轴角速度,保留3位小数
Serial.print(",");
Serial.print(gyroY, 3); // 输出Y轴角速度,保留3位小数
Serial.print(",");
Serial.println(gyroZ, 3); // 输出Z轴角速度,保留3位小数并换行
// 延迟50ms,控制数据输出频率
delay(50);
}
如果编译运行后遇到以下报错,你需要手动修改 SparkFun LSM6DS3 库的源码:
步骤如下:
找到文件:
c:\Users\你的用户名\Documents\Arduino\libraries\SparkFun_LSM6DS3_Breakout\src\SparkFunLSM6DS3.cpp
用记事本打开.cpp
文件找到以下代码(大约在第78行):
将 MSB_FIRST 替换为 MSBFIRST,然后保存文件。
四、数据可视化
- 成功编译上传上述代码后,打开Arduino IDE中的串口监视器(工具 > 串口监视器)并设置波特率为115200;
观察串口监视器中输出的加速度和角速度数据。
- 接着打开串口绘图仪(工具 > 串口绘图仪),确保串口绘图仪的波特率设置与串口监视器一致。
可以看到实时的加速度和角速度数据曲线。