.. 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