2

Me encontré con ésta enigmática frase en un tweet de guibot:

All robots should have a heartbeat

Cómo guibot es un experimentador portugués que trabaja en proyectos más bien artísticos, pensé que se trataba de algo más poético. Pero no, el tweet lleva a concurrency.cc que hablan de una idea práctica:

[...] tenemos el proceso hearbeat(). Éste proceso hace que el LED del arduino luzca intermitentemente, haciéndonos saber que no se ha estropeado nada (todos los robots deberían tener pulso [heartbeat]).

No sé si el hearbeat es un concepto formal, pero es muy útil: saber de un vistazo que un robot (u otro dispositivo) sigue funcionando. Cómo un robot es también un ordenador, no está libre de colgarse, bloquearse o quedarse en un bucle infinito. Por medio del heartbeat el robot nos informa de que sigue funcionando, sobretodo en algunos momentos en que parece bloqueado aunque no lo está.

Muchos aparatos tienen indicaciones visuales de este tipo: los leds de encendido y disco duro de un ordenador o en los teléfonos móviles. Por otra parte, aunque no sé que tal funcionarán, creo que podrían usarse indicaciones no visuales, de tipo sonoro, cómo sonidos periódicos o zumbidos, o mecánico, cómo el movimiento de alguna parte del robot.

En mi caso siempre he metido un heartbeat (aunque no sabía que lo estaba haciendo). En la lámpara termómetro de phybo para saber que la lámpara sigue en marcha, la luz está pulsando y no es constante. Con arduino, siempre intento que el led de la tarjeta pulse un par de veces al arrancar (en el método setup) y luego periódicamente al inicio del bucle loop meto una función de parpadeo. Así estoy seguro de que por lo menos el procesador no está bloqueado.

Para proyectos como colmena, encontré hace unos días un arduino auto suficiente. No estoy seguro de la carga de la batería, me extraña que no especifique el tipo de batería que se puede usar. Es un circuito genial para robots BEAM, aunque técnicamente en BEAM no deberían usarse micros, no hay que ser demasiado rigurosos con la definición. Siempre que un robot sea autónomo, simple y con una estética y mecánica biológicamente inspirada, es un robot BEAM.

Los shields de arduino están bien, pero tampoco son el recopetil. Sobretodo utilizando más de un shield, termina siendo un poco engorroso tener una pila de shields encima de arduino. Además creo que en muchos proyectos estaría bien un arduino específico, por ejemplo para proyectos sencillos de robótica. Echaba de menos tarjetas compatibles con arduino que tuviesen algo de electrónica integrada para aplicaciones específicas. Pero poco a poco mis deseos se van cumpliendo:

  • Motoruino: Una tarjeta arduino compatible tanto con el software de arduino cómo con shields de arduino. Todavía está en desarrollo, motoruino lo que hace es  añadir un puente en H para controlar motores, lo que la hace interesante para robots sencillos. Es un posible sustituto del motor shield para control de motores.
  • Blackwidow: Un arduino con wifi integrado. Ahora mismo estoy utilizando arduino con el shield ethernet y esta tarjeta sería la sustituta perfecta, todo en uno con wifi. De momento el precio es un poco caro, pero espero que en algún momento pueda pedir alguna.