Sencillo mando IR para Roomba serie 500

Aquí vemos cómo conseguir un sencillo mando Infrarojos para encender / apagar una Roomba serie 500, aunque podríamos haber programado el código de cualquier otro dispositivo que queramos controlar.

El objetivo era conseguir un mando muy simple y muy barato, por lo que hemos optado por utilizar un PIC 10F220 que se consigue por unos céntimos. En total, los materiales necesarios para este proyecto no superan 1€ de coste.


La Roomba serie 500 tiene un receptor de infrarrojos a 38KHz que responde según la siguiente codificación:

Botón Código
Left 10000001
Forward 10000010
Right 10000011
Spot 10000100
Max 10000101
Clean 10001000
Pause 10001001
Power 10001010
Forward/Left 10001011
Forward/Right 10001100
Docking station: Behind 11110010
Docking station: Right 11110110
Docking station: Slightly right 11110111
Docking station: Left 11111010
Docking station: Slightly left 11111011
Docking station: Middle 11111110

El código que nos interesa es Clean 10001000 puesto que es el que pone en marcha y para nuestra Roomba.

Cada bit dura 4 ms. y la diferencia entre 1 y 0 es:

  • el bit 0 tiene un tren de pulsos a 38KHz de 1ms. y descansa 3ms.
  • el bit 1 tiene un tren de pulsos a 38KHz de 3ms. y descansa 1ms.

 

Por tanto, nuestra codificación 10001000 queda como sigue:

El código fuente de nuestro programa es muy simple. Tenemos una función para enviar un 1, otra para enviar un 0, y una rutina principal que en un bucle sin fin los envía en el orden adecuado.

Materiales necesarios

Led infrarrojos

Pulsador

Portapilas

Microcontrolador 10F220

Construcción


Detalle frontal


Detalle trasera


Detalle interior

Este es el esquema del circuito:

 

Y este un detalle de su implementación:

Como puede observarse, el circuito funciona a 3V, que es la misma tensión que necesita el LED para iluminarse, por lo que no hemos puesto resistencia en serie.

El PIC alimenta al led en modo Drenador, es decir, que el led tiene el ánodo directamente conectado al positivo de las pilas, y el cátodo al PIC.

Puesto que la corriente suministrada por cada pin está limitada, usamos tres pines simultáneamente garantizando así que al led llegue la máxima intensidad posible.

 

Está disponible el código fuente, el fichero HEX y la simulación Proteus puedes encontrarlo en la zona de Descargas.

 

Agradecimientos:

– A Zacky, en cuyo post descubrí que esto podía hacerse

– A Andrew Chambers, donde encontré todos los códigos para la Roomba

Share