Nota

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

Perché unirsi?

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

  • Impara & Condividi: Condividi suggerimenti e tutorial per accrescere le tue competenze.

  • Anteprime esclusive: Ottieni accesso anticipato ai nuovi prodotti e alle anteprime.

  • Sconti speciali: Approfitta di sconti esclusivi sui nostri ultimi prodotti.

  • Promozioni festive e giveaway: Partecipa a promozioni stagionali e giveaway.

👉 Pronto a esplorare e creare con noi? Clicca [qui] e unisciti subito!

Lezione 05: Modulo Giroscopio e Accelerometro (MPU6050)

In questa lezione imparerai a utilizzare il Raspberry Pi Pico W con il modulo MPU6050, che integra un giroscopio e un accelerometro. Scoprirai come collegare il sensore al Pico W e leggere i dati relativi all’accelerazione e alla rotazione utilizzando MicroPython. La lezione ti guiderà nella scrittura di uno script per visualizzare continuamente i valori X, Y e Z di accelerometro e giroscopio.

Componenti necessari

Per questo progetto, abbiamo bisogno dei seguenti componenti.

È decisamente comodo acquistare un kit completo. Ecco il link:

Nome

ELEMENTI IN QUESTO KIT

LINK

Kit Sensori Universali per Maker

94

Universal Maker Sensor Kit

Puoi anche acquistarli separatamente dai link sottostanti.

Introduzione ai Componenti

Link per l’acquisto

Raspberry Pi Pico W

ACQUISTA

Modulo Giroscopio & Accelerometro (MPU6050)

ACQUISTA

Breadboard

ACQUISTA

Cablaggio

../_images/Lesson_05_mpu6050_circuit_bb.png

Codice

Nota

  • Apri il file 05_mpu6050_module.py nel percorso universal-maker-sensor-kit-main/pico/Lesson_05_MPU6050_Module oppure copia questo codice in Thonny, poi clicca su «Run Current Script» o premi F5 per eseguirlo. Per tutorial dettagliati, fai riferimento a Apri ed Esegui Codice Direttamente.

  • Per il corretto funzionamento sono necessari i file imu.py e vector3d.py. Verifica che siano stati caricati su Pico W. Consulta il tutorial dettagliato in Caricare le Librerie su Pico.

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

# Importa le librerie
from imu import MPU6050
from machine import I2C, Pin
import time

# Inizializza I2C per MPU6050
i2c = I2C(1, sda=Pin(20), scl=Pin(21), freq=400000)  # Bus I2C 1, SDA pin 20, SCL pin 21, 400kHz

# Crea oggetto MPU6050
mpu = MPU6050(i2c)

# Ciclo principale per leggere e stampare i dati del sensore
while True:
    # Stampa i dati dell'accelerometro (x, y, z)
    print("-" * 50)
    print("x: %s, y: %s, z: %s" % (mpu.accel.x, mpu.accel.y, mpu.accel.z))
    time.sleep(0.1)

    # Stampa i dati del giroscopio (x, y, z)
    print("X: %s, Y: %s, Y: %s" % (mpu.gyro.x, mpu.gyro.y, mpu.gyro.z))
    time.sleep(0.1)

    # Ritardo tra le letture
    time.sleep(0.5)

Analisi del Codice

  1. Importazione delle Librerie e Inizializzazione I2C

    Il codice inizia importando le librerie necessarie. La libreria imu viene utilizzata per leggere i dati dal sensore MPU6050, mentre machine consente il controllo delle funzioni hardware del Raspberry Pi Pico W. La comunicazione I2C è configurata usando i pin SDA e SCL dedicati.

    Per maggiori informazioni sulla libreria imu, visita micropython-IMU/micropython-mpu9x50.

    from imu import MPU6050
    from machine import I2C, Pin
    import time
    
    i2c = I2C(1, sda=Pin(20), scl=Pin(21), freq=400000)
    
  2. Creazione dell’Oggetto MPU6050

    Viene creato un oggetto MPU6050 passando l’interfaccia I2C inizializzata. Questo oggetto consente l’accesso ai dati del sensore.

    mpu = MPU6050(i2c)
    
  3. Lettura e Stampa dei Dati del Sensore in un Ciclo

    Il codice entra quindi in un ciclo infinito dove legge e stampa continuamente i dati di accelerometro e giroscopio. Il comando time.sleep viene usato per introdurre un ritardo tra le letture successive.

    while True:
        print("-" * 50)
        print("x: %s, y: %s, z: %s" % (mpu.accel.x, mpu.accel.y, mpu.accel.z))
        time.sleep(0.1)
        print("X: %s, Y: %s, Y: %s" % (mpu.gyro.x, mpu.gyro.y, mpu.gyro.z))
        time.sleep(0.1)
        time.sleep(0.5)