Siempre creciendo, siempre aprendiendo. Cultura maker.

Este artículo supone, de algún modo, un cambio muy interesante en el modo de compartir conocimiento que intentamos impulsar desde esta web. Hasta ahora, normalmente, cada entrada ha supuesto un intento de divulgación sobre Electrónica, Programación y Robótica a partir del trabajo de la comunidad maker. En esta ocasión, vengo a ofreceros algo de mi propia hornada.

Se trata del software #MASAYLOBLOCKLY, ¡TACHÁÁÁÁÁÁÁÁN!.

MASAYLOBLOCKLY

 

 

 ¿Qué es MasayloBlockly?

MasayloBlockly (sí, lo sé, como nombre es un poco complicado, pero a mí me gusta) es un software que permite programar cualquier tarjeta Arduino o sistema automático o robótico relacionado con dicha tarjeta, de un modo gráfico, al estilo de Scratch. MasayloBlockly es Open Source, tiene licencia Creative Commons Zero, y está basado en tecnología Electron, que explicado de modo muy resumido, utiliza un servidor nodejs para presentar aplicaciones en javascript como si fueran websites, lo cual le otorga una portabilidad superior incluso a Java, dado que no necesita ningún otro tipo de instalación. Este programa es absolutamente gratuito, libre, compartible y modificable. De hecho, en mi github os facilito el código fuente tanto para Windows como para Linux, y aquellos de vosotros que sepáis javascript y/o tengáis cierta afinidad con node js, podáis trastearlo y mejorarlo a vuestro gusto, de acuerdo a la filosofía de las cuatro libertades que pregona Richard Stallman.

