- Componentes requeridos:
- Sensor giroscópico MPU6050:
- Descripción:
- Diagrama de circuito y explicación:
- Configuración de Raspberry Pi para el sensor Gyro MPU6050:
- Explicación de programación:
El sensor MPU6050 tiene muchas funciones en un solo chip. Consiste en un acelerómetro MEMS, un giroscopio MEMS y un sensor de temperatura. Este módulo es muy preciso al convertir valores analógicos a digitales porque tiene un hardware convertidor de analógico a digital de 16 bits para cada canal. Este módulo es capaz de capturar canales x, y, z al mismo tiempo. Tiene una interfaz I2C para comunicarse con el controlador de host. Este módulo MPU6050 es un chip compacto que tiene acelerómetro y giroscopio. Este es un dispositivo muy útil para muchas aplicaciones como drones, robots, sensores de movimiento. También se llama giroscopio o acelerómetro de triple eje.
Hoy, en este artículo, vamos a conectar este MPU6050 con Raspberry Pi y mostrar los valores sobre LCD 16x2.
Componentes requeridos:
- Frambuesa pi
- MPU-6050
- BOTE 10K
- Cable pasa corriente
- Tablero de circuitos
- Fuente de alimentación
Sensor giroscópico MPU6050:
MPU-6050 es un giroscopio y acelerómetro de 8 pines y 6 ejes en un solo chip. Este módulo funciona en la comunicación serie I2C de forma predeterminada, pero se puede configurar para la interfaz SPI configurándolo en el registro. Para I2C, tiene líneas SDA y SCL. Casi todos los pines son multifuncionales, pero aquí solo procedemos con los pines del modo I2C.
Configuración de pines:
Vcc: este pin se utiliza para alimentar el módulo MPU6050 con respecto a tierra
GND: este es un pin de tierra
SDA: - El pin SDA se utiliza para datos entre el controlador y el módulo mpu6050
SCL: el pin SCL se utiliza para la entrada de reloj
XDA: - Este es el sensor I2C SDA Línea de datos para configurar y leer desde sensores externos ((opcional) no se usa en nuestro caso)
XCL: - Esta es la línea de reloj I2C SCL del sensor para configurar y leer desde sensores externos ((opcional) no se usa en nuestro caso)
ADO: - Dirección de esclavo I2C LSB (no aplicable en nuestro caso)
INT: - Pin de interrupción para indicación de datos listos.
Anteriormente hemos interconectado MPU6050 con Arduino.
Descripción:
En este artículo, mostramos lecturas de temperatura, giroscopio y acelerómetro en una pantalla LCD usando MPU6050 con Raspberry Pi. Si es nuevo en Raspberry Pi, consulte nuestra sección de tutoriales de Raspberry Pi y aprenda a comenzar con Raspberry Pi.
En este proyecto, primero mostramos el valor de temperatura en la pantalla LCD y después de un tiempo mostramos los valores del giroscopio y luego, después de un tiempo, tenemos lecturas del acelerómetro como se muestra en las imágenes a continuación:
Diagrama de circuito y explicación:
El diagrama de circuito, para la interfaz MPU6050 con Raspberry Pi, es muy simple, aquí hemos utilizado una pantalla LCD y MPU6050. Se utiliza un potenciómetro de 10k para controlar el brillo de la pantalla LCD. En conexión con MPU6050, hemos realizado 4 conexiones en las que hemos conectado la fuente de alimentación de 3.3v y tierra del MPU6050 a los 3.3v y tierra de Raspberry Pi. Los pines SCL y SDA del MPU6050 están conectados con el pin físico 3 (GPIO2) y el pin 5 (GPIO3) de Raspberry. Los LCD's RS, RW y EN están conectados directamente a GPIO18 y 23 de raspberry pi. El pin de datos está conectado directamente al número de pin digital GPIO24, GPIO25, GPIO8 y GPIO7. Obtenga más información sobre la interfaz de LCD con Raspberry Pi aquí.
Configuración de Raspberry Pi para el sensor Gyro MPU6050:
Antes de comenzar a programar, necesitamos habilitar i2c de Raspberry Pi usando el método dado:
Paso 1: habilite la comunicación I2C
Antes de instalar la biblioteca Adafruit SSD1306, debemos habilitar la comunicación I2C en Raspberry Pi.
Para hacer este tipo en la consola Raspberry Pi:
sudo raspi -config
Y luego aparecerá una pantalla azul. Ahora seleccione la opción de interfaz
Después de esto, necesitamos seleccionar I2C
Después de esto, debemos seleccionar sí y presionar enter y luego aceptar
Después de esto, necesitamos reiniciar raspberry pi emitiendo el siguiente comando:
reiniciar sodo
Paso 2: instale python-pip y la biblioteca GPIO
sudo apt-get install build-essential python-dev python-pip
Después de esto, necesitamos instalar la biblioteca GPIO de raspberry pi
sudo pip instala RPi.GPIO
Paso 3: instale la biblioteca smbus
Finalmente, necesitamos instalar la biblioteca smbus en Raspberry Pi usando el comando dado:
sudo apt-get install python-smbus
Paso 4: Instale la biblioteca MPU6050
Después de esto, necesitamos instalar la biblioteca MPU6050 usando el comando dado
sudo pip instalar mpu6050
Ahora podemos encontrar códigos de ejemplo en los ejemplos. El usuario puede probar ese código subiéndolo directamente a la Raspberry Pi o personalizarlo según los requisitos. Aquí hemos mostrado los valores de los ejes X, Y y Z del MPU6050 en una pantalla LCD de 16x2. Puede encontrar el código Python completo al final del tutorial.
Explicación de programación:
El código completo de Python se proporciona al final, aquí estamos explicando algunas partes importantes del código.
En el programa Python, hemos importado algunas bibliotecas necesarias como time, smbus y GPIO.
importar smbus importar tiempo importar RPi.GPIO como gpio
Después de esto, necesitamos tomar alguna dirección de registro para configurar MPU6050 y obtener valores de la misma. También hemos tomado algunas variables para calibrar e inicializar el bus para I2C.
PWR_M = 0x6B DIV = 0x19 CONFIG = 0x1A GYRO_CONFIG = 0x1B INT_EN = 0x38 ACCEL_X = 0x3B ACCEL_Y = 0x3D ACCEL_Z = 0x3F GYRO_X = 0x43 GYRO_Y = 0x45 GYRO_Dirección = 0x41 AxCal = 0 AyCal = 0 AzCal = 0 GxCal = 0 GyCal = 0 GzCal = 0
A continuación, hemos escrito algunas funciones de conducción 16x2LCD como def begin (), def cmd (CH), escritura def (CH), def impresión (str), def claro (), etc . Puede verificar aún más la Interfaz de LCD con Raspberry Pi.
Después de esto, necesitamos inicializar el módulo MPU6050
def InitMPU (): bus.write_byte_data (Device_Address, DIV, 7) bus.write_byte_data (Device_Address, PWR_M, 1) bus.write_byte_data (Device_Address, CONFIG, 0) bus.write_byte_byte_data (Device_AddressONFIGta_Dirección, GYRO), INT_EN, 1) tiempo.sueño (1)
Después de esto, necesitamos escribir algunas funciones para leer los valores del MPU6050 y mostrarlos en la pantalla LCD. La función dada se usa para leer datos de MPU6050
def readMPU (addr): high = bus.read_byte_data (Device_Address, addr) low = bus.read_byte_data (Device_Address, addr + 1) value = ((high << 8) - low) if (value> 32768): value = value - 65536 valor de retorno
La función dada se utiliza para leer los datos del acelerómetro y del medidor de giroscopio
def accel (): x = readMPU (ACCEL_X) y = readMPU (ACCEL_Y) z = readMPU (ACCEL_Z) Ax = (x / 16384.0-AxCal) Ay = (y / 16384.0-AyCal) Az = (z / 16384.0-AzCal) #print "X =" + str (Ax) display (Ax, Ay, Az) time.sleep (.01) def gyro (): global GxCal global GyCal global GzCal x = readMPU (GYRO_X) y = readMPU (GYRO_Y) z = readMPU (GYRO_Z) Gx = x / 131.0 - GxCal Gy = y / 131.0 - GyCal Gz = z / 131.0 - GzCal #print "X =" + str (Gx) display (Gx, Gy, Gz) time.sleep (. 01)
Después de esto, hemos escrito una función de lectura de temperatura.
def temp (): tempRow = readMPU (TEMP) tempC = (tempRow / 340.0) + 36.53 tempC = "%. 2f"% tempC print tempC setCursor (0,0) Print ("Temp:") Print (str (tempC)) tiempo.sueño (.2)
La función def calibrate () se usa para calibrar el MPU6050 y la función def display () se usa para mostrar los valores en la pantalla LCD. Compruebe estas funciones en el código completo que se proporciona a continuación.
Después de esto, hemos comenzado la pantalla LCD, initialize y calibrar el MPU6050 y luego en el tiempo de bucle que hemos llamado todo el los tres conjunto de valores de MPU- temperatura, acelerómetro y el giroscopio y les mostró más de LCD.
empezar(); Print ("Interfaz MPU6050") setCursor (0,1) Print ("Circuit Digest") time.sleep (2) InitMPU () calibrate () while 1: InitMPU () clear () for i in range (20): temp () clear () Print ("Accel") time.sleep (1) para i en el rango (30): accel () clear () Print ("Gyro") time.sleep (1) para i en el rango (30): giroscopio ()
El giroscopio MPU6050 y el acelerómetro se utilizan para detectar la posición y orientación de cualquier dispositivo. Gyro utiliza la gravedad de la tierra para determinar las posiciones de los ejes x, y y z y el acelerómetro detecta según la tasa de cambio de movimiento. Ya usamos el acelerómetro con Arduino en muchos de nuestros proyectos como:
- Robot controlado por gestos manuales basado en acelerómetro
- Sistema de alerta de accidentes de vehículos basado en Arduino
- Alarma del detector de terremotos usando Arduino