.. note::
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 [|link_sf_facebook|] e unisciti oggi stesso!
.. _ar_mpu6050:
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.
* :ref:`cpn_mpu6050`
**Componenti Necessari**
In questo progetto, abbiamo bisogno dei seguenti componenti.
È sicuramente conveniente acquistare un intero kit, ecco il link:
.. list-table::
:widths: 20 20 20
:header-rows: 1
* - Nome
- ELEMENTI IN QUESTO KIT
- LINK PER L'ACQUISTO
* - Kepler Kit
- 450+
- |link_kepler_kit|
Puoi anche acquistarli separatamente dai link qui sotto.
.. list-table::
:widths: 5 20 5 20
:header-rows: 1
* - SN
- INTRODUZIONE COMPONENTE
- QUANTITÀ
- LINK PER L'ACQUISTO
* - 1
- :ref:`cpn_pico_w`
- 1
- |link_picow_buy|
* - 2
- Cavo Micro USB
- 1
-
* - 3
- :ref:`cpn_breadboard`
- 1
- |link_breadboard_buy|
* - 4
- :ref:`cpn_wire`
- Diversi
- |link_wires_buy|
* - 5
- :ref:`cpn_mpu6050`
- 1
-
**Schema Elettrico**
|sch_mpu6050_ar|
**Cablaggio**
|wiring_mpu6050_ar|
**Codice**
.. note::
* 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**.
.. image:: img/lib_mpu6050.png
.. raw:: html
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``.
.. code-block:: arduino
#include
#include
Adafruit_MPU6050 mpu;
Inizializza l'MPU6050 e imposta la sua precisione.
.. code-block:: arduino
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.
.. code-block:: arduino
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``.
.. code-block:: arduino
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");