Grupo 22 – BB8 (WIP)
1. Introducción
- Capacidad de desplazamiento del robot
- Capacidad de rotar sobre su eje de la cabeza
- Capacidad de emitir ciertos sonidos
2. Esquema a realizar
- Servo de rotación continua: Usado para rotar la cabeza. Puede ser tanto de rotación continua como paso a paso según como te gustaría que moviera la cabeza el BB8. Para el segundo tipo se debería modificar el código.
- Módulo Bluetooth (HC-05): Debido al uso que se le da (de esclavo y envíos simples) valdría casi cualquier módulo como el HC-06. No se usa ninguna librería en el código al usarse directamente como puerto serie.
- Módulo MP3 (WTV020SD-16P): Cualquier módulo que reprodujera sonidos a unos altavoces con una librería que permitiera llamadas asíncronas (para poderse mover mientras suena) valdría. Se decidió por este debido a su precio aunque es algo antiguo y solo permite reproducir archivos AD4. En caso de utilizar otro se debería usar su librería y modificar las llamadas necesarias en el código.
- Altavoces; En nuestro caso para su correcta reproducción con el módulo MP3 que adquirimos fue necesaria que tuvieran 8Ω y 3W aunque se puede utilizar cualquiera que se adecue a tu módulo MP3 o si es tu caso, al amplificador que uses.
- Motor Shield Dual (VNH5019): Realmente cualquiera que sea capaz de gestionar los requerimientos de vuestro motor y con la respectiva librería para Arduino podría servir. En caso de variarla debería cambiar el código de Arduino.
- Motores: Nosotros nos decidimos por unos que permitían un máximo de 500RPM y 5 Kg de fuerza. Tener en cuenta que tiene que ir adecuado con tu Shield, el peso de los materiales que uséis y la velocidad deseada para vuestro BB8.
- Pilas; Realmente cualquier forma de alimentación es factible, el por qué elegimos ésta, podéis leerla en la parte de problemas encontrados.
Esta parte es la que podemos apreciar como una de la más complicada, ya no por tener que conseguir algo parecido a un proyecto ya existente, si no por los retos que presenta.
Para la cabeza prácticamente el diseño sería el de la foto donde:
- La «semiesfera» es al gusto del creador, en nuestro caso, de porex.
- Lo gris son estructuras de cualquier material, en nuestro caso madera.
- Lo marrón serían esferas que se deben enganchar en el material gris y tener aun así libertad de movimiento, como puedan ser desodorantes de bola para poder desplazarse cómodamente sobre el cuerpo.
- Lo azul serían imanes de neodimio.
- Los imanes superiores permitieran una unión con la cabeza.
- Los motores fueran en el nivel intermedio en la zona exterior permitiendo que su fuerza sea aplicada en un punto elevado de la esfera facilitando su rotación con el peso necesario.
- La cabeza rotara al unir el servo a los imanes (línea roja) y ser ese rectángulo con los imanes los cuales atraerían a los de la cabeza permitiendo la girar.
- Dar un nivel inferior de estabilidad y hueco suficiente en ambos niveles y en las columnas de la estructura para poder situar los componentes.
3. Presupuesto
.tg {border-collapse:collapse;border-spacing:0;border-color:#ccc;margin:0px auto;}
.tg td{font-family:Arial, sans-serif;font-size:14px;padding:10px 5px;border-style:solid;border-width:0px;overflow:hidden;word-break:normal;border-color:#ccc;color:#333;background-color:#fff;border-top-width:1px;border-bottom-width:1px;}
.tg th{font-family:Arial, sans-serif;font-size:14px;font-weight:normal;padding:10px 5px;border-style:solid;border-width:0px;overflow:hidden;word-break:normal;border-color:#ccc;color:#333;background-color:#f0f0f0;border-top-width:1px;border-bottom-width:1px;}
.tg .tg-jo0b{background-color:#f9f9f9;font-weight:bold;vertical-align:top}
.tg .tg-baqh{text-align:center;vertical-align:top}
.tg .tg-e3zv{font-weight:bold}
.tg .tg-hgcj{font-weight:bold;text-align:center}
.tg .tg-dzk6{background-color:#f9f9f9;text-align:center;vertical-align:top}
.tg .tg-9hbo{font-weight:bold;vertical-align:top}
@media screen and (max-width: 767px) {.tg {width: auto !important;}.tg col {width: auto !important;}.tg-wrap {overflow-x: auto;-webkit-overflow-scrolling: touch;margin: auto 0px;}}
Nombre | Unidades | /Unidad | Total |
---|---|---|---|
FreeArduino | 1 | 30 | 30 |
Pololu Dual VNH5019 Motor Driver Shield | 1 | 43,95 | 43,95 |
Módulo MP3 (WTV020SD-16P) | 1 | 12 | 12 |
Módulo Bluetooth (HC-05) | 1 | 5 | 5 |
Servo Motor Continuo | 1 | 5 | 5 |
Interruptor | 1 | 0,2 | 0,2 |
Protoboard | 1 | 6 | 6 |
Altavoces | 2 | 5 | 10 |
Pilas Recargables 1.2V | 24 | 1,5 | 36 |
Portapilas (6 pilas) | 4 | 2 | 8 |
19:1 Metal Gearmotor 37Dx52L mm | 2 | 21,95 | 43,9 |
12mm Hex Wheel Adapter for 6mm Shaft | 1 | 3,5 | 3,5 |
Ruedas | 1 | 13 | 13 |
Imanes neodimio | 4 | 1 | 4 |
Sprays de colores (naranja, gris y blanco) | 6 | 1,8 | 10,8 |
Bola Porexpan 30 cm | 1 | 6 | 6 |
Bola Juguete | 1 | 1 | 1 |
Pack Fibra de vidrio | 1 | 15 | 15 |
Cola Blanca | 4 | 3 | 12 |
Escayola (25kg) | 1 | 1 | 1 |
Cinta de carrocero | – | – | – |
Periódicos | – | – | – |
Maderas | – | – | – |
Desodorantes | – | – | – |
Cables | – | – | – |
Tornillos | – | – | – |
Total: | 266,35 |
Nótese que muchos de estos materiales pueden ser reciclados o sustituidos por otros de precio inferior.
4. Proceso
Ya terminado todo podemos montar la estructura final de dentro del cuerpo e ir al código y la aplicación para hacer que se mueva:
5. Problemas Encontrados
5.1. Software:
- Las librerías «Servo.h» incluida en Arduino y la de nuestro Motor Shield eran incompatibles al utilizar el mismo Timer, por lo que tuvimos que utilizar una alternativa a la librería incluida en Arduino
- Sin saber por qué, nuestro módulo Bluetooth no utilizaba los baudios por defecto, por lo que tuvimos que modificarlos manualmente
- El módulo MP3 no reproducía sonidos en MP3 por lo que tuvimos que convertirlos a AD4.
- Al utilizar inicialmente los pines 0 y 1 para la trasmisión Bluetooth había que conectar y desconectar continuamente al actualizar el código Arduino por lo que finalmente nos declaramos nuestro propio «SoftwareSerial».
- Al intentar alimentar todos los módulos (menos el Shield) y motores mediante el USB del Arduino para realizar pruebas, había problemas con la alimentación y provocaba desconexiones y conexiones continuas del Arduino por lo que teníamos que desconectar el Servo al cambiar el código.
5.2 Hardware:
- ¿Cómo cerrar una esfera dejando el interior e exterior lo más liso posible y sin engordar mucho la esfera debido a que si no los imanes de la cabeza no funcionan? Con cinta aislante, tornillos, hilo de nylon….
- Necesidad de grandes imanes debido a que los pequeños (como los que nosotros utilizamos) no tuvieron la fuerza necesaria
- ¿Cómo introducir todos los materiales por un hueco pequeño? Utilizamos el sistema «barco en botella», realizando pequeños fragmentos que uniríamos en el interior
- Al desplazarse en vez de el «hámster» interno empujar la bola escalaba por ella. Para ellos se deben incluir peso en la base y elevar esta para que el punto de «impacto» sea lo más elevado posible (para que las ruedas puedan tocar la esfera) pero además que la fuerza sea la máxima. Incluir peso también soluciona el balanceo residual al parar la esfera.
- La cabeza no vino enteramente maciza por lo que tuvimos que utilizar cola para rellenarla.
- Como alimentar el sistema. Primeramente, se nos ocurrió utilizar unas baterías pero vimos que, aunque su precio era asequible, había que utilizar aparatos externos o tener mucho cuidado para su carga y descarga por lo que nos decantamos por pilas recargables las cuales, aunque tuvimos que usar mayor cantidad, nos quitaban ese problema. 24 Pilas de 1.2V y 3000 mA para conseguir 14.4V y 6000 mA. (2×12 Pilas en serie en paralelo.
6. Futuras Mejoras
- Añadir un nuevo servo paso a paso en la unión del nivel superior al intermedio permitiendo que toda esa columna pueda desplazarse hacia a delante y hacia atrás como el BB8 autentico.
- Mejorar el código de Arduino para evitar retraso en el control.
- Programar una aplicación propia usando Josticks Virtuales para un mejor control y sea más intuitiva.
- Añadir efectos con leds.
- Añadir un segundo Arduino con los altavoces y leds dentro de la cabeza para que el sonido salga al exterior fácilmente.
7. Vídeo del estado actual
8. Anexos
- Código Arduino:https://drive.google.com/file/d/0B1Y8e-y9ceSZdHN0SVpDT19KakE/view?usp=sharing
- Aplicación Android: https://play.google.com/store/apps/details?id=braulio.calle.bluetoothRCcontroller&hl=es
- Librería Motor Driver Shield: https://github.com/pololu/dual-vnh5019-motor-shield
- Librería ServoTimer2: https://forum.pololu.com/t/fixed-version-of-the-servotimer2/6568/5
- Librería Módulo MP3: http://forum.arduino.cc/index.php?topic=117009.msg2682521#msg2682521
- Memoria (Versión PDF del post): https://drive.google.com/file/d/0B1Y8e-y9ceSZNEVzUkV3TmZDSVE/view?usp=sharing
- Presentación: https://prezi.com/63ndhfkzslqr/