Escuela 4.0. Programacion y robótica en secundaria Cyberpi y mBot2.
Curso para aprender a utilizar técnica y metodológicamente los dispositivos Cyberpi y Mbot que están dentro de el programa Escuela 4.0. Estos dispositivos llegan a los centros de secundaria y están pensados para ser utilizado desde 2º de ESO a 4º de ESO.
mBot2 es un robot educativo de última generación que combina la robustez de un chasis de aluminio con el potencial de la placa CyberPi. Para el profesorado, es una herramienta clave si buscas un recurso de larga duración y alta resistencia en el aula. Incorpora motores con codificadores de alta precisión (los movimientos son exactos), una pantalla a color integrada en el propio robot y una batería recargable de larga duración, lo que optimiza la gestión del tiempo de clase al olvidarte de las pilas.
Desde el punto de vista didáctico, su valor diferencial es su preparación para el futuro tecnológico. Gracias a su micrófono, altavoz y conectividad Wi-Fi, el docente puede diseñar actividades innovadoras que van más allá de la robótica clásica, introduciendo de forma sencilla conceptos de Inteligencia Artificial (IA), reconocimiento de voz y aprendizaje automático (Machine Learning). Además, su software (mBlock) permite realizar una transición impecable empezando por la programación por bloques estilo Scratch y, con un solo clic, ver ese mismo código traducido a lenguaje de texto Python.
- Escuela 4.0 STEAM
- Módulo 1 Pensamiento computacional y currículo
- Módulo 2 Conocimiento del robot
- Módulo 3. Programación con Cyberpi.
- Comenzamos con Cyberpi
- LED
- Pantalla con textos
- Pantalla con gráficos
- Detección
- LAN
- STEAM- Sonido
- STEAM-Movimiento
- STEAM-IOT
- Módulo 4. Programación con mBot.
- Comenzamos a programar con mBot
- Primeros pasos
- Jugando con la luz
- Evitar obstáculos I
- Evitar obstáculos II
- Sigue líneas I
- Sigue líneas II
- Control remoto
- Más actividades
- Módulo5 Cyberpi, mBot y Python
- Python
- Hola Mundo
- Audio
- LED
- Entradas
- Display
- Sensores de movimiento
- Sensor de sonidos
- Evita obstáculos
- Sensor de líneas
- Sigue líneas
- Módulo 6 Cyberpi, mBot e IA
- Módulo 7 Actividad obligatoria
Escuela 4.0 STEAM
Escuela 4.0 STEAM
El programa de cooperación territorial Código Escuela 4.0 y las actuaciones que incluye, se enmarcan dentro del Plan de Digitalización y de Competencias Digitales del Sistema Educativo (#DigEDu). Este plan recoge las iniciativas impulsadas por el Ministerio de Educación, Formación Profesional y Deportes dirigidas a mejorar las competencias digitales en el ámbito educativo, la dotación de medios tecnológicos y su integración efectiva y eficaz en los procesos de enseñanza y aprendizaje.
El objetivo principal del Programa Código Escuela 4.0 es incluir los lenguajes de programación y la robótica educativa para el desarrollo del pensamiento computacional y de la competencia digital del alumnado, dando así respuesta a las nuevas demandas educativas de una sociedad cambiante y crecientemente digitalizada. Es necesario que el alumnado, como parte del proceso de desarrollo de su competencia digital, tenga la oportunidad de iniciarse en la programación informática, mediante el uso de lenguajes de programación adaptados a su nivel madurativo. Implica una nueva alfabetización que le permita aproximarse y comprender la lógica interna del funcionamiento del medio digital en el que vive, habilidad imprescindible para la ciudadanía en los próximos años.
El programa Escuela 4.0 quiere dar acceso al pensamiento computacional y sus dimensiones (descomposición, patrones, algoritmos y abstracción), a lenguajes de programación adaptados y a dispositivos robóticos amigables para el alumnado de todas las edades y accesibles para el profesorado no especialista. También quiere facilitar la integración en las aulas desde las primeras etapas educativas, potenciando el conocimiento y el interés por las disciplinas STEAM de manera gradual y experiencial entre todo el alumnado, contribuyendo así a la disminución de la brecha de género en el ámbito digital.
Para más información:
Módulo 1 Pensamiento computacional y currículo
Pensamiento computacional
Definiciones de Pensamiento computacional:
El pensamiento computacional se basa en cuatro pilares básicos: descomposición de un problema en pasos sencillos, reconocimiento de patrones, abstracción y diseño de algoritmos. Este tipo de pensamiento es básico para llevar a cabo un programa informático y generalizable a otro tipo de situaciones.
Haz clic en las zonas activas de la presentación para acceder a toda la información.
Currículo
Cyberpi y mBot es uno de los dispositivos de la adjudicación del programa de cooperación Escuela 4.0 a los centros de secundaria. Se recomienda su uso desde 2ª de ESO hasta 4º de ESO.
Imagen tomada de la web https://escuela40aragon.es/itinerario/. Acceder a ella para consultar el itinerario
El pensamiento computacional, la programación y la robótica guarden relación directa según está recogido en el currículo con las siguiente asignatura de secundaria obligatoria:
Imagen tomada de la web https://escuela40aragon.es/curriculo/. Acceder a ella para consultar el apartado de currículo de manera interactiva.
Pero la realidad que es podemos trabajar el pensamiento computacional, la programación y la robótica desde cualquier asignatura utilizado el enfoque STEAM.
Módulo 2 Conocimiento del robot
Conocimiento del robot.
En este módulo vamos a conocer el equipo .
1- Conocer Cyberpi
HARDWARE
Cyberpi ya es un robot, tipo placa electrónica, basado en ESP32 por lo tanto con Wifi y Bluetooh integrado y se le incorporan los suiguientes SENSORES Y ACTUADORES
Manual de Cyberpi https://www.robotix.es/ebook/cyberpi-guia.pdf contenidos e imágenes publicados con permiso de la empresa Robotix. Autor José Manuel Ruiz Gutiérrez.
HARDWARE - PUERTOS
Manual de Cyberpi https://www.robotix.es/ebook/cyberpi-guia.pdf contenidos e imágenes publicados con permiso de la empresa Robotix. Autor José Manuel Ruiz Gutiérrez.
- Puerto para conexión de tarjetas de extensión : La tarjeta Cyberpi esta diseñada para conectarse al chasis del robot mBot2, así como otros shields comerciales para esta placa. por ejemplo el de la figura:
Fuente: Guia Cyberpi Robotix con permiso del autor - Puerto USB tipo C para conectarnos con el PC e instalar los programas que deseemos, Se pueden añadir varios y seleccionar con el Joystick cual ejecuta.
- Puerto para Conexión módulos electrónicos:, con protocolos serie I2C, permite conexión de diferentes módulos, sin necesidad de tener más puertos, simplemente conectando todos en serie.
Manual de Cyberpi https://www.robotix.es/ebook/cyberpi-guia.pdf contenidos e imágenes publicados con permiso de la empresa Robotix. Autor José Manuel Ruiz Gutiérrez.
SOFTWARE
Permite una programación en bloques con mBlock5 y con código con Python que también se puede hacer desde el mismo mBlock.
Para actualizar el Firmware instalado en Cyberpi, se tiene que hacer desde el mismo mBlock, Aquí cómo se hace.
Para ejecutar los programas que se graban en Cyberpi, se entra en Cambiar programa y seleccionando los programas cargados.
Manual de Cyberpi https://www.robotix.es/ebook/cyberpi-guia.pdf contenidos e imágenes publicados con permiso de la empresa Robotix. Autor José Manuel Ruiz Gutiérrez.
Si se quiere ejecutar los programas predefinidos mover el joystick en el menú anterior a la derecha, y encontramos los típicos: Nivel de voz, sigue líneas, ....
2- Conocer mBot2
Hay que entender mBot2 como un chasis a CyberPi es decir, el rotot es CyberPi y le añadimos sensores y actuadores que es mBot2
Manual mBot2 https://www.robotix.es/documentos/mbot2-actividades.pdf contenidos e imágenes publicados con permiso de la empresa Robotix.
MOTORES CODIFICADORES
Permite el control de la velocidad y de la posición pues están codificados (motores paso a paso o motores con un detector de posición) por lo tanto permite movimientos precisos y colocar mBot2 en lugares exactos.
Comparandolo con mBot1 su control se realizaba por más o menos potencia a los motores, lo que provocaba desviaciones indeseadas.
SENSOR ULTRASONICO
Más preciso que su anterior. y además tiene unos leds que permite más interacción
Manual mBot2 https://www.robotix.es/documentos/mbot2-actividades.pdf contenidos e imágenes publicados con permiso de la empresa Robotix.
SENSOR QUAD RGB
Es un sigue líeas más avanzado pues permite detectar cruces de 90ª pues tiene 4 sensores frente a los 2 que tenía mBot1
Además tiene un sensor de color lo que permite conocer en qué posición de la línea estamos.
Manual mBot2 https://www.robotix.es/documentos/mbot2-actividades.pdf contenidos e imágenes publicados con permiso de la empresa Robotix.
Para que el sensor interprete los colores que pertenecen a la línea mirar el vídeo :
Módulo 3. Programación con Cyberpi.
Comenzamos con Cyberpi
Conectamos Cyberpi con el PC utilizando un cable USB tipo c
Manual de Cyberpi https://www.robotix.es/ebook/cyberpi-guia.pdf contenidos e imágenes publicados con permiso de la empresa Robotix. Autor José Manuel Ruiz Gutiérrez.
OJO, hay cables baratos que sólo sirven para "cargar", el cable que necesitamos tiene que permitir la comunicación bidireccional.
Entramos en mBlock5 https://ide.mblock.cc/ y añadimos el dispositivo CyberPi
Una vez cargado el dispositivo CyberPi recomendamos entrar en la conexión directa (3) y pulsamos Conectar (4)
Al dar a Conexión directa nos da dos opciones, Bluetooth y Serie, elegimos serie
Nota: La conexión Bluetooth sólo es si tenemos el pincho asociado (se vende aparte) y permite una conexión en vivo inalámbrica.
Se abren los puertos disponibles, elegimos el que esté conectado nuestro Cyberpi
Ojo: Tiene que estar encendido, si está con mClon, dar al interruptor on
Al dar a Conexión directa desaparece el texto y aparece Conexión con mLink ¿Qué es eso? Es otra opción, que antes se hacía obligatoriamente si usabas mBlock online: Instalar el programa mLink (que se puede descargar en https://www.mblock.cc/en/download/mlink/ ) y antes de entrar a mBlock online, tienes que ejecutar este programa y dejarlo minimizado. Aunque es una opción que puedes utilizar (y te evita la ventana anterior) la conexión directa es también cómoda.
Al conectar, nos aparecen instrucciones específicas de Cyberpi como instrucciones generales
Podemos empezar con nuestro primer programa
Le damos a Cargar , (luego aclaramos el modo En vivo qué es) y se ejecuta el programa
MODO VIVO ¿ESO QUÉ ES?
El modo vivo, permite interactuar con el PC, por ejemplo:
- PC → Cyberpi : Al pulsar la tecla espacio que diga Hola
- PC← Cyberpi El oso panda diga también Hola Mundo!
https://www.youtube.com/shorts/tV1yhUV41lg?feature=share
Si te fijas, Cyberpi está conectado con cable USB al PC pues estamos En vivo dependemos del ordenador. Si se quiere una conexión En vivo e Inalámbrica, es necesario comprar el pincho bluetooth
UN POCO MÁS COMPLICADO
Podemos complicarlo un poco más para darle más colorido y sonido
MUY IMPORTANTE
Para poder continuar con el curso, es necesario tener algunos conocimientos mínimos de programación en bloques, sobre todo el significado de los siguientes bloques
- EVENTOS
- CONTROL
- OPERADORES
- VARIABLES
- MIS BLOQUES
Recomendamos visitar las páginas 30 al 42
LED
En el apartado de LED podemos realizar diferentes animaciones de la tira de Leds RGB que tiene Cyberpi, por ejemplo
Otro ejemplo más animado sería
Lo siento.... no lo podía evitar, si lo entiendes es que tienes la edad perfecta para la robótica 😁 para cambiar los colores, de los leds hacer doble clic en la muestra
Pantalla con textos
La pantalla OLED que incorpora Cyberpi nos permite muchas posibilidades. para ello entramos en
Cómo puedes observar, si el texto no le cabe, automáticamente hace salto de línea. También puedes ver que no le gustan los acentos, ñ etc..
Puedes forzar el salto de línea con la instrucción :
Y también podemos imprimir una etiqueta en la fila 1 a 8 pero ten en cuenta que si coincide, se sobrescribe. Por ejemplo este código:
Los números no se borran, pero si hacemos este programa, se sobrescriben
Si queremos que el texto se desplace como una marquesina, tenemos que usar un contador y fijar la etiqueta en coordenadas X e Y correspondientes:
Las coordenadas X e Y :
Manual de Cyberpi https://www.robotix.es/ebook/cyberpi-guia.pdf contenidos e imágenes publicados con permiso de la empresa Robotix. Autor José Manuel Ruiz Gutiérrez.
Pantalla con gráficos
La pantalla OLED integrada de Cyberpi esta muy bien conseguida, permite muchas posibilidades inalcanzables en otras placas como Microbit y Arduino R4 (me refiero a sus pantallas integradas). Mira el primer minuto de este vídeo y lo verás
Gráficos de líneas
Ahora realiza este ejercicio, como puedes ver va representando números aleatorios:
Cambia el espaciado de 5 pixeles a 20 píxeles y notarás la diferencia. Aquí en este figura tienes un ejemplo
Manual de Cyberpi https://www.robotix.es/ebook/cyberpi-guia.pdf contenidos e imágenes publicados con permiso de la empresa Robotix. Autor José Manuel Ruiz Gutiérrez.
Podemos pues hacer que visualice la lectura de los sensores, por ejemplo el de luz. Como podemos ver en el vídeo es bastante preciso.
Nota: Cambia 30 por 300 para que te de tiempo a jugar con la luz
https://planet.mblock.cc/project/7548309
https://www.youtube.com/shorts/JDbkvJcwSvw
Gráficos de barras
Este ejemplo (que se muestra en vivo, pero también lo puedes poner en forma cargar)
Manual de Cyberpi https://www.robotix.es/ebook/cyberpi-guia.pdf contenidos e imágenes publicados con permiso de la empresa Robotix. Autor José Manuel Ruiz Gutiérrez.
Produce un gráfico de barras de dos columnas de datos :
Manual de Cyberpi https://www.robotix.es/ebook/cyberpi-guia.pdf contenidos e imágenes publicados con permiso de la empresa Robotix. Autor José Manuel Ruiz Gutiérrez.
¿Y qué harías para tener 4 barras de diferentes colores?
Si queremos esto
Tenemos que hacer
Si quieres otro ejemplo más elaborado de gráficos de barras, en la página 15 del manual Pere Manel Verdugo Zamora podrás encontrar un ejemplo de simular un dado 100 veces.
Escribir tablas en la pantalla
La pantalla de Cyberpi permite tablas de 4x3 como máximo
Este ejemplo
Manual de Cyberpi https://www.robotix.es/ebook/cyberpi-guia.pdf contenidos e imágenes publicados con permiso de la empresa Robotix. Autor José Manuel Ruiz Gutiérrez.
Produce la salida siguiente
Fuente: Guia Cyberpi Robotix con permiso de la empresa.
Y más...
Podemos fijar los colores con estas dos instrucciones:
Podemos rotar la pantalla
Manual de Cyberpi https://www.robotix.es/ebook/cyberpi-guia.pdf contenidos e imágenes publicados con permiso de la empresa Robotix. Autor José Manuel Ruiz Gutiérrez.
Y también tenemos :
Funciones trigonométricas
Manual de Cyberpi https://www.robotix.es/ebook/cyberpi-guia.pdf contenidos e imágenes publicados con permiso de la empresa Robotix. Autor José Manuel Ruiz Gutiérrez.
Manual de Cyberpi https://www.robotix.es/ebook/cyberpi-guia.pdf contenidos e imágenes publicados con permiso de la empresa Robotix. Autor José Manuel Ruiz Gutiérrez.
Manual de Cyberpi https://www.robotix.es/ebook/cyberpi-guia.pdf contenidos e imágenes publicados con permiso de la empresa Robotix. Autor José Manuel Ruiz Gutiérrez.
Detección
Detección del Joystick y teclas A y B
Podemos hacer este mensaje en el Cybperpi
aunque parece largo, es corto si se hace duplicar el if principal
En el objeto panda hacemos el programa:
También es corto y fácil de hacer utilizando duplicar. Como te puedes imaginar, el resultado es el siguiente :
.
También puede contar el número de veces que se produce el evento.
El siguiente programa nos puede servir como "contador de personas manual"
¿Por qué existe ese "espera" 0.1 segundos?
Para quitar los rebotes.
Prueba quitarlo y verás
También puede detectar las teclas A y B, como ya vimos en SONIDOS
Manual de Cyberpi https://www.robotix.es/ebook/cyberpi-guia.pdf contenidos e imágenes publicados con permiso de la empresa Robotix. Autor José Manuel Ruiz Gutiérrez.
Sensor de sonido
Podemos hacer este programa para ver la detección del sonido
Sensor luz
La detección de la luz, que ya lo vimos en gráficos
.
https://www.youtube.com/shorts/JDbkvJcwSvw
Otro sensor que tiene incorporado es el nivel de batería
Temporizador
Con este programa tenemos un cronómetro sencillo
Manual de Cyberpi https://www.robotix.es/ebook/cyberpi-guia.pdf contenidos e imágenes publicados con permiso de la empresa Robotix. Autor José Manuel Ruiz Gutiérrez.
Otras detecciones
Que sólo tienen sentido si Cyyberpi esta montado en una extensión, por ejemplo el chasis mbot2
Un ejemplo de detección
Puedes experimentar las diferentes fuerzas, velocidades con este script en vivo.
Lo tienes en https://planet.mblock.cc/project/3576507
LAN
Conectarse a la Wifi método por programación
Podemos poner en la programación las órdenes necesarias para que el Cyberpi se conecte a la red Wifi, la instrucción básica la tienes en la pestaña IoT
Pero tiene la desventaja de que no nos informa el estado. Este script es más elaborado
Conectarse a la Wifi método rápido
Otra manera es utilizar el programa mismo mBlock
Nombre del equipo
Para identificar nuestro equipo, necesitamos saber su nombre para diferenciarlos de otros, tenemos en en bloque de detección
El nombre del equipo se puede ajustar aquí :
INSTRUCCIONES DE LAN
Una vez que estamos conectados, los diferentes CYBERPI que están dentro de una LAN pueden enviarse mensajes con estas instrucciones
Ojo, sólo si están dentro de la misma LAN es decir, fuera de la red local los Cyberpi no se ven con estas instrucciones.
También el router puede separar diferentes LANs para saber más
Por defecto esta en el canal 6 pero puedes hacer subgrupos en distintos canales el 1 y el 11 con la instrucción "pon el canal de la LAN a .... y los miembros de un canal no pueden ver a los de otro canal distinto.
PROGRAMA EJEMPLO enviar la bienvenida
Vamos a poner este programa (en los dos el mismo) en dos cyberpis conectados a la misma wifi (si no aparece en el código es por que se ha utilizado el método rápido) :
El resultado es
... Y EN EL CASO DE QUE SÓLO TENGO UN CYBERPI ????
En el cyberpi
Instalamos la extensión BROADCAST
El código es parecido
Y lo subimos y dejamos conectado el cyberpi con el PC
En el Sprite (o sea el panda)
Instalamos la extensión broadcast (que se llama difusión) para las imágenes anidadas
Y creamos el siguiente programa para el sprite
RESULTADO
STEAM- Sonido
Cómo ya hemos dicho la el pensamiento computacional, la programación y la robótica nos permite trabajar de manera interdisciplinar conectando saberes y conocimientos de las diferentes asignaturas. Es una oportunidad que no podemos desaprovechar ya que sirve al alumnado para dar sentido a lo aprendido a los largo de las horas del instituto.
Os vamos a proponer tres maneras sencillas de conectar saberes :
Utilizando el leitmotiv del sonido, podemos trabajar contenidos de Música, Física y Tecnología. Lo que se plantea es una introducción y a partir de aquí el profesorado pueda desarrollar el tema.
Grabadora sencilla
La librería de Audio tenemos opciones interesantes
Podemos poner un programa sencillo
Manual de Cyberpi https://www.robotix.es/ebook/cyberpi-guia.pdf contenidos e imágenes publicados con permiso de la empresa Robotix. Autor José Manuel Ruiz Gutiérrez.
Este programa empieza con el evento tecla espacio. Por lo tanto necesita el Modo vivo
P: ¿Qué haríamos para no depender del ordenador, es decir, utilizar el modo cargar?
R: Podemos usar otro tipo de eventos que no dependa del PC
Grabadora más sofisticado
Si entramos en los programas de ejemplo, podemos elegir Magical Recorder
Y funciona como una grabadora de bolsillo:
- Apretamos el joystick en la posición central, empieza la grabación
- Botón A termina la grabación
- Botón B reproduce la grabación
Sirena
Si entramos en programas de ejemplo- Buzzer:
Toca una sirena:
Podemos jugar a reproducir notas
Teniendo en cuenta que sigue la notación inglesa. Equivalencia entre las notas anglosajonas, nota MIDI y frecuencias :
Fuente: Acústica musical. ETS Univ Vallalodid
Más sobre audio con Cyberpi en https://education.makeblock.com/help/mblock-block-based-device-cyberpi-audio/
Detección sonidos
Manual de Cyberpi https://www.robotix.es/ebook/cyberpi-guia.pdf contenidos e imágenes publicados con permiso de la empresa Robotix. Autor José Manuel Ruiz Gutiérrez.
¿Qué hace este programa?
Va desplazando un led de izquierda a derecha hasta que recibe un sonido fuerte, (en ese momento enciende todas las luces, y emite un sonido) luego después de 3 segundos vuelve a empezar
Sirena
Manual de Cyberpi https://www.robotix.es/ebook/cyberpi-guia.pdf contenidos e imágenes publicados con permiso de la empresa Robotix. Autor José Manuel Ruiz Gutiérrez.
STEAM-Movimiento
La segunda propuesta STEAM es el Movimiento que se puede trabajar en Educación Física, Matemáticas y Tecnología.
Ahora vamos a ver los programas en
Sensibilidad
Este sencillo programa podemos controlar el sprite según los movimientos definidos en Cyberpi
Ejecuta el anterior programa EN VIVO pues hay que mover el sprite
En teoría estos son los movimientos :
Manual de Cyberpi https://www.robotix.es/ebook/cyberpi-guia.pdf contenidos e imágenes publicados con permiso de la empresa Robotix. Autor José Manuel Ruiz Gutiérrez.
O montado con el mBot2 :
Manual mBot2 https://www.robotix.es/documentos/mbot2-actividades.pdf contenidos e imágenes publicados con permiso de la empresa Robotix.
Pero no es fácil :
El siguiente script muestra por la pantalla de Cybperpi si esta en movimiento (Adaptado de Guia Cyberpi Robotix con permiso de la empresa. José Manuel Ruiz Gutiérrez)
Resultado
Adaptado de Manual de Cyberpi https://www.robotix.es/ebook/cyberpi-guia.pdf contenidos e imágenes publicados con permiso de la empresa Robotix. Autor José Manuel Ruiz Gutiérrez.
O este otro
Detección de giros
El criterio de ángulos es ;
Manual de Cyberpi https://www.robotix.es/ebook/cyberpi-guia.pdf contenidos e imágenes publicados con permiso de la empresa Robotix. Autor José Manuel Ruiz Gutiérrez.
Un programa muy visual para ver la precisión que lo realiza es el siguiente:
Como podemos ver, los ángulos superiores a 360 están permitidos y al revés, en sentido negativo también:
Esto nos permite contar el número de vueltas que gira y su sentido.
Aceleraciones
También puede medir la aceleración en cualquiera de los tres ejes, por ejemplo este programa
Este es el resultado
Un ejercicio interesante: Contador de pasos
Manual de Cyberpi https://www.robotix.es/ebook/cyberpi-guia.pdf contenidos e imágenes publicados con permiso de la empresa Robotix. Autor José Manuel Ruiz Gutiérrez.
Visualización en forma de tabla de las inclinaciones
Manual de Cyberpi https://www.robotix.es/ebook/cyberpi-guia.pdf contenidos e imágenes publicados con permiso de la empresa Robotix. Autor José Manuel Ruiz Gutiérrez.
Resultado :
STEAM-IOT
La tercera propuesta tiene que ver con el internet de las cosas y la recogida de datos que puede hacerse desde cualquier disciplina científica. En este caso conectamos ciencia y tecnología.
El Internet de las cosas (Internet of Thing IoT) describe objetos físicos —o grupos de estos— con sensores, capacidad de procesamiento, software y otras tecnologías que se conectan e intercambian datos con otros dispositivos y sistemas a través de internet u otras redes de comunicación. El Internet de las cosas se ha considerado un término erróneo porque los dispositivos no necesitan estar conectados a la Internet pública. Sólo necesitan estar conectadas a una red y ser direccionables individualmente
Fuente Wikipedia IoT Internet de las cosas CC-BY-SA
De Drawed by Wilgengebroed on FlickrTranslated by Prades97 CC BY-SA 3.0
Estamos hablando de dispositivos que se conectan a internet de forma desatendida, por vía hardware (o mejor dicho firmware) a diferencia de un ordenador, tablet o móvil, donde tienes que configurar por software el dispositivo y hay un diálogo entre usuario y dispositivo sobre el uso de Internet (el software solicita tal página web, tales datos etc por voluntad del usuario o por diálogo con el usuario) Aquí los dispositivos están ya configurados de los datos que se comunican. Es decir "conectar y olvidar".
Piensa en la diferencia entre un enchufe inteligente y un ordenador, el primero es lo que se considera dentro de IoT
Desventajas: El acceso a Internet de dispositivos caseros puede generar problemas a nivel mundial:
- el caso Mirai
- aspiradores que nos espían
IoT en los cursos de Aularagón
- Blynk: lo que nos gusta de esta herramienta es que es casi "instantánea" o "síncrona". Esto es imprescindible con ciertos robots como el Rover Marciano con Arduino. Necesitamos que "gire" para evitar un obstáculo, no podemos esperar !!!. Veremos con BLYNK un protocolo que entre el dispositivo electrónico (nuestro robot) y nosotros (en ordenador, en una APP en el móvil) la comunicación es instantánea, gracias a un servidor que hará de intermedio, que puede ser local (BLYNK LEGACY) o en Internet (BLYNK IoT).
- Blynk legacy es la que se va a trabajar en
- Blynk IoT es la que se va a trabajar con
- ThinkSpeak y SmartioSpace
- MQTT El emisor envía datos, se almacenan en un servidor, y cuando puede, lo vuelca al cliente. Cliente y emisor pueden ser el dispositivo electrónico y nosotros o viceversa. Veremos que esto es lo que hace el protocolo MQTT y está tremendamente extendido por lo barato y fácil que es. Hace que los servidores no estén tan ocupados, por lo tanto hay varios proveedores que ofrecen este servicio gratuitamente. Hay robots como los que tienen la placa TDR STEAM IMAGINA que envía datos de temperatura, humedad, .. y pueden recibir datos pero no precisan de esta exigencia instantánea como un rover.
- TELEGRAM
- Arduino cloud IoT
- Cyberpi y mBot2
En esta pestaña tenemos elementos que nos permiten usar Internet para enviar mensajes o recoger información :
Para utilizar muchos elementos de IoT es necesario utilizar los servidores de Makeblock por lo tanto hace falta estar logueados
PROGRAMA EJEMPLO enviar la bienvenida
Vamos a poner este programa, QUE ES SUPER PARECIDO AL QUE HEMOS VISTO EN LAN los dos cyberpis conectados a la wifi (NO HACE FALTA QUE SEA LA MISMA) :
En este vídeo ESTAN CONECTADOS A DISTINTAS WIFIS (uno en una wifi del router, SSID catedu y otro en un móvil con datos SSID catedu2) por lo tanto NO PERTENECEN A LA MISMA LAN, podrían estar en cualquier parte del mundo con tal que estén conectados a Internet, y al loguearte, comparten los datos que hay en tu carpeta del servidor, "tu nube de usuario".
RETO: si te fijas, se repite el mensaje, es decir, en el cyberpi LUCIA vuelve a salir Tú te llamas LUCIA (también aparece en el Cyberpi de ISABEL) ¿Cómo evitarías esto?
PROGRAMA RECOGIDA DE DATOS CLIMÁTICOS
También permite recoger datos climáticos, que nos proporciona los servidores de Makeblock, por ejemplo:
P: ¿Por qué se ha elegido ACTUR ZARAGOZA como localidad de Calidad de Aire? ¿No puedo poner Fuentes Claras?
R : En todos sitios no hay estaciones de calidad de aire con datos públicos, uno está en Actur y es el que se ha elegido.
Módulo 4. Programación con mBot.
Comenzamos a programar con mBot
Podemos instalar diréctamente mBot2, lo interpreta como un chasis de Cyberpi
- Vamos a extensión luego vamos a buscarlo en extensión
- Buscamos mBot2 descargar
- Añadir
Se instarán estos conjuntos de instrucciones :
Primeros pasos
Control remoto con el teclado
Vamos a realizar EN VIVO este programa
Como puedes ver es puedes controlar el robot pero esta "atado" al ordenador, esa es la desventaja de programar EN VIVO
Programa de bienvenida
El contenido a partir de aquí es de esta página es de
Vamos a realizar este programa, primero una pantalla de bienvenida:
Luego interactuamos con el joystick y el movimiento:
Cargamos estos programas EN MODO CARGA
RESULTADO
El contenido de esta página es de
Jugando con la luz
mBot2 se quiere ir de marcha nocturna
Podemos hacer que el mBot2 se vaya de marcha nocturna
Un programa muy muy sencillo es este hay que jugar con los valores de 20 y 50 según las condiciones de tu aula
Es muy espectacular hacerlo con los alumnos, se deja el aula a oscuras, se encienden todas las luces y todo baila !
No te quedes con sólo girar, hazle piruetas, juegos de luces etc...
Robot polilla
Podemos hacer este sencillo programa que avanza si hay luz, o va dando vueltas (lo busca) si no hay
Puedes alterar el programa de tal manera que si no hay luz, que haga giros más largos, retroceda...
Evitar obstáculos I
Mi primer "Evita obstáculos"
Sugerimos un programa sencillo
https://planet.mblock.cc/project/7548708
Como puedes ver, cuando hay un obstáculo a menos de 15cm (puedes modificar este número) retrocede un poco, gira y así evita el obstáculo. Si no hay objeto, pues avanza
El Evita obstáculos de programas de ejemplo
Acuérdate que para manejar el sensor de distancia, hay que instalar la extensión correspondiente. Ver https://libros.catedu.es/books/cyberpi-y-mbot2/page/como-usar-mbot2-en-mblock
El script que proponemos es el que se encuentra en "Programas de ejemplo ":
El contenido a partir de aquí es de
La distancia de 8cm es arbitraria y también la elección de hacerlo al azar o no.
Podemos añadir
RESULTADO
El contenido de esta página es de
Evitar obstáculos II
El contenido de esta página es de
Acuérdate que para manejar el sensor de distancia, hay que instalar la extensión correspondiente. Ver https://libros.catedu.es/books/cyberpi-y-mbot2/page/como-usar-mbot2-en-mblock
Ahora, en vez de elegir al azar como Evitar obstáculos I qué dirección a girar, en este caso vamos a realizar un proyecto en el cual nuestro mBot2 tiene que detectar un objeto cuando esté a menos de 10 cm. En este momento se tiene que para y comprobar la distancia que hay a su derecha y la distancia que hay a su izquierda, siempre tendrá que ir por la dirección donde el obstáculo está más lejos.
RESULTADO
Sigue líneas I
Mi primer siguelíneas
El sigue líneas más sencillo es este, recomendamos empezar por aquí
- Si detecto 00 es decir "he perdido la línea" entonces ves hacia atrás para recuperarla
- Si detecto 11 es que estoy "en la línea" pues "pa'lante"
- Si detecto 01 es que la línea la tengo a mi derecha (0 en la izquierda 1 en la derecha) por lo tanto gira a la derecha para volver al redil
- lo mismo pero a la izquierda
Como se puede ver, hace movimientos hacia atrás sobre todo en las curvas cerradas pero ¡¡no se escapa!!
El sígue líneas de "Programas de ejemplo"
Acuérdate que para manejar el sensor de distancia, hay que instalar la extensión correspondiente. Ver https://libros.catedu.es/books/cyberpi-y-mbot2/page/como-usar-mbot2-en-mblock
El programa lo puedes encontrar en los "Programas de ejemplo":
El contenido a partir de aquí es esta página es de
El primer script es para parar el robot con el botón A
(optativo) Esta función para que nos muestre el color de la línea
RESULTADO
Sigue líneas II
El contenido de esta página es de
Acuérdate que para manejar el sensor de distancia, hay que instalar la extensión correspondiente. Ver https://libros.catedu.es/books/cyberpi-y-mbot2/page/como-usar-mbot2-en-mblock
En este programa sigue líneas avanzado vamos a incorporar que nos vaya diciendo los colores que va detectando
El script que proponemos es el siguiente :
Y el algoritmo principal
- Cuando se presiona el botón B
- Detener otros programas del objeto.
- A la variable base_power le asignamos el valor 55
- A la variable kp le asignamos el valor 0.8
- Para siempre (Bucle infinito)
- A la variable left_power le asignamos el valor -1 * ( base_power + (kp * desviación del sensor cuádruple RGB)
- A la variable right_power le asignamos el valor(base_power – (kp * desviación del sensor cuádruple RGB)
- moto EM1 gira a potencia right_power %, motor EM2 gira potencia left_power %
- sí detector R1 del sensor cuádruple RGB detecta blanco entonces
- muestra 5 leds color blanco
- sí detector R1 del sensor cuádruple RGB detecta rojo entonces
- muestra 5 leds color rojo
- sí detector R1 del sensor cuádruple RGB detecta amarillo entonces
- muestra 5 leds color amarillo
- sí detector R1 del sensor cuádruple RGB detecta verde entonces
- muestra 5 leds color verde
- sí detector R1 del sensor cuádruple RGB detecta cian entonces
- muestra 5 leds color cian
- sí detector R1 del sensor cuádruple RGB detecta azul entonces
- muestra 5 leds color azul
- sí detector R1 del sensor cuádruple RGB detecta morado entonces
- muestra 5 leds color morado
- sí detector R1 del sensor cuádruple RGB detecta negro entonces
- muestra 5 leds color negro
Y además (optativo) igual que el sigue líneas I :
RESULTADO
Control remoto
El contenido de esta página es de Ejemplos mBot2 Pere Manel Verdugo Zamora http://peremanelv.com/mblok.html contenidos e imágenes publicados con permiso del autor
PARA REALIZAR ESTE PROGRAMA SE NECESITAN DOS CYBERPIS QUE VAN A ESTAR CONECTADOS EN LA MISMA LAN
Ahora un Cyberpi con su joystick controlará los movimientos del otro Cyberpi montado en su mBot2
Ejemplos mBot2 Pere Manel Verdugo Zamora http://peremanelv.com/mblok.html contenidos e imágenes publicados con permiso del autor
Para este proyecto hemos de cargar dos CyberPy.
CODIGO EN EL CYBERPI RECEPTOR MONTADO CON MBOT2
https://planet.mblock.cc/project/projectshare/7552114
Hay que poner los dos Cyberpis en la misma Wifi (SSID y contraseña)
Ejemplos mBot2 Pere Manel Verdugo Zamora http://peremanelv.com/mblok.html contenidos e imágenes publicados con permiso del autor
Ejemplos mBot2 Pere Manel Verdugo Zamora http://peremanelv.com/mblok.html contenidos e imágenes publicados con permiso del autor
CODIGO EN EL CYBERPI QUE HARÁ DE CONTROL REMOTO
https://planet.mblock.cc/project/7552213
Ejemplos mBot2 Pere Manel Verdugo Zamora http://peremanelv.com/mblok.html contenidos e imágenes publicados con permiso del autor
RESULTADO
El contenido de esta página es de
Más actividades
RETOS : HACER UN PROGRAMA QUE REALICE....
RETO1 APARCAR
SOLUCIÓN pag 18 de Manual mBot2 https://www.robotix.es/documentos/mbot2-actividades.pdf contenidos e imágenes publicados con permiso de la empresa Robotix.
RETO 2 HACER UN CUADRADO
Los cuadrados naranjas son obstáculos.
Solución en pag 53 de Manual mBot2 https://www.robotix.es/documentos/mbot2-actividades.pdf contenidos e imágenes publicados con permiso de la empresa Robotix.
RETO 3 BUSCANDO EL COLOR AZUL ...
Un grupo de mBot2 buscan el color azul pintado en el suelo. Si uno lo encuentra, informará a los demás y ganará el juego.
Solución en pag 90 de Manual mBot2 https://www.robotix.es/documentos/mbot2-actividades.pdf contenidos e imágenes publicados con permiso de la empresa Robotix.
RETO 4 BUSCANDO EL COLOR AZUL... PERO EN SOLITARIO
Hacer el juego anterior pero sólo teniendo un mbot2
Solución en pag 9 de Manual mBot2 https://www.robotix.es/documentos/mbot2-actividades.pdf contenidos e imágenes publicados con permiso de la empresa Robotix.
Es parecido a la solución con Broadcast que vimos en LAN con cyberpi
RETO 5 EL NO VA MÁS ... UN CAMARERO
El robot camarero que vas a fabricar debe ser capaz de hacer una serie de cosas: • Desplazarse en línea recta • Detenerse en una zona roja (tu mesa), anotar un pedido y enviarlo a la cocina • Opción adicional: si se dispone de un segundo mBot2 o CyberPi, entonces mostrar los pedidos a la cocina (para que puedan empezar a preparar la comida) • Continuar desplazándose hasta que el mBot2 encuentre una superficie verde (la cocina) y se detenga para recoger la comida de la cocina • Opcional: si se dispone de un segundo mBot2 o CyberPi, entonces notificar se está entregando la comida
Pag 107 Manual mBot2 https://www.robotix.es/documentos/mbot2-actividades.pdf contenidos e imágenes publicados con permiso de la empresa Robotix.
¿QUE HACEN ESTOS PROGRAMAS? ....
Pag 25 Manual mBot2 https://www.robotix.es/documentos/mbot2-actividades.pdf contenidos e imágenes publicados con permiso de la empresa Robotix.
Pag 26 Manual mBot2 https://www.robotix.es/documentos/mbot2-actividades.pdf contenidos e imágenes publicados con permiso de la empresa Robotix.
Pag 27 Manual mBot2 https://www.robotix.es/documentos/mbot2-actividades.pdf contenidos e imágenes publicados con permiso de la empresa Robotix.
Pag 28 Manual mBot2 https://www.robotix.es/documentos/mbot2-actividades.pdf contenidos e imágenes publicados con permiso de la empresa Robotix.
Pag 29 de Manual mBot2 https://www.robotix.es/documentos/mbot2-actividades.pdf contenidos e imágenes publicados con permiso de la empresa Robotix.
Pag 33 de Manual mBot2 https://www.robotix.es/documentos/mbot2-actividades.pdf contenidos e imágenes publicados con permiso de la empresa Robotix.
Pag 41 deManual mBot2 https://www.robotix.es/documentos/mbot2-actividades.pdf contenidos e imágenes publicados con permiso de la empresa Robotix.
Pag 43 de Manual mBot2 https://www.robotix.es/documentos/mbot2-actividades.pdf contenidos e imágenes publicados con permiso de la empresa Robotix.
Pag 60 de Manual mBot2 https://www.robotix.es/documentos/mbot2-actividades.pdf contenidos e imágenes publicados con permiso de la empresa Robotix.
Pag 60 de Manual mBot2 https://www.robotix.es/documentos/mbot2-actividades.pdf contenidos e imágenes publicados con permiso de la empresa Robotix.
Pag 62 de Manual mBot2 https://www.robotix.es/documentos/mbot2-actividades.pdf contenidos e imágenes publicados con permiso de la empresa Robotix.
Pag 63 de Manual mBot2 https://www.robotix.es/documentos/mbot2-actividades.pdf contenidos e imágenes publicados con permiso de la empresa Robotix.
Pag 67-68 de Manual mBot2 https://www.robotix.es/documentos/mbot2-actividades.pdf contenidos e imágenes publicados con permiso de la empresa Robotix.
Y utilizar esta instrucción en la función principal
Pag 69 de Manual mBot2 https://www.robotix.es/documentos/mbot2-actividades.pdf contenidos e imágenes publicados con permiso de la empresa Robotix.
Pag 82 de Manual mBot2 https://www.robotix.es/documentos/mbot2-actividades.pdf contenidos e imágenes publicados con permiso de la empresa Robotix.
Pag 89 de Manual mBot2 https://www.robotix.es/documentos/mbot2-actividades.pdf contenidos e imágenes publicados con permiso de la empresa Robotix.
Pag 106 de Manual mBot2 https://www.robotix.es/documentos/mbot2-actividades.pdf contenidos e imágenes publicados con permiso de la empresa Robotix.
En el siguiente programa se usa la extensión TEACHABLE MACHINE, en ella se enseña al objeto que reconozca (INTELIGENCIA ARTIFICIAL) un mBot2, un block de notas, mira https://libros.catedu.es/books/cyberpi-y-mbot2/page/software-educable-maquina-educable-teachable-machine para saber cómo se utiliza esta extensión.
Una vez "aprendido" se pueden usar las instrucciones de "recognition result is... "
Tiene la pega que tienen que estar conectado por cable el mBot2 o usar un adaptador Bluetooth
Pag 124 de Manual mBot2 https://www.robotix.es/documentos/mbot2-actividades.pdf contenidos e imágenes publicados con permiso de la empresa Robotix.
Módulo5 Cyberpi, mBot y Python
El software mBlock permite realizar la transición de la programación por bloques a lenguaje de texto Python. El proposito de este módulo de ampliación es ayudar al profesorado quiere iniciar a su alumnado en Python.
Python
Librería cyberpi
Los programas en python de cyberpi que vamos a realizar utilizan esta librería por lo tanto hay que cargarla previamente en nuestros programas.
import cyberpi
Tiene multitud de funciones, te aconsejamos ver un vistazo en esta documentación (en inglés) :
https://www.lbotics.at/images/mbot2/files/mBot2_API_cyberpi.pdf
Esta es una muy breve introducción al Python como recordatorio de algunas instrucciones si ya has utilizado este lenguaje.
Si es la primera vez, te recomendamos que visites nuestro curso PYTHON PARA TODOS Python for everybody por Charles R. Severance licencia CC-BY-NCSA que empieza desde cero.
Lenguajes, intérpretes y compiladores
Python es un lenguaje de alto nivel destinado a ser relativamente sencillo para que los humanos lean y escriban y para que los ordenadores lean y procesen. Otros lenguajes de alto nivel incluyen Java, C ++, PHP, Ruby, Basic, Perl, JavaScript y muchos más. El hardware real dentro de la Unidad Central de Procesamiento (CPU) no comprende ninguno de estos lenguajes de alto nivel.
La CPU entiende un idioma que llamamos lenguaje de máquina. El lenguaje de máquina es muy simple y francamente muy tedioso de escribir porque está representado en ceros y unos:
El lenguaje de máquina parece bastante simple en la superficie, dado que solo hay ceros y unos, pero su sintaxis es aún más compleja y mucho más compleja que Python. Muy pocos programadores escriben lenguaje de máquina. En su lugar, creamos varios traductores para permitir que los programadores escriban en lenguajes de alto nivel como Python o JavaScript y estos traductores convierten los programas al lenguaje de máquina para su ejecución real por parte de la CPU.
Estos traductores de lenguaje de programación se dividen en dos categorías generales: (1) intérpretes y (2) compiladores.
Un intérprete lee el código fuente del programa como está escrito por el programador, analiza el código fuente e interpreta las instrucciones sobre la marcha. Python es un intérprete y cuando ejecutamos Python de forma interactiva, podemos escribir una línea de Python (una oración) y Python la procesa de inmediato y está lista para que escribamos otra línea de Python.
>>> x = 6
>>> print(x)
6
>>> y = x * 7
>>> print(y)
42
>>>
Está en la naturaleza de un intérprete poder tener una conversación interactiva como se muestra arriba. A un compilador debemos entregarle todo el programa en un archivo, y luego ejecuta un proceso para traducir el código fuente de alto nivel al lenguaje de máquina y luego el compilador coloca el lenguaje de máquina resultante en un archivo para su posterior ejecución.
Variables
Las variables son como cajas que puedes meter valores. Y los valores pueden ser de varios tipos :
- int si son enteros
- float si tienen decimales
- binarioDeben comenzar por 0b. Por ejemplo: 0b110, 0b11
- string son frases, son "cadenas" de caracteres entre "
- bool Solamente hay dos literales booleanos True o False
- lista Se pueden declarar variables que son conjuntos por ejemplo Colores = ["verde", "rojo", "naranja" ]
Para crear una variable puedes usar cualquier palabra, x, y, z o Nombre_alumno ... pero algunas palabras no puedes usar, ver
Para visualizar variables puedes usar la instrucción print poniendo entre paréntesis el valor o variable que quieres visualizar.
Modifica los valores como quieras, es un intérprete, juega y dale al play para ver el resultado
Como puedes ver se ha introducido un operador el + que realiza la suma del valor de x original (43) y se le incrementa una unidad resultando en la impresión un 44.
Cadenas
Cadenas son secuencias de caracteres, por ejemplo la palabra "banana"
fuente 'Python for Everybody' por Charles R. Severance
Se puede obtener su longitud con la función len, o obtener un carácter ...
Operadores
Este apartado de operadores es adaptado de Federico Coca Guia de Trabajo de Microbit CC-BY-SA
Los operadores aritméticos se utilizan para realizar operaciones matemáticas como sumas, restas, multiplicaciones, etc.
| Operador | Descripción | Ejemplo |
|---|---|---|
| + | Suma o concatenación en textos | 5+3=8, "Hola" + "Mundo" = "Hola Mundo |
| - | Diferencia | 6-3=3 |
| * | Multiplicación | 3*3=9 |
| / | División | 6/2=3 |
| // | Parte entera de un cociente | 10//3=3 |
| % | Resto de un cociente | 10%3=1 |
| ** | Potenciación | 5**2=25 |
Los operadores de asignación se utilizan para asignar valores a variables.
| Operador | Descripción | Ejemplo |
|---|---|---|
| = | Asignación | x=4, a = a + 1 |
| += | Suma y asignación | x+=1 equivale a x = x + 1 |
| -= | Diferencia y asignación | x-=1 equivale a x = x - 1 |
| *= | Multiplicación y asignación | x*=3 equivale a x = x * 3 |
| /= | División y asignación | x/=3 equivale a x = x / 3 |
| %= | Asignación de restos | x%=3 equivale a x = x % 3 |
| **= | Asignación de exponentes | x**=3 equivale a x = x ** 3 |
Los operadores de comparación comparan dos valores/variables y devuelven un resultado booleano: Verdadero o Falso True o False.
| Operador | Descripción | Ejemplo |
|---|---|---|
| == | Igual a | 2==3 retorna False |
| != | Distinto de | 2!=3 retorna True |
| < | Menor que | 2<3 retorna True |
| > | Mayor que | 2>3 retorna False |
| <= | Menor o igual que | 2<=3 retorna True |
| >= | Mayor o igual que | 2>=3 retorna False |
Los operadores lógicos se utilizan para comprobar si una expresión es Verdadera o Falsa. Se utilizan en la toma de decisiones.
| Operador | Descripción | Ejemplo |
|---|---|---|
| and | AND lógica | a and b #True si a y b son ciertos |
| or | OR lógica | a or b #True si a o b son ciertos |
| not | NOT lógica | not a #True si el operador a es falso |
| in | pertenencia | Devuelve True si pertenece |
| no int | no pertenencia | Devuelve True si no pertenece |
| is | identidad | Devuelve True si son iguales |
| is not | no identidad | Devuelve True si no son inguales |
Los operadores bit a bit o bitwise actúan sobre los operandos como si fueran cadenas de dígitos binarios. Operan bit a bit:
| Operador | Descripción | Ejemplo |
|---|---|---|
| & | AND bit a bit | 5&6 # 101 & 110 = 110 = 4 |
| | | OR bit a bit | 5 \| 6 # 101 \| 110 = 111 = 7 |
| ~ | NOT bit a bit | ~3 # ~011 = 100 = -4 |
| ^ | XOR bit a bit | 5^3 # 101^011 = 110 = 6 |
| << | Desplazamiento izquierda | 4<<1 # 100 << 1 = 1000 = 8 |
| >> | Desplazamiento derecha | 4 >> 1 # 100 >> 1 = 010 = 2 |
Comentarios en Python
Una sola línea : Escribiendo el símbolo almohadilla (#) delante del comentario.
Multilínea: Escribiendo triple comillas dobles (“””) al principio y al final del comentario.
Entradas de teclado
Ya hemos visto salidas por pantalla con print, pero ahora con input puede leer variables del teclado.
Fíjate que hay que poner las líneas x = float (x) e y = float(y) para convertirlos a números decimales, en caso contrario las interpreta string y no puede multiplicar en Resultado, pero en el siguiente ejemplo no es necesario en la variable cel (celsius) pues se multiplica por números decimales 32.0 5.0 y 9.0
try y except son dos funciones que son un seguro para el programador por si el usuario en vez de teclear un número, mete un string o carácter
La sangría es importante en Python
La sangría se refiere a los espacios al comienzo de una línea de código. Mientras que en otros lenguajes de programación la sangría en el código es solo para facilitar la lectura, la sangría en Python es muy importante ya que se usa para indicar un bloque de código.
Condicionales
Las instrucciones if: else: son las que nos permiten realizar operaciones según las condiciones puestas. Ojo con la sangría
\n es un carácter especial que significa "Salto de página"
Bucles
- while ejecuta lo contenido en la sangría mientras sea verdadero la condición
- for ejecuta lo contenido en la sangría mientras y va recorriendo la variable dentro del rango creado
Para verlo mejor vamos a ver estos ejemplos
- EJEMPLO BUCLE WHILE
- mientras n sea positivo va ejecutando : imprime n y lo decrementa
- al decrementar llega un momento que deja de ser positivo y finaliza el bucle
- EJEMPLO BUCLE WHILE INFINITO
- Es muy típico en robótica, todo el rato hace el bucle (en robótica para que lea los sensores y realice cosas en los actuadores) pero este ejemplo no esta en un robot sino en tu pc y no queremos que se quede "colgado" luego al teclear "fin" acaba gracias a la instrucción break
- Fíjate que hay una instrucción continue para que pase a la siguiente iteración provocando que no imprime lo tecleado
- EJEMPLO BUCLE FOR FRIENDS
- Va recorriendo la variable friend dentro del cojunto lista friends
- como puedes ver la diferencia entre for y while es que for además recorre la variable
- EJEMPLO BUCLE FOR
- mientras n este en el rango de 0 a 5 se ejecuta
Funciones
No vamos a entrar en detalle, pero observa el siguiente código
- FUNCIONES PREDEFINIDAS Si observas, la primera línea llama a importar una librería externa, import math donde math es un fichero que tienen funciones predefinidas, vamos a utilizar una de ellas, la raiz cuadrada sqrt luego para llamar a esa función que esta definida dentro de math se hace con la instrucción math.sqrt
- FUNCIONES DEFINIDAS POR TI em este caso, se utiliza la palabra def para crear una función, que le vamos a pasar tres argumentos a, b y c y para finalizar la función usamos return para devolver el valor que queremos obtener
Para saber más de Python
| CURSO PYTHON FOR EVERYBODY en español | ver |
| Curso completo de Python 222pag pdf (*) | Descargar |
| Curso completo de Python 422pag (*) | Descargar |
| Curso completo de Python desde 0 (*) | Ver |
| Curso de Python desde 0 (*) | Ver |
| Manual de referencia Python (*) | Ver |
| Programación en Python (*) | Ver |
| Trabajando con ficheros en Python (*) | Ver |
| Programación orientada a objeto en Python (*) | Ver |
| un manual para aquellos usuarios con previos conocimientos de Python, como la programación modular y orientada a objetos. También algunos conocimientos de las librerías tkinter (Para crear interfaces gráficos y SQlite3 (para gestionar bases de datos). (*) |
Descargar |
(*) Agradecimientos a Pere Manel http://peremanelv.com
Hola Mundo
Nuestro primer programa es muy sencillo: Que por el display del Cyberpi salga la típica frase del primer programa principiante
A la hora de utilizar las funciones de la librería cyberpi, tienes dos opciones:
- Programar sin omitir de donde viene (o sea, indicar el objeto de donde sale esa función, cyberpi. )
- Programar omitiéndolo pero antes tienes que decirle que importas todo import *
Mi primer programa Hola Mundo (método sin omitir)
Entramos en mBlock, y en la pestaña de Python tecleamos este programa:
import cyberpi
cyberpi.console.print("Hola Mundo")
Previamente tienes que tener el programa mBlock instalado y cargado el dispositivo mBot2 (aunque para estos ejemplos con Cyberpi también vale) , recuerda lo visto en https://libros.catedu.es/books/cyberpi-y-mbot2/page/mblock5 y en https://libros.catedu.es/books/cyberpi-y-mbot2/page/como-usar-mbot2-en-mblock
- Entramos en mblock con el dispositivo cargado mBot2 y vamos a la pesaña Python
- Pegamos el programa
- Vamos a conectar mBot2 (debemos de tenerlo conectado con un cable USB tal y como vimos en https://libros.catedu.es/books/cyberpi-y-mbot2/page/mi-primer-programa-hola-mundo
- Damos a la opción Cargar
- Subir código
Y el resultado es
Mi primer programa Hola Mundo (método omitiendo)
Repite los pasos anteriores pero con este código
from cyberpi import *
console.print("Hola Mundo")
¿Ves la diferencia de código?
Audio
Un tono
Un programa sencillo de dar un tono puede ser el siguiente
import cyberpi
cyberpi.audio.set_vol(100)
cyberpi.audio.play_tone(700,1)
Extraído de https://github.com/PerfecXX/Python-mBot2/blob/main/README.md licencia MIT
Instrumentos
También podemos reproducir instrumentos
import cyberpi
cyberpi.audio.set_vol(100)
# str type eg. snare,bass-drum,side-stick,crash-cymbal,open-hi-hat,close-hi-hat,tambourine,hand-clap,claves
# float beat > 0 (second)
cyberpi.audio.play_drum("snare",1)
cyberpi.audio.play_drum("snare",1)
cyberpi.audio.play_drum("side-stick",1)
cyberpi.audio.play_drum("tambourine",1)
Extraído de https://github.com/PerfecXX/Python-mBot2/blob/main/README.md licencia MIT
Efectos sonoros
También este código nos selecciona varios efectos sonoros y los reproduce
import cyberpi
sound_effect = ["hello","hi","bye","yeah","wow","laugh","hum","sad","sigh","annoyed","angry","surprised","yummy","curious","embarrassed","ready","sprint","sleepy","meow","start","switch","beeps","buzzing","explosion","jump","laser","level-up","low-energy","prompt-tone","right","wrong","ring","score","wake","warning","metal-clash","shot","glass-clink","inflator","running water","clockwork","click","current","switch","wood-hit","iron","drop","bubble","wave","magic","spitfire","heartbeat","load"]
cyberpi.display.show_label('UP :GO UP\nDOWN:GO DOWN\nMID :PLAY EFFECT', 16, 0, 0, 0)
cyberpi.display.show_label('SELECT:\nName:', 16, 0, 60, 1)
selected = 0
min_effect = 0
max_effect = len(sound_effect) - 1
while True:
if cyberpi.controller.is_press('up'):
if selected < max_effect:
selected += 1
else:
selected = min_effect
elif cyberpi.controller.is_press('down'):
if selected > min_effect:
selected -= 1
else:
selected = max_effect
elif cyberpi.controller.is_press('middle'):
cyberpi.led.on(255,0,0,id="all")
cyberpi.audio.play_until(sound_effect[selected])
cyberpi.led.on(0,0,0,id="all")
cyberpi.display.show_label('{}'.format(selected), 16, 60, 60, 2)
cyberpi.display.show_label('{}'.format(sound_effect[selected]), 12, 52, 80, 3)
Extraído de https://github.com/PerfecXX/Python-mBot2/blob/main/README.md licencia MIT
Grabadora
O hacernos una grabadora de bolsillo
import cyberpi
from time import sleep
cyberpi.audio.set_vol(100)
cyberpi.display.show_label("A:Start Recording\nB:Play Recording",12,0,0,0)
while True:
cyberpi.display.show_label("Waiting.",16,0,40,1)
if cyberpi.controller.is_press('a'):
cyberpi.led.on(0,255,0,id="all")
cyberpi.display.show_label("Listening..",16,0,40,1)
cyberpi.audio.record()
sleep(5)
cyberpi.display.show_label("Finished..",16,0,40,1)
cyberpi.audio.stop_record()
elif cyberpi.controller.is_press('b'):
cyberpi.led.on(0,0,255,id="all")
cyberpi.display.show_label("Playing..",16,0,40,1)
cyberpi.audio.play_record_until()
cyberpi.display.show_label("Finished..",16,0,40,1)
cyberpi.display.show_label("Waiting...",16,0,40,1)
cyberpi.led.on(0,0,0,id="all")
Extraído de https://github.com/PerfecXX/Python-mBot2/blob/main/README.md licencia MIT
LED
Colores
Podemos fijar los colores de los leds de Cyberpi con este código
import cyberpi
# R G B Position
cyberpi.led.on(255,0,0,id=1)
cyberpi.led.on(255,255,0,id=2)
cyberpi.led.on(255,255,255,id=3)
cyberpi.led.on(0,255,0,id=4)
cyberpi.led.on(0,255,255,id=5)
Extraído de https://github.com/PerfecXX/Python-mBot2/blob/main/README.md licencia MIT
Intermitencia
Podemos encender y apagar a voluntad
import cyberpi
from time import sleep
while True:
# R G B Position
cyberpi.led.on(255,0,0,id=1)
cyberpi.led.on(255,255,0,id=2)
cyberpi.led.on(255,255,255,id=3)
cyberpi.led.on(0,255,0,id=4)
cyberpi.led.on(0,255,255,id=5)
sleep(1)
# Position
cyberpi.led.off(id='all')
sleep(1)
Extraído de https://github.com/PerfecXX/Python-mBot2/blob/main/README.md licencia MIT
Arco Iris
import cyberpi
"""
Name List (str)
rainbow , spoondrift , meteor_blue , meteor_green ,
flash_red , flash_orange , firefly
"""
cyberpi.led.play(name = "rainbow")
Extraído de https://github.com/PerfecXX/Python-mBot2/blob/main/README.md licencia MIT
Movimiento leds
import cyberpi
from time import sleep
cyberpi.led.on(255,0,0,id=1)
while True:
# shift all the colors 1 step to the right.
# (If it is negative, it will be left shifting.)
cyberpi.led.move(1)
sleep(1)
Extraído de https://github.com/PerfecXX/Python-mBot2/blob/main/README.md licencia MIT
Entradas
Botones A y B
Si aprieto el botón A pues enciendo leds, si aprieto B los apago
import cyberpi
"""
Button Name List (str)
a , b
up, down, left , right , middle
any_direction , any_button , any
"""
while True:
# button name
if cyberpi.controller.is_press('a'):
cyberpi.led.on(255,0,0,id='all')
cyberpi.console.println("LED ON!")
if cyberpi.controller.is_press('b'):
cyberpi.led.on(0,0,0,id='all')
cyberpi.console.println("LED OFF!")
Extraído de https://github.com/PerfecXX/Python-mBot2/blob/main/README.md licencia MIT
Intensidad de la luz
La función show_label la veremos después, tiene el formato cyberpi.display.show_label(texto, tamaño, color, x, y)
import cyberpi
cyberpi.display.show_label("LUZ=",16,0,0,0)
while True:
CantidadLuz = cyberpi.get_brightness()
cyberpi.display.show_label(CantidadLuz,16,0,60,1)
Extraído de https://github.com/PerfecXX/Python-mBot2/blob/main/README.md licencia MIT
Cantidad de sonido
import cyberpi
cyberpi.display.show_label("Loudness:",16,10,10,index=1)
while True:
loudness_value = cyberpi.get_loudness()
cyberpi.display.show_label(loudness_value,16,80,10,index=2)
Extraído de https://github.com/PerfecXX/Python-mBot2/blob/main/README.md licencia MIT
Nivel de batería
import cyberpi
cyberpi.display.show_label("Battery Level",16,10,0,index=0)
cyberpi.display.show_label("Builtin:",16,10,20,index=1)
cyberpi.display.show_label("Extra:",16,10,40,index=2)
while True:
builtin_batt = cyberpi.get_battery()
extra_batt = cyberpi.get_extra_battery()
cyberpi.display.show_label(builtin_batt,16,80,20,index=3)
cyberpi.display.show_label(extra_batt,16,80,40,index=4)
Display
Contador
import cyberpi
cyberpi.display.show_label("Counter Program",16,0,0,0)
counter = 0
while True:
if counter < 100:
counter = counter + 1
else:
counter = 0
cyberpi.display.set_brush(counter+100, 0, 0)
cyberpi.display.show_label(counter,32,48,64,1)
Extraído de https://github.com/PerfecXX/Python-mBot2/blob/main/README.md licencia MIT
Limpiar y apagar la pantalla
import cyberpi
cyberpi.display.on()
cyberpi.display.show_label("A:Clear the Sceen",12,0,0,0)
cyberpi.display.show_label("B:Close the screen",12,0,24,1)
while True:
if cyberpi.controller.is_press('a'):
cyberpi.display.clear()
elif cyberpi.controller.is_press('b'):
cyberpi.display.off()
Extraído de https://github.com/PerfecXX/Python-mBot2/blob/main/README.md licencia MIT
Linechart
El display permite visualizar gráficas como por ejemplo este código
import cyberpi
value = 0
while True:
if value < 100:
value = value + 1
else:
value = 0
cyberpi.linechart.add(value)
Extraído de https://github.com/PerfecXX/Python-mBot2/blob/main/README.md licencia MIT
Barchart
import cyberpi
value = 0
while True:
if value < 100:
value = value + 0.1
else:
value = 0
cyberpi.barchart.add(value)
Extraído de https://github.com/PerfecXX/Python-mBot2/blob/main/README.md licencia MIT
Table
import cyberpi
cyberpi.display.set_brush(255,0,0)
cyberpi.table.add(1,1,"1,1")
cyberpi.table.add(2,1,"2,1")
cyberpi.table.add(3,1,"3,1")
cyberpi.table.add(4,1,"4,1")
cyberpi.display.set_brush(0,255,0)
cyberpi.table.add(1,2,"1,2")
cyberpi.table.add(2,2,"2,2")
cyberpi.table.add(3,2,"3,2")
cyberpi.table.add(4,2,"4,2")
cyberpi.display.set_brush(0,0,255)
cyberpi.table.add(1,3,"1,3")
cyberpi.table.add(2,3,"2,3")
cyberpi.table.add(3,3,"3,3")
cyberpi.table.add(4,3,"4,4")
Extraído de https://github.com/PerfecXX/Python-mBot2/blob/main/README.md licencia MIT
Drawpixel
import cyberpi
import time
pixel_list = ["music","picture","video","clock","play","pause","next","prev","sound","temperature","light","motion","home","gear","list","right","wrong","shut_down","refresh","trash_can","download","sunny","cloudy","rain","snow","train","rocket","car","truck","droplet","distance","fire","magnetic","gas","vision","color","overcast","foggy","sandstorm"]
my_sprite = cyberpi.sprite()
for p in pixel_list:
my_sprite.draw_pixel(p)
my_sprite.set_size(200)
time.sleep(1)
cyberpi.screen.render()
Extraído de https://github.com/PerfecXX/Python-mBot2/blob/main/README.md licencia MIT
QR
import cyberpi
my_sprite = cyberpi.sprite()
my_sprite.draw_QR("https://catedu.es/")
my_sprite.set_size(400)
cyberpi.screen.render()
Extraído de https://github.com/PerfecXX/Python-mBot2/blob/main/README.md licencia MIT
¡¡ y funciona !!!
Sensores de movimiento
Sensor agitación
import cyberpi
cyberpi.display.show_label("Shake Value\nA:Start",16,0,0,0)
while not cyberpi.controller.is_press('a'):
pass
while True:
shake_value = cyberpi.get_shakeval()
cyberpi.display.show_label("Shake Value",16,20,0,0)
cyberpi.display.show_label("{}%".format(shake_value),24,40,50,1)
Extraído de https://github.com/PerfecXX/Python-mBot2/blob/main/README.md licencia MIT
Inclinación y rotación
El siguiente programa enseña los dos ángulos de inclinación en eje X e Y y rotación en eje Z
import cyberpi
cyberpi.display.show_label("YAW PITCH ROLL\nA:Start",16,0,0,0)
while not cyberpi.controller.is_press('a'):
pass
while True:
pitch = cyberpi.get_pitch()
roll = cyberpi.get_roll()
yaw = cyberpi.get_yaw()
cyberpi.display.show_label("Yaw\n\nPitch\n\nRoll\n\n",16,0,0,0)
cyberpi.display.show_label("{}\n\n{}\n\n{}".format(pitch,roll,yaw),16,50,0,1)
Extraído de https://github.com/PerfecXX/Python-mBot2/blob/main/README.md licencia MIT
El resultado es muy parecido con la función de gyro
import cyberpi
cyberpi.reset_rotation(axis='all')
cyberpi.display.show_label("Gyroscope\nA:Start",16,0,0,0)
while not cyberpi.controller.is_press('a'):
pass
while True:
x_gyro = cyberpi.get_gyro('x')
y_gyro = cyberpi.get_gyro('y')
z_gyro = cyberpi.get_gyro('z')
cyberpi.display.show_label("X\n\nY\n\nZ\n\n",16,0,0,0)
cyberpi.display.show_label("{}\n\n{}\n\n{}".format(x_gyro,y_gyro,z_gyro),16,50,0,1)
Extraído de https://github.com/PerfecXX/Python-mBot2/blob/main/README.md licencia MIT
Y rotation
import cyberpi
cyberpi.reset_rotation(axis='all')
cyberpi.display.show_label("Rotation\nA:Start",16,0,0,0)
while not cyberpi.controller.is_press('a'):
pass
while True:
x_rotate = cyberpi.get_rotation('x')
y_rotate = cyberpi.get_rotation('y')
z_rotate = cyberpi.get_rotation('z')
cyberpi.display.show_label("X\n\nY\n\nZ\n\n",16,0,0,0)
cyberpi.display.show_label("{}\n\n{}\n\n{}".format(x_rotate,y_rotate,z_rotate),16,50,0,1)
Extraído de https://github.com/PerfecXX/Python-mBot2/blob/main/README.md licencia MIT
Sensor de sonidos
Medición de distancia
import cyberpi,mbuild
cyberpi.display.show_label("Range:", 16, 0, 0, index = 0)
while True:
range = mbuild.ultrasonic2.get(index = 1)
cyberpi.display.show_label(range, 16, 50, 0, index = 1)
Extraído de https://github.com/PerfecXX/Python-mBot2/blob/main/README.md licencia MIT
Podemos experimentar que es bastante preciso, más que en mBot1
Este código haría lo mismo pero alarmando que hay obstáculo o no
import cyberpi,mbuild
cyberpi.display.show_label("Range:", 16, 20, 0, index = 0)
while True:
range = mbuild.ultrasonic2.get(index = 1)
cyberpi.display.show_label(range, 16, 70, 0, index = 1)
if range < 10:
cyberpi.led.on(255,0,0,id="all")
cyberpi.display.show_label("Obstacle!", 16, 0, 20, index = 2)
else:
cyberpi.led.on(0,255,0,id="all")
cyberpi.display.show_label("No Obstacle", 16, 0, 20, index = 2)
Extraído de https://github.com/PerfecXX/Python-mBot2/blob/main/README.md licencia MIT
Evita obstáculos
Basándonos en el código que hemos visto de https://github.com/PerfecXX/Python-mBot2/blob/main/example/mbuild/01-Ultrasonic%20Sensor2/02-Obstacle%20Detection.py le añadimos las instrucciones de
- Si hay obstáculo que gire
- Si no hay obstáculo que tire p'alante
Previamente una rutina de no empezar si no se aprieta el botón A
import cyberpi,mbuild, mbot2
cyberpi.display.show_label("PULSA A PARA COMENZAR",16,0,20,1)
while not cyberpi.controller.is_press('a'):
pass
while True:
range = mbuild.ultrasonic2.get(index = 1)
cyberpi.display.show_label(range, 16, 70, 0, index = 1)
if range < 40:
cyberpi.led.on(255,0,0,id="all")
cyberpi.display.show_label("Obstacle!", 16, 0, 20, index = 2)
cyberpi.display.show_label("Girando un segundo",12,0,60,2)
mbot2.turn_left(60,1)
else:
cyberpi.led.on(0,255,0,id="all")
cyberpi.display.show_label("No Obstacle", 16, 0, 20, index = 2)
mbot2.drive_power(70, -70)
Hace un poco el "caballito"", a lo mejor habría que quitarle un poco la potencia en mbot2.drive_power(70, -70) pero mola 😁 :
Sensor de líneas
Probando la detección de líneas.
import cyberpi,mbuild
cyberpi.display.show_label("RGB PROBE STATE\nL2:\nL1:\nR1:\nR2:\n", 16, 0, 0, index = 0)
while True:
l2_line_state = mbuild.quad_rgb_sensor.is_line("L2",1)
l1_line_state = mbuild.quad_rgb_sensor.is_line("L1",1)
r1_line_state = mbuild.quad_rgb_sensor.is_line("R1",1)
r2_line_state = mbuild.quad_rgb_sensor.is_line("R2",1)
cyberpi.display.show_label(l2_line_state, 16, 30, 18, index = 1)
cyberpi.display.show_label(l1_line_state, 16, 30, 36, index = 2)
cyberpi.display.show_label(r1_line_state, 16, 30, 54, index = 3)
cyberpi.display.show_label(r2_line_state, 16, 30, 72, index = 4)
Extraído de https://github.com/PerfecXX/Python-mBot2/blob/main/README.md licencia MIT
Como puedes ver va detectando las líneas en los 4 sensores que tiene :
Más probatinas...
En https://github.com/PerfecXX/Python-mBot2/tree/main/example/mbuild/02-Quad%20RGB%20Sensor puedes descargarte más scripts que visualizan como el sensor puede detectar el color y el brillo. Nosotros aquí sólo te hemos enseñado el último el de detectar la línea.
Sigue líneas
En este caso sólo vamos a utilizar de los 4 sensores quad que tiene los 2 de en medio con la instrucción
mbuild.quad_rgb_sensor.get_line_sta("middle", 1)
El valor que devuelve esta instrucción puede ser :
- 0 o en binario 00 que quiere decir que los dos sensores detectan blanco, por lo tanto habría que volver hacia atrás para recuperar la línea
- 1 o en binario 01 que significa que el sensor de la derecha detecta línea pero el de la izquierda no, por lo tanto hay que girar a la derecha
- 2 o en binario 10 que significa que el sensor de la izquierda detecta línea pero el de la derecha no, por lo tanto hay que girar a la izquierda
- 3 o en binario 11 que quiere decir que los dos sensores detectan línea, por lo tanto todo bien, recto
El código es
import event, time, cyberpi, mbuild, mbot2
cyberpi.display.show_label("PULSA A PARA COMENZAR",16,0,20,1)
while not cyberpi.controller.is_press('a'):
pass
while True:
if mbuild.quad_rgb_sensor.get_line_sta("middle", 1) == 0b00:
mbot2.backward(50)
if mbuild.quad_rgb_sensor.get_line_sta("middle", 1) == 0b11:
mbot2.forward(50)
if mbuild.quad_rgb_sensor.get_line_sta("middle", 1) == 0b01:
mbot2.turn_right(50)
if mbuild.quad_rgb_sensor.get_line_sta("middle", 1) == 0b10:
mbot2.turn_left(50)
Fuente Javier Quintana
El resultado es
Módulo 6 Cyberpi, mBot e IA
Gracias a su micrófono, altavoz y conectividad Wi-Fi, el docente puede diseñar actividades innovadoras que van más allá de la robótica clásica, introduciendo de forma sencilla conceptos de Inteligencia Artificial (IA), reconocimiento de voz y aprendizaje automático (Machine Learning)
Cómo aprenden la máquinas
Te proponemos una lectura sobre cómo aprenden la máquinas que no no es evaluable, pero que si creemos que deberías conocer en caso de que no hayas hecho la formación sobre IA. Este texto está extraído del curso " IA en el Diseño Curricular" del Itinerario de IA que se oferta en Aularagon
Aprender: una palabra común para procesos muy distintos
Hablar de aprendizaje parece, a primera vista, algo sencillo. Aprendemos desde que nacemos: a hablar, a caminar, a resolver problemas, a convivir con otros. En el aula, aprender significa comprender un contenido, practicarlo, equivocarse, corregir y, poco a poco, hacerlo propio. Cuando trasladamos esta palabra al ámbito de la Inteligencia Artificial, el término es el mismo, pero el proceso es muy distinto.
Cuando decimos que una máquina “aprende”, no lo hace porque entienda lo que está haciendo ni porque tenga una intención de mejorar. Aprende porque ajusta su comportamiento a partir de ejemplos, del mismo modo que un alumno mejora cuando recibe práctica y retroalimentación, aunque en el caso de la máquina todo ocurre a nivel numérico y estadístico. La IA no trabaja con ideas, trabaja con datos; no interpreta significados, detecta patrones.
Un ejemplo sencillo ayuda a aclararlo. Si un alumno aprende a reconocer tipos de texto leyendo muchos ejemplos y recibiendo correcciones del profesor, la máquina aprende de forma parecida: analiza miles de textos, compara sus predicciones con el resultado esperado y va ajustando sus respuestas. La diferencia es que el alumno comprende por qué algo es un texto narrativo o argumentativo, mientras que la máquina solo aprende qué combinaciones de palabras suelen aparecer en cada caso.
A partir de esta idea general, no todas las máquinas aprenden del mismo modo. Algunas lo hacen con ejemplos corregidos, otras explorando datos sin respuestas previas y otras aprendiendo a base de ensayo y error, según las consecuencias de sus acciones. Curiosamente, estas formas de aprendizaje tienen muchos paralelismos con la educación humana: aprendizaje guiado, aprendizaje por descubrimiento y aprendizaje por experiencia.
Comprender cómo aprenden las máquinas no solo nos permite usar mejor la Inteligencia Artificial, sino que también nos invita a reflexionar sobre cómo enseñamos y cómo aprenden nuestros alumnos y alumnas. Con esta base, podemos ahora describir los principales tipos de aprendizaje que utilizan los sistemas de IA y entender en qué contextos se aplica cada uno.
Tipos de aprendizaje
Cuando hablamos de aprendizaje en Inteligencia Artificial conviene detenerse un momento y ajustar expectativas, especialmente en el ámbito educativo. Las máquinas no aprenden como aprendemos las personas. No sienten curiosidad, no tienen intención de mejorar ni conciencia de lo que hacen. Y, sin embargo, aprenden.
En IA, aprender significa algo muy concreto: ajustar un modelo matemático a partir de datos para que, con el tiempo, cometa menos errores en una tarea concreta. No hay comprensión del contenido, sino detección de regularidades numéricas. Donde una persona entiende un concepto, una máquina identifica patrones estadísticos. Esta diferencia es esencial para comprender tanto el potencial como los límites de la IA en educación.
El aprendizaje automático como núcleo de la IA moderna
El corazón de la Inteligencia Artificial actual es el aprendizaje automático o Machine Learning (ML). A diferencia de la programación clásica —en la que el ser humano escribe reglas explícitas—, en el aprendizaje automático no se le indica a la máquina cómo resolver el problema, sino que se le muestran ejemplos para que descubra por sí misma qué funciona mejor.
Un paralelismo muy útil para el profesorado es el siguiente: programar un sistema tradicional se parece a dar una receta paso a paso; entrenar un sistema de IA se parece más a poner muchos ejemplos corregidos y dejar que el sistema extraiga conclusiones. El resultado suele ser más flexible y potente, aunque también más difícil de explicar.
A partir de esta idea general, podemos distinguir varios tipos de aprendizaje, según cómo se presentan los datos y qué tipo de información recibe el sistema durante su entrenamiento.
Aprendizaje supervisado: aprender con corrección
El aprendizaje supervisado es probablemente el tipo de aprendizaje automático que resulta más fácil de entender para un profesor, porque su lógica se parece bastante a la forma tradicional en que enseñamos en el aula. En este enfoque, el sistema aprende a partir de ejemplos en los que ya conocemos la respuesta correcta. Dicho de otra manera, el modelo recibe datos de entrada junto con la solución esperada, y a partir de muchos ejemplos aprende la relación entre ambos para poder hacer predicciones sobre casos nuevos.
Podemos imaginarlo como un proceso muy parecido al de aprender con ejercicios resueltos o corregidos. El sistema analiza muchos ejemplos y, cuando comete un error, ajusta sus parámetros internos para mejorar la próxima vez. Con el tiempo, ese proceso le permite detectar patrones en los datos y aplicar lo aprendido a situaciones que no había visto antes. En términos técnicos, el objetivo es que el modelo aprenda la relación entre unas variables de entrada y una salida conocida, de manera que pueda predecir esa salida en datos nuevos.
Dentro del aprendizaje supervisado suelen distinguirse dos grandes tipos de tareas. La primera es la clasificación, que consiste en asignar una categoría a un elemento. Por ejemplo, decidir si un correo es spam o no, o clasificar una imagen como perro o gato. La segunda es la regresión, que se utiliza cuando el objetivo es predecir un valor numérico continuo, como estimar la temperatura, el precio de una vivienda o las ventas futuras de un producto.
Desde el punto de vista educativo, este tipo de aprendizaje tiene aplicaciones cada vez más interesantes. En investigación educativa se utilizan algoritmos de aprendizaje supervisado para analizar datos académicos y predecir el rendimiento de los estudiantes, lo que permite detectar con antelación posibles dificultades o riesgo de abandono escolar. También se emplea en sistemas de evaluación automática, en plataformas de aprendizaje adaptativo o en herramientas que analizan grandes conjuntos de datos educativos para comprender mejor cómo progresa el alumnado.
La principal ventaja del aprendizaje supervisado es su precisión y capacidad predictiva, especialmente cuando se dispone de buenos datos. Sin embargo, su mayor debilidad es precisamente esa dependencia de los datos. El modelo solo puede aprender a partir de los ejemplos que recibe. Si los datos están mal etiquetados, contienen errores o reflejan sesgos, el sistema aprenderá esos mismos problemas y los reproducirá en sus predicciones.
Para el profesorado de educación secundaria, comprender esta idea es especialmente útil porque permite explicar al alumnado uno de los principios fundamentales de la inteligencia artificial actual: las máquinas no aprenden por comprensión, sino por comparación de ejemplos. En cierto sentido, el aprendizaje supervisado se parece mucho a un estudiante que practica con muchos ejercicios resueltos hasta que empieza a reconocer patrones y a resolver problemas nuevos por sí mismo.
Aprendizaje no supervisado: descubrir sin que nadie explique
El aprendizaje no supervisado es un tipo de aprendizaje automático que funciona de una forma muy distinta al aprendizaje supervisado. En este caso, el sistema no recibe ejemplos con la respuesta correcta ni etiquetas que indiquen qué debe aprender. En lugar de eso, el algoritmo analiza grandes cantidades de datos sin clasificar e intenta descubrir por sí mismo patrones, estructuras o relaciones internas dentro de esa información.
Dicho de una manera sencilla, la máquina observa los datos y busca similitudes entre ellos. Si encuentra elementos que se parecen entre sí, los agrupa automáticamente en conjuntos o clusters. Este proceso se conoce como agrupamiento o clustering y es una de las técnicas más comunes del aprendizaje no supervisado. La idea es que los datos que pertenecen a un mismo grupo compartan características similares, mientras que los que pertenecen a grupos distintos sean más diferentes entre sí.
Para un profesor de educación secundaria, puede resultar útil imaginar este proceso como cuando un docente observa una clase durante varias semanas y empieza a identificar patrones en el comportamiento o en la forma de trabajar de los estudiantes. Sin necesidad de que nadie lo indique explícitamente, puede detectar grupos de alumnado que tienen hábitos de estudio similares, ritmos de aprendizaje parecidos o formas de participación semejantes. El aprendizaje no supervisado funciona de manera parecida: el sistema observa los datos y descubre regularidades que no estaban previamente definidas.
En el ámbito educativo, este tipo de aprendizaje no suele utilizarse tanto para calificar o evaluar directamente al alumnado, sino para comprender mejor fenómenos complejos dentro de los datos educativos. Por ejemplo, puede servir para identificar perfiles de estudiantes con comportamientos similares en una plataforma digital de aprendizaje, detectar patrones de uso de recursos educativos o descubrir relaciones entre variables académicas que no se habían considerado previamente.
Sin embargo, hay una idea fundamental que conviene subrayar desde una perspectiva pedagógica. Aunque el algoritmo pueda encontrar agrupaciones o patrones en los datos, no entiende el significado educativo de esos resultados. El sistema puede detectar que ciertos estudiantes presentan comportamientos parecidos, pero no puede interpretar por qué ocurre eso ni qué implicaciones pedagógicas tiene. Esa interpretación siempre corresponde al profesorado.
Por esta razón, el aprendizaje no supervisado no sustituye el papel del docente. Más bien funciona como una herramienta que puede ofrecer nuevas perspectivas sobre grandes volúmenes de datos. En lugar de reemplazar la mirada pedagógica del profesor, amplía su capacidad para analizar información compleja y detectar patrones que de otro modo podrían pasar desapercibidos. En última instancia, la máquina puede identificar estructuras en los datos, pero el sentido educativo de esas estructuras lo aporta siempre la interpretación humana.
Aprendizaje por refuerzo
El aprendizaje por refuerzo es un tipo de aprendizaje automático que se basa en una idea muy sencilla y bastante intuitiva: aprender actuando y observando las consecuencias. En lugar de recibir ejemplos con la respuesta correcta —como ocurre en el aprendizaje supervisado— el sistema interactúa con un entorno, toma decisiones y recibe una señal que le indica si esa acción ha sido buena o mala. Esa señal suele llamarse recompensa o penalización, y el objetivo del sistema es aprender a actuar de manera que, con el tiempo, consiga la mayor recompensa posible.
Podemos imaginar este proceso de forma parecida a cómo aprenden muchas personas o animales: probando cosas, observando el resultado y ajustando su comportamiento. Si una acción produce un resultado positivo, el sistema tenderá a repetirla; si produce un resultado negativo, intentará evitarla en el futuro. Con el tiempo, mediante miles o millones de intentos, el modelo aprende qué decisiones son más adecuadas en cada situación.
En este tipo de aprendizaje suelen aparecer tres elementos básicos. Por un lado está el agente, que es el sistema que toma decisiones. Luego está el entorno, que es el mundo o situación donde actúa el agente. Y finalmente está la recompensa, que es la señal que indica si la acción tomada ha sido favorable o no. El agente va probando distintas acciones y aprende gradualmente qué estrategias le permiten maximizar la recompensa a largo plazo.
Uno de los ejemplos más famosos de aprendizaje por refuerzo es AlphaGo, el sistema desarrollado por DeepMind para jugar al juego de mesa Go. Este programa comenzó aprendiendo a partir de partidas humanas, pero después siguió mejorando jugando millones de partidas contra sí mismo. En ese proceso fue ajustando su comportamiento en función de si ganaba o perdía, lo que le permitió descubrir estrategias nuevas que incluso sorprendieron a jugadores profesionales.
Este ejemplo es interesante porque muestra que el aprendizaje por refuerzo no se limita a imitar comportamientos existentes. Cuando el sistema tiene libertad para explorar muchas posibilidades, puede encontrar soluciones eficaces que los humanos no habían considerado.
En el ámbito educativo, este enfoque resulta especialmente interesante cuando se trabaja con entornos interactivos o simulaciones. Por ejemplo, en simuladores de aprendizaje, videojuegos educativos o laboratorios virtuales, un agente puede aprender progresivamente cómo actuar dentro del entorno. También se investiga su uso en sistemas educativos inteligentes que aprenden cuándo intervenir para ayudar al estudiante y cuándo dejar que explore por sí mismo.
En definitiva, el aprendizaje por refuerzo introduce una idea muy poderosa dentro del Machine Learning: en lugar de aprender solo a partir de ejemplos, los sistemas pueden aprender actuando, experimentando y ajustando su comportamiento en función de las consecuencias. Esto abre la puerta a aplicaciones muy interesantes en ámbitos como la robótica, los videojuegos, la optimización de procesos y también en entornos educativos basados en simulación y experimentación.
El resultado: los modelos
Cuando entrenamos un sistema de Machine Learning, el objetivo final es construir un modelo. Ese modelo es, en esencia, una función matemática o estadística que ha aprendido a relacionar ciertos datos de entrada con un resultado. Una vez entrenado, ese modelo puede utilizar lo aprendido para analizar datos nuevos y producir una respuesta. Esa respuesta suele tomar dos formas principales: clasificar algo en una categoría o predecir un valor.
En el primer caso hablamos de modelos de clasificación. Su objetivo es asignar un elemento a una categoría concreta. El modelo analiza las características de un dato y decide a qué grupo pertenece. Este tipo de modelos se utiliza, por ejemplo, para determinar si un correo es spam o no, para identificar si una imagen contiene un gato o un perro, o para clasificar opiniones en positivas o negativas. En este tipo de problemas el resultado no es un número continuo, sino una etiqueta o clase previamente definida.
En el segundo caso hablamos de modelos de predicción o regresión. Aquí el objetivo no es asignar una categoría, sino estimar un valor numérico. El modelo intenta aprender la relación entre distintas variables y producir una predicción. Por ejemplo, puede estimar el precio de una vivienda a partir de su tamaño y ubicación, predecir la temperatura del día siguiente o calcular cuántos productos se venderán la próxima semana. En estos casos el resultado es una cantidad continua, no una categoría.
Ambos tipos de modelos se entrenan normalmente con datos históricos. El sistema analiza muchos ejemplos del pasado, detecta patrones y aprende relaciones entre variables. Una vez finalizado el entrenamiento, ese conocimiento se utiliza para analizar situaciones nuevas. Por ejemplo, si un modelo ha aprendido cómo se comportan ciertos datos financieros, podrá estimar tendencias futuras; si ha aprendido a distinguir imágenes de distintos objetos, podrá identificar nuevas imágenes que nunca había visto.
En la práctica existen muchos algoritmos diferentes que permiten construir modelos de Machine Learning, como los árboles de decisión, las regresiones estadísticas o los métodos de vecinos más cercanos. Sin embargo, en las últimas décadas ha ganado un protagonismo especial un tipo concreto de modelos: las redes neuronales profundas, que constituyen el núcleo del Deep Learning.

Esquema de funcionamiento de una red neuronal profunda, formada por muchas capas que procesan cada aspecto de la imagen o de la información con la que se entrena
El Deep Learning es un subcampo del Machine Learning que utiliza redes neuronales con muchas capas capaces de aprender representaciones cada vez más complejas de los datos. Estas redes permiten detectar patrones muy sofisticados en información difícil de describir mediante reglas simples, como imágenes, sonido, vídeo o lenguaje natural. Gracias a este enfoque, los sistemas pueden aprender directamente a partir de grandes volúmenes de datos sin necesidad de programar manualmente las características que deben analizar.
Este desarrollo de redes profundas ha sido uno de los factores clave que ha impulsado los avances recientes de la inteligencia artificial. Dentro de este contexto apareció una arquitectura especialmente influyente: los transformers, introducidos en 2017 en el artículo científico Attention Is All You Need. Esta arquitectura se basa en mecanismos de atención que permiten al modelo analizar relaciones entre distintas partes de un texto o de una secuencia de datos de manera muy eficiente.
Los transformers han supuesto un cambio importante porque permiten entrenar modelos mucho más grandes y manejar contextos más amplios que las arquitecturas anteriores. Gracias a ello se han convertido en la base tecnológica de muchos sistemas actuales de inteligencia artificial, especialmente de los modelos de lenguaje de gran tamaño (LLM) y de gran parte de las aplicaciones de IA generativa que hoy conocemos, como los asistentes conversacionales, los generadores de texto o los sistemas que crean imágenes y otros contenidos.
En definitiva, aunque el Machine Learning incluye muchos algoritmos diferentes, el desarrollo del Deep Learning y de las arquitecturas basadas en transformers ha sido el elemento que ha permitido dar el salto hacia los sistemas actuales capaces de generar texto, analizar lenguaje natural o crear contenido digital de forma cada vez más sofisticada.
Desde una perspectiva educativa, lo interesante es entender que estos modelos no “piensan” ni comprenden los fenómenos que analizan. Lo que hacen es aprender relaciones estadísticas entre datos. Si esas relaciones son suficientemente claras y los datos son de calidad, el modelo puede llegar a producir resultados muy útiles. Pero su funcionamiento sigue siendo, en última instancia, el de un sistema que aprende patrones para clasificar o predecir, no el de una inteligencia que entiende realmente el mundo.
Cómo aprenden las máquinas y los humanos: el paralelismo educativo
Llegados a este punto, resulta casi inevitable comparar el aprendizaje de las máquinas con el aprendizaje humano. Aunque los mecanismos sean muy diferentes, el paralelismo resulta muy útil desde el punto de vista educativo, porque permite explicar la inteligencia artificial con conceptos que el profesorado conoce bien.
Gran parte del aprendizaje humano se parece al aprendizaje supervisado. En el aula, el alumnado aprende a partir de explicaciones, ejemplos y correcciones del profesorado. Cuando un estudiante resuelve un ejercicio y se equivoca, ese error no es simplemente un fallo, sino una señal que permite ajustar el razonamiento y mejorar en el siguiente intento. Algo muy parecido ocurre en muchos sistemas de aprendizaje automático: el modelo recibe ejemplos con la respuesta correcta, compara su predicción con el resultado esperado y ajusta sus parámetros internos para mejorar.
Pero las personas también aprendemos de otras formas. A menudo descubrimos patrones sin que nadie nos los explique directamente. Observamos cómo funcionan las cosas, detectamos regularidades y construimos significado a partir de la experiencia. Este tipo de aprendizaje recuerda al aprendizaje no supervisado, en el que los algoritmos analizan datos sin respuestas previas y buscan agrupaciones, estructuras o relaciones internas.
Existe además un tipo de aprendizaje muy habitual en educación que podríamos llamar semisupervisado. Ocurre cuando el alumnado recibe algunas orientaciones iniciales, pero tiene que investigar, experimentar o resolver problemas abiertos. Es lo que sucede en muchos proyectos, investigaciones o situaciones de aprendizaje donde no hay una única solución correcta. Curiosamente, este enfoque también está ganando importancia en inteligencia artificial, donde los sistemas combinan pequeñas cantidades de datos etiquetados con grandes volúmenes de datos sin etiquetar.
Por último, también aprendemos mediante refuerzo. Las consecuencias de nuestras acciones influyen en cómo actuamos en el futuro. El éxito, el reconocimiento, la frustración o la satisfacción son señales que guían nuestro comportamiento. En el aprendizaje por refuerzo de las máquinas ocurre algo parecido: los algoritmos ajustan sus decisiones en función de recompensas o penalizaciones. Sin embargo, existe una diferencia fundamental. En las personas, esas recompensas están cargadas de significado emocional, social y cultural.
En el fondo, las máquinas y las personas aprenden de maneras que, en apariencia, pueden parecer similares, pero que tienen una diferencia esencial. Las máquinas optimizan funciones matemáticas y buscan patrones estadísticos en los datos. Las personas, en cambio, aprendemos construyendo sentido: interpretamos, relacionamos ideas, damos significado a lo que aprendemos y lo conectamos con nuestra experiencia.
Comprender cómo aprenden las máquinas es importante para poder utilizarlas correctamente, pero también es necesario entender sus límites. Uno de los más conocidos es el problema del sesgo. Los modelos de inteligencia artificial aprenden a partir de datos humanos y, por tanto, pueden reproducir errores, prejuicios o desigualdades presentes en esos datos. Si los datos de entrenamiento están sesgados, el sistema aprenderá esos mismos sesgos y los reproducirá en sus decisiones.
Otro límite importante es la opacidad. Muchos modelos avanzados, especialmente los basados en deep learning, funcionan como una especie de “caja negra”. Esto significa que pueden producir resultados muy precisos, pero no siempre es fácil comprender exactamente cómo han llegado a esa conclusión.
Existe además un riesgo más sutil: la apariencia de inteligencia. Los sistemas de IA pueden expresarse con gran seguridad incluso cuando se equivocan, lo que puede generar una falsa sensación de fiabilidad. Entender que estos sistemas no comprenden el mundo, sino que predicen patrones, es una de las claves para desarrollar pensamiento crítico en el alumnado.
Por eso, en el contexto educativo, la inteligencia artificial debe entenderse siempre como una herramienta, no como un sustituto del pensamiento humano ni del criterio pedagógico. Puede ayudar a analizar información, generar materiales o personalizar el aprendizaje, pero la interpretación de los resultados, la transmisión de valores y la construcción de significado siguen siendo tareas profundamente humanas.
En última instancia, podría resumirse con una idea sencilla para el aula:
Las máquinas pueden aprender patrones.
Las personas, además de aprender, comprenden por qué y para qué aprenden.
Y precisamente ahí es donde el papel del profesorado sigue siendo insustituible.
Comprender cómo aprenden las máquinas es imprescindible para usarlas bien, pero no es suficiente. Igual de importante es entender sus límites.
El primero es el sesgo. La IA aprende de datos humanos y, por tanto, hereda errores, prejuicios y desigualdades presentes en esos datos. Un sistema entrenado con información parcial o injusta reproducirá esas mismas distorsiones, a menudo de forma invisible.
El segundo límite es la opacidad. Muchos modelos, especialmente los basados en Deep Learning, funcionan como una “caja negra”: ofrecen resultados muy precisos, pero difíciles de explicar. En educación, esto obliga a extremar la prudencia cuando se utilizan para evaluar, clasificar o tomar decisiones relevantes.
El tercero es la apariencia de inteligencia. Los sistemas de IA pueden expresarse con seguridad incluso cuando se equivocan, lo que puede generar una falsa sensación de fiabilidad. Comprender que la IA no entiende, sino que predice, es clave para desarrollar pensamiento crítico en el alumnado.
Imagen autoexplicativa que demuestra el estado actual de las cosas. Humanos consumiendo información y máquinas aprendiendo
Las máquinas aprenden con datos; las personas aprenden con sentido, valores y acompañamiento.
Traductor
Primero sin el Cyberpi
En este programa, además de usar la extensión Servicios Cognitivos, instalaremos las extensiones :
- Text to Speech - Texto a voz
- Translate - Traductor
El programa es muy sencillo, lo tienes aquí : https://planet.mblock.cc/project/3733312
Ahora con el 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 :
Y para traducir
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
Reconocimiento de voz
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
Módulo 7 Actividad obligatoria
Actividad final obligatoria
El contenido de este curso va a ser la base sobre la que se diseña la actividad final obligatoria que vas a tener que entregar para superar satisfactoriamente esta formación, por lo que es muy importante que le prestes especial atención.
La robótica educativa no debe entenderse como una actividad aislada. Lo ideal es que incluyas el uso de Cyberpi y mBot dentro de tu programación de aula habitual, integrada en unidades didácticas o proyectos que ya tengas diseñados (o estés diseñando). Esto lo haremos a través de la creación de una Situación de Aprendizaje (SdA) que ponga en relación directa los contenidos de tu área con el uso pedagógico del robot .
En el diseño de tu Situación de Aprendizaje hay una serie de elementos obligatorios que no pueden faltar, garantizando que la propuesta sea una integración real de la robótica en el aula, evitando su uso como un recurso aislado o anecdótico. Los elementos que debes desarrollar son los siguientes:
1.- Contexto.
Aquí tienes que especificar la realidad organizativa de tu propuesta:
- Etapa y nivel al que va dirigida.
- Agrupamientos que prevés dentro del aula.
- Organización horaria y temporalización (número de sesiones).
- Recursos necesarios: cantidad de equipos, dispositivos de programación (ordenadores o tablets), tipo de tapetes, accesorios físicos, tarjetas de comandos o imágenes de apoyo.
2.- Objetivos y Anclaje Curricular (LOMLOE Aragón).
En esta parte deberás especificar qué metas persigues, conectándolas debidamente con el currículo oficial de la Comunidad Autónoma de Aragón:
- Área o áreas que se trabajan de forma interdisciplinar.
- Competencias específicas de dichas áreas.
- Criterios de evaluación vinculados.
- Saberes básicos implicados (prestando especial atención al sentido matemático, científico y al pensamiento computacional).
- Relación con las Competencias Clave (especialmente la Competencia Digital CD5) y los Objetivos de Etapa.
3.- Secuencia Didáctica de las Sesiones.
Debes estructurar el desarrollo paso a paso de las sesiones planificadas, asegurando que se incluyan de forma explícita los siguientes elementos técnicos y pedagógicos:
- Si se va a utilizar: Foto del tapete, esquema o diseño del lienzo sobre el que se moverá el robot
- Retos graduados: Planteamiento de desafíos con niveles de dificultad progresiva (básico, medio y avanzado) acompañados de su solución conceptual o captura del código de bloques.
- Materiales y accesorios adicionales si procede.
- Adaptaciones DUA / Inclusión: Medidas para la atención a la diversidad y accesibilidad cognitiva o motórica, teniendo en cuenta la realidad de tu aula.
4.- Plan Logístico y Gestión del Aula.
Para asegurar el éxito de la sesión de robótica sin generar caos, debes definir:
- Organización del espacio y distribución de los equipos.
- Roles cooperativos asignados al alumnado, si los hay (encargado de hardware, programador de software, estratega del tapete, etc.).
- Gestión de tiempos, turnos de uso y normas de cuidado del material.
5.- Evaluación y Evidencias.
- Indicadores de evaluación específicos para la actividad.
- Instrumento de evaluación que vas a emplear (una lista de cotejo directa o una rúbrica simple).
- Evidencias de aprendizaje que vas a recoger durante el proceso (cuaderno de equipo, fotografías del código, vídeos del robot, etc.).


