Nota

Ciao, benvenuto nella community di appassionati di SunFounder Raspberry Pi, Arduino e ESP32 su Facebook! Approfondisci le tue conoscenze su Raspberry Pi, Arduino e ESP32 insieme ad altri entusiasti.

Perché Unirsi?

  • Supporto Esperto: Risolvi i problemi post-vendita e affronta le sfide tecniche con l’aiuto della nostra community e del nostro team.

  • Impara e Condividi: Scambia consigli e tutorial per migliorare le tue competenze.

  • Anteprime Esclusive: Ottieni l’accesso anticipato agli annunci di nuovi prodotti e alle anteprime esclusive.

  • Sconti Speciali: Approfitta di sconti esclusivi sui nostri prodotti più recenti.

  • Promozioni e Giveaway Festivi: Partecipa a promozioni e giveaway durante le festività.

👉 Sei pronto a esplorare e creare con noi? Clicca su [Qui] e unisciti oggi stesso!

6.3 - Tracciamento del Movimento a 6 Assi

L’MPU-6050 è un dispositivo di tracciamento del movimento a 6 assi (combina un giroscopio a 3 assi e un accelerometro a 3 assi).

Un accelerometro è uno strumento che misura l’accelerazione propria. Ad esempio, un accelerometro a riposo sulla superficie terrestre misurerà un’accelerazione dovuta alla gravità terrestre, diretta verso l’alto (per definizione) di g ≈ 9,81 m/s².

Gli accelerometri hanno molti usi nell’industria e nella scienza. Ad esempio: sistemi di navigazione inerziale per aerei e missili, per mantenere verticali le immagini su tablet e fotocamere digitali, ecc.

I giroscopi vengono utilizzati per misurare l’orientamento e la velocità angolare di un dispositivo o la sua stabilità. Le applicazioni dei giroscopi includono sistemi anti-ribaltamento e airbag per automobili, sistemi di rilevamento del movimento per dispositivi intelligenti, sistemi di stabilizzazione dell’assetto per droni e altro ancora.

Componenti Necessari

In questo progetto, abbiamo bisogno dei seguenti componenti.

È sicuramente conveniente acquistare un intero kit, ecco il link:

Nome

ELEMENTI IN QUESTO KIT

LINK PER L’ACQUISTO

Kepler Kit

450+

Kepler Ultimate Kit

Puoi anche acquistarli separatamente dai link qui sotto.

SN

INTRODUZIONE COMPONENTE

QUANTITÀ

LINK PER L’ACQUISTO

1

Introduzione al Pico W

1

ACQUISTA

2

Cavo Micro USB

1

3

Breadboard

1

ACQUISTA

4

Cavi Jumper

Diversi

ACQUISTA

5

Modulo MPU6050

1

Schema Elettrico

sch_mpu6050_ar

Cablaggio

wiring_mpu6050_ar

Codice

Nota

  • Puoi aprire il file 6.3_6axis_motion_tracking.ino nel percorso kepler-kit-main/arduino/6.3_6axis_motion_tracking.

  • Oppure copia questo codice nell”Arduino IDE.

  • Non dimenticare di selezionare la scheda (Raspberry Pi Pico) e la porta corretta prima di cliccare sul pulsante Upload.

  • La libreria Adafruit MPU6050 è utilizzata qui, puoi installarla dal Library Manager.

    ../_images/lib_mpu6050.png

Dopo aver eseguito il programma, puoi vedere i valori dell’accelerometro a 3 assi e i valori del giroscopio a 3 assi ciclicamente nell’output. A questo punto, ruota l’MPU6050 a caso e vedrai questi valori cambiare di conseguenza. Per rendere più facile vedere i cambiamenti, puoi commentare una delle righe di stampa e concentrarti su un altro set di dati.

Come funziona?

Istanzia un oggetto MPU6050.

#include <Adafruit_MPU6050.h>
#include <Wire.h>

Adafruit_MPU6050 mpu;

Inizializza l’MPU6050 e imposta la sua precisione.

void setup(void) {
    Serial.begin(115200);
    while (!Serial)
        delay(10); // will pause Zero, Leonardo, etc until serial console opens

    Serial.println("Adafruit MPU6050 test!");

    // Try to initialize!
    if (!mpu.begin()) {
        Serial.println("Failed to find MPU6050 chip");
        while (1) {
        delay(10);
        }
    }
    Serial.println("MPU6050 Found!");

    // Set range
    mpu.setAccelerometerRange(MPU6050_RANGE_8_G);
    mpu.setGyroRange(MPU6050_RANGE_500_DEG);
    mpu.setFilterBandwidth(MPU6050_BAND_21_HZ);

    Serial.println("");
    delay(100);
}

Ottieni nuovi eventi sensore con le letture.

sensors_event_t a, g, temp;
mpu.getEvent(&a, &g, &temp);

Successivamente, sarai in grado di ottenere valori di accelerazione e velocità angolare in tempo reale nei dati a.acceleration.x, a.acceleration.y, a.acceleration.z, g.gyro.x, g.gyro.y, g.gyro.z.

Serial.print("Acceleration X: ");
Serial.print(a.acceleration.x);
Serial.print(", Y: ");
Serial.print(a.acceleration.y);
Serial.print(", Z: ");
Serial.print(a.acceleration.z);
Serial.println(" m/s^2");

Serial.print("Rotation X: ");
Serial.print(g.gyro.x);
Serial.print(", Y: ");
Serial.print(g.gyro.y);
Serial.print(", Z: ");
Serial.print(g.gyro.z);
Serial.println(" rad/s");