Paso 4: Preparar el código
Para utilizar este código, necesita unas librerías para el IDE de Arduino. Necesitarás las librerías PID, I2CDev y MPU6050. Estas bibliotecas fueron creadas por algunas personas inteligentes, así que asegúrese de darles las gracias. Jeff Rowberg creó las bibliotecas de MPU6050 y I2CDev. Brett Beauregard creó la biblioteca de PID. Me tomé el tiempo para recorrer los archivos de ejemplo y rúbrica para entender completamente el código y averiguar cómo funciona todo.
- Para empezar, subir estas bibliotecas en el IDE de Arduino.
- Comenzar con el MPU6050, tenemos que probar y calibrar este aparato antes de la operación.
- Para probarlo, utilice el código de ejemplo en la carpeta MPU6050 ejemplo >> MPU6050_DMP6. Este código le permitirá probar el dispositivo y verificar la operación apropiada. El código se establece para mostrar el yaw, pitch y rodillo datos a usted a través del puerto serie de Arduino.
- Una vez que la prueba es completa y exitosa, abra la carpeta de calibración MPU6050 y abra el archivo de Arduino. Este archivo se calibra el MPU6050 a su posición, asegúrese de colocarlo sobre una superficie plana. El tiempo de calibración puede tomar unos pocos minutos, si se congela a reiniciar solo. Se da desplazamiento cerca de valores que su MPU6050 para el punto de origen, el único valor que es grande es el valor del acelerómetro z debido a la gravedad. Tomar estos valores y enchúfelos en el código para la prueba crudo MPU6050_DMP6. Su lectura debe ser mucho más precisa.
- El dispositivo HC-06 puede configurarse para mostrar un nombre deseado, tener una contraseña deseada y operan a una velocidad de transmisión deseada. Para cambiar esto, use el archivo BlueTooth_Example_Code. Mira el PDF siempre, esto incluye comandos que permiten cambiar el tipo nombre y velocidad en baudios del dispositivo. Cambiar el nombre del dispositivo es opcional, pero te recomiendo cambiar la velocidad en baudios a 57600. Todos los comandos se enviará a través del puerto serial en el IDE de Arduino una vez que está conectado el HC-06 y el código es cargado y funcionando.
- La aplicación que utilicé para este proyecto se llama el "Joystick Bluetooth comandante". Esta aplicación está disponible en la app store de Google. Si usted decide utilizar cualquier otra aplicación de bluetooth, usted necesitará utilizar código diferente.
- Utilice el archivo BlueTooth_Joystick_App_Code para comprobar que están obteniendo datos de la aplicación. Debe emparejar el dispositivo HC-06 con su teléfono antes de la prueba. El código para el HC-06 probablemente será 1234 o 0000 por defecto
- Para probar los motores, utilice el archivo Motor_Code_Example. Este archivo le permitirá ejecutar los motores y determinar la más pequeña señal PWM que tendrá que empezar a girar. Afinación de los motores es necesario porque no todos los motores inician o vuelta a la misma velocidad.
Al finalizar todas las pruebas iniciales, puede mover el archivo New_BB8_Code. Tendrá que verificar las conexiones de perno, desplazamientos MPU6050 y HC-06 baudios. Una vez hecho esto, puede añadir el código y probar todo. El código está diseñado para permitir al usuario controlar la dirección que BB8 será papel manteniendo la cabeza en posición vertical. El PID tendrá que ajustarse, pero no puede ser hasta que la base está montada.
Voy a explicar las funciones del código a continuación:
- init_imu(); -Esto se utiliza para iniciar el MPU6050 y establezca la configuración ideal. Esto fue tomado del código de ejemplo MPU6050.
- motorSetup(); -Esto se utiliza para establecer todas las clavijas para el conductor del motor a las salidas.
- getValues(); -Esto se utiliza para obtener las lecturas de yaw, pitch y rodillo de la MPU6050.
- blueTooth(); -Esto se utiliza para configurar el HC-06 y recibir los datos de la aplicación en el teléfono.
- pidCompute(); -Se utiliza para ejecutar el controlador PID para sintonizar el valor deseado y producir una señal PWM para motores.
- motorControl(); Esto se utiliza para controlar BB8 en la dirección deseada y también enviar señales PWM para mantener la cabeza en la posición hacia arriba.