Cyberpi y mBot2

Cyberpi es una placa basada en ESP32 con sensores, salidas, conectividad wifi y Bluetooth. Con esta placa es ya un robot independiente.
mBot2 es un robot que necesita Cyberpi y amplia sus posibilidades a lo mecánico.

Introducción

Introducción

Objetivos y contenidos

CONTENIDOS
OBJETIVOS
Introducción

Pensamiento computacional

¿Dónde se encaja este robot? ¿Se puede comparar este robot con otros robots de otros cursos que hacemos desde CATEDU?

Esta es la hoja de ruta que proponemos, no se tiene que tomar al pie de la letra, pero intenta ayudar al profesorado que tenga una visión global de tanta oferta robótica:

Como se puede ver CYBERPI + MBOT2 tiene la ventaja de ser un robot de suelo con muchas posibilidades y para muchas etapas.

Guía orientativa

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

Introducción

Muro

https://padlet.com/CATEDU/mbot2

Hecho con Padlet
Introducción

mBlock5

mBlock es un programa especializado en el manejo de los robots de Makeblock (ver cursos de mBot en Aularagon), pero permiten muchas arquitecturas de placas pues los mismos robots de Makeblock estan basados en placas de hardware libre Arduino, ESP32...

Hay dos versiones, online y offline, las dos son buenas, no obstante
- Si tienes Windows o Mac preferimos la versión offline para no saturar la red en los centros, rapidez y comodidad. 
- Si utilizas Linux o Chromebook tienes que usar la versión online obligatoriamente pues no hay versión instalable.
Tanto una opción como la otra, permite tener los proyectos en la nube de Makeblock, compartir, embeberlos, etc...

Versión online                                                                                                

Para la versión web primero hay que instalar mLink driver nos vamos a https://mblock.cc/pages/downloads y abajo nos encontramos mLink para descargar, descarga el mLink correspondiente a tu sistema operativo : 

mlink-1.png
Licencia CC-BY -SA https://docs.arduino.cc/tutorials/alvik/getting-started-mblock/

Lo instalamos, y entonces pedirá instalar los drivers que son pequeños programas que comunican el PC con el harware del robot

mlink-drivers.png
Licencia CC-BY -SA https://docs.arduino.cc/tutorials/alvik/getting-started-mblock/

Si utilizas Chromebook lee la siguiente guía para conectar el robot

Una vez instalado ya podemos entrar en la web https://ide.mblock.cc/ para programar en bloques nuestro robot

Nota: La página https://ide.mblock.cc/  no suele estar bien situada en los buscadores si ponemos mBlock, la página que suele salir es esta https://www.mblock.cc/en/ y nos da dos opciones, trabajar con bloque, o con Python, elegimos bloques2024-05-16 23_50_10-mBlock - One-Stop Coding Platform for Teaching and Learning.png
Si has entrado sin querer en la URL  https://ide.makeblock.com/ no permite el logueo en Europa
En resumen, la URL correcta es  https://ide.mblock.cc/  

En este editor tenemos que loguearnos podemos crear un nuevo usuario, utilizando una cuenta de Google/Apple o registrarnos con un correo electrónico

2024-05-16 23_53_10-mBlock Block-Based IDE- Coding for Beginners.png

Versión offline Windows o Mac                                                                        

Vamos a https://mblock.cc/pages/downloads y descargamos la versión correcta a nuestro sistema operativo.

download-version.png
Licencia CC-BY -SA https://docs.arduino.cc/tutorials/alvik/getting-started-mblock/

En windows hacemos doble click en el archivo ejecutable descargado

installing-download.png
Licencia CC-BY -SA https://docs.arduino.cc/tutorials/alvik/getting-started-mblock/

Lo instalamos, y entonces pedirá instalar los drivers que son pequeños programas que comunican el PC con el hardware del robot

install-drivers.png
Licencia CC-BY -SA https://docs.arduino.cc/tutorials/alvik/getting-started-mblock/

Algunas veces la ventana de driver de la figura anterior esta escondida en el fondo, hay que minimizar ventanas para acceder a ella.

En MAC el archivo será un fichero mount con la extensión .dmg, por lo tanto hay que arrastar el icono a la carpeta de aplicaciones

install-mac.png
Licencia CC-BY -SA https://docs.arduino.cc/tutorials/alvik/getting-started-mblock/

Introducción

En VIVO o EN CARGA ¿Eso que es?

DOS FORMAS DE PROGRAMAR EN MBLOCK :

OPCIÓN
 Programación en vivo

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

OPCIÓN Programación cargar a la placa

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

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

Cyberpi

Cyberpi

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

2024-05-16 20_42_23-cyberpi-guia (1) - PDF-XChange Viewer.png

2024-05-16 21_03_57-cyberpi-guia (1) - PDF-XChange Viewer.png
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

2024-05-16 21_32_56-cyberpi-guia (1) - PDF-XChange Viewer.png
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.

2024-05-16 21_33_23-cyberpi-guia (1) - PDF-XChange Viewer.png
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.

2024-05-16 22_27_07-cyberpi-guia (1) - PDF-XChange Viewer.png

2024-05-16 22_27_38-cyberpi-guia (1) - PDF-XChange Viewer.png
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, ....

Cyberpi

Mi primer programa "Hola mundo"

Conectamos Cyberpi con el PC utilizando un cable USB tipo c

2024-05-16 22_29_10-cyberpi-guia (1) - PDF-XChange Viewer.png
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

2024-05-16 22_29_43-cyberpi-guia (1) - PDF-XChange Viewer.png

Una vez cargado el dispositivo CyberPi recomendamos entrar en la conexión directa (3) y pulsamos Conectar (4)

2024-05-16 23_31_11-mBlock Block-Based IDE- Coding for Beginners.png

