Pubblicato il

Guida Arduino 10 Mems DOF IMU Sensor

Premessa: All’inizio, l’unità di misura inerziale è un dispositivo elettronico che misura e riporta la velocità, l’orientamento e le forze gravitazionali di un’imbarcazione, utilizzando una combinazione di accelerometri, giroscopi e magnetometri. Ora le IMU sono comunemente utilizzate nell’interazione uomo-computer (HCI), scopi di navigazione e tecnologia di bilanciamento utilizzati nel Segway Personal Transporter come tutti sappiamo.

Aggiornamento versione : V2.0 ha aggiornato l’IC del sensore del barometro a BMP280.

CARATTERISTICHE TECNICHE

  • Wide power input range from 3 to 5 volts
  • Low noise LDO regulator
  • Low cost IMU
  • Interface: I2C
  • M3x2 mounting holes for easily fixing in your mobile platforms,robots,HCI or UAVs
  • LED power indication
  • Integrate 10 dof sensors
  • Adxl345 accelerometer
  • ITG3200 gyro
  • HMC5883L Compass
  • BMP280 temperature & barometer sensor
  • Compact size design and easy-to-use
  • Compatible with Arduino controllers
  • Electricity gold PCB
  • Size: 26x18mm

LISTA MATERIALI

SCHEMA DI COLLEGAMENTO

CODICE DI ESEMPIO

Librerie:

  • FreeSixIMU GPLv3: dfrobot.com/image/data/SEN0140/10%20Dof%20sample%20codes.zip
  • HMC5883L GPLv3: dfrobot.com/image/data/SEN0140/10%20Dof%20sample%20codes.zip
  • DFRobot_BMP280 CC BY-SA v3.0: dfrobot.com/image/data/SEN0140/10%20Dof%20sample%20codes.zip
  • Wire LGPL: arduino.cc/en/Reference/Wire

#include <FreeSixIMU.h>
#include <FIMU_ADXL345.h>
#include <FIMU_ITG3200.h>

#include <Wire.h>

float angles[3]; // yaw pitch roll

// Set the FreeSixIMU object
FreeSixIMU sixDOF = FreeSixIMU();

void setup() {
  Serial.begin(9600);
  Wire.begin();

  delay(5);
  sixDOF.init(); //begin the IMU
  delay(5);
}

void loop() {

  sixDOF.getEuler(angles);

  Serial.print(angles[0]);
  Serial.print(" | ");
  Serial.print(angles[1]);
  Serial.print(" | ");
  Serial.println(angles[2]);

  delay(100);
}

CODICE DI ESEMPIO 2

#include <Wire.h>
#include "DFRobot_BMP280.h"

DFRobot_BMP280 bmp280;

void setup() {
  Serial.begin(9600);
  Serial.println("BMP280 demo");

  if (!bmp280.begin()) {
    Serial.println("Could not find a valid BMP280 sensor!");
    while (1);
  }
}

void loop() {
    Serial.print("Temperature = ");
    Serial.print(bmp280.readTemperatureValue());
    Serial.println(" *C");

    Serial.print("Pressure = ");
    Serial.print(bmp280.readPressureValue());
    Serial.println(" Pa");

    Serial.print("Altitude = ");
    Serial.print(bmp280.readAltitudeValue(1013.25)); // this should be adjusted to your local forcase
    Serial.println(" m");

    Serial.println();
    delay(2000);
}

Buon Progetto.