Front & Back

Blog sobre el Desarrollo de aplicaciones web

Laboratorio Punto de partida para un robot basado en Arduino y Raspberry PI (1)

Tengo comprobado que la mejor manera de afianzar lo que se aprende es ponerlo en práctica. Por eso empiezo con éste, una serie de artículos que describen el desarrollo de un pequeño robot, con el que intento hacer eso mismo; aprender.
Intentaré ser disciplinado, subir un artículo con cada avance y detallar el proceso de la mejor manera posible, aunque entre artículo y artículo acaben pasando semanas.

Este tema probablemente se aleja de la coletilla “blog sobre el desarrollo de aplicaciones web”; pero para eso he creado el apartado “laboratorio”, que hace las veces de cajón de sastre.

Dicho esto ¡manos a la obra!

¿Con qué funciones contará el robot?

Lo primero que tenemos que hacer es ponernos objetivos cortos y fácilmente alcanzables; un robot puede ser tan simple o avanzado como imaginemos, así que vamos a definir una funcionalidad base sobre la cual podamos escalar. Un buen comienzo puede ser un pequeño vehículo capaz de esquivar obstáculos; el artilugio debe poder captar datos del exterior para detectar si su trayectoria está bloqueada y tomar la decisión de variar el rumbo.


Arduino + Raspberry PI

¿Por dónde empezamos?

La base de nuestro proyecto será el SBC Raspberry PI y el microcontrolador Arduino; curiosamente dos plataformas desarrolladas para promover la enseñanza de informática y electrónica respectivamente. La idea es que sea la placa Arduino la encargada de recoger y traducir los datos de entorno que le enviarán los sensores, y dirigirlos a la Raspberry, que se encargará a su vez de analizarlos, tomar una decisión y enviar una orden de respuesta al Arduino para que actúe sobre los motores conectados a las ruedas, tal como se describe en el esquema siguiente:

Esquema de funcionamiento Robot Raspberry PI Arduino

Si la única funcionalidad del robot fuese la de esquivar un obstáculo, tal vez podríamos prescindir de la SBC; con el microcontrolador podría bastar, pero ya hemos dicho que queremos que sea escalable; y la Raspberry nos aporta gran valor añadido al proyecto; amplia capacidad de procesamiento (700Mhz, 512Mb), posibilidad de conexión Wifi o 3G, etc. y todas las ventajas de tener como base un sistema Linux.

¿Qué tecnología usar para programar la lógica del robot?

Necesitamos un entorno sobre el que construir una estructura orientada a eventos; en este caso un lenguaje secuencial no nos sirve de nada; el sistema ha de ser capaz de captar los datos de entorno, analizarlos en tiempo real y tomar una decisión al momento. He optado por Node.JS; un intérprete de Javascript en el lado servidor que se ajusta perfectamente a lo que andamos buscando. Además, nos ofrece gran versatilidad y muchas facilidades para incorporar nuevas funciones a nuestro robot; se me ocurre, por ejemplo, la monitorización en un navegador web de los datos en tiempo real recogidos por los sensores.

Quedan aún todos los pasos por dar, pero todos estos mimbres nos dan una visión somera del proyecto, que nos sirve como punto de partida.