Al dar a Conexión directa nos da dos opciones, Bluetooth y Serie, elegimos serie

2024-05-17 13_00_51-Window.jpg

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.
2024-05-17 13_04_08-Window.jpg

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

2024-05-17 13_02_27-Window.jpg

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.
2024-05-17 13_10_07-Window.jpg

Al conectar, nos aparecen instrucciones específicas de Cyberpi como instrucciones generales

2024-05-16 23_41_08-mBlock Block-Based IDE- Coding for Beginners.png

Podemos empezar con nuestro primer programa

2024-05-16 23_45_30-mBlock Block-Based IDE- Coding for Beginners.png

Le damos a Cargar , (luego aclaramos el modo En vivo qué es) y se ejecuta el programa

2024-05-16 23_46_23-mBlock Block-Based IDE- Coding for Beginners.png

MODO VIVO ¿ESO QUÉ ES?

El modo vivo, permite interactuar con el PC, por ejemplo:

2024-05-17 13_41_35-Window.jpg
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

2024-05-16 23_47_54-mBlock Block-Based IDE- Coding for Beginners.png

               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

2024-07-16 12_18_07-mBlock v5.4.3.png

Recomendamos visitar las páginas 30 al 42

Cyberpi

Sonidos

Grabadora sencilla

La librería de Audio tenemos opciones interesantes

2024-05-17 13_58_00-Window.jpg

Podemos poner un programa sencillo

2024-05-17 14_00_55-Window.jpg
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

2024-05-17 14_02_51-Window.jpg

Grabadora más sofisticado

Si entramos en los programas de ejemplo, podemos elegir Magical Recorder

2024-05-17 14_50_17-Window.jpg

Y funciona como una grabadora de bolsillo:

Sirena

Si entramos en programas de ejemplo- Buzzer:

2024-05-17 14_43_55-Window.jpg

Toca una sirena:

2024-05-17 14_45_10-Window.jpg

Podemos jugar a reproducir notas

2024-05-17 14_41_11-Window.jpg

Teniendo en cuenta que sigue la notación inglesa. Equivalencia entre las notas anglosajonas, nota MIDI y frecuencias :

notes.gif

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 

2024-07-16 12_00_00-mBlock v5.4.3.png

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

2024-07-16 12_06_03-cyberpi-guia - PDF-XChange Viewer.png

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.

Cyberpi

LED

En el apartado de LED 2024-07-03 18_31_52-cyberpi-guia - PDF-XChange Viewer.pngpodemos realizar diferentes animaciones de la tira de Leds RGB que tiene Cyberpi, por ejemplo 

2024-07-03 18_43_52-mBlock v5.4.3.png

Otro ejemplo más animado sería

2024-07-03 18_48_39-mBlock v5.4.3.png

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

2024-07-03 19_06_39-mBlock v5.4.3.png

 

 

Cyberpi

Pantalla con textos

La pantalla OLED que incorpora Cyberpi nos permite muchas posibilidades. para ello entramos en 2024-07-03 19_11_18-cyberpi-guia - PDF-XChange Viewer.png

2024-07-03 19_22_45-mBlock v5.4.3.png

2024-07-03 19_22_19-WhatsApp.png

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 :

2024-07-03 19_29_54-mBlock v5.4.3.png

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:

2024-07-03 19_31_54-Introducción a Cyberpi.pdf.png

Los números no se borran, pero si hacemos este programa, se sobrescriben

2024-07-03 19_34_00-Introducción a Cyberpi.pdf.png

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:

2024-07-03 19_34_54-Introducción a Cyberpi.pdf.png

Las coordenadas X e Y :

2024-07-03 19_37_08-cyberpi-guia - PDF-XChange Viewer.png
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.

Cyberpi

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:

2024-07-03 19_49_54-Introducción a Cyberpi.pdf.png

Cambia el espaciado de 5 pixeles a 20 píxeles y notarás la diferencia. Aquí en este figura tienes un ejemplo

2024-07-09 22_39_39-cyberpi-guia - PDF-XChange Viewer.png
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.

2024-07-03 19_47_03-mBlock v5.4.3.png

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) 

2024-07-09 22_41_21-cyberpi-guia - PDF-XChange Viewer.png
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 :

2024-07-09 22_43_17-cyberpi-guia - PDF-XChange Viewer.png
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
2024-07-09 23_44_52-cyberpi-guia - PDF-XChange Viewer.png

Tenemos que hacer
2024-07-09 23_45_36-cyberpi-guia - PDF-XChange Viewer.png

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

2024-07-09 23_03_45-mBlock v5.4.3.png

Este ejemplo

2024-07-09 23_04_46-cyberpi-guia - PDF-XChange Viewer.png
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

2024-07-09 23_05_42-cyberpi-guia - PDF-XChange Viewer.png
Fuente:  Guia Cyberpi Robotix con permiso de la empresa.

Y más...

Podemos fijar los colores con estas dos instrucciones:

2024-07-10 00_06_03-mBlock v5.4.3.png

Podemos rotar la pantalla 

2024-07-10 00_06_32-mBlock v5.4.3.png

2024-07-10 00_08_24-cyberpi-guia - PDF-XChange Viewer.png
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 :

2024-07-10 00_07_12-mBlock v5.4.3.png

Funciones trigonométricas

2024-07-16 12_03_05-cyberpi-guia - PDF-XChange Viewer.png
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.

2024-07-16 12_03_32-cyberpi-guia - PDF-XChange Viewer.png
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.

2024-07-16 12_03_59-cyberpi-guia - PDF-XChange Viewer.png
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.

Cyberpi

Movimientos

Ahora vamos a ver los programas en 2024-07-12 14_01_28-mBlock v5.4.3.png

Sensibilidad

Este sencillo programa podemos controlar el sprite según los movimientos definidos en Cyberpi

