Programa Arduino desde Scratch

S4AAyer, mientras daba clases de robótica a unos niños les enseñé una placa Arduino. Después de un pequeño silencio de asombro y veneración a la placa,  yo les iba a enseñar S4A, con el que programaremos más adelante algunas cosas en Arduino. Pero uno de ellos se adelantó y me dijo: Eso lo usaremos con mBlock, ¿no? ¡El programa del panda!

Yo había visto el panda ese en algunos ordenadores de clase, se ve que el anterior profesor lo utilizaba…Vaya, ¡y yo sin saber que es mBlock! Así que me he puesto a investigar para acabar encontrando el mBlock y el mBot. mBot es un proyecto que apareció en Kickstarter hace cosa de un año. Se trata un robot (peligrosamente similar al de bq) que tiene una placa fácil de manejar. Una placa en la que no se conectan cables. Sino que sus conexiones con los objetos son como los cables de teléfono de toda la vida. Esos que conectas a la telefonía fija o a tu router. De esta manera se conecta en un puerto, hace click, y a jugar.

(Aquí iba una foto pero todas tienen copyright, así que te dejo este enlace para que puedas ver a lo que me refiero con placa con puertos de teléfono).

Digamos que esta placa no podía vivir sola. Y se le crearon añadidos a ella, entre ellos el robot. Y claro…había que tripular este robot. Y es así como nace mBlock. mBlock es un programa cómo Scratch que además de permitir añadir bloques, va mostrando cómo quedaría el programa en el código de Arduino.

La verdad es que mola bastante..el único problema es que no hay versión para Linux. Sólo están disponibles las versiones para Mac y Windows. De hecho, hay hilos de foros que piden el código fuente para Linux…pero no ha habido suerte por ahora. Y es por eso que no lo he podido probar 🙁

Pensarás…cómo es Rufián, vago hasta la médula. La verdad es que me da mucha pereza irme a una partición Windows para probar un programa. La segunda parte es que el demonio dentro de mi me dice: ¡que se jodan!. Si no son capaces de hacer los cambios que han hecho en Scratch para Windows y Mac en el sistema operativo del pingüino, tal vez pertenezco a esa minoría que no es interesante para su proyecto.

Así que me he puesto a jugar con S4A.

S4A: Scratch y Arduino Unidos

Y es que hay que aprovechar el tiempo, y más en estos tiempos que corren que vamos con el estrés en las venas. S4A al final es lo mismo que mBlock pero sin el detalle de ver el código real que se programa en Arduino. Pero se pueden hacer cosas interesantes de todos modos.

Al igual que en Scratch, el gato sigue apareciendo. O almenos lo puedes incluir. Aquí el protagonista es la placa Arduino. Pero bueno, no me adelanto. Lo primero es lo primero: ¿Cómo coño puedes hacer funcionar S4A?

La verdad es que en la página oficial de S4A está bastante claro…pero por si acaso. La cosa está en bajar S4A (una modificación de Scratch) e instalarlo en el pc. Por otra parte también tienes que copiar este programa al IDE de Arduino y enviarlo a tu placa.

Así, ya puedes empezar a jugar con S4A. Nada de bootloaders ni historias raras: palabra de Rufián.

Una vez ejecutado, el programa se pondrá a buscar la placa. Deberías de tenerla ya conectada. Si está en Linux y no conecta…son cosas de los permisos de lectura y escritura en el puerto USB. Cámbialos utilizando esto: sudo chmod 666 /dev/ttyACM0. O puedes ejecutar S4A con el comando sudo…aunque es una solución un poco tosca.

Una vez conectado puedes ver la imagen de un Arduino y los bloques de Scratch sin tocar ni una coma. Luego, en el bloque de movimiento se le han añadido cosas relativas a pines digitales, motores, actuadores y sensores. Y en el bloque de sensores se ha añadido un bloque para añadir una página web.