masaylo1

 MasayloBlockly nace como consecuencia de todo lo que he ido aprendiendo al analizar el código de OttoBlockly de Camilo Parra, y que permite el control y gobierno de su robot OttoDIY y su hermano "pequeño", el Otto Humanoide. La diferencia con MasayloBlockly es que esta última está pensada para gobernar más robots, y lo que en su momento era más importante para mí, funciona en Linux además de en Windows (en los últimos meses, el propio Camilo me pidió colaboración para ayudarle en la migración a Linux de su propia app, lo cual, a qué negarlo, supuso un enorme honor para mí). Analizando e investigando este código, descubrí que, a su vez, es una adaptación del genial BLOCKLINO de @fontainejp, que a su vez sinergió (qué bonita palabra) varios experimentos anteriores relacionados con Google Blockly, la programación en bloques relacionadas con Javascript y con Python, y lo más importante, los servidores con tecnología Python que permiten emular puertos serie de tipo COM en un sitio HTML para comunicarse con una tarjeta Arduino (la mitad de lo que he dicho no es exactamente así, pero ya tú sabe'h...)

¿Has dicho que puedo programar robots basados en Arduino?. ¿Cuáles?

He dicho que puedes programar cualquier sistema programable basado en Arduino. Pero, sí, efectivamente, en el momento de escribir estas líneas, tenemos cuatro grupos de bloques pensados para la programación directa de los siguientes robots:

 

Robot OttoDIY ottodiy
Robot Otto Humanoide (versión mejorada de Otto)  ottoHumanoid
Robot Escornabot (de factoría gallega, sabor patrio)  escornabot
Robot Masaylo (éste es mío propio, y ya hablaremos en su día de él, que al fin y al cabo es la razón por la que diseñé MasayloBlockly)  masaylo

 

¿Dónde puedo conseguir esta aplicación?

La aplicación es libre y gratuita. Como te he dicho, el código está en mi repositorio de Github, https://github.com/agomezgar/masayloBlockly , para que lo clones y estudies a gusto. Si quieres trastear con el código, necesitarás dar los siguientes pasos:

  1. Instalar Node.js en tu equipo.
  2. Necesitarás usar el gestor de paquetes npm, pero éste ya viene instalado de serie con Node.js
  3. Clona el código (para Windows o para Linux) en tu equipo, utilizando los comandos git o descargándolo vía web.
  4. Vete a la raíz de la carpeta en la que tengas el programa y ejecuta el siguiente código:
 
//Para ordenar todas las dependencias
npm install
//Para arrancar la aplicación
npm start
//Si quieres crear tus propios ejecutables (portable e instalable):
npm run compiler

 ¿Y si sólo quiero descargar el ejecutable para usar el programa?

Entonces, tienes que irte al apartado de RELEASES dentro de mi github. Periódicamente, voy liberando sucesivas versiones para Windows 10 (también es funcional en Windows 8, y posiblemente en Windows 7) y para Linux, al menos en los S.O. tipo Debian como Ubuntu. Todas las versiones son para 64 bits.

Elige tu sistema operativo y descárgate la versión portable o el instalador. Hasta donde yo sé, ambas versiones funcionan en cualquier ordenador con sistema de 64 bits.

¿Hay algún tipo de demo para que compruebe cómo funciona antes de instalar?

¡Me alegro de que me hagas esa pregunta!. Efectivamente, hay una demo en formato web. La mayor parte de las funcionalidades que incorpora el software están operativas. Puedes visitarla aquí . En la imagen adjunta, la estoy utilizando para programar un Escornabot

masayloBlockly2

 

La pena es que para lo que no sirve (al menos, de momento) es para descargar directamente el código que creemos a nuestra tarjeta Arduino.

Ok. Me lo he descargado e instalado. ¿Cómo funciona?.

Bueno, está claro que en un sólo artículo no puedo sacarle todo el provecho que, sinceramente, puede ofreceros este programa. Sin embargo, sí que puedo dar cuatro pinceladas que os den una idea de por dónde empezar. Además, veréis que es enormemente intuitivo y simplemente "haciendo click" aquí y allá podréis  familiarizaros con el entorno y desenvolveros por vuestra cuenta en menos que canta un gallo.

Zonas del entorno

El IDE (me da algo de vergüenza llamarlo así, porque es absolutamente artesanal, pero al fin y a la postre es lo que es) se divide en 4 grandes zonas:

  • El menú principal
  • La zona principal de programación
  • El menú de bloques de programación
  • La zona de previsualización de código de Arduino (activable o no si pulsamos el botón correspondiente)

masaylo2

Bloques de programación

El menú de la izquierda contiene todos los bloques de programación posibles en el lenguaje de Google Blockly, agrupados según su funcionalidad. Existen dos configuraciones: el nivel PRIMERIZO (el que viene por defecto; incluye los bloques de programación que he considerado más básicos), y el nivel EXPERTO (que considera todos los agrupamientos de bloque que he desarrollado, más los que venían por defecto en Blocklino, convenientemente adaptados). En el menú principal, podemos acceder a estas configuraciones a través del botón simbolizado por un engranaje. En cada uno de dichos niveles, podemos elegir todos los agrupamientos, o sólo algunos de ellos.

masaylo3

El menú principal

Contiene varios botones de opción típicos. En la parte derecha, al estilo de muchos otros programas, disponemos de opciones como  Nuevo programa, Abrir ejemplos (hay varios programas funcionales que podéis probar), Abrir archivo, Guardar archivo, Preferencias (que ya hemos comentado antes), e incluso un botón para abrir el monitor serie de Arduino. Chulo, ¿eh?.

masaylo4

En la parte central del menú, en cambio, los botones hacen referencia a nuestra tarjeta controladora. Podemos elegir el modelo de Arduino, hay que señalar a qué puerto serie está conectada, y podemos compilar y volcar nuestro código (al estilo de nuestra querida IDE tradicional), además de exportar, si así lo queremos, el código en binario generado.

masaylo6

 

 La última parte del menú principal son los botones de DESHACER, REHACER, GUARDAR UN PNG DE NUESTRO PROGRAMA EN BLOQUES  (esta opción aún hay que mejorarla un poquito), y por último, la opción de ACTIVAR/DESACTIVAR LA PREVISUALIZACIÓN DEL CÓDIGO.

masaylo5

Mención especial merece el botón que está más a la derecha de este menú, con el símbolo de una pieza de puzzle, y que alternará entre la programación gráfica y el código real, QUE DESDE AQUÍ PODREMOS MODIFICAR si así lo deseamos (eso sí, volver luego a la programación gráfica puede dar resultados contradictorios; no digáis que no os he avisado).

masaylo7

Ejemplo de programación: ¡Hola, mundo!

A partir de aquí, como se suele decir, el resto es historia. Sólo hay que ir explorando los distintos bloques que MasayloBlockly nos ofrece. Por ejemplo, si quisiéramos programar el sempiterno ¡Hola, mundo! en el led 13 (el de tipo built-in) de una Arduino Nano, bastaría trabajar con los bloques del grupo Arduino y del grupo tiempo, tal y como indica la siguiente ilustración. Observad cómo en sólo dos bloques podemos concentrar toodo el código original (tampoco es que fuera muy complejo). Elegimos el puerto serie (en mi ordenador Linux, DEV/TTYUSB0). Por último, podemos, primero, compilar (para asegurarnos de que el código es correcto), y después volcar el código, o darle directamente a este último botón, al menos desde la versión 1.0.4. 

masaylo8

¡Chas!, mágicamente, el led embebido en la tarjeta empezará a parpadear. ¿A que ha sido fácil?

Aviso a los usuarios de la versión Linux

La primera vez que los linuxeros pretendáis verificar o compilar un código, independientemente de que hayáis experimentado con Arduino antes o no, saldrá un mensaje emergente avisándonos de que al ser la primera vez que trabajamos con el programa, se realizará una instalación previa, relacionada con el uso de Arduino-cli (el motor que utilizamos para compilar y volcar código), librerías de Arduino y algunos archivos internos. No pasa nada. Eso sí, como no controlo aún el tema de la ejecución síncrona en Node.js, tendréis que esperar unos segundos y volver a intentarlo pasado ese rato. Entonces ya debería funcionar correctamente.

Por otro lado, si nunca habéis trabajado con Linux antes, posiblemente tengáis un problema de permisos. Recordad añadir vuestro nombre de usuario al grupo dialout mediante el comando sudo adduser <usuario> dialout. De nada.

¡Ea!. Pues con eso ya estaría...

¡A ver si os resulta útil!. Yo, personalmente, he aprendido mucho programando esta aplicación. Es humilde, tiene muchos fallos (algunos los he descubierto mientras redactaba esta entrada de la web), pero creo sinceramente que tiene potencial. Espero vuestro feedback y comentarios. Ya me contaréis. Mientras tanto, ¡uy!. ¡Qué tarde se ha hecho!. ¡Y yo tengo que ir todavía a otro sitio!. ¡Adiós, estudiantes!. ¡Muchas gracias por vuestro tiempo!. ¡Nos vemos por la web!. ¡Sed felices!. ¡Siempre creciendo, siempre aprendiendo!. ¡Cultura maker!