Nota

Ciao, benvenuto nella comunità di appassionati di SunFounder Raspberry Pi, Arduino e ESP32 su Facebook! Approfondisci Raspberry Pi, Arduino ed ESP32 insieme ad altri appassionati.

Perché unirti a noi?

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

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

  • Anteprime esclusive: Accedi in anteprima agli annunci di nuovi prodotti e agli sneak peek.

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

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

👉 Pronto per esplorare e creare con noi? Clicca [Qui] e unisciti oggi stesso!

MPU6050

Panoramica

In questo tutorial, imparerai a interfacciare il modulo IMU GY-87 con un Arduino Uno, concentrandoti sul sensore MPU6050. Tratteremo l’inizializzazione del MPU6050 e la visualizzazione dei dati dell’accelerometro, giroscopio e temperatura sul Monitor Seriale. Questa lezione è essenziale per progetti che richiedono il rilevamento del movimento e della temperatura, come robotica, dispositivi controllati da gesti e installazioni artistiche interattive.

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

Elite Explorer Kit

300+

Elite Explorer Kit

Puoi anche acquistarli separatamente dai link qui sotto.

INTRODUZIONE AI COMPONENTI

LINK PER L’ACQUISTO

Arduino Uno R4 WiFi

-

Cavi Jumper

ACQUISTA

Modulo IMU GY-87

-

Collegamenti

../_images/09-gy87_bb1.png

Schema Elettrico

../_images/09_basic_gy87_schematic.png

Codice

Nota

  • Puoi aprire il file 09-gy87_mpu6050.ino dal percorso elite-explorer-kit-main\basic_project\09-gy87_mpu6050 direttamente.

  • Oppure copia questo codice nell’IDE di Arduino.

Nota

Per installare la libreria, usa il Library Manager di Arduino e cerca «Adafruit MPU6050» e installala.

Analisi del Codice

  1. Includi Librerie

    Le librerie Adafruit_MPU6050, Adafruit_Sensor e Wire sono incluse per l’interfacciamento e la comunicazione del sensore.

    #include <Adafruit_MPU6050.h>
    #include <Adafruit_Sensor.h>
    #include <Wire.h>
    
  2. Inizializza Oggetto Sensore

    Viene creato un oggetto della classe Adafruit_MPU6050 per rappresentare il sensore MPU6050.

    Adafruit_MPU6050 mpu;
    
  3. Funzione di Setup

    Inizializza la comunicazione seriale e chiama la funzione per inizializzare il sensore MPU6050.

    void setup() {
      Serial.begin(9600);
      initializeMPU6050();
    }
    
  4. Funzione di Loop

    Chiama ripetutamente la funzione per stampare i dati del MPU6050 con un ritardo di 500 millisecondi tra ogni chiamata.

    void loop() {
      printMPU6050();
      delay(500);
    }
    
  5. Funzione di Inizializzazione del MPU6050

    Controlla se il MPU6050 è collegato, imposta i range di accelerometro e giroscopio, e configura la larghezza di banda del filtro.

    void initializeMPU6050() {
      // Controlla se il sensore MPU6050 è rilevato
      if (!mpu.begin()) {
        Serial.println("Failed to find MPU6050 chip");
        while (1)
          ;  // Blocca se il sensore non è trovato
      }
      Serial.println("MPU6050 Found!");
    
      // imposta il range dell'accelerometro a +-8G
      mpu.setAccelerometerRange(MPU6050_RANGE_8_G);
    
      // imposta il range del giroscopio a +- 500 deg/s
      mpu.setGyroRange(MPU6050_RANGE_500_DEG);
    
      // imposta la larghezza di banda del filtro a 21 Hz
      mpu.setFilterBandwidth(MPU6050_BAND_21_HZ);
    
      Serial.println("");
      delay(100);
    }
    
  6. Funzione per Stampare i Dati del MPU6050

    Legge e stampa i dati di accelerazione, giroscopio e temperatura dal MPU6050 sul Monitor Seriale.

    void printMPU6050() {
    
      Serial.println();
      Serial.println("MPU6050 ------------");
    
      /* Ottieni nuovi eventi del sensore con le letture */
      sensors_event_t a, g, temp;
      mpu.getEvent(&a, &g, &temp);
    
      /* Stampa i valori */
      Serial.print("Accelerazione 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");
    
      Serial.print("Temperature: ");
      Serial.print(temp.temperature);
      Serial.println(" degC");
    
      Serial.println("MPU6050 ------------");
      Serial.println();
    }