2024-07-12 13_51_58-mBlock v5.4.3.png

Ejecuta el anterior programa EN VIVO pues hay que mover el sprite

En teoría estos son los movimientos :

2024-07-12 13_56_49-cyberpi-guia - PDF-XChange Viewer.png
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 :

2024-07-18 09_34_32-mbot2-actividades.pdf.png

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)

2024-07-12 14_08_04-mBlock v5.4.3.png

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.

2024-07-12 14_11_20-mBlock v5.4.3.png

O este otro

2024-07-12 14_17_02-mBlock v5.4.3.png

Detección de giros

2024-07-12 14_25_57-mBlock v5.4.3.png

El criterio de ángulos es ;

2024-07-12 14_27_25-cyberpi-guia - PDF-XChange Viewer.png
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:

2024-07-13 10_58_02-mBlock v5.4.3.png

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

2024-07-13 10_28_54-mBlock v5.4.3.png

Este es el resultado

Un ejercicio interesante: Contador de pasos

2024-07-16 11_52_26-cyberpi-guia - PDF-XChange Viewer.png

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

2024-07-16 11_54_22-cyberpi-guia - PDF-XChange Viewer.png

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 :

2024-07-16 11_54_59-cyberpi-guia - PDF-XChange Viewer.png

Cyberpi

Detección

Detección del Joystick y teclas A y B

Podemos hacer este mensaje en el Cybperpi

2024-07-13 23_02_49-mBlock v5.4.3.png

aunque parece largo, es corto si se hace duplicar el if principal

En el objeto panda hacemos el programa:

2024-07-13 23_04_02-mBlock v5.4.3.png

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"

2024-07-13 23_19_20-contador de personas manual - Buscar con Google.png

2024-07-13 23_14_57-mBlock v5.4.3.png
Y el resultado es :

¿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

2024-05-17 14_00_55-Window.jpg
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

2024-07-14 00_04_38-mBlock v5.4.3.png

Sensor luz

La detección de la luz, que ya lo vimos en gráficos

.

2024-07-03 19_47_03-mBlock v5.4.3.png

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

2024-07-14 00_10_27-cyberpi-guia - PDF-XChange Viewer.png

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

2024-07-14 07_40_54-mBlock v5.4.3.png

2024-07-14 07_39_30-Clipboard.png

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

2024-07-16 11_24_40-mBlock v5.4.3.png

Cyberpi

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 
2024-07-16 10_35_07-mBlock v5.4.3.png 

2024-07-15 23_36_45-mBlock v5.4.3.png

Pero tiene la desventaja de que no nos informa el estado. Este script es más elaborado

2024-07-15 23_42_27-mBlock v5.4.3.png

Conectarse a la Wifi método rápido

Otra manera es utilizar el programa mismo mBlock

2024-07-15 23_21_14-Documento1 - Microsoft Word.png

Nombre del equipo

Para identificar nuestro equipo, necesitamos saber su nombre para diferenciarlos de otros, tenemos en en bloque de detección

2024-07-14 08_17_40-mBlock v5.4.3.png

2024-07-14 08_18_21-WhatsApp.png

El nombre del equipo se puede ajustar aquí :

2024-07-14 08_20_24-mBlock v5.4.3.png

INSTRUCCIONES DE LAN

Una vez que estamos conectados, los diferentes CYBERPI que están dentro de una LAN pueden enviarse mensajes con estas instrucciones

2024-07-15 23_23_41-mBlock v5.4.3.png

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)  :

2024-07-15 23_32_12-mBlock v5.4.3.png

El resultado es 

... Y EN EL CASO DE QUE SÓLO TENGO UN CYBERPI ????                                                             
En el cyberpi

Instalamos la extensión BROADCAST

2024-07-18 11_50_37-mBlock v5.4.3.png

El código es parecido

2024-07-18 11_52_29-mBlock v5.4.3.png

Y lo subimos y dejamos conectado el cyberpi con el PC

2024-07-18 11_53_54-.png

En el Sprite (o sea el panda)

Instalamos la extensión broadcast (que se llama difusión) para las imágenes anidadas

2024-07-18 11_55_24-mBlock v5.4.3.png

Y creamos el siguiente programa para el sprite

2024-07-18 11_56_19-mBlock v5.4.3.png

RESULTADO

Cyberpi

¿Qué es IoT?

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

Las formas "desatendidas" son un avance en la sociedad pero también puede generar problemas muy serios a nivel mundial, ver el caso Mirai

Las cosas claras. ¿asíncrono o síncrono?

Hay muchas herramientas IoT

Cyberpi

IoT

En esta pestaña tenemos elementos que nos permiten usar Internet para enviar mensajes o recoger información :

2024-07-16 11_08_49-mBlock v5.4.3.png

Para utilizar muchos elementos de IoT es necesario utilizar los servidores de Makeblock por lo tanto hace falta estar logueados

2024-07-16 11_14_07-mBlock v5.4.3.png

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)  :

2024-07-16 11_12_34-mBlock v5.4.3.png

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:

2024-07-16 11_29_24-mBlock v5.4.3.png

2024-07-16 11_30_03-WhatsApp.png

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.

mBot2

mBot2

¿Qué es 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

2024-07-16 14_12_24-mbot2-actividades - PDF-XChange Viewer.png

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

2024-07-16 14_26_54-mbot2-actividades - PDF-XChange Viewer.png

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.

2024-07-16 14_29_03-mbot2-actividades - PDF-XChange Viewer.png
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 :

 

mBot2

Cómo usar mBot2 en mBlock

Podemos instalar diréctamente mBot2, lo interpreta como un chasis de Cyberpi

  1. Vamos a extensión luego vamos a buscarlo en extensión
  2. Buscamos mBot2 descargar
  3. Añadir

2025-04-07 14_02_01-mBlock v5.4.3.png

Se instarán estos conjuntos de instrucciones :

2024-07-16 14_20_35-mBlock v5.4.3.png


mBot2

Mis primeros pasos

Control remoto con el teclado

Vamos a realizar EN VIVO este programa

2025-04-07 13_53_09-mBlock v5.4.3.png

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:

2024-07-17 10_13_25-Capitulo 1 (mBot Demostración de movimiento).pdf.png

Luego interactuamos con el joystick y el movimiento:

2024-07-17 10_14_34-Capitulo 1 (mBot Demostración de movimiento).pdf.png

2024-07-17 10_15_18-Capitulo 1 (mBot Demostración de movimiento).pdf.png

2024-07-17 10_15_45-Capitulo 1 (mBot Demostración de movimiento).pdf.png

2024-07-17 10_16_04-Capitulo 1 (mBot Demostración de movimiento).pdf.png

Cargamos estos programas EN MODO CARGA

RESULTADO

El contenido de esta página es de

mBot2

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

2025-04-07 12_01_56-mBlock v5.4.3.png

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

2025-04-07 12_14_26-mBlock v5.4.3.png

Puedes alterar el programa de tal manera que si no hay luz, que haga giros más largos, retroceda...

mBot2

Evitar obstáculos I

Mi primer "Evita obstáculos"

Sugerimos un programa sencillo 

2025-04-07 11_53_00-mBlock v5.4.3.png

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 ":

2025-04-01 20_45_43-mBlock v5.4.3.png

El contenido a partir de aquí es de

2024-07-17 10_24_10-Capitulo 2 Evitar obstaculos con mBot2.pdf.png

La distancia de 8cm es arbitraria y también la elección de hacerlo al azar o no.

Podemos añadir

2024-07-17 10_26_31-Capitulo 2 Evitar obstaculos con mBot2.pdf.png

RESULTADO

El contenido de esta página es de

mBot2

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. 
2024-07-17 10_47_52-Detectar obstáculos y girar donde la distancia a un objeto sea mayor.pdf.png

2024-07-17 10_48_48-Detectar obstáculos y girar donde la distancia a un objeto sea mayor.pdf.png

RESULTADO

 

 

mBot2

Sigue líneas I

Mi primer siguelíneas

El sigue líneas más sencillo es este, recomendamos empezar por aquí

2025-04-07 11_36_55-mBlock v5.4.3.png

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":

2025-04-01 20_48_42-mBlock v5.4.3.png

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

2024-07-17 10_31_08-Seguir línea con mBot2.pdf.png

2024-07-17 10_33_00-Seguir línea con mBot2.pdf.png

(optativo) Esta función para que nos muestre el color de la línea

2024-07-17 10_34_55-Seguir línea con mBot2.pdf.png

RESULTADO

mBot2

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 :

2024-07-17 10_38_44-Seguir la línea de color con mBot2.pdf.png

2024-07-17 10_39_05-Seguir la línea de color con mBot2.pdf.png

Y el algoritmo principal

2024-07-17 10_39_48-Seguir la línea de color con mBot2.pdf.png

Y además (optativo) igual que el sigue líneas I :

2024-07-17 10_43_45-Seguir la línea de color con mBot2.pdf.png

RESULTADO

mBot2

Control remoto

El contenido de esta página es de

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
2024-07-17 10_52_26-Control remoto.pdf.png

Para este proyecto hemos de cargar dos CyberPy.

2024-07-17 10_53_02-Control remoto.pdf.png

CODIGO EN EL CYBERPI MONTADO CON MBOT2

Hay que poner los dos Cyberpis en la misma Wifi (SSID y contraseña)

 

2024-07-17 10_53_25-Control remoto.pdf.png

2024-07-17 10_55_55-Control remoto.pdf.png

CODIGO EN EL CYBERPI QUE HARÁ DE CONTROL REMOTO

2024-07-17 10_56_57-Control remoto.pdf.png

RESULTADO

El contenido de esta página es de

mBot2

Más actividades

RETOS : HACER UN PROGRAMA QUE REALICE....                                         

RETO1 APARCAR

2024-07-17 10_47_29-mbot2-actividades.pdf.png
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.2024-07-17 13_04_10-mbot2-actividades.pdf.png
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



2024-07-18 10_06_34-mbot2-actividades (2).pdf.png

2024-07-18 10_03_24-mbot2-actividades (2).pdf.png

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? ....                                                                               


2024-07-17 10_50_36-mbot2-actividades.pdf.png
Pag 25 Manual mBot2 https://www.robotix.es/documentos/mbot2-actividades.pdf contenidos e imágenes publicados con permiso de la empresa Robotix.

2024-07-17 10_51_31-mbot2-actividades.pdf.png
Pag 26 Manual mBot2 https://www.robotix.es/documentos/mbot2-actividades.pdf contenidos e imágenes publicados con permiso de la empresa Robotix.

2024-07-17 10_52_12-mbot2-actividades.pdf.png
Pag 27 Manual mBot2 https://www.robotix.es/documentos/mbot2-actividades.pdf contenidos e imágenes publicados con permiso de la empresa Robotix.

2024-07-17 12_57_59-mbot2-actividades.pdf.pngPag 28 Manual mBot2 https://www.robotix.es/documentos/mbot2-actividades.pdf contenidos e imágenes publicados con permiso de la empresa Robotix.

2024-07-17 12_59_03-mbot2-actividades.pdf.png
Pag 29 de Manual mBot2 https://www.robotix.es/documentos/mbot2-actividades.pdf contenidos e imágenes publicados con permiso de la empresa Robotix.

2024-07-17 13_00_09-mbot2-actividades.pdf.png
Pag 33 de Manual mBot2 https://www.robotix.es/documentos/mbot2-actividades.pdf contenidos e imágenes publicados con permiso de la empresa Robotix.

2024-07-17 13_01_05-mbot2-actividades.pdf.png
Pag 41 deManual mBot2 https://www.robotix.es/documentos/mbot2-actividades.pdf contenidos e imágenes publicados con permiso de la empresa Robotix.

2024-07-17 13_01_55-mbot2-actividades.pdf.pngPag 43 de Manual mBot2 https://www.robotix.es/documentos/mbot2-actividades.pdf contenidos e imágenes publicados con permiso de la empresa Robotix.

2024-07-17 13_05_31-mbot2-actividades.pdf.pngPag 60 de Manual mBot2 https://www.robotix.es/documentos/mbot2-actividades.pdf contenidos e imágenes publicados con permiso de la empresa Robotix.

2024-07-17 13_06_22-mbot2-actividades.pdf.png
Pag 60 de Manual mBot2 https://www.robotix.es/documentos/mbot2-actividades.pdf contenidos e imágenes publicados con permiso de la empresa Robotix.

2024-07-17 13_07_02-mbot2-actividades.pdf.png
Pag 62 de Manual mBot2 https://www.robotix.es/documentos/mbot2-actividades.pdf contenidos e imágenes publicados con permiso de la empresa Robotix.

2024-07-17 13_07_58-mbot2-actividades.pdf.png
Pag 63 de Manual mBot2 https://www.robotix.es/documentos/mbot2-actividades.pdf contenidos e imágenes publicados con permiso de la empresa Robotix.

2024-07-17 13_09_29-mbot2-actividades.pdf.png

2024-07-17 13_09_17-.png
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.

2024-07-17 13_11_17-mbot2-actividades.pdf.pngY utilizar esta instrucción en la función principal

2024-07-17 13_11_27-mbot2-actividades.pdf.png

Pag 69 de Manual mBot2 https://www.robotix.es/documentos/mbot2-actividades.pdf contenidos e imágenes publicados con permiso de la empresa Robotix.

2024-07-18 09_37_16-mbot2-actividades.pdf.png
Pag 82 de Manual mBot2 https://www.robotix.es/documentos/mbot2-actividades.pdf contenidos e imágenes publicados con permiso de la empresa Robotix.

2024-07-18 09_39_11-mbot2-actividades.pdf.png
Pag 89 de Manual mBot2 https://www.robotix.es/documentos/mbot2-actividades.pdf contenidos e imágenes publicados con permiso de la empresa Robotix.

2024-07-18 09_51_21-mbot2-actividades (2).pdf.png
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

2024-07-18 10_08_46-mbot2-actividades (1) - PDF-XChange Viewer.png
Pag 124 de Manual mBot2 https://www.robotix.es/documentos/mbot2-actividades.pdf contenidos e imágenes publicados con permiso de la empresa Robotix.

Inteligencia artificial


Inteligencia artificial

Introducción: ¿Qué es?

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

mind.jpg

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

Inteligencia artificial

Introducción: Tipos

ML : APRENDIZAJE AUTOMATICO O MACHINE LEARNING

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

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

Hay varios tipos de ML:

RL : APRENDIZAJE REFORZADO O REINFORCEMENT LEARNING

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

DL : APRENDIZAJE PROFUNDO O DEEP LEARNING

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

PLN : PROCESAMIENTO DE LENGUAJE NATURAL

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

EJEMPLOS 

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

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

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

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

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

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

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

PLN: CHATGPT COMO FUNCIONA

DL CREA TU PEQUEÑA RED NEURONAL CON PYTHON

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

Inteligencia artificial

Introducción: Y en plan que se entienda....

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

    1. Reconocimiento de imágenes con mBlock

      1. Programa de reconocimiento imágenes

      2. Programa reconocimiento edad

    2. Reconocimiento de voz

      1. Traductor Con mBlock y Cybperpi

      2. Reconocimiento de órdenes Con mBot1 t mBot2

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

    1. Máquina educable Teachable Learning y mBlock

    2. Máquina educable con CODE.ORG

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

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

    1. SMARTCAM y mBot1

      1. Seguir pelota color

      2. Sigue líneas

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

Inteligencia artificial

Introducción: Video Sensing, esto no es IA

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

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

Extensión Video Sensing

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

mblock_block_1711822211532.png

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

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

Inteligencia artificial

Máquinas educadas Cognitive Services Servicios cognitivos

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

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

Instala un montón de instrucciones como

2024-03-30 21_02_27-WhatsApp.png

RECONOCIMIENTO DE EDAD

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

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

OJO, SI NO ESTAS LOGUEADO entonces NO FUNCIONA

novaai2.png

La verdad es que acierta bastante bien

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

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

Inteligencia artificial

Máquinas educadas: Traductor

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

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

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

traductor.png

Inteligencia artificial

Máquinas educadas: Traductor con Cyberpi

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

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

Lo primero es conectarse a la Wifi :

cyberpi-conexion.png

Y para traducir

cyberpi-traduccion.png

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

novaai.png

Inteligencia artificial

Máquinas educadas: Reconocimiento de voz- órdenes a mBot2

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

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

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

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

ordenesvozmbot2.png

Inteligencia artificial

Software educable Machine Learning for kids y Scratch

REGISTRO

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

machine1.jpg

Tenemos varias opciones:

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

machine2.jpg

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

CREAMOS UN PROYECTO

Empezamos un proyecto

machine3.jpg

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

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

machine4.jpg

Ya lo tenemos

machine5.jpg

ENTRENAR

Primero vamos a entrenar la máquina

machine6.jpg

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

machine7.jpg

Volvemos al proyecto..

machine8.jpg

ENTRENAR

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

machine9.jpg

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

machine10.jpg

Una vez acabado puedes probarlo

machine11.jpg

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

machine12.jpg

Volvemos al proyecto

machine8.jpg

CREAR

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

machine13.jpg

Le damos a Abrir en Scratch 3

machine14.jpg

Elegimos un nuevo objeto (quitamos el gato)

machine15.jpg

y elegimos glass water

machine16.jpg

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

machine17.jpg

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

Inteligencia artificial

Software educable: Máquina Educable Teachable Machine

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

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

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

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

2024-03-30 19_58_36-WhatsApp.png

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

maquinaeducable.png

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

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

Otro ejemplo parecido usando playmovil

 

Inteligencia artificial

Software educable: CODE.ORG

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

ia-codeorg2.png

El resultado es 

ia-codeorg.png

Inteligencia artificial

Software educable Playground, Teachable Machine Google y Microbit

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

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

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

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

Podemos conectar nuestro robot MICROBIT CUTEBOT

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

O reconocer textos

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

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

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

Inteligencia artificial

Maquinas educables: SmartCamera

Estamos ensañando este accesorio, pero en mBot2 no va muy fino, no obstante aquí tienes el enlace a mbot1 perfectamente se puede aplicar a mbot2

https://libros.catedu.es/books/robotica-educativa-con-mbot/chapter/7-ia-hardware-educable

SmartCamera - Qué es

Esta cámara se vende como accesorio de los robots de Makeblock por unos 140€ , ATENCIÓN, ESTE ...

SmartCamera - conexión con mBot

Hardware Para conectarlo con mBot1 hace falta la batería que se suministra en el pack, con su ca...

Smart camera - seguimiento color - sencillo

Configuración reconocimiento de color Método por software (recomendado) Una forma de configurar...

Smart camera seguimiento color avanzado

Kp, velocidad diferencial del motor.... ¿Eso qué es? En la extensión CAMARA INTELIGENTE ESPECÍFI...

Smart camera Piximon

INSTALACIÓN DE PYXMON V2 No es un software obligatorio, pero viene muy bien qué está pasando y q...

Smart Camera Código de barras

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

SmartCamera - sigue líneas

mBot ya tiene un sigue-lineas https://libros.catedu.es/books/robotica-educativa-con-mbot/page/sig...

Python

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:

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 :

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.

En la siguiente ventana puedes dar al botón play y ver el resultado

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"

2025-04-05 09_29_39-Editing Page 6 Cadenas _ Librería CATEDU.png
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=4a = 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

Prueba, juega con este código:




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, esto es mejor experimentarlo que leerlo :

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

Para verlo mejor vamos a ver estos ejemplos

Venga pruébalo !!!

Funciones

No vamos a entrar en detalle, pero observa el siguiente código

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

Python

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:

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

  1. Entramos en mblock con el dispositivo cargado mBot2 y vamos a la pesaña Python
  2. Pegamos el programa
  3. 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
  4. Damos a la opción Cargar
  5. Subir código

2025-04-29 12_46_26-mBlock v5.4.3.png

Y el resultado es 

2025-04-29 12_50_34-WhatsApp.png

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?

Python

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

Python

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

2025-04-29 15_08_28-WhatsApp.png

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



Python

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
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)

 

Python

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

2025-04-29 20_15_40-WhatsApp.png

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

2025-04-29 20_26_54-WhatsApp.png

¡¡ y funciona !!!

 

Python

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

 

Python

El tiempo (servicios en la nube)

Podemos ver el tiempo que hace en una localidad utilizando el siguiente código:

import cyberpi

ssid = "PON-EL-NOMBRE-DE-TU-WIFI"
pwd = "CLAVE-DE-TU-WIFI"
auth_key = "TU-ID-CLOUD"
location_id = "3127059" # CALAMOCHA SEGÚN https://www.meteoblue.com/es/tiempo/semana/calamocha_espa%c3%b1a_3127059

cyberpi.led.on(255,0,0,id='all')
cyberpi.display.show_label("WiFi:",12,0,0,0)

if not cyberpi.wifi.is_connect():
    cyberpi.display.show_label("WiFi: No Connect",12,0,0,0)
    cyberpi.wifi.connect(ssid,pwd)
    while not cyberpi.wifi.is_connect():
        cyberpi.display.show_label("Connecting..",12,0,20,1)

cyberpi.display.clear()
cyberpi.display.show_label("Status: Connected!",12,0,0,0)
cyberpi.led.on(0,255,0,id='all')

cyberpi.cloud.setkey(auth_key)

max_temp = cyberpi.cloud.weather("max_temp",location_id)
min_temp = cyberpi.cloud.weather("min_temp",location_id)
weather = cyberpi.cloud.weather("weather",location_id)
humidity = cyberpi.cloud.weather("humidity",location_id)

cyberpi.display.show_label("Max Temperature: {} C".format(max_temp),12,0,20,1)
cyberpi.display.show_label("Min Temperature: {} C".format(min_temp),12,0,32,2)
cyberpi.display.show_label("Weather: {}".format(weather),12,0,42,3)
cyberpi.display.show_label("Humidity: {} %".format(humidity),12,0,52,4)

Extraído de https://github.com/PerfecXX/Python-mBot2/blob/main/README.md licencia MIT

El resultado es (hemos puesto Calamocha)

2025-04-29 21_13_33-WhatsApp.png

No entendemos por qué no nos enseña la temperatura mínima, y además hemos elegido una localidad con estación meteorológica VOR que tiene el récord de temperatura más fría en zona habitada

Bueno ... mentirijilla, el VOR esta en Fuentes Claras, no en Calamocha

Hay más ejemplos en https://github.com/PerfecXX/Python-mBot2/tree/main/example/cyberpi/08-Cloud como la calidad del aire, pero no todas las localidades tienen datos.

Python

Envío de mensajes con dos mBots2

En dos mBot2 le ponemos el siguiente código:

import cyberpi

ssid = "catedu"
pwd = "alcorisa"
topic = "/test_room"

cyberpi.led.on(255,0,0,id='all')
cyberpi.display.show_label("WiFi:",12,0,0,0)

if not cyberpi.wifi.is_connect():
    cyberpi.display.show_label("WiFi: No Connect",12,0,0,0)
    cyberpi.wifi.connect(ssid,pwd)
    while not cyberpi.wifi.is_connect():
        cyberpi.display.show_label("Connecting..",12,0,20,1)

cyberpi.display.clear()
cyberpi.display.show_label("WiFi: Connected!\nEnvío de mensaje botón A o B:\n Preparado también para recepción ..",12,0,0,0)
cyberpi.led.on(0,255,0,id='all')

while True:
    ## envio de mensaje
    message = cyberpi.wifi_broadcast.get(topic)
    cyberpi.display.show_label("{}".format(message),12,0,60,1)
    # envío de mensaje
    if cyberpi.controller.is_press('a'):
        cyberpi.wifi_broadcast.set(topic,"\nHola soy CATEDU")
    elif cyberpi.controller.is_press('b'):
        cyberpi.wifi_broadcast.set(topic,"\nBienvenido a los cursos de Aularagón")

Extraído de https://github.com/PerfecXX/Python-mBot2/blob/main/README.md licencia MIT

Realmente en https://github.com/PerfecXX/Python-mBot2/tree/main/example/cyberpi/07-LAN/01-Send_Receive se utilizan DOS códigos, uno para el emisor y otro para el receptor, lo que se ha hecho en el código de arriba es unirlos.

Python

Inteligencia Artificial IA

Reconocimiento de texto

El siguiente código se conecta a un servidor para leer un texto en un idioma concreto

import cyberpi

ssid = "MIWIFI"
pwd = "CONTRASENAWIFI"

cyberpi.driver.cloud_translate.TTS_URL = "{TTSURL}"
cyberpi.driver.cloud_translate.set_token("{ACCESSTOKEN}")
cyberpi.driver.cloud_translate.TRANS_URL = "{TRANSURL}"
cyberpi.driver.cloud_translate.set_token("{ACCESSTOKEN}")
cyberpi.speech.set_recognition_address(url = "{NAVIGATEURL}")
cyberpi.speech.set_access_token(token = "{ACCESSTOKEN}")

cyberpi.led.on(255,0,0,id='all')
cyberpi.display.show_label("WiFi:",12,0,0,0)

if not cyberpi.wifi.is_connect():
    cyberpi.display.show_label("WiFi: No Connect",12,0,0,0)
    cyberpi.wifi.connect(ssid,pwd)
    while not cyberpi.wifi.is_connect():
        cyberpi.display.show_label("Connecting..",12,0,20,1)

cyberpi.display.clear()
cyberpi.display.show_label("Status: Connected!",12,0,0,0)
cyberpi.led.on(0,255,0,id='all')

cyberpi.display.show_label("Wait...",12,0,20,1)
cyberpi.led.on(0,0,255,id='all')
cyberpi.cloud.tts("es","Bienvenido CATEDU")
cyberpi.cloud.tts("en","I speak English better: Wellcome to CATEDU")
cyberpi.led.on(0,0,0,id='all')
cyberpi.display.show_label("Finished!",12,0,20,1)

Extraído de https://github.com/PerfecXX/Python-mBot2/blob/main/README.md licencia MIT

Reconocimiento de voz

En este caso hemos seleccionado el idioma 4 (el primero chinese es el 0) luego reconoce voz en idioma inglés

import cyberpi
from time import sleep

ssid = "MIWIFI"
pwd = "CONTRASENAWIFI"

langauge_list = ["chinese","chinese_taiwan","cantonese","japanese","english","french","german","spanish","portuguese","russian","korean","italian","Dutch"]

cyberpi.driver.cloud_translate.TTS_URL = "{TTSURL}"
cyberpi.driver.cloud_translate.set_token("{ACCESSTOKEN}")
cyberpi.speech.set_recognition_address(url = "{NAVIGATEURL}")
cyberpi.speech.set_access_token(token = "{ACCESSTOKEN}")
cyberpi.driver.cloud_translate.TRANS_URL = "{TRANSURL}"
cyberpi.driver.cloud_translate.set_token("{ACCESSTOKEN}")

cyberpi.led.on(255,0,0,id='all')
cyberpi.display.show_label("WiFi:",12,0,0,0)

if not cyberpi.wifi.is_connect():
    cyberpi.display.show_label("WiFi: No Connect",12,0,0,0)
    cyberpi.wifi.connect(ssid,pwd)
    while not cyberpi.wifi.is_connect():
        cyberpi.display.show_label("Connecting..",12,0,20,1)

cyberpi.display.clear()
cyberpi.display.show_label("WiFi: Connected!",12,0,0,0)
cyberpi.led.on(0,255,0,id='all')

while True:
    cyberpi.display.show_label("A:Start Recognize",12,0,20,1)
    cyberpi.led.on(0,0,0,id='all')

    if cyberpi.controller.is_press('a'):
        sleep(0.5)
        cyberpi.led.on(0,0,255,id='all')
        cyberpi.display.show_label("Recognizing...",12,0,40,2)
        cyberpi.cloud.listen(langauge_list[4], 5)
        cyberpi.display.show_label("Processing...",12,0,40,2)
        cyberpi.led.on(0,0,0,id='all')
        recog_result = cyberpi.cloud.listen_result()
        cyberpi.display.show_label("Recognition Result\n\n{}".format(recog_result),12,0,40,2)

