¡Hola, Habr! Ya estamos sobre la plataforma LEGO MINDSTORMS Education EV3. Los principales objetivos de esta plataforma son la enseñanza a través de ejemplos prácticos, el desarrollo de habilidades STEAM y la formación del pensamiento ingenieril. Se pueden realizar trabajos de laboratorio para estudiar mecánica y dinámica. Los bancos de laboratorio hechos de bloques LEGO y las utilidades para registrar y procesar datos hacen que los experimentos sean aún más interesantes y visuales, y ayudan a los niños a entender mejor la física. Por ejemplo, los escolares pueden recopilar datos sobre la temperatura de fusión y, con la ayuda de una aplicación, organizarlos y presentarlos en forma de gráfico. Pero esto es solo el comienzo: hoy vamos a contar cómo complementar este conjunto con un entorno de programación MicroPython y utilizarlo para enseñar robótica.

Enseñamos programación con EV3
Los escolares modernos quieren ver resultados coloridos. Sí, se aburren si el programa imprime números en la consola; quieren ver gráficos coloridos, diagramas y crear verdaderos robots que se muevan y ejecuten comandos. El código normal también les parece demasiado complicado, por lo que es mejor comenzar el aprendizaje con algo más sencillo.
El entorno básico de programación EV3 se basa en el lenguaje gráfico LabVIEW y permite establecer algoritmos para el robot de manera visual: los comandos se presentan en forma de bloques que se pueden arrastrar y conectar.

Este método funciona bien cuando se necesita mostrar cómo se construyen los algoritmos, pero no es adecuado para programas con una gran cantidad de bloques. A medida que los escenarios se complican, es necesario pasar a la programación mediante código, lo que resulta difícil para los niños.
Aquí hay algunos trucos, uno de los cuales es mostrar que el código realiza las mismas tareas que los bloques. En el entorno EV3, esto se puede hacer gracias a la integración con MicroPython: los niños crean el mismo programa en el entorno básico de programación utilizando bloques y en el lenguaje Python en Visual Studio Code de Microsoft. Ven que ambos métodos funcionan igual, pero es más cómodo resolver tareas complejas con código.
Pasamos a MicroPython
El entorno EV3 se basa en el procesador ARM9, y los desarrolladores dejaron la arquitectura abierta intencionalmente. Esta decisión permitió cargar firmware alternativo, uno de los cuales fue la imagen para trabajar con MicroPython. Esto permite utilizar Python para programar el EV3, lo que acerca aún más el trabajo con el conjunto a tareas de la vida real.
Para comenzar a trabajar, necesitas descargar en cualquier tarjeta microSD, instalarla en el microcomputador EV3 y encenderlo. Luego debes instalar para Visual Studio. Y puedes comenzar a trabajar.
Programando el primer robot en MycroPython

