Ka-Chowneitor
Autores
- Rafael Expósito Pérez
- Javier Pérez Peláez
- Gael Rial Costas
Introducción
El proyecto final de la asignatura de DSE del grupo 13 estudia las tecnologías bluetooth y motion control desarrollando un mando que implementa un giroscopio y un coche teledirigido controlado por éste. Ambos se conectan a través de chips bluetooth.
En cuanto a los casos de uso que puede tener dicho proyecto, se busca el entretenimiento de niños pequeños mostrando a estos al mismo tiempo el modo de empleo de tecnologías motion control las cuales están ganando gran popularidad en años recientes por su incorporación en el campo de la realidad virtual.
Así mismo, el mando está desarrollado para niños con dificultad de movilidad en las manos y no puedan jugar con mandos tradicionales con sticks. El funcionamiento es tan sencillo como calibrar el mando, manteniéndolo quieto sobre una superficie lisa, encender el coche y mover el mando en la dirección deseada para que el coche reciba la señal y avance, retroceda o gire.
Materiales utilizados y costes
La siguiente tabla engloba los materiales empleados para desarrollar el proyecto y los costes que estos acarrean:
Componente | Coste x Unidad | Cantidad |
Carcasa Makeblock | 30€ | 1 |
Arduino UNO | 20€ | 2 (1 GRATIS) |
Cableado | 0€ | 20 |
Resistencia 1 kΩ | 0€ | 2 |
Resistencia 2kΩ | 0€ | 2 |
Bluetooth HC-05 | 4€ | 2 |
Puente H L298N | 4€ | 1 |
Giroscopio L3G4200D | 5€ | 1 |
Pilas Duracel 9V | 3€ | 3 |
Motores Makeblock 6V 200rpm | 10€ | 2 |
Breadboard | 0€ | 2 |
Planificación y reparto de tareas
Durante el curso se realizaron 2 reuniones para la planificación y búsqueda de materiales para realizar el proyecto, pero debido a las problemáticas creadas por la pandemia, nos vimos obligados a trabajar aislados unos de en diferentes localizaciones durante el proceso de desarrollo por lo que se repartieron las tareas de la siguiente forma:
- Rafael Expósito se encarga de trabajar con la tecnología del giroscopio.
- Gael Rial se encarga de las comunicaciones vía bluetooth.
- Javier Pérez se encarga del montaje del puente H.
Una vez el grupo pudo reunirse tras las vacaciones navideñas, se realizó la grabación del vídeo mostrando la funcionalidad del proyecto y su montaje.
Explicación del código
Se han creado 2 proyectos diferentes: uno para el controlador y otro para el vehículo.
4.1 Proyecto del controlador
El proyecto del mando consta de 2 clases diferenciadas siendo la primera para un dispositivo genérico i2c y la segunda para el giroscopio.
En la del dispositivo genérico, se guarda la dirección del dispositivo y se implementan métodos para la lectura y escritura en los registros.
En la clase de giroscopio se presentan varias estructuras que nos proporcionan:
- Los DPS a los que va a ir el giroscopio, esto es, las actualizaciones que tendrá por segundo.
- La transmisión de datos del giroscopio.
- Una clase que nos permite crear vectores 3D.
La propia clase del giroscopio almacena la rotación, velocidad, la velocidad normalizada y dos vectores 3D que se emplean para calibrar el dispositivo, así como los DPS con los que trabaja éste.
En cuanto a las funciones se proporcionan métodos get para obtener los datos mencionados anteriormente, así como:
- Una función para leer la velocidad con la que se mueve el giroscopio.
- Una función para calibrar el dispositivo en la que se convierte la velocidad angular proporcionada por el dispositivo a radianes.
- Una función de setup para configurar el dispositivo.
- Una función para actualizar las coordenadas del giroscopio.
En el main del proyecto del mando configuramos la librería Wire de Arduino, el Serial e inicializamos y calibramos el giroscopio en el método setup().
En la función loop() actualizamos los datos del giroscopio y enviamos estos al vehículo vía bluetooth.
4.2 Proyecto del vehículo
En este proyecto también encontramos 2 clases: una clase que representa un motor conectado al puente H y una clase para éste.
En la clase del motor encontramos una función que establece la velocidad de giro de las ruedas del vehículo con una velocidad de -1024 a 1024. El signo del valor de la velocidad ajustará los pines correspondientes para hacer que el motor en el vehículo gire en un sentido o en otro.
En la clase del puente H tenemos dos funciones para asignar la velocidad y la rotación deseadas que emplearemos para el calculo de las velocidades de los dos motores del coche por separado.
Para finalizar, en el fichero main ponemos configuramos en setup() el bluetooth y pone los motores en reposo.
En el método loop() simplemente se realizan los cálculos necesarios para establecer el movimiento del vehículo a una velocidad adecuada.
Montaje del proyecto
El mando posee una carcasa la cual hemos fabricado con una caja de cartón y dos tubos de papel higiénico. El Arduino del mando viene dentro de la caja para estar protegido.
Los dispositivos bluetooth tienen seis entradas el VCC y el Ground, el Enable y el State y el Transfer y el Recieve (TX y RX). El Transfer son los datos que recibe el chip bluetooth y manda al Arduino y el Recieve son los datos que transfiere el Arduino y va a mandar por bluetooth (están inversos).
Este chip bluetooth tiene salida al serial de Arduino y la conexión bluetooth al coche se da por los chips del bluetooth siendo el máster el que está conectado al Arduino del mando y el slave el conectado al Arduino del coche. Para poder configurar los bluetooth se ha tenido que activar el Enable y poner los chips en modo monitor. Se han metido en la consola de comandos para configurarlos.
Por otro lado, el giroscopio se conecta por el bus I2C el cual nos permite conectar varios dispositivos en una misma línea, no es perfecto ya que necesitaríamos magnetómetro y acelerómetro para corregir las imperfecciones.
Cómo ya se ha recalcado, el coche se compone de otra placa de Arduino a la que se conectan el chip bluetooth slave y un puente H.
El puente H tiene 13 entradas y salidas:
- 6 de las entradas obtienen su señal de las salidas digitales 4, 5, 6, 7, 8 y 9 de Arduino. Se encargan del control de los motores siendo las 3 primeras las encargadas del primer motor y las otras 3 las del otro. 2 de las entradas controlan la dirección en la que el motor hará girar la rueda (adelante o hacia atrás) y la otra es la intensidad con la que lo hará.
- 3 se encargan de administrar la energía de los motores usando 2 para conectar una pila de 9 voltios y el sobrante conectado a la salida de 5 voltios de Arduino para administrar la lógica.
- Las entradas y salidas restantes son las conexiones a los motores.
Problemas y soluciones
El principal problema de proyecto fue la alimentación.
El coche debe proporcionar energía a los motores y al Arduino. Si se conectaban ambos dispositivos en paralelo la velocidad del motor resultaba insuficiente y la pila de 9V se gastaba muy rápido. La solución fue añadir una pila extra y separar por completo el Arduino de los motores.
Los módulos bluetooth también causaron algunos problemas: la documentación y tutoriales solo mostraban como conectar el módulo al móvil o portátil, y se necesitaba conectar dos módulos entre sí. Investigando la documentación oficial y extrayendo información de varias guías se consiguió emparejarlos.