↖️↖️↖️Escucha este episodio 🎧 Descarga 🎧 Suscripciones en iVoox / Apple Podcasts / Spotify / Google Podcasts 🎧
En un futuro artículo haremos una comparativa detallada de las diferentes opciones para programar la placa Microbit por bloques, que son muchas, pero hoy nos centramos en MicroBlocks aprovechando la reciente masterclass que nos ofreció su desarrollador Bernat Romagosa dentro de Juegos Robótica.
Recuerda que también tienes disponible este artículo en formato podcast si prefieres escuchar la reseña sobre MicroBlocks.
¿Qué características tiene MicroBlocks?
La ventaja de haber podido disfrutar de la charla ofrecida por Bernat es que transmite perfectamente la filosofía detrás de MicroBlocks que se materializa en una serie de particularidades técnicas que hacen que este entorno de programación visual sea tan especial o casi diría que único.
En la conversación con Bernat salieron nombres ilustres de la programación creativa como Seymour Papert o Alan Kay que propusieron (Papert) y compartieron la misma visión construccionista en la manera de ofrecer la posibilidad de programar a los niños que tan claramente vemos en MicroBlocks, a diferencia de otros entornos más populares que encajan más con el instruccionismo dominante en muchas de nuestras escuelas.
Aunque MicroBlocks permite programar infinidad de placas con diferentes microcontroladores nos centraremos en Microbit para definir la mayoría de funciones.
Programación interactiva en tiempo real.
Simplificando el concepto debemos pensar en MicroBlocks como un sistema operativo que se instala dentro de la placa de desarrollo, por ejemplo Microbit, y que permite mantener en funcionamiento un programa que está siendo modificado en tiempo real por una herramienta en un equipo informático.
En otros entornos en los que es posible que la placa interactúe con el ordenador, como es el caso de Scratch o su fork mBlock, la placa funciona como un periférico del ordenador que es dónde se está ejecutando el programa. Con MicroBlocks el programa se está ejecutando en la placa y el ordenador es el periférico que permite modificar ese programa. Parece lo mismo, pero no lo es.
Los cambios realizados en el programa se ejecutan de manera inmediata en la placa, sin retardos debidos a la comunicación porque no hay ninguna comunicación, el programa se ejecuta en la placa, no en el ordenador.
Puede que no se entienda bien la primera diferencia importante que aporta MicroBlocks, pero esta característica es de vital importancia para que el joven programador pueda ver los efectos de la programación de manera inmediata y pueda por lo tanto corregir y adaptar las órdenes según su propia observación del resultado, lo cual es básico si queremos fomentar ese aprendizaje basado en el descubrimiento, y no la tiene ningún otro entorno de programación para Microbit al menos por el momento.
Concurrencia de procesos paralelos.
Desde que se inicia a los niños en el pensamiento computacional en edades alarmantemente tempranas se presenta la programación y los algoritmos como una secuencia de órdenes que generan una secuencia de acciones. Lo vemos en el uso de los robots de suelo en etapas de infantil y primaria en la que se introduce una secuencia de órdenes para que el robot se desplace ejecutando una secuencia de movimientos.
Sin embargo los seres humanos, y evidentemente los niños, estamos acostumbrados a observar nuestro entorno viendo procesos que se desarrollan de forma paralela. Toda nuestra realidad funciona de manera paralela en el tiempo, aunque algunos procesos afectan la marcha de otros procesos y algunos son completamente independientes.
Limitar a los jóvenes programadores a una ejecución estrictamente secuencial de sus creaciones es un tanto injusto puesto que técnicamente no hay problema en hacerlo de forma paralela, por lo que MicroBlocks permite ese paralelismo facilitando una comprensión natural de la ejecución de múltiples tareas al mismo tiempo dentro de la placa Microbit.
Programación autónoma.
Esta característica viene derivada del hecho de que el programa esté funcionando dentro de la placa en el modo «en vivo» que se ha descrito anteriormente. Puesto que no hay que hacer una transferencia del programa, sino que siempre está dentro de la placa, si se desconecta la placa del ordenador o se pierde la alimentación eléctrica los cambios realizados en el programa siguen ahí porque, repito, el programa está en la placa.
Es cierto que lo más habitual en computación física y automática a nivel profesional es que los programas se editen en un equipo informático, se compilen y finalmente se vuelquen al dispositivo físico ya sea un microcontrolador, un control numérico, un autómata programable o cualquier otro dispositivo. Es la manera en la que se trabaja con MakeCode por ejemplo, entorno de programación con el que editamos un programa que posteriormente descargamos en forma de archivo *.hex y que instalamos en la placa Microbit.
Sin embargo, también a nivel profesional, hay dispositivos que se programan de manera autónoma como por ejemplo los robots industriales. Los brazos robóticos que vemos en cualquier fábrica automatizada se programan desde una consola de programación que está integrada en el propio robot y solo se exporta el programa si queremos tener una copia de seguridad del programa de manera externa.
Con MicroBlocks nuestra placa Microbit sería el robot y el ordenador actuaría como consola de programación, es decir, como un periférico.
Esta característica permite otra función sin precedentes en las alternativas educativas y es que es posible recuperar el programa de una placa para transferirlo a otra. Puesto que el programa real está dentro de la placa podemos conectarle un ordenador, leer el programa y volcarlo en otra placa.
Se podría pensar que sería sencillo hacer con otros sistemas, pero por ejemplo en el caso de MakeCode cuando la placa reconoce que se le ha cargado un programa en un archivo *.hex lo compila y transforma a un lenguaje óptimo para la propia placa de manera que luego no permite ser «descompilado» en sentido inverso. Lo mismo ha ocurrido siempre con las diferentes versiones de Lego Mindstorms y ahora Spike que no posibilitan la recuperación de un programa editable desde el hub y siempre ha sido algo muy demandado por los educadores.
Con MicroBlocks podríamos programar 25 placas Microbit con un programa base y repartirlas a nuestros 25 alumnos. Al conectarlas al ordenador (recuerda que el ordenador es sólo un periférico aquí) ya estarían viendo el programa y podrían editarlo a su antojo.
No conozco precedentes en educación de entornos que permitan esta función, pero te invito a utilizar los comentarios para señalar otras alternativas que conozcas que puedan hacer esto.
Ventajas en MicroBlocks.
Además de las características que hemos detallado hay que destacar la facilidad de conexión de una placa como Microbit incluso en el entorno online, ya que disponemos de opción de escritorio o en navegador web.
Incluso en el entorno online podemos trabajar en vivo puesto que como hemos visto el programa siempre está ubicado en la placa. La particularidad de MicroBlocks es que no requiere la instalación de ninguna aplicación complementaria para trabajar en vivo en navegador web online como ocurre por ejemplo con Scratch (hay que instalar Scratch Link) o mBlock (hay que instalar mLink).
Basta con ponerse a trabajar con MicroBlocks para darse cuenta de la fluidez que se tiene en una actividad dirigida con niños y lo que se agradece no tener que «pelear» con los problemas de conectividad.
Por otro lado el hecho de no tener que cargar el programa cada vez en la placa facilita muchísimo el flujo de trabajo para los niños que pueden enfocar toda su atención en el programa que han creado y el resultado inmediato a cada cambio permitiendo el autoaprendizaje por observación. Este tipo de aprendizaje realmente es el que mejor se va a mantener en el niño según las teorías de Piaget y Papert, y la práctica nos confirma dichas teorías.
Primeros pasos en MicroBlocks.
Si nos centramos en el uso de MicroBlocks para la placa Microbit lo primero que tendremos que hacer es actualizar el firmware de la placa. Solo tendremos que realizar esta «inicialización» una vez en cada placa que se convertirá en ese momento en el contenedor de los futuros programas que se creen con MicroBlocks.
Tienes todo perfectamente explicado en la guía de inicio de la propia web de Microblocks.
Fichas imprimibles de actividades con MicroBlocks.
Microblocks ofrece una serie de actividades guiadas diseñadas para ser impresas y guiar a los jóvenes programadores, pero evidentemente se pueden aprovechar en soporte informático y no únicamente en papel.
Estas actividades están publicadas en la sección de aprendizaje de MicroBlocks donde se puede filtrar la búsqueda según el idioma, tipo de placa o nivel de dificultad.
Muchas de las actividades propuestas son fruto de la colaboración de usuarios particulares y el equipo de MicroBlocks nos invita a contribuir con nuevas actividades o traducciones.
Concepto de «datos» en MicroBlocks.
Una de las ventajas que ofrece MicroBlocks pensando en principiantes y en una visión construccionista del aprendizaje es la manera de trabajar con datos dentro del entorno.
En general no es necesario pensar en el «tipo de dato» y el entorno permite cambiar de idea sobre el tipo de dato que se utiliza sin causar ningún problema por el hecho de cambiar de decisión una vez ya se ha empezado a conformar el programa.
Bajo este concepto MicroBlocks se podría denominar un lenguaje de tipado dinámico, o directamente dinámico, en contraposición a lenguajes estáticos como por ejemplo el utilizado en el IDE de Arduino. El debate sobre lenguajes dinámicos y estáticos siempre ha estado vivo, pero desde un punto de vista educativo es indudable que un lenguaje dinámico es mucho más interesante. Quizá sea una de las razones del avance de Python en educación.
En MicroBlocks no importa si primero se decide utilizar un texto como dato dentro de determinada función y más tarde se decide que debería ser un valor numérico. Dentro de este concepto permite intercambiar y combinar tipos de datos siempre que tenga sentido dentro del propio bloque, pero por ejemplo una lista puede estar compuesta por elementos que son de diferente tipo y no tendríamos ningún problema.
Gráficas de lecturas y datos en MicroBlocks.
MicroBlocks integra una función para representar datos en una gráfica que permite, entre otras cosas, obtener una representación de la lectura de un sensor de la placa que posteriormente puede ser exportada a un CSV si necesitamos manejar los datos de manera numérica.
Es importante volver a recordar que el programa está funcionando siempre en la placa por lo que la lectura y representación en una gráfica es muy ágil con una frecuencia de lectura que parece prácticamente continua al contrario de la representación escalonada de entornos como mBlock.
De hecho, representaciones gráficas de la lectura de un sensor de sonido nos deja gráficas que son prácticamente iguales que la de la propia grabación sonora.
En el caso de Microbit podemos incluso capturar esa lectura del sensor de sonido (disponible en la Microbit V2) en forma de datos y posteriormente llamar a ese conjunto de datos para hacer sonar la «grabación» a través del piezoeléctrico tal y como se muestra en esta actividad propuesta. Es bastante impresionante comprobar cómo podemos almacenar una grabación sonora a través de lecturas con un «sample rate» de 100ms para poder grabar casi 1,5 segundos que nos permite la memoria RAM de la Microbit.
Personalización de bloques en MicroBlocks. Nivel de abstracción y librerías.
En la personalización de bloques de programación MicroBlocks también va un paso más allá marcando una diferencia respecto a otros entornos de programación visuales a los que estamos acostumbrados.
En este caso no estamos hablando únicamente de la creación de funciones o bloques personalizados como podemos hacer en Scratch, MakeCode y, por supuesto, en MicroBlocks, sino a la modificación de bloques ya existentes o a los pertenecientes a una librería concreta.
Efectivamente MicroBlocks cuenta con librerías que amplían las secciones de bloques disponibles en el entorno de programación alrededor de kits de robótica concretos o funciones con una temática común.
Lo interesante es que cualquiera puede explorar cómo están creados todos los bloques (funciones) dentro de MicroBlocks legando al nivel de abstracción que se quiera. La particularidad es que todo puede ser visto como conjuntos de bloques dentro de bloques, de manera que no se llega a un punto en el que aparece una «extensión» creada con código que puede no ser comprensible para el usuario, sobre todo cuando hablamos de niños.
Evidentemente se pueden crear nuevas librerías utilizando únicamente bloques si queremos personalizar algún kit de robótica de diseño propio o para cualquier otra cosa que se nos ocurra, pero lo interesante es que para los chavales también va a resultar muy natural crear librerías por bloques según sus necesidades en ese proceso de descubrimiento y creación.
Música en MicroBlocks.
Explorar la programación a través de la creación de música es una faceta que nos gusta tener muy en cuenta porque permite ampliar las posibilidades creativas de un entorno de programación concreto.
En MicroBlocks han cuidado este detalle al máximo y permite generar sonidos definiendo nota, escala y duración. La nota puede ser expresada mediante notación convencional (do, re, mi…) o anglosajona (C, D, E…).
Por supuesto podemos programar una melodía gracias a las listas y las listas de listas, cuyos elementos podrían contener notas, octavas y tiempos ordenados.
Podemos ir más allá y escribir una melodía a través de una secuencia de caracteres que posteriormente podremos separar en notas gracias al bloque que proporciona MicroBlocks para dividir y tabular textos tomando como limitador cualquier símbolo concreto como puede ser una coma (,), punto y coma (;) o incluso un espacio en blanco, por ejemplo.
Y para darle otra vuelta de tuerca permite importar «politonos» del antiguo sistema RTTTL inventado por Nokia que sembraron internet a finales de los 90 y que aún son accesibles. Realmente utiliza un intérprete que utiliza un sistema muy similar a la tabulación que hemos visto anteriormente. Las posibilidades son infinitas.
Otras características de MicroBlocks.
Hay muchas otras características reseñables de MicroBlocks que te dejamos listadas por si quieres investigar aunque no entremos en detalle:
- Contador de chasquidos como evento.
- Recursividad.
- Listas de listas.
- Integración con aplicaciones creadas con APP Inventor.
- Soporte de protocolo WebThings para IOT permitiendo ver y controlar la placa desde cualquier navegador web.
- Etc, etc, etc…
Placas soportadas por MicroBlocks.
Aunque siempre estamos poniendo la placa Microbit como ejemplo de placa que puede ser programada por MicroBlocks, lo cierto es que el catálogo de microcontroladores soportados por MicroBlocks es enorme y te recomendamos visitar su wiki si quieres tener toda la lista actualizada.
Aquí dejamos las placas soportadas por MicroBlocks a día de hoy:
- BBC micro:bit.
- Calliope mini.
- AdaFruit Circuit Playground Express.
- AdaFruit Circuit Playground Bluefruit.
- AdaFruit Clue.
- Citilab’s ED1 (ESP32).
- M5Stack Grey.
- M5Stick-C.
- M5Stick-C Plus.
- M5Atom Matrix.
- NodeMCU.
- ESP32.
El objetivo no es ser una etapa previa al código.
En Juegos Robótica hemos hablado mucho de cómo ciertas herramientas se utilizan de forma muy distinta a la que pensaron sus creadores originalmente como por ejemplo LOGO de Papert o Scratch de Resnick.
Espero que se popularice el uso de MicroBlocks pero para finalizar este artículo me gustaría enfatizar el mensaje original de sus desarrolladores y que pueda servir de recordatorio si los propios docentes y facilitadores empiezan a tergiversar la idea base.
En palabras de Bernat Romagosa «el objetivo no es pasar a código». MicroBlocks por sí mismo conforma todo un sistema de desarrollo con su propio lenguaje de programación y herramientas de implementación.
El entorno claramente está orientado a educación, pero para ser utilizado creativamente y por descubrimiento propio. Los desarrolladores han dedicado muchísimo esfuerzo habilitando las características que hemos citado y que tan importantes son para ofrecer un aprendizaje construccionista. Si no aprovechamos esa oportunidad estaremos, de nuevo, privando a los niños de la filosofía educativa original de la herramienta.
Y no solo niños. MicroBlocks puede ser suficiente para un programador «casual» que quiera materializar sus propias creaciones basadas en un microcontrolador convirtiéndose en un maker independientemente de su edad.
Dani S.
Hola!! Saludos desde Mexico, traté de usar mi microbit v1 en este entorno pero por más tutoriales que he seguido no puedo hacer que la aplicación reconozca la placa, ni en versión web ni la que instalé en mi compu…podrían orientarme sobre los requisitos técnicos para usar microblocks o alguna idea de qué está fallando?
Hola Juan Eduardo,
Probablemente pueda ser algún problema de drivers de USB, no sabría decirte.
Existe un grupo de Telegram dedicado a Microblocks al que puedes acceder siguiendo este enlace, quizá allí puedan ayudarte.