En nuestro hay varias lecciones para aprender los conceptos básicos de la robótica. Los modelos en EV3 introducen a los niños en los fundamentos que se utilizan en vehículos autónomos, robots industriales ensambladores y máquinas CNC.
Tomaremos como ejemplo una máquina de dibujo, que puede ser enseñada a dibujar patrones y figuras geométricas. Este caso es una versión simplificada de robots industriales de soldadura o fresado, y muestra cómo se puede utilizar el EV3 junto con MicroPython para enseñar a los estudiantes. Además, la máquina de dibujo puede marcar agujeros en una placa de circuito para papá, pero eso ya es otro nivel, que requiere cálculos matemáticos.
Para trabajar necesitaremos:
- el kit básico LEGO MINDSTORMS Education EV3;
- una gran hoja de papel cuadriculado;
- marcadores de colores.
La construcción del robot se encuentra en , y nosotros veremos un ejemplo de programación.
Primero, inicializamos la biblioteca de módulos EV3:
#!/usr/bin/env pybricks-micropython
from pybricks import ev3brick as brick
from pybricks.ev3devices import (Motor, TouchSensor, ColorSensor, GyroSensor)
from pybricks.parameters import Port, Stop, Direction, Color, ImageFile
from pybricks.tools import wait
Configuramos la plataforma que mueve el bolígrafo como motor en el puerto B. Establecemos la relación de transmisión del engranaje de dos etapas con números de dientes 20-12-28 respectivamente.
turntable_motor = Motor(Port.B, Direction.CLOCKWISE, [20, 12, 28])
Configuramos el mecanismo de elevación para el bolígrafo como motor en el puerto C:
seesaw_motor = Motor(Port.C)
Configuramos el giroscopio que mide el ángulo de inclinación del bolígrafo en el puerto 2:
gyro_sensor = GyroSensor(Port.S2)
Configuramos el sensor de color en el puerto 3. El sensor se utiliza para detectar el papel blanco bajo la máquina de dibujo:
color_sensor = ColorSensor(Port.S3)
Configuramos el sensor de toque en el puerto 4. El robot comienza a dibujar cuando el sensor es presionado:
touch_sensor = TouchSensor(Port.S4)
Definimos funciones que levantan y bajan el bolígrafo:
def pen_holder_raise():
seesaw_motor.run_target(50, 25, Stop.HOLD)
wait(1000)
def pen_holder_lower():
seesaw_motor.run_target(50, 0, Stop.HOLD)
wait(1000)
Definimos una función para girar el soporte del bolígrafo a un ángulo determinado o hasta un cierto ángulo:
def pen_holder_turn_to(target_angle):
if target_angle > gyro_sensor.angle():
Si el ángulo objetivo es mayor que el ángulo actual del sensor giroscópico, continuamos moviéndonos en sentido horario con velocidad positiva:
turntable_motor.run(70)
while gyro_sensor.angle() < target_angle:
pass
elif target_angle < gyro_sensor.angle():
Si el ángulo objetivo es menor que el ángulo actual del sensor giroscópico, nos movemos en sentido antihorario:
turntable_motor.run(-70)
while gyro_sensor.angle() > target_angle:
pass
Detenemos la plataforma giratoria cuando se alcanza el ángulo objetivo:
turntable_motor.stop(Stop.BRAKE)
Establecemos la posición inicial del bolígrafo en la posición superior:
pen_holder_raise()
Ahora viene la parte principal del programa: un bucle infinito. Primero, el EV3 espera a que el sensor de color detecte papel blanco o la celda de inicio azul y se presione el sensor táctil. Luego, dibuja un patrón, regresa a la posición inicial y repite todo de nuevo.
Cuando el dispositivo no está listo, los LED del controlador se vuelven rojos y la pantalla LCD muestra la imagen de "dedo hacia abajo":
while True:
brick.light(Color.RED)
brick.display.image(ImageFile.THUMBS_DOWN)
Esperamos a que el sensor de color detecte el color azul o blanco, cambiamos el color de los LED a verde, mostramos en la pantalla LCD la imagen de "dedo hacia arriba" y comunicamos que el dispositivo está listo para funcionar:
while color_sensor.color() not in (Color.BLUE, Color.WHITE):
wait(10)
brick.light(Color.GREEN)
brick.display.image(ImageFile.THUMBS_UP)
Esperamos a que se presione el sensor táctil, asignamos un valor de 0 al ángulo del sensor giroscópico y comenzamos a dibujar:
while not touch_sensor.pressed():
wait(10)
gyro_sensor.reset_angle(0)
pen_holder_turn_to(15)
pen_holder_lower()
pen_holder_turn_to(30)
pen_holder_raise()
pen_holder_turn_to(45)
pen_holder_lower()
pen_holder_turn_to(60)
Levantamos el soporte del bolígrafo y lo regresamos a la posición inicial:
pen_holder_raise()
pen_holder_turn_to(0)
Así que tenemos un programa bastante simple. Ahora lo ejecutamos y vemos al robot dibujante en acción.
¿Qué nos brindan tales ejemplos?

EV3 es una herramienta para la orientación profesional en el ámbito de las profesiones STEM y un punto de entrada a las especialidades de ingeniería. Al resolver tareas prácticas, los niños adquieren experiencia en el desarrollo técnico y la creación de robots industriales, aprenden a modelar situaciones reales, comprender programas y analizar algoritmos, y dominan las bases de la programación.
El soporte de MicroPython hace que la plataforma EV3 sea adecuada para la enseñanza en los últimos años de escuela. Los estudiantes pueden experimentar el papel de programadores con uno de los lenguajes modernos más populares, familiarizarse con las profesiones relacionadas con la programación y el diseño de ingeniería. Los kits EV3 demuestran que escribir código no es algo aterrador, preparan para serios desafíos de ingeniería y ayudan a dar el primer paso hacia la adquisición de habilidades técnicas. Y para quienes trabajan en escuelas y están relacionados con la educación, hemos preparado y materiales de estudio. En ellos se detalla qué habilidades se forman al llevar a cabo ciertas tareas y cómo estas habilidades se relacionan con los estándares de enseñanza.
Fuente: habr.com
