Archivo de la etiqueta: arduino

todos los robots deberían tener pulso

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.

flattr this!

arduino autosuficiente

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.

flattr this!

más arduinos integrados

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.

flattr this!

processing.js

Para los que trabajen con arduino, sabrán que es un proyecto basado en Processing, un lenguaje y entorno de programación para aplicaciones multimedia e instalaciones interactivas. Lo que quizá no sepan es que processing se ha portado a javascript utilizando la nueva etiqueta canvas de html5: processing.js. En el estado actual, soporta muchas de las instrucciones de processing, excepto las instrucciones 3D, que esperan poder implementarlas cuando se desarrolle una etiqueta canvas 3D (para firefox ya hay un intento de implementación). Además processing.js fue portado por John Resig, creador entre otros proyectos de la librería jquery. Igualmente sorprendente para mí es que muchos de los ejemplos de chrome experiments están hechos con processing.js.

Una ventaja de processing.js sobre processing es que además de ejecutarse en navegadores recientes y aceptables sin ningún plugin (explorer no entra en esta categoría todavía) se integra fácilmente con el entorno web y se pueden agregar otras librerías javascript (jquery, por ejemplo) para realizar experimentos muy visuales.

El lado negativo está en el rendimiento, que no es nada bueno. En mi ordenador con 4 cores, se me quedaba bloqueado porque sólo tiraba de una cpu. Si alguien diseña un proyecto complejo, debería implementar parte de la lógica con web workers.

flattr this!

alternativas y complementos de arduino

Hace poco me encontré con un rediseño de arduino especializado para robótica. Echando un vistazo por la red he encontrado un par de alternativas a arduino que también tienen buena pinta:

  • La primera es pinguino, una tarjeta que nace con el objetivo de implementar un controlador pic al estilo arduino, pero a través de soporte USB en el microcontrolador, sin necesidad de un circuito adicional cómo sucede con arduino.
  • La segunda es illuminato, una ampliación de arduino, pero con más puertos de entrada-salida, más memoria y un diseño esclusivo con un montón de leds en la parte de atrás.

Por ahora me quedo con el arduino original, al que acabo de enchufarle un shield ethernet que funciona casi a la perfección. Hay un pequeño problema con el reset entre el shield ethernet y la tarjeta Arduino Duemilanove, que se resuelve conectando un condensador entre el pin de reset y tierra. Parece que el tiempo de reset de arduino Duemilanove es demasiado corto para el shield y hay que aumentar el tiempo conectando un condensador. Para robótica, si no encuentro ninguno más interesante creo que voy a comprar el shield de control de motores de Adafruit, que nos facilita el control de motores a través del circuito L293D. Entre el shield ethernet, una fonera que tengo suelta y el shield adafruit, creo que podré montar un robot móvil interesante.

flattr this!