Tabla de contenido:

Seguimiento de movimiento con MPU-6000 y Particle Photon: 4 pasos
Seguimiento de movimiento con MPU-6000 y Particle Photon: 4 pasos

Video: Seguimiento de movimiento con MPU-6000 y Particle Photon: 4 pasos

Video: Seguimiento de movimiento con MPU-6000 y Particle Photon: 4 pasos
Video: Raspberry Pi MPU-6000 6-Axis Motion Tracking Sensor Python Tutorial 2024, Noviembre
Anonim
Image
Image

MPU-6000 es un sensor de seguimiento de movimiento de 6 ejes que tiene un acelerómetro de 3 ejes y un giroscopio de 3 ejes integrados. Este sensor es capaz de realizar un seguimiento eficiente de la posición exacta y la ubicación de un objeto en el plano tridimensional. Puede emplearse en los sistemas que requieren un análisis de posición con la máxima precisión.

En este tutorial se ha ilustrado la interfaz del módulo sensor MPU-6000 con fotones de partículas. Para leer los valores de aceleración y ángulo de rotación, hemos utilizado partículas con un adaptador I2c. Este adaptador I2C hace que la conexión al módulo sensor sea fácil y más confiable.

Paso 1: Hardware necesario:

Hardware requerido
Hardware requerido
Hardware requerido
Hardware requerido
Hardware requerido
Hardware requerido

Los materiales necesarios para realizar nuestra tarea incluyen los componentes de hardware que se mencionan a continuación:

1. MPU-6000

2. Fotón de partículas

3. Cable I2C

4. Escudo I2C para fotones de partículas

Paso 2: Conexión de hardware:

Conexión de hardware
Conexión de hardware
Conexión de hardware
Conexión de hardware

La sección de conexión de hardware básicamente explica las conexiones de cableado necesarias entre el sensor y el fotón de partículas. Asegurar las conexiones correctas es la necesidad básica al trabajar en cualquier sistema para obtener la salida deseada. Entonces, las conexiones requeridas son las siguientes:

El MPU-6000 funcionará sobre I2C. Aquí está el diagrama de cableado de ejemplo, que demuestra cómo cablear cada interfaz del sensor.

Fuera de la caja, la placa está configurada para una interfaz I2C, por lo que recomendamos usar esta conexión si, por lo demás, es agnóstico. ¡Todo lo que necesitas son cuatro cables!

Solo se requieren cuatro conexiones Vcc, Gnd, SCL y pines SDA y estos se conectan con la ayuda del cable I2C.

Estas conexiones se muestran en las imágenes de arriba.

Paso 3: Código para seguimiento de movimiento:

Código para seguimiento de movimiento
Código para seguimiento de movimiento

Comencemos ahora con el código de partículas.

Mientras usamos el módulo sensor con el arduino, incluimos la biblioteca application.hy spark_wiring_i2c.h. La biblioteca "application.h" y spark_wiring_i2c.h contiene las funciones que facilitan la comunicación i2c entre el sensor y la partícula.

El código de partículas completo se proporciona a continuación para comodidad del usuario:

# include # include // MPU-6000 I2C address es 0x68 (104) #define Addr 0x68 int xGyro = 0, yGyro = 0, zGyro = 0, xAccl = 0, yAccl = 0, zAccl = 0; void setup () {// Establecer la variable Particle.variable ("i2cdevice", "MPU-6000"); Particle.variable ("xAccl", xAccl); Particle.variable ("yAccl", yAccl); Particle.variable ("zAccl", zAccl); Particle.variable ("xGyro", xGyro); Particle.variable ("yGyro", yGyro); Particle.variable ("zGyro", zGyro); // Inicializar la comunicación I2C como Master Wire.begin (); // Inicializar la comunicación en serie, configurar la velocidad en baudios = 9600 Serial.begin (9600); // Iniciar la transmisión I2C Wire.beginTransmission (Addr); // Seleccione el registro de configuración del giroscopio Wire.write (0x1B); // Rango de escala completa = 2000 dps Wire.write (0x18); // Detiene la transmisión I2C Wire.endTransmission (); // Iniciar la transmisión I2C Wire.beginTransmission (Addr); // Seleccione el registro de configuración del acelerómetro Wire.write (0x1C); // Rango de escala completa = +/- 16g Wire.write (0x18); // Detiene la transmisión I2C Wire.endTransmission (); // Iniciar la transmisión I2C Wire.beginTransmission (Addr); // Seleccione el registro de administración de energía Wire.write (0x6B); // PLL con referencia xGyro Wire.write (0x01); // Detiene la transmisión I2C Wire.endTransmission (); retraso (300); } bucle vacío () {datos int sin firmar [6]; // Iniciar la transmisión I2C Wire.beginTransmission (Addr); // Seleccionar registro de datos Wire.write (0x3B); // Detiene la transmisión I2C Wire.endTransmission (); // Solicitar 6 bytes de datos Wire.requestFrom (Addr, 6); // Leer 6 bytes de datos if (Wire.available () == 6) {data [0] = Wire.read (); datos [1] = Wire.read (); datos [2] = Wire.read (); datos [3] = Wire.read (); datos [4] = Wire.read (); datos [5] = Wire.read (); } retraso (800); // Convertir los datos xAccl = ((data [1] * 256) + data [0]); si (xAccl> 32767) {xAccl - = 65536; } yAccl = ((datos [3] * 256) + datos [2]); if (yAccl> 32767) {yAccl - = 65536; } zAccl = ((datos [5] * 256) + datos [4]); si (zAccl> 32767) {zAccl - = 65536; } retraso (800); // Iniciar la transmisión I2C Wire.beginTransmission (Addr); // Seleccionar registro de datos Wire.write (0x43); // Detiene la transmisión I2C Wire.endTransmission (); // Solicitar 6 bytes de datos Wire.requestFrom (Addr, 6); // Leer 6 bytes de datos if (Wire.available () == 6) {data [0] = Wire.read (); datos [1] = Wire.read (); datos [2] = Wire.read (); datos [3] = Wire.read (); datos [4] = Wire.read (); datos [5] = Wire.read (); } // Convertir los datos xGyro = ((data [1] * 256) + data [0]); si (xGyro> 32767) {xGyro - = 65536; } yGyro = ((datos [3] * 256) + datos [2]); if (yGyro> 32767) {yGyro - = 65536; } zGyro = ((datos [5] * 256) + datos [4]); si (zGyro> 32767) {zGyro - = 65536; } // Salida de datos al tablero Particle.publish ("Aceleración en el eje X:", String (xAccl)); retraso (1000); Particle.publish ("Aceleración en el eje Y:", String (yAccl)); retraso (1000); Particle.publish ("Aceleración en el eje Z:", String (zAccl)); retraso (1000); Particle.publish ("Eje X de rotación:", String (xGyro)); retraso (1000); Particle.publish ("Eje Y de rotación:", String (yGyro)); retraso (1000); Particle.publish ("Eje Z de rotación:", Cadena (zGyro)); retraso (1000); }

La función Particle.variable () crea las variables para almacenar la salida del sensor y la función Particle.publish () muestra la salida en el tablero del sitio.

La salida del sensor se muestra en la imagen de arriba para su referencia.

Paso 4: Aplicaciones:

Aplicaciones
Aplicaciones

MPU-6000 es un sensor de seguimiento de movimiento, que encuentra su aplicación en la interfaz de movimiento de teléfonos inteligentes y tabletas. En los teléfonos inteligentes, estos sensores se pueden emplear en aplicaciones tales como comandos de gestos para aplicaciones y control de teléfonos, juegos mejorados, realidad aumentada, captura y visualización de fotografías panorámicas y navegación para peatones y vehículos. La tecnología MotionTracking puede convertir teléfonos y tabletas en potentes dispositivos inteligentes 3D que se pueden utilizar en aplicaciones que van desde el control de la salud y el estado físico hasta servicios basados en la ubicación.

Recomendado: