Robótica educativa con Mbot

En este curso vamos a conocer y programar este robot: Para hacer este curso hay que saber previamente SCRATCH. M1 Preparados... Programación basada en SCRATCH (mBlock) Amplia gama de sensores y actua…

Introducción

Introducción

Objetivos y contenidos

Para hacer este curso hay que saber previamente unos contenidos mínimos de SCRATCH.

No confundas
mBot
objetivo de este curso, basado en Arduino unos 125€ con matriz LED  https://www.robotix.es/es/mbot
mBot2
basado en Cyberpi unos 200€ https://www.robotix.es/es/mbot-2

Objetivos

Contenidos

Introducción

Pensamiento computacional

Puedes ver que este robot tiene un un margen de edad y como su programación es por bloques (Scratch) su curva de aprendizaje es rápida y apropiada para muchas situaciones.

Guía orientativa

Tenemos un grupo Telegram Robótica Educativa en Aragón, si estás interesado en unirte, envía un mensaje por Telegram (obligatorio) a CATEDU 623197587 https://t.me/catedu_es y te añadimos en el grupo

Introducción

Robótica y accesibilidad

1.- Introducción

Durante mucho tiempo la robótica fue patrimonio de personas y/o instituciones con alta capacidad económica (podían adquirir las placas con microcontroladores comerciales) y capacidad intelectual (podían entender y programar el funcionamiento de las mismas) siempre dentro de los límites establecidos por las marcas comerciales y lo que pudieran “desvelar” de su funcionamiento, vigilando siempre que la competencia no “robara” sus secretos y “copiara” sus soluciones.

Todo esto saltó por los aires en torno a 2005 con la irrupción de un grupo de profesores y estudiantes jóvenes, que decidieron romper con esta dinámica, tratando de poner a disposición de su alumnado microcontroladores económicamente accesibles y que les permitieran conocer su funcionamiento, sus componentes, e incluso replicarlos y mejorarlos. Nacía Arduino y el concepto de Hardware Open Source. Detrás de este concepto se encuentra la accesibilidad universal. En un proyecto Open Source todo el mundo puede venir, ayudar y contribuir, minimizando barreras económicas e intelectuales.

Arduino traslada al hardware un concepto ya muy conocido en el ámbito del software, como es el software open source o software libre.

opensource.png

Software libre

Cuando los desarrolladores de software terminan su creación, tienen múltiples posibilidades de ponerlo a disposición de las personas, y lo hacen con condiciones específicas especificadas en una licencia. Esta licencia es un contrato entre el creador o propietario de un software y la persona que finalmente acabará utilizando este software. Como usuarios, es nuestro deber conocer las condiciones y permisos con las que el autor ha licenciado su producto, para conocer bajo qué condiciones podemos instalar y utilizar cada programa.

Existen muchas posibilidades de licencias: software privativo, comercial, freeware, shareware, etc.. Nos centraremos aquí en la de software libre.

