Inicio » Aula » DYOR PikaBot

DYOR PikaBot

En esta entrada se mostrará un robot móvil de configuración diferencial y controlado por mando ifrarrojos, cuyo diseño se basa en Pikachu.

PikaBot

Materiales y componentes

    • Arduino Nano o Arduino Uno
  • Receptor IR HX1838
  • Mando infrarrojos (cualquier mando universal de televisión es válido)
  • 2 servomotores SG90
  • 2 servomotores contínuos FS90R
  • Sensor de distancia ultrasonidos HC-SR04
  • Sensor IR TCRT5000 (opcional)
  • 1 Rueda loca
  • Cables (según el módulo de arduino seleccionado)
  • Pistola de silicona
  • Silicona
  • 2 cartulinas amarillas de tamaño A2
  • Retulador negro
  • Tijeras
  • Compás (opcional)
  • Cartón de entre 2 y 5 mm de espesor.
  • Planchas de madera de 3 mm de espesor (mirar dimensiones del cuerpo)
  • Batería de 5 V
  • Objeto relativamente pesado (en caso de que las ruedas no tengan el agarre suficiente con el suelo)
  • Cremallera
  • Grapadora
  • Pegamento de barra
  • Bridas

 

MONTAJE

Construcción de la estructura

Figura 1: vista frontal y con medidas del PikaBot

Figura 2: vista trasera del Pikabot. 14 cm de ancho del cuerpo y 23 cm de la cabeza.

Figura 3: vista de perfil del Pikabot.

 

En primer lugar, empezaremos por el cuerpo. Aprovecharemos los pliegues de la caja para tener más de una cara montada. Para enlazar unas caras con las otras haremos uso de las pestañas de las cajas que se pegarán con las otras caras con silicona o, bien, empleando la grapadora. Debemos asegurarnos de que una de las caras no se quede pegada y se pueda abrir latarealmente (será útil para la instalación de la cremallera). La cara superior del ortoedro que obtendremos deberá de estar al descubierto para poder unir la cabeza con el cuerpo fácilmente. En la cara inferior, se dejará un hueco lo suficiente grande para que pasen los cables.

En el montaje de la cabeza emplearemos la misma estrategia. Una vez montada, se dejarán o se harán dos agujeros para introducir las orejas. Se recortará un agujero con forma de rectángulo cuyas dimensiones dependerán del cuerpo. Hay que tener en cuenta que el agujero no se recortará del todo: será útil para la creación de pestañas que junte la cabeza con el cuerpo.

Figura 4: vista de la cabeza dede abajo. Agujero en marrón y amarillo más oscuro. Pestañas en marrón.

Con la obertura lateral del cuerpo, se pegarán las pestañas por dentro fijando la cabeza. Nótese que en la figura 4 se deja una cara sin pestaña. Esta corresponde a la cara de apertura del cuerpo del robot. Una vez se ha fijado la cabeza, se harán los huecos necesarios (para la cola y los servomotores de los brazos SG90). Recortados los huecos, tomaremos las medidas para su posterior recorte en la cartulina.

Según las medidas, se recortan y se pegan los fragmentos de cartulina correspondiente a cada cara con silicona. Previamente, se habrá marcado los huecos correspondientes. Con el cartón sobrante, se harán las orejas que también serán recubiertas con cartulina amarilla.

Para los ojos, haremos dos circunferencias en un folio de 33 mm de diámetro y, dentro de cada una, se hará otra de 13 mm de diámetro aproximadamente para el brillo de los ojos. Recortamos los ojos y los pintamos de negro (dejando la circunferencia interna de color blanco). Se pegan en la cara frontal de la cabeza según se observa en las fotos (a unos 5 cm del borde lateral de la cabeza y a unos  7 cm del borde superior de la cabeza, colocando cada ojo en el centro del punto especificado).

Para las mejillas, las rallas traseras y el detalle de la cola, emplearemos los colores #CE2230 (rojo) y #723523 (marrón). Estos colores serán imprimidos y empleados para hacer estos detalles (se puede usar la plantilla de la figura 5). Las mejillas tenndrán un diámetro de 36 mm aproximadamente. Pegando los detalles correspondientes, terminamos dibujando la nariz, la boca y pintando los extremos de las orejas con el retulador negro.

Figura 5: plantilla propuesta para la impresión de los colores marrón y rojo.

La cola debe tener una altura igual a la del robot. Se dibujarán dos colas en la cartulina amarila y se recortarán. Una vez hecho esto, se hace un «esqueleto» de cartón entre las dos colas de cartulina para que la cola se mantenga erguida. Se acopla la cola en el hueco y se asegura el extremo más próximo a la parte superior de la cabeza con hilos de coser que se introducirán en las esquinas.

Figura 6: detalle del hilo enganchado en la cabeza.

Los brazos se harán con un trozo de cartón que sea entre 15 y 19 centímetros de largo y se recubrirán con cartulina amarilla. Posteriormente, se fijará en el servomotor con silicona.

