• Descarga | Suscripciones en iVoox / Apple Podcasts / Spotify / Google Podcasts •
Juegos Robótica episodio 19. mBlock, ese gran desconocido.
Bienvenidos a Juegos Robótica, el podcast en el que hablamos de robótica educativa, iniciación a la programación, aplicaciones para docentes, entornos de programación para niños y en general todo lo que tiene que ver con despertar la curiosidad de los más jóvenes por la programación y la tecnología para que se conviertan en creadores y no en meros consumidores.
Como ya sabes este podcast es un reflejo sonoro de los contenidos y cursos que puedes encontrar en juegosrobotica.es
Y recuerda que si quieres aprender a programar a través de la robótica o quieres formarte para enseñar a programar puedes darle un vistazo plataforma de cursos en juegosrobotica.es/cursos y acceder a la formación online más completa con robótica educativa por 10 euros al mes, aprendiendo desde la base y a tu ritmo.
Hoy vamos a dar un repaso al entorno de programación por bloques más utilizado en robótica educativa del mundo. Se trata de mBlock.
Programación por bloques en educación.
Aunque la programación visual mediante símbolos se lleva utilizando muchas décadas, por ejemplo con el lenguaje Ladder para autómatas programables, su uso en educación se ha popularizado gracias a la aparición de Scratch, hace relativamente poco aunque hayan pasado 13 años de su publicación.
Recuerda que Scratch es un entorno de programación que utiliza bloques para definir los comandos que conforman un programa, y que está enfocado a realizar presentaciones, juegos o cualquier otra forma de expresión en un ordenador y también en dispositivos móviles.
El temprano episodio 3 está dedicado precisamente a explicar qué es Scratch, por lo que te recomiendo que le des un vistazo si no pudiste escucharlo en su momento.
mBlock nos servirá para programar nuestros proyectos de robótica también por bloques de la misma manera que haríamos con Scratch para programar un proyecto visual en nuestro ordenador.
Existen otros entornos de programación para poder programar a través de bloques proyectos de robótica, por ejemplo con Arduino como pueden ser S4A, Snap for Arduino, Bitbloq, Scratch X,etc… y no hay que olvidar entornos de programación específicos para ciertos kits que también son a través de bloques como el utilizado en LEGO Mindstorms. De una manera general ya te hable de esto en el episodio 9 del podcast.
De todas las opciones disponibles la que más uso y la que más recomiendo es mBlock, que a mi modo de ver tiene muchas más ventajas que inconvenientes sobre el resto de entornos de programación.
mBlock es un fork de Scratch, es decir es el mismo programa exactamente pero con una parte de desarrollo adicional.
Para que lo puedas entender imagina un tractor con toda su potencia, su habitáculo con su volante y controles, y piensa que tiene varias herramientas como una pala, un martillo neumático, un arado, etc
Pues ese tractor con todas esas funcionabilidades sería Scratch.
Ahora imagina que un fabricante de remolques modifica el chasis de ese tractor para poder acoplarle un remolque de manera permanente y que conserve todas las funciones que tenía pero que además tenga un remolque permanente.
El nuevo conjunto sería mBlock en nuestro ejemplo, mantiene la gran parte original del tractor (Scratch) y le añade una funcionabilidad extra.
En el desarrollo de software un fork es un camino de desarrollo distinto del software original, la traducción más correcta sería bifurcación, ya que realmente evoluciona de manera paralela al original.
Pues mBlock es un fork de Scratch, y en el 95% es exactamente igual que Scratch pero añadiendo la posibilidad de programar ciertas placas y robots. Y no es sólo una cuestión estética, sino que internamente es Scratch.
Ésta es una de las grandes ventajas de mBlock en educación independientemente de que entendamos o no lo que es un fork.
Si un agricultor lleva años utilizando su tractor rojo con su cuadro de mandos, su palanca de cambios, sus controles de herramientas, etc si cambia a un tractor azul con remolque incorporado no tardará ni cinco minutos en ponerse a trabajar con el nuevo tractor azul, porque es exactamente igual que su antiguo tractor rojo. Simplemente tendrá que acostumbrarse a los nuevos controles específicos para el remolque.
Con esto quiero decir que si un niño ha utilizado Scratch y se le cambia a mBlock puede que ni se de cuenta del cambio si no se fija en la nueva pestaña con el conjunto de bloques específicos para robots. Esto es una enorme ventaja, grandísima.
Recordemos que ambos entornos de programación son de libre distribución, el tractor azul no tiene sobrecoste sobre el rojo, por lo que si hay algún agricultor escuchando podría pensar: ¿No puedo trabajar directamente con el tractor azul con remolque en vez de pasar años con el rojo?
¡Efectivamente! Todo lo que puedes hacer con Scratch lo puedes hacer con mBlock y algunos docentes que llevan utilizando ambos entornos de programación cierto tiempo están empezando a utilizar directamente mBlock aunque sólo vayan a practicar programación creativa en el ordenador y no necesiten programar placas o robots.
Otra enorme ventaja, que también tiene algún otro entorno de programación, es la posibilidad de interactuar con el robot desde un programa creativo visual corriendo en el ordenador.
El salto a la computación física.
Imagina que has creado un juego matamarcianos en Scratch en el que se debe controlar el movimiento de una nave espacial a izquierda y derecha y se puede disparar a los marcianos que van descendiendo por la pantalla. El control original se haría con el teclado del ordenador.
Con mBlock evidentemente se puede crear el mismo juego matamarcianos, de hecho lo puedes haber creado con Scratch y abrirlo en mBlock, pero lo bueno es que podemos hacer que los controles del juego se realicen a través de sensores de nuestra placa o kit de robótica.
Nos estaríamos introduciendo en la computación física casi sin darnos cuenta.
Te dejo enlazado un vídeo en el que el joven programador Mario te enseña exactamente este ejemplo del juego matamarcianos con un control externo con un robot y todo programado con mBlock.
En este ejemplo se está tomando una lectura de unos sensores físicos para tomar acción a través de movimientos en el juego, pero también se puede hacer que el origen de la orden sea en el ordenador y la acción se tome en el robot. Por ejemplo el robot podría emitir una luz roja y un sonido si algún marciano llega a alcanzar nuestra nave espacial.
Por supuesto se pueden crear pequeñas aplicaciones mediante las cuales manejar el robot con el teclado del ordenador, generar gráficas en la pantalla de la lectura de los sensores del robot y en general cualquier cosa que signifique interactuar entre el ordenador y el robot.
Esta opción no sólo es una potente oportunidad de empezar con la computación física sin abordar de golpe la programación de un robot autónomo, facilitando su comprensión, sino que además aporta infinitas posibilidades creativas a lo que era Scratch.
Este modo colaborativo ordenador-robot se puede aprovechar desde niveles de aprendizaje básicos como hemos comentado para facilitar la introducción a la computación física, hasta la visualización y generación de gráficas de diversas medidas tomadas por sensores específicos en un laboratorio de física o química.
Por supuesto tener la posibilidad de trabajar de este modo no quiere decir que no tengamos la posibilidad de programar el robot o la placa de igual forma que se hace con otros entornos de programación, generando un programa que se carga en el microcontrolador del robot para que se ejecute de manera autónoma, haciendo que el robot funcione completamente independiente del ordenador.
Con mBlock se puede programar una placa de Arduino o cualquier robot o placa que se base en Arduino. En esta frase tan corta entran el 80% de los robots y kits de robótica que se están usando en los colegios actualmente incluyendo placas de Arduino, placas y robots de BQ, placas y robots de Makeblock, etc.
Además y por si fuera poco mBlock es igual de abierto que Scratch y permite que se le añada extensiones específicas para incluir cualquier sensor o incluso robot completo en nuestras opciones de programación.
Si por ejemplo quieres incluir un display LCD a tu proyecto, ya ha habido un desarrollador que ha creado desinteresadamente una extensión para mBlock y que nos permite manejar bloques con los comandos específicos de ese display.
Otro ejemplo que hemos visto estos días es la publicación por parte de Ángel Villanueva de una extensión para poder programar Escornabot con mBlock. Recuerda que Escornabot es un robot de movimientos ortogonales cuyas piezas puedes imprimir y cuyos esquemas de montaje están publicados para su libre distribución.
Otra extensión publicada recientemente por makeblock.es hace accesible una nube para poder comunicar robots a distancia o almacenar datos de lecturas del robot de manera que podemos introducirnos en el internet de las cosas.
En la misma línea también hay extensiones para programar otros robots de diseño libre como puede ser Otto o nuevos robots que están llegando como el de MarkRobots.
Otro punto a tener en cuenta con mBlock es que es entorno de programación por bloques para programar robots más utilizado del mundo, por delante incluso del entorno de programación de LEGO Mindstorms.
Un mayor número de usuarios en un sistema va a significar tener un mayor número de recursos que se comparten, documentación y ejemplos, y un mayor uso del entorno de programación va a favorecer una rápida evolución y una depuración de fallos constante.
En la mayoría de los retos de programación, tutoriales y otros recursos que tienes disponibles en Juegos Robótica utilizo mBlock precisamente porque me sirve para diferentes robots y porque creo que es la mejor opción.
De la misma manera en la plataforma de cursos también utilizo mBlock para la programación por bloques en la mayoría de casos aunque con alguna excepción como el curso para programar por bloques NodeMCU y crear un dispositivo conectado en el Internet de las Cosas o los cursos con LEGO Mindstorms en los que lógicamente utilizo su propio entorno de programación.
No le veo ningún punto negativo a mBlock sobretodo al compararlo con otros entornos de programación por bloques si bien, aún siendo multiplataforma, hay usuarios que reportan ciertos problemas en su uso en Chromebooks.
Si has utilizado mBlock y has encontrado algún punto negativo respecto a otros sistemas te invito a hacer algún comentario a este podcast o al artículo en Juegos Robótica, y también si has tenido una buena experiencia o si prefieres recomendar otros entornos de programación.
Personalmente creo que lo mejor es probar varias alternativas y que saques tus propias conclusiones después de comparar diferentes opciones, pero concretamente si tienes alumnos o hijos que estén acostumbrados a utilizar Scratch tu primera opción a la hora de pasar a la computación física debería ser mBlock en modo colaborativo con el ordenador. Y como te decía cuando lleguen a los robots autónomos ya puedes probar otros sistemas.
Recuerda que estamos comparando entornos de programación por bloques, que sin duda tienen su propia limitación comparados con los lenguajes por código, y hay niveles de complejidad que no se llega con bloques.
Lo bueno que tiene mBlock es que puedes ver el programa que se va a generar en código a partir del programa escrito a través de bloques.
Dependiendo de la versión veremos el código en lenguaje Arduino, que podremos abrir directamente con el entorno de programación de Arduino si quisieramos, o el código en Python.
La traducción de bloques a código es directa y está muy accesible, por lo que puede servir para familiarizarse con las sentencias en código si queremos dar el salto a programar por código.
Pues como decía aquel famoso anuncio “busque, compare, y si encuentra algo mejor cómprelo”, bueno en este caso ni se os comprar cuando tenéis mBlock de libre distribución.
Volveremos en futuros episodios a tratar características especiales de mBlock o diferencias de la nueva versión mBlock 5, pero de momento esto ha sido todo por hoy.
Nos escuchamos en un próximo episodio analizando otro entorno de programación, un kit de robótica educativa o cualquier otra herramienta que nos ayude en el aprendizaje de la programación y la robótica.
Hasta entonces que tengas una feliz semana, nos vemos en siete días… adiós!
David says
Enhorabuena por el post. No puedo estar más de acuerdo contigo, pienso que mBlock es una de las herramientas más potentes y versátiles para su uso en la programación y robótica.
Para mí es esencial, pues se adapta y completa perfectamente a nuestro proyecto de robótica del centro.
Comenzamos con ScratchJR, luego Scratch y finalmente mBlock, y los alumnos avanzan de manera progresiva y “natural”.
Un saludo
Dani says
Gracias David,
La experiencia de vosotros, los profesores, es la mejor prueba de las «técnicas» y diferentes entornos de programación, y tu comentario vuelve a confirmar la utilidad de mBlock. ¡Gracias por comentar!
Saludos,
Dani
Antonio says
A mi me parece una opción muy interesante para trabajar en robótica, después de probar varios programas. Tiene muchas ventajas y funciona muy bien, sólo que en mi centro me veo obligado a trabajarlo bajo linux, y la versión de que dispongo es más limitada que la que se usa en windows. Además no puede trabajar en tiempo real interactuando entre exterior y PC, como sí es posible en windows, por lo que cada vez que tengo que subir proyectos a la placa debo hacerlo pasando por el IDE de Arduino, es decir, no lo puedo subir directamente desde mblock. Y con cierta frecuencia surgen problemas de comunicación con la placa.
Con todo, mis alumnos, que ya trabajan Scratch desde los primeros cursos, se encuentran más cómodos con este entorno. Lástima que, como digo, no se pueda usar el «Modo Ejecutar Programa desde PC».
Dani says
No conocía esa limitación de la versión para linux. Es una lástima porque es una de las funciones más interesantes y diferenciadoras de mBlock.
Muchas gracias por tu comentario que ayuda a completar la información respecto a la versión para linux.
Saludos