Skip to content

GetSensorData

主控板通过 Grove 线连接 IMU-Module,读取出加速度值、角速度值和地磁值,并通过主控板的串口打印出这些信息。

在 vofa+ 软件上进行配置,可以对 IMU-Module 的数据进行姿态解算。

Things used in this project

Hardware components

Software apps and online services

Vofa+
用于波形与姿态解算可视化

Story

Schematics

Firmware

使用下面的工具可以直接在浏览器中烧录预编译的固件到 ESP32-C3 TFT Devkit 开发板,无需安装任何软件:

ESP32 烧录工具 (官方API)

未连接

选择固件

操作日志

使用说明和故障排查

如果出现无法烧录等情况,请参考 ESP Flasher 使用说明

Code

c++
/*
  Arduino BMM150 - Simple Magnetometer

  This example reads the magnetic field values from the BMM150
  sensor and continuously prints them to the Serial Monitor
  or Serial Plotter.

  The circuit:
  - Arduino Nano 33 BLE Sense Rev2

  created 10 Jul 2019
  by Riccardo Rizzo

  This example code is in the public domain.
*/

#include "Arduino_BMI270_BMM150.h"

void setup() {
  Serial.begin(115200);
  while (!Serial);
  Serial.println("Started");

  Wire.begin(8, 10);

  if (!IMU.begin()) {
    Serial.println("Failed to initialize IMU!");
    while (1);
  }
  Serial.print("Magnetic field sample rate = ");
  Serial.print(IMU.magneticFieldSampleRate());
  Serial.println(" Hz");
  Serial.println();
  Serial.println("Magnetic Field in uT");
  Serial.println("X\tY\tZ");
}

void loop() {

    float x, y, z;

    if (IMU.accelerationAvailable()) {
        IMU.readAcceleration(x, y, z);

        Serial.print("accel:");
        Serial.print(x);
        Serial.print(',');
        Serial.print(y);
        Serial.print(',');
        Serial.print(z);
        Serial.println();
    }

    if (IMU.gyroscopeAvailable()) {
        IMU.readGyroscope(x, y, z);

        Serial.print("gyro:");
        Serial.print(x);
        Serial.print(',');
        Serial.print(y);
        Serial.print(',');
        Serial.print(z);
        Serial.println();
    }

    if (IMU.magneticFieldAvailable()) {
        IMU.readMagneticField(x, y, z);

        Serial.print("mag:");
        Serial.print(x);
        Serial.print(',');
        Serial.print(y);
        Serial.print(',');
        Serial.print(z);
        Serial.println();
    }
    delay(500);
}