Come usare il modulo accelerometro e giroscopio MPU-6050
Il MPU-6050 è un sensore versatile che combina un accelerometro a 3 assi e un giroscopio a 3 assi in un unico pacchetto. In questo tutorial esploreremo come interfacciare questo modulo con un Arduino per misurare l'accelerazione e la velocità angolare. Il risultato sarà un programma semplice che visualizza i dati in tempo reale provenienti dal sensore, permettendoti di monitorare sia l'accelerazione sia l'orientamento del tuo dispositivo.

Seguendo questa guida, imparerai come configurare l'hardware, collegare correttamente i componenti e scrivere il codice necessario per far funzionare l'MPU-6050. Questo ti fornirà una base per ulteriori progetti che riguardano il rilevamento del movimento e l'individuazione dell'orientamento. Per maggiore chiarezza, assicurati di consultare il video che accompagna questo tutorial (nel video a 00:00).
Hardware spiegato
Il componente principale di questo progetto è il sensore MPU-6050, che fornisce sia i dati dell'accelerometro sia quelli del giroscopio. L'accelerometro misura l'accelerazione lineare lungo gli assi X, Y e Z, mentre il giroscopio misura le velocità di rotazione attorno a quegli stessi assi. Questa combinazione rende l'MPU-6050 un'ottima scelta per applicazioni che richiedono il tracciamento del movimento.
Inoltre, il modulo utilizza un'interfaccia I2C per la comunicazione, che semplifica i collegamenti e permette di collegare più dispositivi sullo stesso bus. Il sensore è alimentato tramite il pin VCC, che tipicamente richiede una tensione compresa tra 3.3V e 5V. Il GND è collegato alla massa comune dell'Arduino.
Dettagli della scheda tecnica
| Produttore | InvenSense |
|---|---|
| Numero di parte | MPU-6050 |
| Tensione logica/IO | 3.3 - 5 V |
| Tensione di alimentazione | 3.3 - 5 V |
| Corrente di uscita (per canale) | ... |
| Corrente di picco (per canale) | ... |
| Linee guida sulla frequenza PWM | ... |
| Soglie logiche di ingresso | ... |
| Caduta di tensione / RDS(on)/ saturazione | ... |
| Limiti termici | ... |
| Pacchetto | QFN (involucro piatto quadrato senza terminali) |
| Note / varianti | ... |
- Collegare il pin VCC a 3.3V o 5V.
- Collega il pin GND a massa.
- Usa la comunicazione I2C tramite SDA (dati) e SCL (clock).
- Accertarsi che siano presenti resistenze di pull-up sulle linee SDA e SCL.
- Verificare che i livelli di tensione siano corretti per evitare di danneggiare il sensore.
Istruzioni di cablaggio

Per collegare l'MPU-6050 al tuo Arduino, inizia collegando il pin VCC dell'MPU-6050 al pin 5V dell'Arduino. Successivamente, collega il pin GND dell'MPU-6050 a uno dei pin GND dell'Arduino. Per la comunicazione I2C, collega il pin SDA dell'MPU-6050 al pin A4 dell'Arduino e il pin SCL al pin A5. Assicurati che il tuo Arduino sia impostato per utilizzare la comunicazione I2C includendo le librerie appropriate nel tuo codice.
Verifica attentamente le connessioni prima di alimentare il sistema. Se usi una breadboard, assicurati che le connessioni siano salde e che non ci siano cortocircuiti. Se il modulo non risponde come previsto, verifica il cablaggio e controlla l'indirizzo I2C dell'MPU-6050 nel tuo codice.
Esempi di codice e guida passo-passo
Il seguente frammento di codice inizializza l'MPU-6050 e inizia a leggere i dati da esso. Gli identificatori chiave includonompu6050, che è l'istanza della classe MPU6050, etimer, che viene utilizzato per controllare la temporizzazione dell'uscita dei dati.
MPU6050 mpu6050(Wire);
long timer = 0;
void setup() {
Serial.begin(9600);
Wire.begin();
mpu6050.begin();
mpu6050.calcGyroOffsets(true);
}
In questa funzione di setup, inizializziamo la comunicazione seriale e il sensore MPU-6050. Ilmpu6050.calcGyroOffsets(true)La chiamata è cruciale poiché calibra gli offset del giroscopio, garantendo letture accurate.
Nella funzione loop aggiorniamo continuamente i dati del sensore e li stampiamo sul monitor seriale. Il seguente frammento di codice mostra come leggere e stampare i dati di temperatura e di accelerazione:
if(millis() - timer > 1000){
Serial.print("temp : ");Serial.println(mpu6050.getTemp());
Serial.print("accX : ");Serial.print(mpu6050.getAccX());
Serial.print("\taccY : ");Serial.print(mpu6050.getAccY());
Serial.print("\taccZ : ");Serial.println(mpu6050.getAccZ());
}
Questo blocco verifica se è passato un secondo dall'ultima uscita. Quindi recupera i valori di temperatura e di accelerazione dal MPU-6050 e li stampa sul monitor seriale. Puoi osservare questi valori aggiornarsi in tempo reale.
Dimostrazione / Cosa aspettarsi
Una volta che tutto è collegato e il codice caricato, puoi aspettarti di vedere i dati di temperatura e accelerazione stampati nel monitor seriale ogni secondo. Se inclini o muovi l'MPU-6050, i valori di accelerazione dovrebbero cambiare di conseguenza. Tieni presente che collegamenti errati o un'alimentazione insufficiente possono portare a letture erratiche o all'assenza totale di dati (nel video a 01:30).
Cose di cui potresti avere bisogno
-
AmazonAcquista MPU-6050 da Amazonamzn.to
Risorse e riferimenti
-
EsternoSito web del produttoreinvensense.com
File📁
Librerie Arduino (zip)
-
Libreria Arduino per MPU9250
robojax-MPU9250-master.zip3.38 MB