.. note::
¡Hola! Bienvenido a la Comunidad de Entusiastas de SunFounder Raspberry Pi, Arduino y ESP32 en Facebook. Sumérgete más en el mundo de Raspberry Pi, Arduino y ESP32 junto con otros entusiastas.
**¿Por qué unirse?**
- **Soporte Experto**: Resuelve problemas postventa y desafíos técnicos con la ayuda de nuestra comunidad y equipo.
- **Aprende y Comparte**: Intercambia consejos y tutoriales para mejorar tus habilidades.
- **Avances Exclusivos**: Obtén acceso anticipado a nuevos anuncios de productos y adelantos.
- **Descuentos Especiales**: Disfruta de descuentos exclusivos en nuestros productos más recientes.
- **Promociones Festivas y Sorteos**: Participa en sorteos y promociones festivas.
👉 ¿Listo para explorar y crear con nosotros? Haz clic en [|link_sf_facebook|] y únete hoy mismo.
.. _2.2.9_js:
2.2.9 Módulo MPU6050
==========================
Introducción
----------------
El MPU-6050 es el primer y único dispositivo de seguimiento de movimiento
de 6 ejes del mundo (Giroscopio de 3 ejes y Acelerómetro de 3 ejes) diseñado
para teléfonos inteligentes, tabletas y sensores portátiles que tienen estas
características, incluyendo los requisitos de bajo consumo, bajo costo y alto rendimiento.
En este experimento, usaremos I2C para obtener los valores del sensor de
aceleración de tres ejes y el giroscopio de tres ejes del MPU6050 y mostrarlos
en la pantalla.
' '
Componentes Necesarios
--------------------------
En este proyecto, necesitamos los siguientes componentes.
.. image:: ../img/list_2.2.6.png
Es definitivamente conveniente comprar un kit completo, aquí tienes el enlace:
.. list-table::
:widths: 20 20 20
:header-rows: 1
* - Nombre
- ARTÍCULOS EN ESTE KIT
- ENLACE
* - Kit Raphael
- 337
- |link_Raphael_kit|
También puedes comprarlos por separado en los siguientes enlaces.
.. list-table::
:widths: 30 20
:header-rows: 1
* - INTRODUCCIÓN AL COMPONENTE
- ENLACE DE COMPRA
* - :ref:`cpn_gpio_board`
- |link_gpio_board_buy|
* - :ref:`cpn_breadboard`
- |link_breadboard_buy|
* - :ref:`cpn_wires`
- |link_wires_buy|
* - :ref:`cpn_mpu6050`
- |link_mpu6050_buy|
Diagrama Esquemático
------------------------
El MPU6050 se comunica con el microcontrolador a través de la
interfaz del bus I2C. Los pines SDA1 y SCL1 deben conectarse al pin correspondiente.
.. image:: ../img/image330.png
Procedimientos Experimentales
----------------------------------
**Paso 1:** Construye el circuito.
.. image:: ../img/image227.png
**Paso 2:** Configura I2C (ver Apéndice :ref:`i2c_config`. Si ya has configurado I2C,
omite este paso).
**Paso 3:** Ve a la carpeta del código.
.. raw:: html
.. code-block::
cd ~/raphael-kit/nodejs/
**Paso 4:** Instala las dependencias.
.. raw:: html
.. code-block::
sudo npm install mpu6050-gyro
**Paso 5:** Ejecuta el código.
.. raw:: html
.. code-block::
sudo node mpu6050_module.js
Una vez ejecutado el código, se imprimirá en la pantalla el ángulo de
desviación de los ejes x e y, así como la aceleración y la velocidad
angular en cada eje leídos por el MPU6050 después de ser calculados.
**Código**
.. 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();
}
**Explicación del Código**
.. 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 );
Importa el módulo ``mpu6050-gyro``, determina la dirección del MPU6050 y el bus, y crea el objeto gyro,
lo que facilita llamar a las funciones encapsuladas en el módulo.
.. note::
Sobre este módulo, por favor refiérase a: 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);
El módulo encapsula tres funciones disponibles:
``gyro.get_gyro_xyz()``: Devuelve un objeto JSON con los datos brutos x, y, z del giroscopio.
``gyro.get_accel_xyz()``: Devuelve un objeto JSON con los datos brutos x, y, z del acelerómetro.
``gyro.get_roll_pitch(gyro_xyz, accel_xyz)``: Devuelve un objeto JSON con el ángulo de balanceo e inclinación en grados.
Imagen del Fenómeno
------------------------
.. image:: ../img/image228.jpeg