Nota

Ciao, benvenuto nella Community di SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts su Facebook! Approfondisci le tue conoscenze su Raspberry Pi, Arduino ed ESP32 insieme ad altri appassionati.

Perché Unirsi?

  • Supporto da Esperti: Risolvi i problemi post-vendita e 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 accesso anticipato agli annunci di nuovi prodotti e anteprime.

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

  • Promozioni Festive e Giveaway: Partecipa a giveaway e promozioni festive.

👉 Pronto a esplorare e creare con noi? Clicca [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, verso l’alto[3] (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 le immagini su tablet e fotocamere digitali verticali, ecc.

I giroscopi vengono utilizzati per misurare l’orientamento e la velocità angolare di un dispositivo o per il mantenimento. 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 kit completo, ecco il link:

Nome

ELEMENTI IN QUESTO KIT

LINK

Kepler Kit

450+

Kepler Ultimate Kit

Puoi anche acquistarli separatamente dai link sottostanti.

SN

COMPONENTE

QUANTITÀ

LINK

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

Collegamenti

wiring_mpu6050

Codice

Nota

  • Apri il file 6.3_6axis_motion_tracking.py nel percorso kepler-kit-main/micropython o copia questo codice in Thonny, poi clicca su «Esegui Script Corrente» o semplicemente premi F5 per eseguirlo.

  • Non dimenticare di selezionare l’interprete «MicroPython (Raspberry Pi Pico)» nell’angolo in basso a destra.

  • Per tutorial dettagliati, fai riferimento a Aprire ed Eseguire Codice Direttamente.

  • Qui è necessario utilizzare imu.py e vector3d.py, controlla se sono stati caricati su Pico W, per un tutorial dettagliato fai riferimento a 1.4 Caricare le Librerie su Pico.

from imu import MPU6050
from machine import I2C, Pin
import time

i2c = I2C(1, sda=Pin(6), scl=Pin(7), freq=400000)
mpu = MPU6050(i2c)

while True:
    print("x: %s, y: %s, z: %s"%(mpu.accel.x, mpu.accel.y, mpu.accel.z))
    time.sleep(0.5)
    print("A: %s, B: %s, Y: %s"%(mpu.gyro.x, mpu.gyro.y, mpu.gyro.z))
    time.sleep(0.5)

Dopo l’esecuzione del programma, potrai vedere i valori dell’accelerometro a 3 assi e del giroscopio a 3 assi alternarsi nell’output. A questo punto, ruotando l’MPU6050, vedrai che questi valori cambieranno di conseguenza. Per rendere più facile la visualizzazione delle variazioni, puoi commentare una delle linee di stampa e concentrarti su un altro set di dati.

L’unità di misura dei valori di accelerazione è m/s², mentre l’unità dei valori del giroscopio è °/s.

Come funziona?

Nella libreria imu, abbiamo integrato le funzioni rilevanti nella classe MPU6050. MPU6050 è un modulo I2C e richiede un set di pin I2C da definire per l’inizializzazione.

from imu import MPU6050
from machine import I2C, Pin

i2c = I2C(1, sda=Pin(6), scl=Pin(7), freq=400000)
mpu = MPU6050(i2c)

Successivamente, sarai in grado di ottenere i valori in tempo reale di accelerazione e velocità angolare in mpu.accel.x, mpu.accel.y, mpu.accel.z, mpu.gyro.x, mpu.gyro.y, mpu.gyro.z.

while True:
    print("x: %s, y: %s, z: %s"%(mpu.accel.x, mpu.accel.y, mpu.accel.z))
    time.sleep(0.5)
    print("A: %s, B: %s, Y: %s"%(mpu.gyro.x, mpu.gyro.y, mpu.gyro.z))
    time.sleep(0.5)