Digamos que todo es igual y se puede agregar al gato amarillo de manera que se pueden crear proyectos combinados con parte videojuego parte real. Por ejemplo, el gato está andando por una calle y entra a una casa. Todo está apagado y enciende la luz. Además de encenderse la luz en el videojuego puede encenderse en la realidad. O al revés, cada vez que se pulsa un botón en la realidad se enciende y se apaga una luz en el juego. Al final esto no tiene límites.

Maneja Arduino desde Android

De hecho, para que aún tenga menos límites. Para aquellos que no tienen muchísimos sensores en casa han decidido conectar la caja de sensores que todos llevamos en el bolsillo: el smartphone. Si tienes un teléfono Android, puedes descargar la aplicación HiS4A y conectarla a S4A. Para eso tienes que ir a la caja sensores, y pulsar con el botón derecho a cualquiera de los bloques azules que allí hay. Al pulsar el botón derecho aparece un pequeño menú con dos opciones, pulsa la segunda: Activar conexiones de sensores remotos.

En editar, está la opción mostrar dirección IP, que nos dará la IP local de nuestro ordenador. Digamos que es el número que identifica tu ordenador dentro de tu red, de tu conexión. O eso es lo que se supone porque a mi no me funciona. Tendrás que utilizar cosas como ifconfig en Linux o ipconfig en Windows. Y sí, eso es en la terminal, la cuál te dará un número que empieza por 192.168.x.x.

Ese número lo copiaremos en la app para así poder conectar ambos. Es por eso que los dos deben de estar conectados a la misma conexión, es el router el que reparte las direcciones a cada cosa que se conecta a él.

Al acabar podrás activar el acelerómetro, tendrás un touchpad que te permitirá mover cosas dentro del videojuego y podrás enviar mensajes. Los típicos mensajes de Scratch en los que se informa de que algo ha pasado.

Controlando Arduino desde un simple navegador

Pero bueno, si no dispones de un Android, tampoco te asustes. las cosas son un poco menos sencillas pero no imposibles. La app se basa en enviar mensajes a través de la red. De esta manera, se puede conectar a cualquier navegador.

Vamos a hacerlo fácil. Entras en S4A, creas un nuevo personaje que no pertenezca a Arduino. Que sea de los de toda la vida.

Luego, le pones que al recibir el mensaje ‘hola’ se mueva 10 pasos repetidamente y pulsas en el botón derecho sobre los sensores y activas la opción de conexiones de sensores remotos.

Coges tu teléfono y entras en el navegador. Y escribes: http://192.168.x.x:42001/broadcast=hola. En cuanto pulses para ir a la web el mensaje hola llegará a tu ordenador y el personaje se moverá. Recuerda que la IP que pones es la del Pc, al igual que antes 😉

Código para manejar Arduino desde Internet con S4A

También se puede jugar con sensores remotos. Esto es la posición de x o de y. Hay un bloque en sensores que permite esto:

Sensores de S4A para manejar Arduino online

Si quieres enviar el valor de un sensor se utiliza esto http://192.168.x.x:42001/sensor-update=nombre-del-sensor=valor. Y lo mismo sucede con las variables (el último bloque de órdenes en Scratch): http://192.168.x.x:42001/vars-update=nombre-de-la-variable=valor.

Para hacer todo esto más rápido existe esta página dónde se pueden enviar datos como la x y la y del ratón con lo que se llama ‘Remote Pad’. A parte de eso, soy incapaz de decirte cómo recibir mensajes o los valores de las variables porque no lo consigo 🙁

A ver si en el futuro me pongo en serio y lo saco 😉

Opt In Image

¡Uno que se las pira!

Espero que esto te haya abierto las miras a otras cosas que Scratch puede ofrecerte. Digamos que la programación es la antesala de la robótica…y Scratch está poco a poco siendo utilizado en ambos ámbitos. Nada, como siempre espero tus comentarios ahí abajo y si puedes compartir sería genial. Ah, y ¡sígueme en Google+ que soy un amoh! 😉

[Total:7    Promedio:3.4/5]

Deja un comentario