GNU (https://www.gnu.org) es una organización sin ánimo de lucro que puso una primera definición disponible de lo que es software libre: Software libre significa que los usuarios del software tienen libertad (la cuestión no es el precio). Desarrollaron el sistema operativo GNU para que los usuarios pudiesen tener libertad en sus tareas informáticas. Para GNU, el software libre implica que los usuarios tienen las cuatro libertades esenciales:

1. ejecutar el programa.
2. estudiar y modificar el código fuente del programa.
3. redistribuir copias exactas.
4. distribuir versiones modificadas.

En otras palabras, el software libre es un tipo de software que se distribuye bajo una licencia que permite a los usuarios utilizarlo, modificarlo y distribuirlo libremente. Esto significa que los usuarios tienen libertad de ejecutar el software para cualquier propósito, de estudiar cómo funciona el software y de adaptarlo a sus necesidades, de distribuir copias del software a otros usuarios y de mejorar el software y liberar las mejoras al público.

El software libre se basa en el principio de la libertad de uso, y no en el principio de la propiedad. Esto significa que los usuarios tienen la libertad de utilizar el software de la manera que deseen, siempre y cuando no violen las condiciones de la licencia. El software libre es diferente del software propietario, que es el software que se distribuye con restricciones en su uso y modificación. El software propietario suele estar protegido por derechos de autor y solo se puede utilizar bajo los términos y condiciones especificados por el propietario del software.

Recomendamos la visualización de este video para entender mejor el concepto.

Más adelante, entorno a 2015, en Reino Unido, surgiría también la placa BBC Micro:bit, con la misma filosofía de popularizar y hacer accesible en este caso al alumnado de ese país la programación y la robótica. También hablaremos de ella.

2.- ARDUINO o LA ROBÓTICA ACCESIBLE

Arduino es una plataforma de hardware y software libre.

Hardware libre

Esto significa que tanto la placa Arduino como el entorno de desarrollo integrado (IDE) son de código abierto. Arduino permite a los usuarios utilizar, modificar y distribuir tanto el software como el hardware de manera libre y gratuita, siempre y cuando se respeten las condiciones de las licencias correspondientes.

El hardware libre es un tipo de hardware cuya documentación y diseño están disponibles de manera gratuita y libre para su modificación y distribución. Esto permite a los usuarios entender cómo funciona el hardware y adaptarlo a sus necesidades, así como también crear sus propias versiones modificadas del hardware.

Arduino surge como solución al elevado precio de los microcontroladores allá por el año 2005. En el ámbito de la educación, los microcontroladores solo se utilizaban en la etapa universitaria, y su coste era tan elevado que muchos proyectos de fin de carrera se quedaban únicamente en prototipos virtuales ya que las universidades no podían proveer a cada estudiante con un microprocesador, contando además que en el propio proceso de experimentación lo más habitual era que una mala conexión hiciera que se rompieran. Otro gran inconveniente era la dificultad de la programación. Cada fabricante entregaba su manual de programación, lo que hacía que de unos a otros no hubiera un lenguaje estándar, y la consecuente dificultad de interpretación. Además, su programación era a bajo nivel en lenguaje máquina. Generar una simple PWM requería una ardua y minuciosa secuenciación que podía llevar varias horas hasta conseguir el resultado deseado. Por este motivo, el enfoque de Arduino desde el principio fue ser Open Source tanto en hardware como en software. El desarrollo del hardware fue la parte más sencilla. Orientado a educación, sufre algunas modificaciones frente a los microprocesadores existentes para hacer más fácil su manejo y accesibilidad a cualquier sensor o actuador. El mayor esfuerzo se entregó en todas las líneas de código que hacían posible que ya no hubiera que programar a bajo nivel gracias al IDE de Arduino que incluía bibliotecas y librerías que estandarizaban los procesos y hacían tremendamente sencillo su manejo. Ahora el alumnado para mover un motor, ya no tenía que modificar las tramas de bits del procesador una a una, sino que bastaba con decir que quería moverlo en tal dirección, a tal velocidad, o a equis grados.

Acabábamos de pasar de unos costes muy elevados y una programación muy compleja a tener una placa accesible, open source y de bajo coste que además hacía muy accesible su programación y entendimiento, características fundamentales para su implantación en educación, hasta tal punto que su uso ya no era exclusivo de universidades, sino que se extiende a la educación secundaria.

arduinosecundaria.png

Este hecho es fundamental para el desarrollo del Pensamiento Computacional en el aula observándose que su accesibilidad y beneficios son tales, que alcanzan a centros con alumnado de toda tipología como la aplicación del pensamiento computacional y robótica en aulas con alumnos de necesidades especiales. Una vez más, aparece el concepto de accesibilidad asociado a esta filosofía Open Source.

A este respecto, recomendamos la lectura de este interesante blog, que tiene por título: ROBOTIQUEAMOS...” Experiencia de aproximación a la robótica en Educación Especial (CPEE ÁNGEL RIVIÈRE). También recomendamos los trabajos robótica en Educación Especial (CPEE ÁNGEL RIVIÈRE):  http://zaragozacpeeangelriviere.blogspot.com/search/label/ROB%C3%93TICA

blogRobotiqueamos.jpg

Igualmente, la aparición de Arduino supone una gran facilidad para la aplicación de la robótica y la programación en la atención temprana, donde son numerosas sus aplicaciones desde ayudar a mitigar el déficit de atención en jóvenes autistas, hasta ayudar a socializar a los alumnos con dificultades para ello, o ayudar a alumnos de altas capacidades a desarrollar sus ideas.

Por otro lado su accesibilidad económica lo ha llevado a popularizarse en países de todo el mundo, especialmente en aquellos cuyos sistemas educativos no disponen en muchas ocasiones de recursos suficientes, lo que supone en la práctica una democratización del conocimiento y superación de brecha digital.

Filosofía del Arduino ver vídeo

Arduino y su IDE son la primera solución que aparece en educación con todas las ventajas que hemos enumerado, y esto hace que todos los nuevos prototipados y semejantes tengan algo en común, siempre son compatibles con Arduino

Para entender bien la filosofía de Arduino y  el hardware libre, os recomendamos este documental de 30 minutos. Arduino the Documentary

Scratch: software libre para el desarrollo del pensamiento computacional

Scratch es un lenguaje de programación visual desarrollado por el grupo Lifelong Kindergarten del MIT Media Lab. Scratch es un software libre. Esto significa que está disponible gratuitamente para todos y que se distribuye bajo una licencia de software libre, la Licencia Pública General de Massachusetts (MIT License). Esta licencia permite a los usuarios utilizar, modificar y distribuir el software de manera libre, siempre y cuando se respeten ciertas condiciones. Entre otras cosas, la licencia de Scratch permite a los usuarios utilizar el software para cualquier propósito, incluyendo fines comerciales. También permite modificar el software y distribuir las modificaciones, siempre y cuando se incluya una copia de la licencia y se indique que el software ha sido modificado. En resumen, Scratch es un software libre que permite a los usuarios utilizar, modificar y distribuir el software de manera libre y gratuita, siempre y cuando se respeten las condiciones de la licencia. De hecho, gracias a que está licenciado de esta forma, han surgido decenas de variaciones de Scratch para todo tipos de propósitos, eso sí, siempre educativos y relacionados con las enseñanzas de programación y robótica

3. BBC micro:bit y la Teoría del Cambio

BBC micro:bit, a veces escrito como Microbit o Micro Bit, es un pequeño ordenador del tamaño de media tarjeta de crédito, creado en 2015 por la BBC con el fin de promover el desarrollo de la robótica y el pensamiento computacional entre la población escolar del Reino Unido. Actualmente su uso está extendido entre 25 millones de escolares de 7 a 16 años de más de 60 países.

e74cc3a97963070daee67213f9ccf5268388bd01-790x635.webpTarjeta BBC micro:bit V1. Fuente: https://microbit.org. CC BY-SA 4.0.

Aunque el proyecto fue iniciado por la BBC, su desarrollo fue llevado a cabo por 29 socios tecnológicos de primera línea. Por ejemplo, la implementación del Bluetooth integrado en la tarjeta corrió a cargo de la fundación propietaria de la marca, Bluetooth SIG, una asociación privada sin ánimo de lucro.

El hardware y el software resultantes son 100% abiertos, y están gestionados por una fundación sin ánimo de lucro que comenzó a funcionar en el año 2016, la Micro:bit Educational Foundation. La fundación basa sus actuaciones en su Teoría del Cambio,

Teoría del cambio y más sobre microbit

Teoría del cambio puede resumirse en tres principios:

Para desarrollar sus principios, la fundación trabaja en tres líneas de acción:

Uno de los objetivos de la Micro:bit Educational Foundation es llegar a 100 millones de escolares en todo el mundo.

En correspondencia con las líneas de acción y con los principios expuestos, el sistema resultante es muy económico: tanto las placas como los accesorios producidos por terceras empresas tienen un precio muy contenido. Además, dado el carácter abierto del proyecto, están disponibles algunos clones totalmente compatibles, como Elecrow Mbits o bpi:bit. Estos clones son incluso más potentes y económicos que la placa original.

El universo micro:bit destaca por su alta integración de software y hardware: basta un clic de ratón para cargar las librerías necesarias para que funcione cualquier complemento robótico, como sensores, pantallas, tarjetas de Internet de las Cosas, robots, casas domóticas, etc.

La programación de la placa se realiza desde un ordenador a través de un navegador cualquiera, estando disponibles 12 lenguajes de programación. De nuevo, por ser un sistema abierto, existen múltiples soluciones de programación, aunque las más común es MakeCode.

MakeCode.pngCaptura de pantalla del editor MakeCode, https://makecode.microbit.org/#.

El sitio web MakeCode permite programar con bloques y también en Python y en Java, traduciendo de un lenguaje a otro instantáneamente. No se necesita ningún registro en la plataforma para poder programar.

Los programas también pueden guardarse descargados en el ordenador compilados en código de máquina. Al subir de nuevo el programa al editor, se realiza una decompilación automática al lenguaje de bloques, Python o Java. Los programas guardados en código de máquina se pueden cargar directamente en micro:bit, que en el escritorio de un ordenador se maneja como una simple unidad de memoria USB.

MakeCode contiene además múltiples recursos como tutoriales, vídeos, fichas de programación, cursos para el profesorado, ejemplos y propuestas de proyectos y experimentos, todo ello en varios idiomas y clasificado por edades desde los 7 años.

Otra solución muy usada para programar micro:bit es MicroPython, creada por Python Software Foundation, otra organización sin ánimo de lucro.

MicroCode permite que los más pequeños, a partir de los 6 años de edad, programen micro:bit mediante un sistema de fichas dispuestas en líneas de acción. Están disponibles un tutorial introductorio en 20 idiomas, una guía del usuario y muchos ejemplos. El proyecto es de código abierto.

Micro:bit también es programable en Scratch con sólo añadir una extensión al editor.

Todos los entornos de desarrollo descritos disponen de un simulador de micro:bit, por lo que ni siquiera resulta necesario disponer de una tarjeta física para aprender a programar.

Una vez realizada la programación, la placa y sus complementos pueden funcionar desconectados del ordenador por medio de un cargador de móvil, una batería externa o un simple par de pilas alcalinas.

Versiones y características de micro:bit

A pesar de su pequeño tamaño, micro:bit es un sistema potente. Existen dos versiones de la placa. La más moderna, llamada micro:bit V2, tiene las siguientes características:

4.- LA IMPORTANCIA DEL OPEN SOURCE / CÓDIGO ABIERTO EN EDUCACIÓN

La creación, distribución, modificación y redistribución del hardware y software libre así como su utilización, están asociados a una serie de valores que deberían ser explicados en la escuela a nuestros alumnos para dar una alternativa a la versión mercantilista de que cualquier creación es creada para obtener beneficios económicos.

En GNU, pusieron especial énfasis en la difusión del software libre en colegios y universidades, promoviendo una serie de valores fundacionales:

Valores GNU
 Compartir

   El código fuente y los métodos del hardware y software libre son parte del conocimiento humano. Al contrario, el hardware software privativo es conocimiento secreto y restringido. El código abierto no es simplemente un asunto técnico, es un asunto ético, social y político. Es una cuestión de derechos humanos que la personas usuarias deben tener. La libertad y la cooperación son valores esenciales del código abierto. El sistema GNU pone en práctica estos valores y el principio del compartir, pues compartir es bueno y útil para el progreso de la humanidad. Las escuelas deben enseñar el valor de compartir dando ejemplo. El hardware y software libre favorece la educación pues permite compartir conocimientos y herramientas.

Responsabilidad social

     La informática, electrónica, robótica... han pasado a ser una parte esencial de la vida diaria. La tecnología digital está transformando la sociedad muy rápidamente y las escuelas ejercen una influencia decisiva en el futuro de la sociedad. Su misión es preparar al alumnado para que participen en una sociedad digital libre, mediante la enseñanza de habilidades que les permitan tomar el control de sus propias vidas con facilidad. El hardware y el software no debería estar bajo el poder de un desarrollador  que toma decisiones unilaterales que nadie más puede cambiar.

Independencia

      Las escuelas tienen la responsabilidad ética de enseñar la fortaleza, no la dependencia de un único producto o de una poderosa empresa en particular. Además, al elegir hardware y software libre, la misma escuela gana independencia de cualquier interés comercial y evita permanecer cautiva de un único proveedor. Las licencias de hardware y software libre no expiran

Aprendizaje

        Con el open source los estudiantes tienen la libertad de examinar cómo funcionan los dispositivos y programas y aprender cómo adaptarlos si fuera necesario. Con el software libre se aprende también la ética del desarrollo de software y la práctica profesional.

Ahorro

        Esta es una ventaja obvia que percibirán inmediatamente muchos administradores de instituciones educativas, pero se trata de un beneficio marginal. El punto principal de este aspecto es que, por estar autorizadas a distribuir copias de los programas a bajo costo o gratuitamente, las escuelas pueden realmente ayudar a las familias que se encuentran en dificultad económica, con lo cual promueven la equidad y la igualdad de oportunidades de aprendizaje entre los estudiantes, y contribuyen de forma decisiva a ser una escuela inclusiva.

Calidad

        Estable, seguro y fácilmente instalable, el software libre ofrece una amplia gama de soluciones para la educación.

Para saber más

En los años 90, era realmente complicado utilizar un sistema operativo Linux y la mayoría de la cuota del mercado de los ordenadores personales estaba dominada por Windows. Encontrar drivers de Linux para el hardware que tenía tu equipo era casi una quimera dado que las principales compañías de hardware y de software no se molestaban en crear software para este sistema operativo, puesto que alimentaba la independencia de los usuarios con respecto a ellas mismas.

Afortunadamente, y gracias a la creciente presión de su comunidad de usuarios, estas situaciones pertenecen al pasado, y las compañías fabricantes de hardware han tenido que variar el rumbo. Hoy en día tenemos una gran cantidad de argumentos en los que nos podemos basar para dar el salto hacia cualquier sistema operativo basado en Linux. Tal y como podemos leer en educacionit.com, podemos encontrar las siguientes ventajas:

Por estas razones, el software libre se ha expandido por toda la comunidad educativa en los últimos años de manera exponencial. Un buen ejemplo de lo que estamos hablando es Bookstack, este sistema de edición de contenidos para cursos que utiliza Aularagón así como el uso de Moodle como plataforma de enseñanza y aprendizaje. En cuanto a sistema operativo para ordenadores, en Aragón disponemos de nuestra propia distribución Linux: Vitalinux EDU. Tal y como podemos leer desde su página web: Vitalinux EDU (DGA) es la distribución Linux elegida por el Gobierno de Aragón para los centros educativos. Está basada en Vitalinux, que se define como un proyecto para llevar el Software Libre a personas y organizaciones facilitando al máximo su instalación, uso y mantenimiento. En concreto Vitalinux EDU (DGA) es una distribución Ubuntu (Lubuntu) personalizada para Educación, "tuneada" por los requisitos y necesidades de los propios usuarios de los centros y adaptada de forma personalizada a cada centro y a la que se ha añadido una aplicación cliente Migasfree. De ésta forma, obtenemos:

  1. Un Sistema Ligero. Permite "revivir" equipos obsoletos y "volar" en equipos modernos. Esto garantiza la sostenibilidad de un sistema que no consume recursos de hardware innecesariamente ni obliga a la sustitución del hardware cada poco tiempo en esa espiral de obsolescencia programada en la que se ha convertido el mercado tecnológico.
  2. Facilidad en la instalación y el uso del sistema mediante programas personalizados.
  3. Un Sistema que se adapta al centro y/o a cada aula o espacio, y no un centro que se adapta a un Sistema Operativo.
  4. Gestión de equipo y del software de manera remota y desatendida mediante un servidor Migasfree.
  5. Inventario de todo el hardware y software del equipo de una forma muy cómoda.
  6. Soporte y apoyo de una comunidad que crea, comparte e innova constantemente.



1. Preparados

1. Preparados

¿Qué es mBot?

No confundas
mBot
objetivo de este curso, basado en Arduino unos 125€ con matriz LED  https://www.robotix.es/es/mbot
mBot2
basado en Cyberpi unos 200€ https://www.robotix.es/es/mbot-2

mBot es un robot educativo de la empresa Makeblock, que persigue los siguientes objetivos:

  1. El objetivo principal es desarrollar el pensamiento computacional en el alumnado motivado por la ejecución de órdenes en algo físico como es el robot.
  2. El robot está diseñado para su uso escolar: resistente y económico
  3. Basado en hardware libre y software libre

El objetivo 1 da como resultado que el kit de mBot sólo permite una configuración posible más los complementos que tiene el kit que proporciona el kit de CATEDU, no hay tiempos en construcción, sólo en programación, esto es otra filosofía diferente frente a otras alternativas como los robots de LEGO, que el tiempo en construcción y creatividad es importante. No queremos defender qué alternativa es buena y cual mala, sino que el docente tiene que decidir qué objetivos quiere perseguir, según lo que quiere tiene que decidir qué producto es el adecuado.

El objetivo 2 No podemos hablar de este objetivo pues actualmente este equipo no se fabrica Las características y precios de mBot 2.4G se puede ver en este enlace.

El objetivo 3 el hardware libre está materializado en que se basa en la placa ARDUINO, que lo han personalizado con más sensores y conexiones rápidas RJ11 (la clavija de teléfono fijo). El software libre en este robot está en el programa mBlock que está basado en el software de programación Scracth, diseñado para desarrollar el pensamiento computacional en los niños, ampliamente usado en todo el mundo, el cual le añaden unas librerías propias del robot, dando como resultado mBlock
El software mBlock es el resultado de instalar el firmware de la placa Arduino, instalar las librerías del robot en el Scracth, actualizar, etc... recomendamos lo práctico: Descargar el mBlock directamente que lo tiene todo ya preparado.
Dentro de esta filosofía de libertad, los agujeros son compatibles con LEGO ampliando las posibilidades.


Fuente: http://makeblock.es/

¿Se puede uno fabricar un "mBot"?

SI, pues prácticamente es un Arduino con motores y sensores bastante estándares, y encima el programa mBlock es gratis, lo único es que no te saldrá tan perfecto. ¿Cómo se hace? para esto ya hay un curso en Aularagon MCLON https://libros.catedu.es/books/mclon-con-nanoarduino

y un grupo en Twitter: @mClonRobot

embedded-image-pk7CkywQ.jpeg

¿Se puede simular?

¿Qué no tienes robot? no pasa nada, hay buenos simuladores https://scratch.mit.edu/projects/788113358/editor/

1. Preparados

mBot y mBlock

Requisitos de conceptos previos

Es necesario haber realizado una FORMACIÓN BÁSICA EN SCRATCH la formación exclusiva de Scratch en Aularagón es suficiente.

Requisitos de material

Necesitas el kit de robótica mBot de MakeBlock que presta CATEDU :

Requisitos de software y Hardware

Instalar el mBlock en la página oficial de descarga mBlock http://www.mblock.cc/

Disponible en diversos sistemas operativos y su instalación no presenta ningún problema.

Recomendamos usar la versión descargada y así no usar Internet, tenemos versión Windows y versión Mac, para Linux ver Robótica con Vitalinux

descargamblock.jpg

Hay que destacar que en Windows, la primera vez que se quiere comunicar con el robot salta el Firewall de Windows bloqueándolo, pero mostrando un diálogo si se permite o no esta comunicación externa, clickar en PERMITIR

Se actualiza muy a menudo, mejorando cada vez más sus prestaciones, lo que implica que su descarga es cada vez más pesada, más de cien megas, pero después prescinde de Internet.

El programa es muy sencillo si estás acostumbrado al SCRATCH :

Fuente: http://makeblock.es/

Qué curioso !

mBlock está basado en Scratch y simplemente ha añadido extensiones para trabajar mBot, pero también ha añadido extensiones para trabajar Arduino, no es capricho, es porque mBot es un Arduino con dos motores y sensores.

En CATEDU hemos experimentado distintas formas de programar el Arduino de forma sencilla para alumnos de primaria y encontramos mBlock como el mejor programa para hacerlo. Nuestros cursos de -Arduino utilizamos mBlock.

Un vistazo a mBlock en la página de Robotopia :

1. Preparados

Arduino: El corazón de mBot

El kit es fácil de montar (instrucciones), pero si nos fijamos el corazon es la placa de Arduino:

Fuente: http://makeblock.es/

Nos tenemos que fijar en estos componentes de la placa:

Fuente: http://makeblock.es/

1. Preparados

Componentes exteriores

Los componentes exteriores no importantes a la hora de programar del Kit son:

Componentes exteriores importantes a la hora de programar y que trataremos en este curso son:

Puedes elegir montar estos componentes en otros puertos, simplemente tienes que tenerlo en cuenta en la programación.
Si utilizas el kit de Catedu TE PEDIMOS NO MODIFICAR LOS PUERTOS PARA NO TENER PROBLEMAS CON LOS SIGUIENTES COMPAÑEROS QUE UTILICEN EL EQUIPO.

Fuente de las imágenes: http://makeblock.es/

1. Preparados

Programación mBlock

DOS FORMAS DE PROGRAMAR EN MBLOCK :

OPCIÓN
 Programación en vivo

El programa reside en el ordenador, y en la placa hay instalado un Firmware para ir escuchando y ejecutando lo que manda el ordenador. 

OPCIÓN Programación cargar a la placa

Todos los programas editores de Arduino (tanto los que programan con código como el Arduino IDE) como los editores de programas gráficos en bloque (mBlock, Snap4Arduino, Arduinoblocks, ...) permiten cargar el programa en la placa.  Las ventajas y desventajas son las opuestas de trabajar en vivo.

EN VIVO ¿Qué es eso?                                                                                                                                                       
Existe una posibilidad de utilizar la placa "en vivo" frente a "cargar" el programa en la placa.
Es decir, interactuando con el ordenador. El programa está en el PC. En la placa hay un firmware que le dice que este a las órdenes del PC.  De esta manera podemos por ejemplo:
     - Enviar órdenes desde el ordenador a la placa.
                      Por ejemplo que al pulsar la tecla espacio que se encienda el led D13 
    - Enviar información desde la placa al ordenador
                  Por ejemplo que muestre por pantalla nos muestre la cantidad de luz, que registra el sensor LDR, etc...
Que nosotros sepamos, estos programas permiten la programación en vivo :
               - mBlock placas: Arduino, Microbit, Raspberry Pi, ... robots de Makeblock: mBot, Cyberpi...
                -EchidnaScratch CURSO DE ECHIDNA
VENTAJAS LA PROGRAMACIÓN EN VIVO PERMITE MUCHO JUEGO Y POSIBILIDADES A LA HORA DE ELABORAR PROYECTOS
INCONVENIENTES: Necesitas el ordenador encendido y conectado al robot.

1. Preparados

Preparando mBlock

Descargamos y ejecutamos mBlock desde la página de descargars de mBlock https://www.mblock.cc/en/download/

descargamblock.jpg

Podemos configurar el lenguaje

lenguajemblock.png

Vamos a Dispositivos, vemos pues como mBlock esta preparado para controlar distintos tipos de robot, destacamos Microbit, Arduino, .... bueno, al grano, vamos a añadir mBot

anadirmbotamblock.png

1. Preparados

IMPORTANTE: ACTUALIZAR FIRMWARE

P.-Enciendes tu mBot, y de repente ¡¡se pone a hacer cosas !!! pero si no le programado aún  nada!!! ¿Cómo es posible?
R.-Seguramente tu equipo mBot, el anterior alumno ha dejado un programa dentro del mBot

ACTUALIZAREMOS EL FIRMWARE SIEMPRE QUE MBOT NO RESPONDA A MBLOCK

¿Cómo se hace?

  1. Conectamos mBot con el cable USB al ordenador y encenderlo
    conectarUSB.png
    Fuente el autor
  2. Pulsamos en mBlock "CONECTAR"
    conectarmBot.png

  3. En el diálogo seleccionamos USB y de todos los puertos USB seleccionamos el que esta conectado (suele ser el que propone) y CONECTAR
    conectarmBot2.png
  4. Una vez que la conexión ha sido un éxito, le damos a ACTUALIZAR
    conectarmBot3.png

  5. Sale un diálogo para elegir qué firmware quieres, si el de fábrica o el que existe en Internet, no hay mucha diferencia de versiones
    conectarmBot4.png
  6. Sale un mensaje de que se ha actualizado y advierte que SE VA DESCONECTAR EL DISPOSITIVO
    conectarmBot5.png
  7. Volvemos a conectar el dispositivo, es decir, repetimos los pasos PASO 2 Y PASO 3
  8. PROBARLO vamos al dispositivo mBot, nos aseguramos que esta en modo EN VIVO, elegimos una instrucción sencilla, por ejemplo vamos a LUZ Y SONIDO elegimos ENCIENDE LED TODOS EN ROJO DURANTE 1 SEGUNDO damos DOS CLICKS en esa instrucción y mBot tiene que responder
    conectarmBot6.png
1. Preparados

EN VIVO ¿Eso qué es?

DOS FORMAS DE PROGRAMAR EN MBLOCK :

OPCIÓN
 Programación en vivo

El programa reside en el ordenador, y en la placa hay instalado un Firmware para ir escuchando y ejecutando lo que manda el ordenador. 

OPCIÓN Programación cargar a la placa

Todos los programas editores de Arduino (tanto los que programan con código como el Arduino IDE) como los editores de programas gráficos en bloque (mBlock, Snap4Arduino, Arduinoblocks, ...) permiten cargar el programa en la placa.  Las ventajas y desventajas son las opuestas de trabajar en vivo.

EN VIVO ¿Qué es eso?                                                                                                                                                       
Existe una posibilidad de utilizar la placa "en vivo" frente a "cargar" el programa en la placa.
Es decir, interactuando con el ordenador. El programa está en el PC. En la placa hay un firmware que le dice que este a las órdenes del PC.  De esta manera podemos por ejemplo:
     - Enviar órdenes desde el ordenador a la placa.
                      Por ejemplo que al pulsar la tecla espacio que se encienda el led D13 
    - Enviar información desde la placa al ordenador
                  Por ejemplo que muestre por pantalla nos muestre la cantidad de luz, que registra el sensor LDR, etc...
Que nosotros sepamos, estos programas permiten la programación en vivo :
               - mBlock placas: Arduino, Microbit, Raspberry Pi, ... robots de Makeblock: mBot, Cyberpi...
                -EchidnaScratch CURSO DE ECHIDNA
VENTAJAS LA PROGRAMACIÓN EN VIVO PERMITE MUCHO JUEGO Y POSIBILIDADES A LA HORA DE ELABORAR PROYECTOS
INCONVENIENTES: Necesitas el ordenador encendido y conectado al robot.

¿Qué hace mBot EN VIVO dependiendo del ordenador?

En el modo EN VIVO, mBot obedece a un programa interno (Firmware) que es el que hemos puesto al ACTUALIZAR EL FIRMWARE

Este Firmware lo que le ordena a la placa Arduino es:

  1. Haz caso a las instrucciones del mando de IR ver figura de abajo
  2. Haz caso a la conexión con el ordenador y a las instrucciones que vengan por ahí

Esto tiene su importancia:

Instrucciones del mando IR en el firmware que viene por defecto (modo dependiendo del ordenador):

Fuente de las imágenes: http://makeblock.es/

AL ACTUALIZAR EL FIRMWARE ESTAS DICIENDO AL MBOT QUE TRABAJE EN VIVO


1. Preparados

EN VIVO conexión 2.4 Bluetooth o cable

Tenemos dos opciones de comunicarnos con mBot, inalámbrica 2.4G o con cable, aconsejamos la primera:

Conexión inalámbrica 2.4G

La conexión inalámbrica se realiza a través de la mochila 2.4G. Insertamos el pincho USB de la mochila (no necesita ningún driver, el ordenador lo interpreta como un ratón inalámbrico).

pincho24g.png
Pincho USB 2.4G fuente Makeblock.es

Cada pincho va asociado a un robot (o mejor dicho: a la mochila 2.4G están emparejados, si el led de la mochila parpadea es que ha perdido conexión, podemos emparejarlo haciendo una pulsación larga en el botón que hay en la mochila 2.4G.



Mochila 2.4G fuente makeblock.es

y conectamos el robot con el programa en Conectar- 2.4G Serial- Conectar

conexion24g.png

Si sale que esta conectado 2.4G ya podemos trabajar SOLO EN VIVO

conexion24g2.png

Podemos probarlo haciendo dos clicks a la instrucción de encender led rojo durante un segundo

conectarmBot6.png

Conexión por cable

Existe la posibilidad de conexión por cable, útil por ejemplo si se ha perdido el pincho, seguir programando hasta la espera de la compra de otro, o por ejemplo si se agotan las pilas, por cable el robot puede seguir funcionando. Evidentemente con la pérdida de libertad de movilidad.

conectar-con-cable.png

No hay que olvidar que si optamos por la conexión Serial por el puerto USB, TENEMOS QUE DESCONECTAR LA OTRA CONEXIÓN INALÁMBRICA:


1. Preparados

CARGAR

La opción de cargar tu programa en el mBot se hace simplemente

  1. Conectar el mBot por CABLE como lo hemos visto anterirormente
  2. Realizas tu programa
  3. Pulsa CARGAR
  4. Pulsa SUBIR y el programa va al mBot

cargar1.png

ATENCION, UNA VEZ CARGADO EL PROGRAMA, TE HAS "CARGADO" EL FIRMWARE por lo tanto si quieres volver a trabajar con el mBot EN VIVO tienes que volver a ACTUALIZAR EL FIRMWARE tal y como lo hemos visto

1. Preparados

EN VIVO vs CARGAR

VENTAJAS EN VIVO

DESVENTAJAS EN VIVO

Cargar un programa tiene las ventajas y desventajas al revés de en vivo

OJO una vez que le das a CARGAR si quieres trabajar EN VIVO tienes que ACTUALIZAR EL HARDWARE

tontada.png

1. Preparados

A JUGARRRRR !!!!

¿Lo probamos? venga!!! monta este sencillo programa. Las flechas te indican dónde está cada instrucción :

AJUGAR.png

Lo tienes aquí https://planet.mblock.cc/project/2999030

y como decía Joaquín Prat en el precio justo A jugaaarr !! 

Fuente http://lossesentas-mispersonajes.blogspot.com.es/2015/08/joaquin-prat.html

(si entiendes esto último, es que tienes la edad óptima para aprender a programar ;)

PONLE MÁS DIVERSIÓN

Pega en el mBot con cinta aislante una varilla sujeta globos, pon en un extremo un globo y en el otro extremo una aguja de coser también con cinta aislante

Se lo pasan genial !!!

2. Listos

2. Listos

Módulos electrónicos

En esta sección vamos a aprender los módulos que están integrados en la placa:

Fuente : Modificado de http://makeblock.es

Botón

RETO

Realizar un programa que salga un mensaje al apretar el botón de mBot.

Solución

Con mBlock5 puedes utilizar o el código de la derecha o el de la izquierda

Utilizaremos la técnica VARIABLES GLOBALES, creamos una variable global MENSAJE, ver https://libros.catedu.es/books/robotica-educativa-con-mbot/page/programacion-mblock

blocks.png

Y en el objeto oso panda

mbotl-boton2.png

Con mBlock3 era

embedded-image-snKETvoE.png
Pregunta tonta: ¿por dónde sale el mensaje?
El botón es un elemento de interacción a tener en cuenta, aunque como veremos más adelante es más útil usar el teclado del PC.
Siempre es típico que el primer programa en un curso de programación sea un "Hola Mundo" pero lo hemos personalizado

LED RGB

Los LED que hay montados en la placa permiten poner los 3 colores básicos a distintas tonalidades, desde 0 hasta 255, que podemos mezclar

RETO

Realizar un programa que al apretar en el teclado.. * 'a' se encienda el rojo * 's' se encienda el verde * 'd' se encienda el azul

Solución

En mBlock5 lo tienes aquí https://planet.mblock.cc/project/3261360

mbot1-teclas-color.pngEn mBlock3

Ahora usa el teclado de tu ordenador, pulsa las teclas a s y d
¿No funciona?
Puede ser que mBot se quede enganchado con algún código anterior, y no lo tengas en modo VIVO

Buzzer

Este simpático zumbador nos da algo de juego, podemos cambiar la nota como la duración, vamos a probarlo:

Reto

Realizar una sirena, es decir, que suene un tono un segundo por ejemplo, y otro tono diferente durante otro segundo, y así sin parar. Para complicarlo más, sólo hará la sirena si pulsamos la tecla espacio. Para pararlo hay que pulsar el círculo rojo que hay al lado de la bandera.

Solución

En mBlock5 lo tienes aqui https://planet.mblock.cc/project/3261365

mbot-teclaespacio-pitido.png

En mBlock3


Aquí podemos conseguir un tono creciente

Y para los más frikis ;) ...

De http://juegosrobotica.es/musica-con-mbot/

Si alguien lo hace, por favor que lo cuelgue en el muro !

Mando a distancia y sensor IR

El sensor de IR puede recibir del mando números, letras A-D, flechas y el botón configuración. Ojo: El mando no es exclusivo de un robot, es decir, los demás robots del aula reciben las misma información, lo importante es apuntar el mando a los sensores del robot y no a otro:

Fuente: Tutorial de http://makeblock.es

Para comprobar si tu mando funciona, es muy fácil (válido para todos los mandos, incluso el de TV) enfoca con tu móvil y aprieta a ver si se enciende la luz. La cámara de los móviles es sensible al IR

Reto

Vamos que puedes hacerlo bailar !! con el mando a distancia, tienes que controlar sus movimientos, flecha arriba adelante, flecha atrás retrocede.... botón central (el de la rueda dentada) que pare.

Solución

Con mBlock 5 se puede en vivo o cargar. Lo tienes aquí https://planet.mblock.cc/project/3263253

mbot1-mando.png

Con mBlock 3 sólo se puede cargar, no en vivo



Sensor Luz

El sensor Luz está situado al lado de los de IR, detecta la luz ambiente, pero también hemos experimentado que detecta la infrarroja, por lo que es sensible a la calefacción, y falsea su medida.

Fuente: Tutorial de http://makeblock.es

Reto que el panda diga la luz que hay

Vamos a creare un programa donde el objeto Panda diga la cantidad de luz que lee. La intención es ver cual es el umbral para realizar el siguiente reto

En mBlock5.0

Puedes utilizar la técnica de VARIABLES GLOBALES, que es muy fácil y lo hemos visto y explicado aquí https://libros.catedu.es/books/robotica-educativa-con-mbot/page/programacion-mblock y que sería el programa como este https://libros.catedu.es/books/arduino-con-echidna-y-mblock-scratch/page/el-ldr-en-a5 pero vamos a utilizar en este caso la técnica más sofisticada BROADCAST

El programa lo tienes aquí https://planet.mblock.cc/project/3263369

El programa en el dispositivo MBOT (hay que ir al + de abajo, e instalar la extensión BROADCAST)

mbot1-luz1.png

El programa en el dispositivo OSO PANDA (hay que ir al + de abajo, e instalar la extensión BROADCAST)

mbot1-luz2.png

RETO MARCHA NOCTURNA

Realizar un programa que si se apaga la luz, el robot ¡¡se pone a dar vueltas!! sino, se queda quieto:

Solución

Utilizaremos el programa anterior para saber el UMBRAL es decir, qué valor determinamos que hay luz y no hay luz, en nuestro caso por las características del aula, lo fijamos en 500, en tu caso puede ser distinto.

En mBlock5.0 lo tienes aquí https://planet.mblock.cc/project/3263444

mbot1-marchanocturna.png

En mBlock 3.0 

Es muy espectacular hacerlo con los alumnos, se deja el aula a oscuras, se encienden todas las luces y todo baila ! 

 


No te quedes sólo con darle vueltas

El pobre tiene ganas de salir de marcha por la noche:

RETO Robot polilla

Ya sabemos que las polillas van a la luz: Realizar un programa que si hay luz entonces que vaya recto, si no hay luz que de vueltas

Solución

En mBlock 5.0 lo tienes aquí https://planet.mblock.cc/project/3263452

robotpolilla.png

Se ha optado por dar un poco de potencia a la otra rueda cuando no hay luz, para que de la vuelta un poco más abierta. Puedes poner simplemente la instrucción girar (a la derecha o a la izquierda) pero si hace la vuelta abierta, va mejor.

En mBlock3, y de paso que nos diga el oso la luz




2. Listos

Componentes exteriores

Componentes exteriores importantes a la hora de programar y que trataremos en este curso son:

Por favor no cambies los puertos del equipo de préstamo de Catedu


Fuente de las imágenes: http://makeblock.es/

Sensor de línea

El sensor de líneas está situado en la parte inferior de mBot:

Fuente: Tutorial de http://makeblock.es

Y tiene los siguientes valores:

Fuente: Tutorial de http://makeblock.es

Reto, la oveja en su redil

Ponemos a mBot en un recuadro blanco con el borde negro, queremos que hagas un programa que no salga nuestro robot del "redil".

Consejo: Poner velocidad baja pues si va rápido se salta la línea.

Solución

En mBlock 5.0 lo tienes aquí https://planet.mblock.cc/project/3263664

mbot-corral.png

Fíjate que se ha puesto NINGUNO NEGRO de esta manera, en el momento que uno de los sensores detecte negro, dará la media vuelta

En mBlock3.0



Si no funciona bien, se salta la línea.. no trabajes en vivo, carga el programa

Sensor distancia

El sensor de distancia por ultrasonidos nos devuelve por eco la distancia en cm del objeto que se encuentra enfrente, hasta un máximo de 400 cm

Fuente: Tutorial de http://makeblock.es

Reto huir

Queremos que hagas un programa que si pongo la mano delante, que se vaya atrás. Por ejemplo a menos de 10cm.

Solución

En mblock5.0 lo tienes aquí https://planet.mblock.cc/project/3264009

mbot-mealejo.png

Se ha utilizado una instrucción de MATRIZ LED que veremos a continuación para visualizar la distancia

En mBlock 3 Para calibrar, se ha utilizando el Panda que diga la distancia que lee (Instruccion Decir...). Está realizado el programa con mBlock3. 



Fuente: Captura de pantalla mBlock. Programa: el autor.

Intenta cogerlo !!! (por delante claro)

via GIPHY

Matriz Led

Con este simpática matriz, tenemos mucho juego, podemos hacer un dibujo, texto, valores numéricos ...

pantalla.png

y si hacemos dos clicks nos permite poner el gráfico que queramos, incluso guardarlo en favoritos!

Reto

Realizar un programa como en anterior pero en vez de huir, que sonría. Es decir, si pongo la mano delante sale una cara sonriente.

Solución

En mBlock 5.0 lo tienes aquí https://planet.mblock.cc/project/3264027

mbot-sonrioymealejo.png

En mBlock3



Qué simpático ¿no?

via GIPHY

También puede ser que se ponga triste si no se pone la mano

¿No funciona?

Puede ser que mBot se quede enganchado con algún código anterior, la solución como siempre ACTUALIZAR FIRMWARE

Podemos enviar un texto, con la instrucción show face:

Esto envía en las coordenadas 0,0 la palabra CATEDU pero.... ¡¡SALE CAT!!

Claro ! no cabe!! ¿cómo lo hacemos? esto requiere más programación, hay que crear una variable X e ir ¿incrementando o decrementando la coordenada x? vamos a probar decrementando

Y ahora incrementando ¿cómo salen las letras CATEDU?

A pesar de que las capturas están con mBlock 3.0 con mBlock 5.0 es igual

Enviar la hora .... este curso es largo ¿qué hora es? que nos lo diga:

El robot no tiene reloj .. entonces ¿Quién le dice la hora?

mBot lo gobierna un Arduino, por lo tanto un micro atmel128 con reloj interno, que puede utilizarse, pero no es este caso, pues es una instrucción azul que es propio de Scratch, por lo tanto del ordenador, que no puede usarse con Upload Arduino o Cargar sino EN VIVO

3. Ya!!!

3. Ya!!!

Evitar obstáculos

Programa al mBot para que sea capaz de evitar cualquier obstáculo, paredes... usando el sensor de ultrasonidos, aunque el del vídeo le ha puesto sirena!!

 

Solución

Con mBlock 5.0 te vamos a proponer que lo obtengas de los programas ejemplo

mbot-salvaobstáculos.png

Y te proponemos que lo modifiques

RETO que no se atasque

Se ataca a veces, ¿y si le haces estas mejoras? (la captura está en mBlock3 pero para mBloc5 es igual)

RETO que salga de un laberinto

Una opción es salir de un laberinto, página descarga piezas 3D

3. Ya!!!

Siguelíneas

El sensor sigue-líneas no le hemos sacado potencial, pide a gritos que siga un circuito, en el kit impreso hay una propuesta de circuito, también te lo puedes descargarlo aquí pero otra opción es con cinta negra adhesiva hacer en el suelo (tonos claros) el circuito que queramos, pero recomendamos poner doble grosor, sobre todo si mBot va rápido, pues se lo salta, y no hacer curvas muy cerradas. Si ves que hay problemas, no trabajes en vivo, carga el programa.

¿Cómo harías el programa?

Ten en cuenta que el sigue líneas, si devuelve 3 es que va por buen camino, si devuelve 1 habría que girar hacia la ... si devuelve 2 habría que girar hacia la ... y si devuelve 0 es que se ha ido, lo mejor es que des marcha atrás.

Solución fácil

Esta captura está con mBlock 3 con mBloc5 es parecido




Pero tiene un problema: a veces se salta la línea, esto es debido a que se necesita un giro más suave que una rueda gire y la otra quita, no que una gire en un sentido y la otra en sentido inverso.

SOLUCIÓN BUENA

Para ello hay que instalar la extensión PLATAFORMA DEL FABRICANTE

siguelinea3.png

y puedes mejorar el programa de esta manera con giros más suaves pues ya tienes el control de las ruedas

siguelineas.png

El programa lo tienes predeterminado aquí

siguelinea2.png

Puedes hacer puentes y todo

3. Ya!!!

Flappy bird

Un ejemplo de interactuar con objetos es hacer que estos se muevan utilizando los sensores de mBot

Vamos a jugar al Flappy Bird, pero para que suba el pájaro que sea cuando el sensor de ultrasonidos detecte nuestra mano

Primer paso, descargar el programa Flappy Bird

No vamos a realizar el videojuego desde cero, aprovecharemos el código que hay en Internet. Vamos al proyecto https://planet.mblock.cc/project/1328490 y en Sourcecode nos descargamos en nuestro ordenador el código (se abrirá mBlock online, y damos a descargar el código en nuestro ordenador)

flappybird1.jpg

flappybird2.jpg
(este paso te lo puedes saltar si quieres trabajar diréctamente en Internet)

Segundo paso abrir el código en tu programa mBlock

Abrimos este código en nuestro mBlock (este paso te lo puedes saltar si quieres trabajar diréctamente en Internet)

flappybird3.jpg

Tercer paso, que mBot envíe un mensaje que se ha puesto la mano

Añadimos el dispositivo mBot, conectamos y ponemos este código

flappybird4.jpg

También podríamos haber usado UNA VARIABLE GLOBAL MANO de tal manera que por ejemplo cambie a 1 si se pone la mano y sea 0 si no se pone la mano

Cuarto paso que Flappybird suba al poner la mano

Vamos al código del objeto BirdySprite y vemos que sube si O se pulsa clic O se pulsa espacio O se pulsa flecha arriba, copiamos ese código y que suba si recibe el mensaje MANO

flappybird5.jpg

Si usamos variables globales se pondría dentro de la instrucción O la condición MANO=1

Resultado

Valeee... ya sé que soy muy malo

 

 

 

 

3. Ya!!!

Publica tus construcciones

Aquí para verlo más grande

Hecho con Padlet
3. Ya!!!

Publica cosas de otros

4 IA Introducción


4 IA Introducción

IA¿Qué es?

La inteligencia artificial se refiere al conjunto de algoritmos realizan tareas complejas, que son capaces de realizar procedimientos que imitan el funcionamiento de la mente, como son aprender y tomar decisiones.

mind.jpg

De https://timoelliott.com/blog/cartoons/artificial-intelligence-cartoons en https://timoelliott.com/

4 IA Introducción

IA Tipos

ML : APRENDIZAJE AUTOMATICO O MACHINE LEARNING

Aquí los algoritmos aprenden a partir de datos, y ellos buscan patrones para identificar. Cuanto más datos, mejores resultados.

El principio es básico. Queremos diferenciar silla mesa: Analiza datos, localiza patrones (cuatro patas, algo común, el tamaño y forma, patrones que diferencian como el respaldo....) con esas características, puede realizar un entrenamiento, y por lo tanto esta preparado para realizar predicciones.

Hay varios tipos de ML:

RL : APRENDIZAJE REFORZADO O REINFORCEMENT LEARNING

Es un modelo que busca la optimización. Utiliza resultados anteriores e intenta mejorarlos. Para buscar esto, se definen estados con unos parámetros que implican premio o penalización. La máquina busca soluciones y acciones para buscar los premios y huir de las penalizaciones.

DL : APRENDIZAJE PROFUNDO O DEEP LEARNING

Es un subconjunto del ML no supervisado, Se crea una red neuronal organizadas en capas, cada capa especializada, por ejemplo la primera de entrada recoge los datos, las intermedias, ya ocultas, identifican patrones y la última, la salida que recoge la información procesada  anteriores, la que toma las decisiones.

PLN : PROCESAMIENTO DE LENGUAJE NATURAL

Utiliza conceptos de DL y ML para comprender el lenguaje humano. Una aplicación son los chatbots. Que pueden ser:

EJEMPLOS 

LEARNING ML cabeza_genio.png
 https://web.learningml.org/en/home/ 

ML: MACHINE LEARNING FOR KIDS 2024-06-08 13_08_30-Machine Learning for Kids logo.png

https://machinelearningforkids.co.uk/#!/welcome

Ver nuestro tutorial en https://libros.catedu.es/books/robotica-educativa-con-mbot/page/maquina-educable-con-machine-learning-for-kids-y-scratch

DL REDES NEURONALES : QUICKDRAW 2024-06-08 13_22_52-quick draw - Buscar con Google.png

https://quickdraw.withgoogle.com/ Es un videojuego donde se ve claramente como se va perfilando las decisiones en forma de árbol y como la etapa final va reconociendo tu dibujo. En esta red, la primera etapa de la red neuronal son trazos que dibujas, y las neuronas intermedias son fruto de una extensa base de datos de dibujos. La última etapa es la decisión basada en las anteriores neuronas.

PRUEBALO ES SUPERDIVERTIDO, INCLUSO EN UN MÓVIL 
qr_img.png

PLN: CHATGPT COMO FUNCIONA

DL CREA TU PEQUEÑA RED NEURONAL CON PYTHON

DL: GOOGLE DEEPMIND
 Google deepmind desarrolló una red neuronal para aprender a jugar videojuegos, y ganó a varios campeones humanos en videojuegos complejos (de los que inicialmente la máquina desconocía las reglas). Puedes ver en https://deepmind.google/ los diferentes proyectos actuales.

4 IA Introducción

IA: Y en plan que se entienda....

  1. MÁQUINAS “YA EDUCADAS” o "pre-trained ML/AI models"

    1. Reconocimiento de imágenes con mBlock

      1. Programa de reconocimiento imágenes

      2. Programa reconocimiento edad

    2. Reconocimiento de voz

      1. Traductor Con mBlock y Cybperpi

      2. Reconocimiento de órdenes Con mBot1 t mBot2

  2. SOFTWARE EDUCABLES o "No pre-trained ML/AI models"

    1. Máquina educable Teachable Learning y mBlock

    2. Máquina educable con CODE.ORG

    3. Máquina educable con Machine Learning for kids y Scratch

  3. HARDWARE EDUCABLES o sea, que tienen "Smart gadgets"

    1. SMARTCAM y mBot1

      1. Seguir pelota color

      2. Sigue líneas

kenny-eliason-5afenxnLDjs-unsplash.jpg
Photo by Kenny Eliason on Unsplash

5. IA máquinas ya educadas


5. IA máquinas ya educadas

Cognitive Services Servicios cognitivos.

Esta extensión pertenece al conjunto de extensiones de inteligencia artificial de mBlock

2024-03-30 20_50_56-mBlock v5.4.3.png

Instala un montón de instrucciones como

2024-03-30 21_02_27-WhatsApp.png

RECONOCIMIENTO DE EDAD

Para ver un vistazo rápido, vamos a utilizar un programa ya predeterminado, ir a Programas de ejemplo - AI - Age Analyzer (el del pulpo)

2024-03-31 21_02_50-mBlock v5.4.3.png

OJO, SI NO ESTAS LOGUEADO entonces NO FUNCIONA

novaai2.png

La verdad es que acierta bastante bien

2024-03-31 21_04_14-mBlock v5.4.3.png

Otro ejemplo de uso, reconocimiento de edad y traducción :

5. IA máquinas ya educadas

Traductor

En este programa, además de usar la extensión Servicios Cognitivos, instalaremos las extensiones :

2024-04-01 12_23_55-mBlock v5.4.3.png

El programa es muy sencillo, lo tienes aquí : https://planet.mblock.cc/project/3733312

traductor.png

5. IA máquinas ya educadas

Traductor con mBot2 (o mejor dicho con Cyberpi)

Esta tarjeta controladora es un ESP32 por lo tanto permite conexión a Internet y lo podemos usar para realizar el mismo script de traducción

El programa lo tienes aquí https://planet.mblock.cc/project/3587357

Lo primero es conectarse a la Wifi :

cyberpi-conexion.png

Y para traducir

cyberpi-traduccion.png

OJO: HASTA QUE NO ESTES
1.-LOGUEADO con tu usuario en mBlock
2.-CONECTADO CON CYBERPI 
(las dos condiciones y en ese orden) NO SE VISUALIZAN LAS INSTRUCCIONES DE INTELIGENCIA ARTIFICIAL

novaai.png

5. IA máquinas ya educadas

Reconocimiento de voz- órdenes a mBot1

Se hace con la misma extensión Cognitive Services Servicios cognitivos, podemos hacer que el panda reconozca la voz

El programa https://planet.mblock.cc/project/3733229

Si te fijas TENEMOS QUE TRABAJAR EN VIVO pues la traducción la realiza el ordenador (mejor dicho el servidor de traducción y se lo comunica al ordenador y el ordenador a mBot1 pues mBot1 no tiene conexión de Internet

El programa en el Sprite oso Panda es :

ordenmblock1-1.png

Y mBot que ejecuta según la orden

ordenmblock1-2.png

5. IA máquinas ya educadas

Reconocimiento de voz- órdenes a mBot2

Aquí no trabajaremos en vivo SINO EN CARGA pues CibyerPi tiene conexión a Internet

La primera parte es el script de conexión de Wifi La siguiente orden es reconocer la voz, y según el resultado, que ejecuta.

Como puedes observar, la orden de reconocimiento de voz, añade un . al final que hay que tener en cuenta

El programa lo tienes aquí https://planet.mblock.cc/project/3733278

ordenesvozmbot2.png

5. IA máquinas ya educadas

Video Sensing: esto no es IA

El siguiente programa no interpreta las imágenes, simplemente estamos utilizando la webcam como sensor de vídeo

https://planet.mblock.cc/project/3730511

Extensión Video Sensing

2024-03-30 19_08_36-mBlock v5.4.3.png

mblock_block_1711822211532.png

2024-03-30 10_55_03-mBlock v5.4.3.png

+ info de esta extensión en https://barclayscodeplayground.co.uk/content/dam/barclayscodeplayground-co-uk/documents/scratch/SC_Using_Video_sensing_teachers_guide.pdf

5. IA máquinas ya educadas

Google quickdraw

Un ejemplo de software ya educada es https://quickdraw.withgoogle.com/ (se recomienda hacerlo en una tableta) donde tus dibujos son reconocidos por un conjunto enorme de dibujos. (A la vez los que tú haces él aprende)

2024-06-02 19_27_10-Quick, Draw!.png

Si quieres probar más cosas de AI con Google https://experiments.withgoogle.com/collection/ai

6. IA Software educable


6. IA Software educable

Maquina educable con Machine Learning for kids y Scratch

REGISTRO

Entramos en https://machinelearningforkids.co.uk/

machine1.jpg

Tenemos varias opciones:

  1. Registrarnos y tenemos dos opciones
    1. como Un profesor o responsable de un club de programación en este caso tenemos otras dos opcioens
      1. Clase No administrada tienes que rellenar un formulario típico y creas la clase
      2. Clase administrada donde tienes opciones de incorporar alumnos a tu clase, este registro es por correo electrónico y tienen que verificar que perteneces a un centro educativo.
    2. como Estudiante en ese caso es el profesor de una clase administrada el que te tiene que crear la cuenta
  2. Iniciar sesión pues nos hemos registrado con alguna de las opciones anteriores
  3. Probar sin registrarse

machine2.jpg

Vamos a probar "sin registrarnos" pues estamos aprendiendo. Si luego esta herramienta te convence, Te registras

CREAMOS UN PROYECTO

Empezamos un proyecto

machine3.jpg

Empezamos un proyecto, como puedes ver hay diferentes formas de reconocer, y permite hacer un almacenamiento local, o en la nube. Como es algo de pruebas puedes hacerlo local. Pero si luego estas registrado es interesante hacerlo en la nube para tener acceso en cualquier sitio.

Ojo al cerrar el navegador se borra todo el modelo con la opción In your web browser

machine4.jpg

Ya lo tenemos

machine5.jpg

ENTRENAR

Primero vamos a entrenar la máquina

machine6.jpg

Creamos dos etiquetas y vamos escribiendo situaciones (o añadir un fichero txt) donde nos apetece un refresco o no (pueden ser más de dos situaciones)

machine7.jpg

Volvemos al proyecto..

machine8.jpg

ENTRENAR

Si ves que has puesto suficientes ejemplos, pide a la máquina que entrene

machine9.jpg

Empieza el entrenamiento... y para que no te aburras, te pone unas preguntas !!!

machine10.jpg

Una vez acabado puedes probarlo

machine11.jpg

fíjate que bochorno no lo hemos puesto en el entrenamiento y ha acertado bastante bien

machine12.jpg

Volvemos al proyecto

machine8.jpg

CREAR

Y vamos a CREAR y nos ofrece varias herramientas de programación, elegimos SCRATCH

machine13.jpg

Le damos a Abrir en Scratch 3

machine14.jpg

Elegimos un nuevo objeto (quitamos el gato)

machine15.jpg

y elegimos glass water

machine16.jpg

Y ponemos el siguiente programa, no es perfecto... pero acierta bastante bien

machine17.jpg

¿Sabías que ....?
.. hay un curso en Aularagón de INTELIGENCIA ARTIFICIAL CON SCRATCH máquina educable con Maching Learning for KitsVes https://libros.catedu.es/books/inteligencia-artificial-con-scratch con diferentes vídeos del INTEF verás paso a paso esta herramienta desde 2019

6. IA Software educable

Máquina Educable Teachable Machine

Esta extensión sí que pertenece al conjunto de inteligencia artificial

2024-03-30 19_37_15-mBlock Block-Based IDE- Coding for Beginners.png

En la extensión nos muestra la posibilidad de crear un nuevo modelo de entrenamiento

Al crear un nuevo modelo, Build a new model hay que definir las categorías mínimo son tres

2024-03-30 19_58_36-WhatsApp.png

2 - 3 - 4 .- Poner nombres a la categorías
5.- Poner la imagen (en mi caso pantallazos del móvil)
6.- Clicar a qué categoría pertenece, para que aprenda, darle click cuando la barra verde suba
Repetir pasos 5 y 6 tantas veces cuanto se desee, cuanto más, mejor
7.-Usar el modelo de aprendizaje

maquinaeducable.png

Una vez creado el modelo, nos pone unas instrucciones que podemos usar en nuestra programación

2024-03-30 20_04_20-mBlock Block-Based IDE- Coding for Beginners.png

Otro ejemplo parecido usando playmovil

 

6. IA Software educable

Maquina educable con CODE ORG

Una manera muy didáctica de enseñar los conceptos de Inteligencia Artificial es con CODE.ORG tiene cursos y el funcionamiento es parecido a la Máquina Educable de mBlock

ia-codeorg2.png

El resultado es 

ia-codeorg.png

6. IA Software educable

Playground, Teachable Machine Google y Microbit

Playground es como Scratch pero puedes utilizar las Teachable Machines de Google en tu programación

Entramos en https://playground.raise.mit.edu/httyr/

Y podemos usar una máquina educable de Google en (1) y luego utilizarlo en (2)

2024-06-02 19_58_55-PRG AI Blocks.png

Podemos conectar nuestro robot MICROBIT CUTEBOT

Este vídeo por ejemplo nos enseña cómo utilizar una máquina que reconozca que tocamos la cara o no

O reconocer textos

Por ejemplo este programa muestra si tienes puesto un sombrero o no

2024-06-02 20_07_47-Copia de Wednesday - Presentaciones de Google.png

Ulrich Pedersen Dah & Ture Reimer-Mattesen Center for Underisningsmidler CPU

7. IA Hardware educable


7. IA Hardware educable

SmartCamera - Qué es

Esta cámara se vende como accesorio de los robots de Makeblock por unos 140€ ,

smartcamera1.jpg

ATENCIÓN, ESTE SENSOR NO SE SUMINISTRA CON EL KIT DE PRÉSTAMO DE CATEDU

Atención ESTA ESPECIALMENTE DISEÑADO PARA mBot1, no esta muy bien ajustado para mBot2

Por dentro es un PIXCAM https://pixycam.com/ que tiene integrado un firmware que puede trabajar de dos formas :

Se ve mejor con un video:

El kit para Makeblock es la misma cámara pero encapsulado, y se añade

2024-03-16 10_35_58-Tutorial Smart Camera de Makeblock.png

NO ES LA ÚNICA:
HUSKYLENS

Se puede poner al robot Maqueen Plus de Microbit https://libros.catedu.es/books/microbit-car/page/cars-para-microbit

2024-05-06 19_04_45-micromaqueen-plus-v2-advanced-stem-education-robot-18650-battery-version-7_600x..png

Ver ejemplo de uso :

Smart AI Lens kit ELECFREAKS

Ver ejemplos de uso Microbit+cutebot + AI LENS en https://libros.catedu.es/books/microbit-car/page/ai-lens-elecfreak

7. IA Hardware educable

SmartCamera - conexión con mBot

Hardware

Para conectarlo con mBot1 hace falta la batería que se suministra en el pack, con su cable de conexión (punto 3 al 4 de la figura( y el cable de conexión del puerto I2C (punto 2) al RJ45 (punto 1). 

smartcamera2.png

Extraído del Tutorial Smart Camera de Makeblock”, creada por Susana Oubiña Falcón,
Licencia CC-BY-NC https://juegosrobotica.es/smart-camera-makeblock/

Una propuesta de montaje es este: 

smartcamera3.png

Extraído del Tutorial Smart Camera de Makeblock”, creada por Susana Oubiña Falcón, Licencia CC-BY-NC https://juegosrobotica.es/smart-camera-makeblock/

Otra podría ser esta, utilizando también la misma pieza para que SmartCam tenga más visión :

2024-04-01 12_46_55-WhatsApp.png

En mBot2

En este robot, no tenemos puertos con clavija RJ45 pero sí puertos I2C que permiten comunicación de los diferentes módulos de sensores y actuadores en serie, en la figura vemos como se conectan el sensor sigue líneas con el sensor distancia ultrasonidos en serie.

smartcamera7.png

Podemos no perder el sensor a distancia de ultrasonidos y conectarlo desde este sensor (1) al smartcamera (2) con el cable I2C que se suministra en el pack de smart cámera.

smartcamera6.png

Por supuesto puedes prescindir el sensor de distancia de ultrasonidos y conectarlo al sensor sigue líneas. O incluso directamente a la placa y prescindir también del sigue líneas.

Con mBot2 NO hace falta conectar la batería. Smart cámera ya se alimenta a través del cable I2C. Pero si se pone no pasa nada, internamente las masas están conectadas.

Software

En mBlock

Tenemos que ir a bloques e instalar la extensión SMART CAMERA

smartcamera8.png

7. IA Hardware educable

Smart camera - seguimiento color - sencillo

Configuración reconocimiento de color

Método por software (recomendado)

Una forma de configurar la cámara en este modo, es insertar estas instrucciones al inicio del programa

smartcamera.png

La explicación es :

smartcamera10.png
Extraído del Tutorial Smart Camera de Makeblock”, creada por Susana Oubiña Falcón,
Licencia CC-BY-NC https://juegosrobotica.es/smart-camera-makeblock/

Se ve mejor con un vídeo

Método por hardware

Otro método es:

smartcamera22.jpg
Extraído del Tutorial Smart Camera de Makeblock”, creada por Susana Oubiña Falcón,
Licencia CC-BY-NC https://juegosrobotica.es/smart-camera-makeblock/

Programa en mBlock

El programa es sencillo

smartcamera21.jpg
Extraído del Tutorial Smart Camera de Makeblock”, creada por Susana Oubiña Falcón,
Licencia CC-BY-NC https://juegosrobotica.es/smart-camera-makeblock/

Lo añadimos en un bucle junto con el script anterior de configuración de la cámara, y se añaden unos avisadores de led para saber en qué estado está la cámara

El programa lo tienes aquí https://planet.mblock.cc/project/3664760

blocks.png

Si no quieres poner lo accesorio https://planet.mblock.cc/project/3719420

smartcam79.png

Aclárate ¿Qué potencia le doy? 50% o 90%?
R: Pues el que quieras, cuanto menos potencia, lo sigue mejor, pero si la bola va deprisa, lo "pierde"
Si la das más potencia, no lo sigue tan bién, hay a veces "oscilaciones" que no se estabilizan. Ver este vídeo

7. IA Hardware educable

Smart camera seguimiento color avanzado

Kp, velocidad diferencial del motor.... ¿Eso qué es?

En la extensión CAMARA INTELIGENTE ESPECÍFICA PARA EVENTOS 

smartcam30.jpg

Encontramos estas dos instrucciones

smartcam31.jpg

¿Qué significan?

Vamos a definir dos sistemas de coordenadas

Las coordenadas de fondo de Pixicam son fijas, y van desde 0,0 a 320,240 y se pueden ver en la pantalla de PixiMon moviendo el ratón:

smartcam32.jpg

Las otras coordenadas "Las coordenadas de la SmartCam asociadas al evento" están asociadas al evento y están escalados según el valor de 100*Kp donde Kp tiene que ser un número de 0 a 1 por lo tanto el máximo es 100 y el centro de coordenadas lo fija el usuario en el número de la siguiente instrucción, ese número está referido a las coordenadas del fondo de Pixicam 

smartcam33.jpg

Para entendernos mejor, si ponemos 

smartcam34.jpg

El origen será 160,120, o sea lo normal, el centro del fondo de Pixicam, pero puede interesarte "acercar" la bola al robot por lo tanto ¿subirías y a más de 120 o bajarías de 120?

Para entenderlo mejor un dibujo,:

smartcam36.jpg

Y para entenderlo mejor, vamos a ejecutar el siguiente programa test en mBot2 para que se vea en la pantalla del Cyberpi https://planet.mblock.cc/project/3657404

smartcam37.jpg

Al ejecutarlo vemos que muestra las coordenadas de la pelota roja (asociada al evento) y como Kp es 0.3 va desde -30 a +30 tanto para X como para Y

Kp, velocidad diferencial del motor.... ¿Eso para qué sirve?

Pues como son las coordenadas de lo que se "separa" la bola de tu origen, puedes darle velocidad a los motores según esas coordenadas

Desde el punto de vista de las Y (avanzar o retroceder) si hay más Y más tienen que ir los dos motores (hacia delante) si la Y es negativa los dos motores tienen que retroceder, luego desde el punto de vista de las Y :

Desde el punto de vista de las X (girar) si la X es positiva, tiene que girar a la derecha por lo tanto motor izquierdo avanzar (positiva) y el derecho retroceder (negativo) y si es negativo al revés por lo tanto

Juntando los dos, tenemos:

Seguimiento del color utilizando Kp, velocidad diferencial

Podemos aumentar en un factor de 3 para darle más caña pues el máximo sería 30% al multiplicarlo por 3 conseguimos llegar al 90%. Ese factor de multiplicación de la potencia del motor tendría que ser más o menos 10*Kp

Es decir, Velocidad motor izquierdo = 10 Kp  ( Y + X )      Velocidad motor derecho = 10 Kp  (Y - X)

Cuánto más Kp, se sigue mejor a la pelota pero se consigue peor estabilización.

El programa https://planet.mblock.cc/project/3613286

smartcam77.png

¿Por qué el seguimiento del color utilizando Kp, velocidad diferencial es mejor que el simple?

Piénsalo bien, cuanto más se aleja, más potencia, mientras que el simple, si la pelota estaba en una zona determinada, va a una potencia fija.

+ Información

En estos PDFs tienes una explicación más formal de Kp y las velocidades diferenciales:

7. IA Hardware educable

Smart camera Piximon

INSTALACIÓN DE PYXMON V2

No es un software obligatorio, pero viene muy bien qué está pasando y qué esta viendo la cámara. Además nos permite opciones avanzadas y configurar con más detalle sus posibilidades.

El software está en la página de https://pixycam.com/

smartcamera9.png

ATENCIÓN NO CONECTAR LA CAMARA CON EL CABLE USB ANTES DE LA INSTALACIÓN DE PIXIMON

Pues Windows instalará unos drivers erróneos o dejará marcado como desconocido la cámara. Instalaremos PixyMon v2 y después conectaremos el cable USB del ordenador a l a cámara.

En el caso de que hayamos metido la pata, ir a Windows-Administrador de dispositivos, quitar a cámara, instalar PixyMon y conectar la cámara.

PARA QUE NOS SIRVE PIXIMON: PARA SABER QUÉ OCURRE EN LA DETECCIÓN DE COLOR

Si algo falla, podemos conectar la Smart Camera al ordenador y Piximon nos enseña qué ve y cómo lo hace, por ejemplo el siguiente vídeo se ve que está en modo de detección de color, y vemos que ha detectado el verde

Conecta el cable USB a la cámara

Más información

PARA QUE NOS SIRVE PIXIMON: CONFIGURAR EL SIGUE-LINEAS

Podemos entrar en configuración y determinar el grosor de la línea, brillo, contraste...

image.png

Para más información de la configuración del sigue líneas 

7. IA Hardware educable

Smart Camera Código de barras

En el modo de detección de código de barras, puede detectar 15 códigos de barras ya definidas.

smartcamera52.png

Las puedes descargar aquí https://drive.google.com/file/d/1K28cD6o5csGg1_h7cnmsZ5Box02NTdUC/view?usp=sharing

smarcamera50.png
Extraído del Tutorial Smart Camera de Makeblock”, creada por Susana Oubiña Falcón,
Licencia CC-BY-NC https://juegosrobotica.es/smart-camera-makeblock/

Y las tiene que detectar en la posición correcta, excepto la 15 que es simétrica, el resto no son invariantes bajo rotación

smartcamera51.png
Extraído del Tutorial Smart Camera de Makeblock”, creada por Susana Oubiña Falcón,
Licencia CC-BY-NC https://juegosrobotica.es/smart-camera-makeblock/

En mBlock las detecta desde el número 1 al 15. Pero observa que del 1 al 9 tiene ya unos nombres predefinidos

Esto no quiere decir que estés obligado a ejecutar la acción acorde al nombre de la etiqueta, puedes elegir perfectamente que si detecta la etiqueta 5(parar) que haga girar

Si quieres cambiar de nombres, dentro del software Piximon puedes renombrar estas etiquetas en Configure-Barcode labels

smartcamera53.png

Un programa ejemplo sería

smartcamera54.png

Extraído del Tutorial Smart Camera de Makeblock”, creada por Susana Oubiña Falcón,
Licencia CC-BY-NC https://juegosrobotica.es/smart-camera-makeblock/

También puede detectar dada una posición, por ejemplo este programa

smartcamera55.png

Extraído del Tutorial Smart Camera de Makeblock”, creada por Susana Oubiña Falcón,
Licencia CC-BY-NC https://juegosrobotica.es/smart-camera-makeblock/

Proyectos con Cyberpi

Caja registradora

El programa lo tenemos en este tutorial (hay que registrarse para verlo) 

Color traductor. Aquí el tutorial (hay que registrarse)

7. IA Hardware educable

SmartCamera - sigue líneas

mBot ya tiene un sigue-lineas https://libros.catedu.es/books/robotica-educativa-con-mbot/page/siguelineas pero no trabaja la inteligencia artificial. Es un sensor que nos detecta el brillo del suelo y sobre esa respuesta programamos la potencia de los motores para que sigan la línea.

Pero en este caso será la cámara la que detectará la línea y tomará la decisión de qué rumbo tomar, para ello montaremos la cámara con una visión horizontal utilizando la pieza de ángulo recto:

detallesmartcamsiguelineasconexion.png.png

Y conectaremos la batería con la SmartCam y el puerto I2C con el Puerto 4 por ejemplo.

angulosmartcamsiguelineas.png.png

En este modo, la SmartCam reconoce las líneas que ve, y con el programa Piximon las marca con diferentes colores y decide de forma óptima el camino a seguir. El color rojo marca la decisión

siguelineas4.png

Si el fondo,, contraste o grosor de las líneas no es el adecuado, con el programa PixiMon podemos cambiar la configuración para que lo detecte correctamente:

siguelineas5.png

Si cargamos el programa siguiente https://planet.mblock.cc/project/3715899

siguelineas3.png

El resultado es :

Explicado paso a paso

La decisión en una intersección con programación

Si queremos que no decida automáticamente, sino que por ejemplo el ángulo del cruce es menor de 45 que gire a la derecha, el código sería

https://planet.mblock.cc/project/3716895

smartcam89.png

También podríamos hacer la decisión en función si el cruce está más a la derecha o más a la izquierda, recuerda que las coordenadas x van desde el extremo izquierdo 0 al extremo derecho 320. Una opción sería :

siguelineas68.png
Extraído del Tutorial Smart Camera de Makeblock”, creada por Susana Oubiña Falcón,
Licencia CC-BY-NC https://juegosrobotica.es/smart-camera-makeblock/

La decisión de una intersección por código de barras

El modo sigue-lineas es también modo de etiquetas :

siguelineas69.png

Esto nos permite que podemos utilizar las etiquetas para las decisiones de las intersecciones

image.png
Extraído del Tutorial Smart Camera de Makeblock”, creada por Susana Oubiña Falcón,
Licencia CC-BY-NC https://juegosrobotica.es/smart-camera-makeblock/

smartcamera47.jpg

Extraído de https://arduiblog.com/2022/05/01/smart-camera-de-makeblock/  autor JCQuetin, licencia BY-NC-SA 3.0

Creditos

Cualquier observación o detección de error en soporte.catedu.es

Los contenidos se distribuyen bajo licencia Creative Commons tipo BY-NC-SA excepto en los párrafos que se indique lo contrario.

image-1648462225402.gif

image-1648462299882.png

image-1648462361893.png