.. note::
Bonjour et bienvenue dans la Communauté Facebook des passionnés de Raspberry Pi, Arduino et ESP32 de SunFounder ! Plongez plus profondément dans l'univers des Raspberry Pi, Arduino et ESP32 avec d'autres passionnés.
**Pourquoi rejoindre ?**
- **Support d'experts** : Résolvez les problèmes après-vente et les défis techniques avec l'aide de notre communauté et de notre équipe.
- **Apprendre et partager** : Échangez des astuces et des tutoriels pour améliorer vos compétences.
- **Aperçus exclusifs** : Accédez en avant-première aux annonces de nouveaux produits et aux aperçus.
- **Réductions spéciales** : Profitez de réductions exclusives sur nos produits les plus récents.
- **Promotions festives et cadeaux** : Participez à des cadeaux et des promotions de vacances.
👉 Prêt à explorer et à créer avec nous ? Cliquez [|link_sf_facebook|] et rejoignez-nous aujourd'hui !
.. _2.2.9_js:
2.2.9 Module MPU6050
=======================
Introduction
----------------
Le MPU-6050 est le premier et unique dispositif de suivi de mouvement à 6 axes au monde
(gyroscope à 3 axes et accéléromètre à 3 axes) conçu pour les smartphones, les tablettes
et les capteurs portables. Il possède des caractéristiques telles que la faible consommation
d'énergie, le faible coût et les performances élevées.
Dans cette expérience, nous utiliserons l'I2C pour obtenir les valeurs du capteur d'accélération
à trois axes et du gyroscope à trois axes du MPU6050 et les afficher à l'écran.
Composants nécessaires
--------------------------------
Pour ce projet, nous avons besoin des composants suivants.
.. image:: ../img/list_2.2.6.png
Il est vraiment pratique d'acheter un kit complet, voici le lien :
.. list-table::
:widths: 20 20 20
:header-rows: 1
* - Nom
- ARTICLES DANS CE KIT
- LIEN
* - Kit Raphael
- 337
- |link_Raphael_kit|
Vous pouvez également les acheter séparément à partir des liens ci-dessous.
.. list-table::
:widths: 30 20
:header-rows: 1
* - INTRODUCTION DU COMPOSANT
- LIEN D'ACHAT
* - :ref:`cpn_gpio_extension_board`
- |link_gpio_board_buy|
* - :ref:`cpn_breadboard`
- |link_breadboard_buy|
* - :ref:`cpn_wires`
- |link_wires_buy|
* - :ref:`cpn_mpu6050`
- |link_mpu6050_buy|
Schéma de connexion
--------------------------
Le MPU6050 communique avec le microcontrôleur via l'interface de bus I2C. Les broches SDA1 et
SCL1 doivent être connectées aux broches correspondantes.
.. image:: ../img/image330.png
Procédures expérimentales
--------------------------
**Étape 1 :** Construire le circuit.
.. image:: ../img/image227.png
**Étape 2 :** Configurer l'I2C (voir l'Annexe :ref:`i2c_config`. Si vous avez déjà configuré l'I2C, passez cette étape.)
**Étape 3 :** Aller dans le dossier du code.
.. raw:: html
.. code-block::
cd ~/raphael-kit/nodejs/
**Étape 4 :** Installer les dépendances.
.. raw:: html
.. code-block::
sudo npm install mpu6050-gyro
**Étape 5 :** Exécuter le code.
.. raw:: html
.. code-block::
sudo node mpu6050_module.js
Lorsque le code est exécuté, l'angle de déflexion des axes x et y, ainsi que l'accélération et la
vitesse angulaire sur chaque axe lues par le MPU6050 seront imprimés à l'écran après calcul.
**Code**
.. code-block:: js
var gyro = require("mpu6050-gyro");
var address = 0x68; //MPU6050 address
var bus = 1; //i2c bus used
var gyro = new gyro( bus,address );
async function update_telemetry() {
var gyro_xyz = gyro.get_gyro_xyz();
var accel_xyz = gyro.get_accel_xyz();
var gyro_data = {
gyro_xyz: gyro_xyz,
accel_xyz: accel_xyz,
rollpitch: gyro.get_roll_pitch( gyro_xyz, accel_xyz )
}
console.log(gyro_data);
setTimeout(update_telemetry, 500);
}
if ( gyro ) {
update_telemetry();
}
**Explication du code**
.. code-block:: js
var gyro = require("mpu6050-gyro");
var address = 0x68; //MPU6050 address
var bus = 1; //i2c bus used
var gyro = new gyro( bus,address );
Importer le module ``mpu6050-gyro``, déterminer l'adresse du MPU6050 et le bus de création de
l'objet gyro. Cela permet d'appeler facilement les fonctions encapsulées dans le module.
.. note::
Pour plus de détails sur ce module, veuillez consulter : https://www.npmjs.com/package/mpu6050-gyro
.. code-block:: js
var gyro_xyz = gyro.get_gyro_xyz();
var accel_xyz = gyro.get_accel_xyz();
var gyro_data = {
gyro_xyz: gyro_xyz,
accel_xyz: accel_xyz,
rollpitch: gyro.get_roll_pitch( gyro_xyz, accel_xyz )
}
console.log(gyro_data);
setTimeout(update_telemetry, 500);
Le module encapsule trois fonctions disponibles :
``gyro.get_gyro_xyz()`` : Renvoie un objet JSON avec les données brutes x, y, z du gyroscope.
``gyro.get_accel_xyz()`` : Renvoie un objet JSON avec les données brutes x, y, z de l'accéléromètre.
``gyro.get_roll_pitch(gyro_xyz, accel_xyz)`` : Renvoie un objet JSON avec le roulis et le tangage en degrés.
Image du phénomène
------------------
.. image:: ../img/image228.jpeg