En el lateral abierto del cuerpo, pegaremos la cremallera, completamente separada, con silicona. Hay que asegurarse de que ningún resto de silicona entorpezca el funcionamiento. En la figura 6 se puede observar la situación de la cremallera.

 

Estructura de madera

Recortamos dos chapas de madera con las mismas dimensiones que la base del robot. Se debe de perforar una de las dos para situarla en la base y poner el cableado. Esta misma chapa se pondrá en la base del robot con silicona. Se recomienda asegurarla con bridas (haciendo cuatro perforaciones en la base).

En la otra lámina de madera fijaremos los servomotores en las partes superior izquierda y derecha (empleando silicona) y la rueda loca en la parte media inferior de la lámina, como indica la figura 7. Será necesario recortar la chapa de madera para hacer «pilares» que unan ambas chapas de madera y dejen la separación suficiente para ubicar el sensor de ultrasonidos (43 mm x 20 mm). La separación entre ambas chapas de madera será de 20 mm.

Figura 7: distribución de lso distintos componentes en la base. En negro (23.2 mm x 16.4 mm) se ubicarán los servomotores. En marrón, se indica la posición de la rueda loca. En verde, los trozos de plancha de madera.

Unidas todas las partes de PikaBot, se dispondrán los cables en el interior del cuerpo del robot.

Figura 8: detalle del interior de PikaBot sin la instalación de componentes.

 

Instalación de componentes

Las conexiones de los cables de señal de cada componente se efectuará de la siguiente manera:

  • Brazo derecho: pin digital 4
  • Brazo izquierdo: pin digital 5
  • Rueda izquierda: pin digital 6
  • Rueda derecha: pin digital 7
  • Puerto «trig» del sensor ultrasonido: pin digital 9
  • Puerto «echo» del sensor ultrasonido: pin digital 10
  • Puerto de señal del receptor IR: pin digital 11

Dentro del robot, se debe distribuir el mayor peso posible en la parte delantera puesto que así las ruedas tendrán mayor agarre con el suelo y se evitará que el robot vuelque. En mi caso, como situé la batería en la parte trasera, fue necesaria la colocación de un frasco de colonia lo suficientemente pesado.

Figura 10: detalle del interior de PikaBot.

 

CALIBRACIÓN

Obtención del código hexadecimal de cada tecla del mando

Los receptores de infrarrojos se emplean en electrodomésticos y en televisiones. Uno de los protocolos más habituales es el NEC en el que hace uso de una onda portadora de 38 kHz y hace uso de la modulación por distancia de pulsos (PDM). El protocolo envía una dirección de 8 bits y un comando de 8 bits (junto con sus respectivas señales negadas). Esto permite la comunicación con 256 dispositivos diferentes y una capacidad de 256 comandos diferentes.

Figura 11: «0» lógico y «1» lógico según el protocolo NEC.

Figura 12: ejemplo de señal en el protocolo NEC.

Antes de iniciar las pruebas, deberemos instalar la librería IRremote.h para poder emplear el módulo IR. Para identificar las teclas del mando, se empleará el código siguiente de prueba. En mi caso, identifiqué el código de las teclas 1, 2, 3, 4, 5, 6, 7, 8, 9 y 0 en un mando de un dispositivo TDT de Televés.

Esta prueba podrá realizarse según el archivo del enlace de GitHub pruebaIR.ino. Será necesario abrir el monitor serie y pulsar la tecla unas 50 veces aproximadamente. Los códigos más repetidos, serán los que corresponderán a la tecla a la que nos referimos. Asignar más de un código hexadecimal a cada tecla nos garantizará tener menos errores.

Calibraciones dinámicas del robot

En este paso, es necesario utilizar el código entero (pikabot.ino) y asegurarse de que el robot siga una trayectoria recta con el mínimo error tolerable, que los giros sean iguales de velocidad, que se cumplan los giros de 90º y que cumpla la función de siguelíneas (en caso de instalarla).

Dependiendo de los materiales empleados, la dinámica será de una manera u otra. Será necesario considerar la opción de añadir peso para mejorar la dinámica y recalibrar todos los parámetros del código para que funcione en el robot diseñado.

En caso de instalar el siguelíneas

El PikaBot que se muestra no disponde de un sensor IR para que realice la función de siguelíneas. En caso de que se quiera integrar en el robot, el sensor debe situarse en una posición relativamente alejada del robot (unos 10 cm debe de ser suficiente, por ejemplo) para que el parámetro LA (Look-Ahead) sea lo suficientemente grande para no converger demasiado rápido, dando lugar a un control muy poco estable.

 

CÓDIGO Y LIBRERÍA IRremote.h

Haz click aquí para acceder al enlace de GitHub.

 

VÍDEO DE DEMOSTRACIÓN

El vídeo muestra el funcionamiento de PikaBot. La prueba se hace con la siguiente secuencia de teclas: 1, 3, 2, 5, 4, 5, 6, 5, 7, 5, 9 y 5.

En el recorte del segundo 25, se salta a la prueba de la función de la tecla 8.