LEGO MINDSTORMS Education EV3 + MicroPython: programamos un constructor para niños en un idioma para adultos

Hola Habr! Ya hablamos sobre la plataforma LEGO MINDSTORMS Education EV3. Los objetivos principales de esta plataforma son la capacitación en ejemplos prácticos, el desarrollo de habilidades STEAM y la formación del pensamiento de ingeniería. Puede realizar trabajos de laboratorio para estudiar mecánica y dinámica. Los soportes 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 comprender mejor la física. Por ejemplo, los estudiantes pueden recopilar datos sobre la temperatura de fusión y usar la aplicación para organizarlos y presentarlos en un gráfico. Pero esto es solo el comienzo: hoy le diremos cómo complementar este conjunto con el entorno de programación MicroPython y usarlo para enseñar robótica.



Aprende a programar con EV3


Los estudiantes modernos quieren ver un resultado colorido. Sí, están aburridos si el programa muestra números en la consola y quieren ver cuadros de colores, diagramas y crear robots reales que se mueven y ejecutan comandos. El código regular también parece demasiado complicado para los niños, por lo que es mejor comenzar a aprender algo más fácilmente.

El entorno de programación base EV3 se basa en el lenguaje gráfico LabVIEW y le permite establecer visualmente algoritmos para el robot: los comandos se presentan en forma de bloques que se pueden arrastrar y unir.



Este método funciona bien cuando necesita mostrar cómo se crean los algoritmos, pero no es adecuado para programas con una gran cantidad de bloques. Al complicar los escenarios, es necesario cambiar a la programación usando código, pero es difícil para los niños dar este paso.

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 a través de la integración con MicroPython: los niños crean el mismo programa en el entorno de programación base usando bloques y Python en Microsoft Visual Studio Code. Ven que ambos métodos funcionan igual, pero es más conveniente resolver problemas complejos con el código.

Yendo a MicroPython


El entorno EV3 se basa en el procesador ARM9, y los desarrolladores dejaron la arquitectura abierta intencionalmente. Esta solución nos permitió acumular firmware alternativo, uno de los cuales era la imagen para trabajar con MicroPython. Le permite usar Python para programar EV3, lo que hace que escribir sea aún más cercano a las tareas de la vida real.

Para comenzar, debe descargar la imagen EV3 MicroPython a cualquier tarjeta microSD, instalarla en el microordenador EV3 y encenderla. Luego debe instalar la extensión gratuita para Visual Studio. Y puedes ponerte a trabajar.

Programamos el primer robot en MycroPython





Nuestro sitio tiene varias lecciones para dominar los conceptos básicos de la robótica. Los modelos EV3 presentan a los niños los conceptos básicos que se utilizan en automóviles autónomos, robots de ensamblaje de fábrica y máquinas CNC.

Tomamos como ejemplo una máquina de dibujo que se puede enseñar a dibujar patrones y formas geométricas. Este caso es una versión simplificada de robots de soldadura para adultos o máquinas de fresado y muestra cómo puede usar EV3 junto con MicroPython para enseñar a los estudiantes. Y una máquina de dibujo puede marcar agujeros en una placa de circuito impreso para papá, pero este es otro nivel que requiere cálculos matemáticos.

Para el trabajo, necesitamos:

  • Conjunto básico LEGO MINDSTORMS Education EV3
  • una hoja grande de papel a cuadros;
  • marcadores de colores.

El ensamblaje del robot en sí está en las instrucciones , y consideraremos un ejemplo de programación.

Primero, inicialice la biblioteca del módulo 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 una plataforma que hace girar la manija como un motor en el puerto B. Establecimos la relación de transmisión de la transmisión de dos etapas con el número de dientes 20-12-28, respectivamente.

 turntable_motor = Motor(Port.B, Direction.CLOCKWISE, [20, 12, 28]) 

Configuramos el mecanismo de elevación del mango como motor en el puerto C:

 seesaw_motor = Motor(Port.C) 

Instalamos un giroscopio que mide el ángulo del mango, en el puerto 2:

 gyro_sensor = GyroSensor(Port.S2) 

Configure el sensor de color en el puerto 3. El sensor se utiliza para detectar papel blanco debajo de la máquina de dibujo:

 color_sensor = ColorSensor(Port.S3) 

Configure el sensor táctil en el puerto 4. El robot comienza a dibujar cuando se presiona el sensor:

 touch_sensor = TouchSensor(Port.S4) 

Defina las funciones que suben y bajan el asa:

 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) 

Determinamos la función para girar el mango en un ángulo dado o en un ángulo determinado:

 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, continúe moviéndose en el sentido de las agujas del reloj con una 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 sensor giroscópico actual, muévalo en sentido antihorario:

     turntable_motor.run(-70) while gyro_sensor.angle() > target_angle: pass 

Paramos la plataforma giratoria cuando se alcanza el ángulo objetivo:

   turntable_motor.stop(Stop.BRAKE) 

Establezca la posición inicial del mango en la posición superior:

 pen_holder_raise() 

Ahora viene la parte principal del programa: un bucle sin fin. Al principio, EV3 espera a que el sensor de color detecte papel blanco o una celda de inicio azul, y se presionará el sensor táctil. Luego dibuja un patrón, vuelve a su posición original y repite todo de nuevo.

Cuando el dispositivo no está listo, los LED del controlador se vuelven rojos y la imagen del dedo hacia abajo se muestra en la pantalla LCD:

 while True:  brick.light(Color.RED)  brick.display.image(ImageFile.THUMBS_DOWN) 

Esperamos hasta que el sensor de color considere azul o blanco, establecemos el color de los LED en verde, mostramos la imagen del pulgar hacia arriba en la pantalla LCD e informamos que el dispositivo está listo para usar:

   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 el valor del ángulo 0 al 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) 

Levante el portalápices y vuelva a colocarlo en su posición original:

   pen_holder_raise()  pen_holder_turn_to(0)</i> 

Aquí tenemos un programa tan simple. Y ahora lo lanzamos y miramos al dibujante del robot en acción.

¿Qué dan esos ejemplos?




EV3 es una herramienta de orientación profesional para profesiones STEM y un punto de entrada a las especialidades de ingeniería. Como es posible resolver problemas prácticos, los niños adquieren experiencia en el desarrollo técnico y la creación de robots industriales, aprenden a simular situaciones reales, entienden programas y analizan algoritmos, dominan las construcciones básicas de programación.

El soporte de MicroPython hace que la plataforma EV3 sea adecuada para la escuela secundaria. Los alumnos pueden probarse a sí mismos como programadores en uno de los lenguajes modernos más populares, familiarizarse con profesiones relacionadas con la programación y el diseño de ingeniería. Los kits EV3 muestran que escribir código no da miedo, se preparan para problemas de ingeniería graves y ayudan a dar el primer paso para dominar las especialidades técnicas. Y para aquellos que trabajan en la escuela y están asociados con la educación, hemos preparado programas de capacitación y materiales de capacitación. Describen en detalle qué habilidades se forman al realizar ciertas tareas y cómo las habilidades adquiridas están relacionadas con los estándares de capacitación.

Source: https://habr.com/ru/post/474562/


All Articles