如何将TinyPICO与LSM9DS1 IMU连接并通过串口监视器显示数据?
TinyPICO与LSM9DS1 I2C连接及数据读取指导
一、物理连接确认(I2C模式)
TinyPICO基于ESP32,默认I2C总线引脚为:
- SDA: GPIO21
- SCL: GPIO22
LSM9DS1的I2C对应连接引脚:
- 3.3V → TinyPICO的3.3V引脚(绝对不能接5V,LSM9DS1为3.3V器件)
- GND → TinyPICO的GND引脚
- SDA → TinyPICO的GPIO21
- SCL → TinyPICO的GPIO22
- SDO_XL(加速度计/陀螺仪地址选择)→ GND(默认地址0x6B,简化调试)
- SDO_G(磁力计地址选择)→ GND(默认地址0x1E)
二、使用SparkFun LSM9DS1库读取数据
1. 安装库
打开Arduino IDE,进入「库管理器」,搜索SparkFun LSM9DS1 IMU并完成安装。
2. 示例代码
#include <SparkFunLSM9DS1.h> // 使用默认I2C地址初始化传感器对象 LSM9DS1 imu; void setup() { // 初始化串口,波特率115200 Serial.begin(115200); while (!Serial); // 等待USB串口连接完成 // 初始化传感器 if (!imu.begin()) { Serial.println("传感器初始化失败,请检查连接!"); while (1); // 初始化失败则暂停程序 } // 配置传感器量程(可按需调整) imu.setAccelScale(ACCEL_SCALE_2G); imu.setGyroScale(GYRO_SCALE_245DPS); imu.setMagScale(MAG_SCALE_4GAUSS); } void loop() { // 检查是否有新的传感器数据 if (imu.accelAvailable() && imu.gyroAvailable() && imu.magAvailable()) { // 读取传感器原始数据 imu.readAccel(); imu.readGyro(); imu.readMag(); // 打印转换后的加速度计数据(单位:g) Serial.print("加速度计: "); Serial.print(imu.calcAccel(imu.ax)); Serial.print(", "); Serial.print(imu.calcAccel(imu.ay)); Serial.print(", "); Serial.println(imu.calcAccel(imu.az)); // 打印转换后的陀螺仪数据(单位:dps) Serial.print("陀螺仪: "); Serial.print(imu.calcGyro(imu.gx)); Serial.print(", "); Serial.print(imu.calcGyro(imu.gy)); Serial.print(", "); Serial.println(imu.calcGyro(imu.gz)); // 打印转换后的磁力计数据(单位:gauss) Serial.print("磁力计: "); Serial.print(imu.calcMag(imu.mx)); Serial.print(", "); Serial.print(imu.calcMag(imu.my)); Serial.print(", "); Serial.println(imu.calcMag(imu.mz)); Serial.println("---------------------------"); delay(500); // 每500ms更新一次数据 } }
3. 调试步骤
- 将代码上传到TinyPICO开发板
- 打开Arduino串口监视器,设置波特率为
115200 - 若串口输出传感器数据,说明连接与代码正常;若提示初始化失败,检查接线是否牢固、引脚是否正确,或确认SDO_XL/SDO_G的接线是否与代码中地址匹配
内容的提问来源于stack exchange,提问作者AMINE
相关产品推荐
相关产品推荐