Extraído de https://github.com/PerfecXX/Python-mBot2/blob/main/README.md licencia MIT
El resultado es

Traductor

En este caso le damos un texto que le decimos en qué idioma está (el 7=español) y le pedimos que nos lo traduzca al 4=inglés

import cyberpi

ssid = "MIWIFI"
pwd = "MICLAVEWIFI"

langauge_list = ["chinese","chinese_taiwan","cantonese","japanese","english","french","german","spanish","portuguese","russian","korean","italian","Dutch"]
cyberpi.driver.cloud_translate.TTS_URL = "{TTSURL}"
cyberpi.driver.cloud_translate.set_token("{ACCESSTOKEN}")
cyberpi.speech.set_recognition_address(url = "{NAVIGATEURL}")
cyberpi.speech.set_access_token(token = "{ACCESSTOKEN}")
cyberpi.driver.cloud_translate.TRANS_URL = "{TRANSURL}"
cyberpi.driver.cloud_translate.set_token("{ACCESSTOKEN}")

cyberpi.led.on(255,0,0,id='all')
cyberpi.display.show_label("WiFi:",12,0,0,0)

if not cyberpi.wifi.is_connect():
    cyberpi.display.show_label("WiFi: No Connect",12,0,0,0)
    cyberpi.wifi.connect(ssid,pwd)
    while not cyberpi.wifi.is_connect():
        cyberpi.display.show_label("Connecting..",12,0,20,1)

cyberpi.display.clear()
cyberpi.display.show_label("WiFi: Connected!",12,0,0,0)
cyberpi.led.on(0,255,0,id='all')

text = "Bienvenido a los cursos a distancia de CATEDU"
cyberpi.display.show_label("translate: \n{} in {}".format(text,langauge_list[7]),12,0,10,1)
translated_text = cyberpi.cloud.translate(langauge_list[4], text)
cyberpi.display.show_label("Result: \n{}".format(translated_text),12,0,70,2)

Extraído de https://github.com/PerfecXX/Python-mBot2/blob/main/README.md licencia MIT

2025-04-29 23_09_43-.png

Python

Movimientos

Los movimientos de mBot2 se pueden definir por tiempo, distancia, ángulo y potencia, gracias a sus precisos motores de paso

Pequeño baile con tiempo definido
import cyberpi, mbot2

cyberpi.display.show_label("mBot2 Movement",16,0,0,0)
cyberpi.display.show_label("A:Start Moving!",16,0,20,1)

while True:
    
    while not cyberpi.controller.is_press('a'):
        pass

    cyberpi.display.show_label("Forward 60 RMP 1 Sec",12,0,40,2)
    mbot2.forward(60,1)
    cyberpi.display.show_label("Backward 60 RMP 1 Sec",12,0,40,2)
    mbot2.backward(60,1)
    cyberpi.display.show_label("Turn Left 60 RMP 1 Sec",12,0,40,2)
    mbot2.turn_left(60,1)
    cyberpi.display.show_label("Turn Right 60 RMP 1 Sec",12,0,40,2)
    mbot2.turn_right(60,1)
    cyberpi.display.show_label("Finished!",12,0,40,2)

Pequeño baile con distancia definida

En este código le decimos que vaya exactamente 100 cm

import cyberpi, mbot2

cyberpi.display.show_label("mBot2 Straight",16,0,0,0)
cyberpi.display.show_label("A:Start Moving!",16,0,20,1)

while True:
    
    while not cyberpi.controller.is_press('a'):
        pass

    cyberpi.display.show_label("Forward 100 cm",12,0,40,2)
    mbot2.straight(100)
    cyberpi.display.show_label("Backward 100 cm",12,0,40,2)
    mbot2.straight(-100)
    cyberpi.display.show_label("Finished!",12,0,40,2)
Pequeño baile con ángulos definidos

En este que gire +90º y luego -90º

import cyberpi, mbot2

cyberpi.display.show_label("mBot2 Rotation",16,0,0,0)
cyberpi.display.show_label("A:Rotate Left\nB:Rotate Right",16,0,20,1)

while True:
    
    if cyberpi.controller.is_press('a'):
        cyberpi.display.show_label("Turn Left 90",12,0,60,2)
        mbot2.turn(-90)
    elif cyberpi.controller.is_press('b'):
        cyberpi.display.show_label("Turn Right 90",12,0,60,2)
        mbot2.turn(90)
Pequeño baile con potencia definida
import cyberpi, mbot2
from time import sleep

cyberpi.display.show_label("mBot2 EM Power",16,0,0,0)

while not cyberpi.controller.is_press('a'):
        pass
        
mbot2.drive_power(100, -100)
sleep(1)
mbot2.drive_power(0, 0)

 

Python

Sensor ultrasonidos

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

2025-04-30 08_18_12-WhatsApp.png

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

 

Python

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

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)
    

a lo mejor habría que quitarle un poco la potencia en mbot2.drive_power(70, -70) pero mola :

Python

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.

2025-04-30 08_32_43-Python-mBot2_example_mbuild_02-Quad RGB Sensor at main · PerfecXX_Python-mBot2 ·.png

 

Python

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  :

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 

Créditos

A lo largo del tutorial se referencian las siguientes obras con las siguientes licencias y autores :

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 mBot2 https://www.robotix.es/documentos/mbot2-actividades.pdf contenidos e imágenes publicados con permiso de la empresa Robotix.

Ejemplos mBot2 Pere Manel Verdugo Zamora http://peremanelv.com/mblok.html contenidos e imágenes publicados con permiso del autor

Scripts Python Repositorio https://github.com/PerfecXX/Python-mBot2/tree/main

En el caso de que no se referencia ninguna de las anteriores, el autor y licencia es :

Autor Javier Quintana Peiró 2024 CATEDU

LICENCIA : BY-NC-SA