Cotrol IR Robosapien. Hackeando un Robosapiens Version 1
Después de haberme pillado mi primer juguete robot para estudiarlo, un Robosapiens de segunda mano por wallapop. Este me llegó con un defecto inesperado. el mando no funcionaba!.
La idea inicial era pasárselo a peque de la casa y estudiarlo para preparar un clon o similar. Al final, se ha convertido en un reto para “devolverle vida”.
Tras visitar cientos de webs sobre el robot robosapiens, en donde apenas había contenido, y los artículos estaban a medio terminar en su explicación de como hackear Robosapiens. He recopilado información suficiente para lograr el primer objetivo: Controlar el robot sin entrar a tocar la electrónica.
Esto pasa por entender el funcionamiento del mando IR e intentar reproducir su funcionamiento.
Hay un truco brillante para controlar estos modelos (V1) http://playground.arduino.cc/Main/RoboSapienIR pero también significa que tienes que arruinar tu soldador haciendo un agujero en el cuerpo del robot para colgarle una mochila.
Como referencia ha de tomarse el trabajo de Ken Shirriff http://www.righto.com/2009/08/multi-protocol-infrared-remote-library.html pero este está pensado para la transmisión de códigos IR para televisores no para los robots, aún que las ultimas librerías ya incluyen el nombre “RobotIrRemote”.
Modificando los ficheros de las librerías de la versión 1.0.0 del IRRemote en cuestión, en la página https://cae2100.wordpress.com/2014/01/15/robosapienwowwee-ir-arduino-library/ consiguieron crear un comando específico (irsend.sendRSV1) para el control del robot a través del Arduino (Version 1, 2 y resto de robots sapiens).
Este comando aparece en algunas páginas, pero el código suministrado siempre estaba incompleto, no funcionaba o simplemente no explicaban que debía convertirse el código hexadecimal a decimal, antes de transmitirlo.
En su primera versión (modificación) solo podían manejar el envío de códigos de 8 bits (un byte) (irsend.sendRSV1), pero los productos V2 y otros wowwee usan códigos de 12 bits, por lo que desarrollaron el comando para manejo de las siguientes versiones (irsend.sendRSV2). Los códigos nuevos robots wowwee IR (infrarrojos) utilizan el mismo tipo de datos que se enviaban antes, los mismos códigos de 8 bits, pero utilizan un código identificador de 4 bits que hace que ese control remoto específico solo funcione en ese robot.
Aquí hay una lista de todos los comandos para un grupo de robots wowwee:
Códigos de Robosapien V1:
http://www.aibohack.com/robosap/ir_codes.htm
Robosapien V2 y otros robots wowwee:
http://www.aibohack.com/robosap/ir_codes_v2.htm
En la página V2, el 3xx es el 0011, también conocido como el código de identificación del robot. Para cambiar a otro robot, simplemente cambia el 3 a cualquier robot que esté tratando de controlar.
Para reproducir el proyecto, puedes descargar ya la librería modificada aquí:
https://drive.google.com/file/d/0BwYG1PFb3ZByaTAxMlJZS2pIM1E/edit?usp=sharing
Enlace recogido de la página https://cae2100.wordpress.com/2014/01/15/robosapienwowwee-ir-arduino-library/
También tienes una copia en el repositorio: https://github.com/pesadillo/robosapiensv1/
Una vez instalada en las librerías, es momento del código (Probado en Arduino 1.8 con Arduino UNO):
/* * CONTROL REMOTO DESDE PC PARA ROBOSAPIENS V1 * Version del codigo 1.0 * * Based on IRSend demo from ken Shirriffs library - this sends simple commands to a RoboSapien V1 using and IR Transmitter with Arduino * Based on https://daverobertson63.wordpress.com/2013/05/05/updated-robosapien-ir-control-arduino/ * * La historia: * Despues de haber conseguido por wallapop un Robosapiens v 1.0, me encontre que su mando estaba estropeado. Trasteando por Internet, me he encontrado * cientos de ejemplos con códigos a medias, o sin explicar completamente. Me decidí a entrar de lleno en la programación y control de este robot * tan facil a asequible de conseguir ahora y facilitar el acceso a la documentación a todos los seguidores de la web www.pesadillo.com * * * De interés: * La libreria a utilizar es IRRemote V 1.0.0 (modificada) que he incluido desde el apartado Programa/Incluir Libreria/Añadir libreria ZIP * Esta libreria puedes descargarla desde https://drive.google.com/file/d/0BwYG1PFb3ZByaTAxMlJZS2pIM1E/edit?usp=sharing * que he encontrado en la pagina https://cae2100.wordpress.com/2014/01/15/robosapienwowwee-ir-arduino-library/ y dedonde he conseguido parte del codigo * Si ya tienes una libreria mas actualizada instalada, puedes escoger la version activa en el apartado Programa/Incluir Libreria/Gestionar Libreria/IRRemote * Selecciona la version 1.0.0 y funcionará a la primera * * The circuit: * IR LED - LED emisor en pin 3 controlado por 2n2222A con sus respectivas resistencias. * * Revisa el articulo publicado en http://www.pesadillo.com/pesadillo/?p=11092 * * created 09/05/2019 * by pesadillo <http://www.pesadillo.com> * This example code is in the public domain. */ /* * Lista de comandos disponibles: * Fuente : https://daverobertson63.wordpress.com/2013/05/05/updated-robosapien-ir-control-arduino/ * Botón Color mando Función Pinzas Codigo arduino * 12 rojo Girar a la derecha 1 128 * 1 rojo Brazo derecho arriba 2 129 * 4 rojo Brazo derecho hacia fuera 2 130 * 5 rojo Inclinar cuerpo derecho 1 131 * 2 rojo Brazo derecho abajo 2 132 * 3 rojo Brazo derecho encogido 2 133 * 11 rojo Caminar hacia adelante 2 134 * 15 rojo Caminar hacia atrás 2 135 * 14 rojo Girar a la izquierda 1 136 * 6 rojo Brazo izquierdo arriba 2 137 * 9 rojo Brazo izquierdo hacia fuera 2 138 * 10 rojo Inclinar cuerpo derecho 1 139 * 7 rojo Brazo izquierdo hacia abajo 2 140 * 8 rojo Brazo izquierdo encogido 2 141 * 13 rojo Detener 1 142 * 19 rojo Programa de Comando Maestro 1 144 * 20 rojo Programa de juego 1 145 * 16 rojo Programa de sensor derecho 1 146 * 18 rojo Programa de sensor izquierdo 1 147 * 17 rojo Programa de sensor sonoro 1 148 * 12 Verde Paso a la derecha 1 160 * 1 Verde Golpe derecho 1 161 * 4 Verde Lanzamiento diestro 1 162 * 5 Verde Dormir 1 163 * 2 Verde Recolección de la mano derecha 1 164 * 3 Verde Inclinarse hacia atrás 1 165 * 11 Verde Paso adelante 1 166 * 15 Verde Paso hacia atras 1 167 * 14 Verde Paso a la izquierda 1 168 * 6 Verde Golpe izquierdo 1 169 * 9 Verde Tiro de la mano izquierda 1 170 * 10 Verde Escucha 1 171 * 7 Verde Recogida de la mano izquierda 1 172 * 8 Verde Inclinación hacia delante 1 173 * 13 Verde Reiniciar 1 174 * 19 Verde Programa de Comando Maestro 1 176 * 20 Verde Despierta 1 177 * 16 Verde Programa de sensor derecho Ejecutar 1 178 * 18 Verde Programa de Sensor Izquierdo Ejecutar 1 179 * 17 Verde Programa de sensor sonoro ejecutado 1 180 * 12 Naranja Golpe de mano derecha 3 1 192 * 1 Naranja Barrido de la mano derecha 1 193 * 4 Naranja Eructar 1 194 * 5 Naranja LLave de la mano derecha 1 195 * 2 Naranja Alta 5 1 196 * 3 Naranja LLave de la mano derecha 1 197 * 11 Naranja Excavadora 1 198 * 15 Naranja Ups 1 199 * 14 Naranja Golpe de mano izquierda 3 1 200 * 6 Naranja Barrido de la mano izquierda 1 201 * 9 Naranja Silbar 1 202 * 10 Naranja LLave de la mano izquierda 1 203 * 7 Naranja Replicar 1 204 * 8 Naranja LLave de la mano izquierda 1 205 * 13 Naranja Rugido 1 206 * 19 Naranja Todo demo 1 208 * 20 Naranja Apagado 1 209 * 16 Naranja Demo 1 1 210 * 18 Naranja Demo 2 1 211 * 17 Naranja Demostración de baile 1 212 */ #include IRsend irsend; // pin 3 es IR LED salida int data; // Variable de almace de datos de la lectura serie void setup() { Serial.begin(9600); irsend.sendRSV1(142);// Envio sonido test de inicio } void loop() { while (Serial.available()> 0) { data = Serial.parseFloat(); //Capturo valor DECIMAL introducido Serial.println(data); // Veo datos enviados en monitor serie irsend.sendRSV1(data); //Envio datos al pin 3 } }
Un detalle tonto que me hizo perder algo de tiempo en la puesta en marcha. Acuérdate de que el infrarrojo, esté siempre por encima de la altura de la cabeza del robot, si no, el receptor no recibirá la orden.
El circuito:
Que hace el código?
Los comandos enviados a través del terminal serie del software Arduino, son enviados al Robosapiens a través del diodo IR que tiene una resistencia de 100 Ohm como medida de protección.
Más detalles:
Como se conectan diodos IR emisores y receptores:
Como identificar ánodo y cátodo del diodo:
Fijarse en la musca del encapsulado o que el ánodo tiene la patilla mas larga (en componentes nuevos).
Como ganar mas potencia con más leds:
En este caso, para aumentar la potencia de luz del diodo, en lugar de conectar directamente el diodo a la patilla 3, alimentamos a u transistor 2N2222A que es el que controlará, aplicando tensión directamente al diodo a través de su resistencia.
Tuitear 5.854 Veces leído 0 comentarios |
10 mayo 2019 en Electronica | tags: Arduino, Electronica, Robótica |