Tabla de contenido:
- Paso 1: Descripción general de BMG160:
- Paso 2: ¡¡Lo que necesitas …
- Paso 3: Conexión de hardware:
- Paso 4: Medición del giroscopio de 3 ejes con código Java:
- Paso 5: Aplicaciones:
Video: Interfaz del sensor de giroscopio de 3 ejes BMG160 con Raspberry Pi: 5 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:42
En el mundo actual, más de la mitad de los jóvenes y los niños son aficionados a los juegos y todos los que les gustan, fascinados por los aspectos técnicos de los juegos, conocen la importancia de la detección de movimiento en este ámbito. También nos sorprendió lo mismo y solo para traerlo a las placas, pensamos en trabajar en un sensor de giroscopio que pueda medir la velocidad angular de cualquier objeto. Entonces, el sensor que usamos para hacer frente a la tarea es BMG160. BMG160 es un sensor de giroscopio triaxial digital de 16 bits que puede medir la velocidad angular en tres dimensiones de habitación perpendiculares.
En este tutorial, vamos a demostrar el funcionamiento de BMG160 con Raspberry pi, utilizando Java como lenguaje de programación.
El hardware que va a necesitar para este fin es el siguiente:
1. BMG160
2. Raspberry Pi
3. Cable I2C
4. Escudo I2C para Raspberry Pi
5. Cable Ethernet
Paso 1: Descripción general de BMG160:
En primer lugar, nos gustaría familiarizarlo con las características básicas del módulo sensor que es BMG160 y el protocolo de comunicación en el que funciona.
BMG160 es básicamente un sensor de giroscopio triaxial digital de 16 bits que puede medir velocidades angulares. Es capaz de calcular velocidades angulares en tres dimensiones de habitación perpendiculares, los ejes x, y y z, y proporcionar las señales de salida correspondientes. Puede comunicarse con la placa Raspberry Pi mediante el protocolo de comunicación I2C. Este módulo en particular está diseñado para cumplir con los requisitos de aplicaciones de consumo, así como con fines industriales.
El protocolo de comunicación sobre el que trabaja el sensor es I2C. I2C significa circuito interintegrado. Es un protocolo de comunicación en el que la comunicación se realiza a través de líneas SDA (datos en serie) y SCL (reloj en serie). Permite conectar varios dispositivos al mismo tiempo. Es uno de los protocolos de comunicación más simples y eficientes.
Paso 2: ¡¡Lo que necesitas …
Los materiales que necesitamos para lograr nuestro objetivo incluyen los siguientes componentes de hardware:
1. BMG160
2. Raspberry Pi
3. Cable I2C
4. Escudo I2C para Raspberry Pi
5. Cable Ethernet
Paso 3: Conexión de hardware:
La sección de conexión de hardware básicamente explica las conexiones de cableado necesarias entre el sensor y la Raspberry Pi. 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 BMG160 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 4: Medición del giroscopio de 3 ejes con código Java:
La ventaja de usar raspberry pi es que le brinda la flexibilidad del lenguaje de programación en el que desea programar la placa para conectar el sensor con ella. Aprovechando esta ventaja de esta placa, estamos demostrando aquí su programación en Java. El código Java para BMG160 se puede descargar de nuestra comunidad github que es Dcube Store Community.
Además de para la facilidad de los usuarios, también estamos explicando el código aquí: Como primer paso de la codificación, debe descargar la biblioteca pi4j en el caso de Java, porque esta biblioteca admite las funciones utilizadas en el código. Entonces, para descargar la biblioteca puede visitar el siguiente enlace:
pi4j.com/install.html
También puede copiar el código Java de trabajo para este sensor desde aquí:
import com.pi4j.io.i2c. I2CBus;
import com.pi4j.io.i2c. I2CDevice;
import com.pi4j.io.i2c. I2CFactory;
import java.io. IOException;
clase pública BMG160
{
public static void main (String args ) arroja una excepción
{
// Crear bus I2C
Bus I2CBus = I2CFactory.getInstance (I2CBus. BUS_1);
// Obtener dispositivo I2C, la dirección BMG160 I2C es 0x68 (104)
I2CDevice device = bus.getDevice (0x68);
// Seleccionar registro de rango
// Configurar rango de escala completa, 2000 dps
device.write (0x0F, (byte) 0x80);
// Seleccionar registro de ancho de banda
// Ancho de banda 200 Hz
device.write (0x10, (byte) 0x04);
Hilo.sueño (500);
// Leer 6 bytes de datos
// xGyro lsb, xGyro msb, yGyro lsb, yGyro msb, zGyro lsb, zGyro msb
byte datos = nuevo byte [6];
device.read (0x02, datos, 0, 6);
// Convertir datos
int xGyro = ((datos [1] y 0xFF) * 256 + (datos [0] y 0xFF));
si (xGyro> 32767)
{
xGyro - = 65536;
}
int yGyro = ((datos [3] y 0xFF) * 256 + (datos [2] y 0xFF));
si (yGyro> 32767)
{
yGyro - = 65536;
}
int zGyro = ((datos [5] y 0xFF) * 256 + (datos [4] y 0xFF));
si (zGyro> 32767)
{
zGyro - = 65536;
}
// Salida de datos a la pantalla
System.out.printf ("Eje X de rotación:% d% n", xGyro);
System.out.printf ("Eje Y de rotación:% d% n", yGyro);
System.out.printf ("Eje Z de rotación:% d% n", zGyro);
}
}
La biblioteca que facilita la comunicación i2c entre el sensor y la placa es pi4j, sus diversos paquetes I2CBus, I2CDevice e I2CFactory ayudan a establecer la conexión.
importar com.pi4j.io.i2c. I2CBus; importar com.pi4j.io.i2c. I2CDevice; import com.pi4j.io.i2c. I2CFactory; import java.io. IOException;
Esta parte del código hace que el sensor mida la velocidad angular escribiendo los comandos respectivos usando la función write () y luego los datos se leen usando la función read ().
// Seleccionar registro de rango // Configurar rango de escala completa, dispositivo de 2000 dps.write (0x0F, (byte) 0x80); // Seleccionar registro de ancho de banda // Dispositivo de ancho de banda 200 Hz.write (0x10, (byte) 0x04); Hilo.sueño (500);
// Leer 6 bytes de datos
// xGyro lsb, xGyro msb, yGyro lsb, yGyro msb, zGyro lsb, zGyro msb byte data = new byte [6]; device.read (0x02, datos, 0, 6);
Los datos recibidos del sensor se convierten al formato apropiado usando lo siguiente:
int xGyro = ((datos [1] y 0xFF) * 256 + (datos [0] y 0xFF)); si (xGyro> 32767) {xGyro - = 65536; } int yGyro = ((datos [3] y 0xFF) * 256 + (datos [2] y 0xFF)); if (yGyro> 32767) {yGyro - = 65536; } int zGyro = ((datos [5] y 0xFF) * 256 + (datos [4] y 0xFF)); si (zGyro> 32767) {zGyro - = 65536; }
La salida se imprime utilizando la función System.out.println (), en el siguiente formato.
System.out.println ("Eje X de rotación:% d% n", xGyro); System.out.println ("Eje Y de rotación:% d% n", yGyro); System.out.println ("Eje Z de rotación:% d% n", zGyro);
La salida del sensor se muestra en la imagen de arriba.
Paso 5: Aplicaciones:
BMG160 tiene una variedad de aplicaciones en dispositivos como teléfonos celulares, dispositivos de interfaz hombre-máquina. Este módulo de sensor ha sido diseñado para cumplir con los requisitos de aplicaciones de consumo tales como estabilización de imagen (DSC y teléfono con cámara), juegos y dispositivos señaladores. También se emplea en sistemas que requieren reconocimiento de gestos y los sistemas utilizados en la navegación interior.
Recomendado:
Introducción a la interfaz del sensor I2C - Interfaz de su MMA8451 usando ESP32s: 8 pasos
Introducción a la interfaz del sensor I2C - Interfaz de su MMA8451 usando ESP32s: en este tutorial, aprenderá todo sobre cómo iniciar, conectar y hacer que el dispositivo I2C (acelerómetro) funcione con el controlador (Arduino, ESP32, ESP8266, ESP12 NodeMCU)
Interfaz del sensor de giroscopio de 3 ejes BMG160 con Arduino Nano: 5 pasos
Interfaz del sensor de giroscopio de 3 ejes BMG160 con Arduino Nano: en el mundo actual, más de la mitad de los jóvenes y los niños son aficionados a los juegos y todos los que les gustan, fascinados por los aspectos técnicos de los juegos, conocen la importancia de la detección de movimiento. en este dominio. También nos sorprendió lo mismo y
Interfaz del sensor de giroscopio de 3 ejes BMG160 con partículas: 5 pasos
Interfaz del sensor de giroscopio de 3 ejes BMG160 con partículas: en el mundo actual, a más de la mitad de los jóvenes y los niños les gustan los juegos y todos los que les gustan, fascinados por los aspectos técnicos de los juegos, conocen la importancia de la detección de movimiento en este dominio. También nos sorprendió lo mismo y
Calibración y prueba del módulo de sensor de 6 ejes FSP200: 6 pasos
Calibración y prueba del módulo de sensor de 6 ejes FSP200: El FSP200 es un procesador de unidad de medición inercial de 6 ejes que proporciona salida de rumbo y dirección. Realiza una fusión de acelerómetro y sensores giroscópicos para obtener un rumbo y una dirección estables y precisos. El FSP200 es adecuado para su uso en pr
Tutorial del módulo 6DOF del giroscopio de aceleración de 3 ejes MPU6050 GY-521: 4 pasos
GY-521 MPU6050 Tutorial del módulo 6DOF del giroscopio de aceleración de 3 ejes: Descripción Este módulo simple contiene todo lo necesario para interactuar con Arduino y otros controladores a través de I2C (use la biblioteca Wire Arduino) y brinda información de detección de movimiento para 3 ejes: X, Y y Z .Especificaciones Rangos del acelerómetro: ± 2, ±