LEGO MINDSTORMS Education EV3 + MicroPython: programmering af børns konstruktioner i et voksent sprog

Hej, Habr! Vi er allerede fortalt om LEGO MINDSTORMS Education EV3-platformen. Hovedmålet med denne platform er praktisk læring, udvikling af STEAM-færdigheder og fremme af ingeniørmæssig tænkning. Den kan bruges til laboratoriearbejde inden for mekanik og dynamik. Laboratorieopstillinger lavet af LEGO-klodser og værktøjer til registrering og behandling af data gør eksperimenterne endnu mere interessante og visuelle og hjælper børn med at forstå fysikken bedre. For eksempel kan skoleelever indsamle data om smeltepunktet og med en app systematisere dem og præsentere dem som grafer. Men det er kun begyndelsen: i dag vil vi fortælle, hvordan man kan supplere dette sæt med programmeringsmiljøet MicroPython og bruge det til at lære robotteknologi.

LEGO MINDSTORMS Education EV3 + MicroPython: programmering af børns konstruktioner i et voksent sprog

Vi lærer programmering med EV3

Moderne skoleelever ønsker at se farverige resultater. Ja, de keder sig, hvis programmet kun viser tal i konsollen, og de vil gerne se farverige grafer, diagrammer og skabe rigtige robotter, der bevæger sig og udfører kommandoer. Almindelig kode virker også for kompliceret for børn, så det er bedre at starte læringen med noget lettere.

Det grundlæggende programmeringsmiljø EV3 er bygget på det grafiske sprog LabVIEW og gør det muligt at visualisere algoritmerne for robotten: kommandoer præsenteres som blokke, der kan trækkes og forbindes.

LEGO MINDSTORMS Education EV3 + MicroPython: programmering af børns konstruktioner i et voksent sprog

Denne metode fungerer godt, når man skal vise, hvordan algoritmer opbygges, men den er ikke velegnet til programmer med mange blokke. Når scenarierne bliver mere komplicerede, skal man overgå til programmering med kode, men det er svært for børn at tage det skridt. 

Der er et par tricks her, hvoraf det ene er at vise, at koden udfører de samme opgaver som blokkene. I EV3-miljøet kan dette gøres takket være integrationen med MicroPython: børnene skaber det samme program i det grundlæggende programmeringsmiljø med blokke og på Python-sproget i Visual Studio Code fra Microsoft. De ser, at begge metoder fungerer ens, men det er lettere at løse komplicerede opgaver med kode.

Vi går over til MicroPython

EV3-miljøet er bygget på ARM9-processoren, og udviklerne har bevidst efterladt arkitekturen åben. Denne løsning muliggør installation af alternative firmware, en af dem er billedet til arbejde med MicroPython. Det giver mulighed for at bruge Python til programmering af EV3, hvilket bringer arbejdet med sættet tættere på opgaver fra det virkelige liv. 

For at komme i gang skal du downloade EV3 MicroPython-billedet til et hvilket som helst microSD-kort, indsætte det i EV3-mikrocomputeren og tænde den. Derefter skal du installere den gratis udvidelse til Visual Studio. Så kan du begynde at arbejde. 

Programmering af den første robot med MycroPython

LEGO MINDSTORMS Education EV3 + MicroPython: programmering af børns konstruktioner i et voksent sprog

På vores websitet er der flere lektioner til at mestre grundlæggende begreber inden for robotteknik. Modellerne på EV3 introducerer børn til de grundlæggende elementer, der anvendes i selvkørende biler, industrielle samlebånd og CNC-maskiner. 

Vi vil tage en tegneautomat som eksempel, som kan læres til at tegne mønstre og geometriske figurer. Dette tilfælde er en forsimplet version af professionelle svejserobotter eller fræsere, og viser, hvordan EV3 kan bruges sammen med MicroPython til at undervise elever. Og desuden kan tegneautomaten markere huller på et printkort til far, men det er et andet niveau, der kræver matematiske beregninger.

Til arbejdet har vi brug for:

  • MINDSTORMS Education EV3 basis sæt; 
  • et stort stykke kvadreret papir;
  • farvede markører. 

Sammenbygningen af selve robotten er i vejledningen, og vi vil se på et eksempel på programmering.

Først initialiserer vi EV3-modulbiblioteket:

#!/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

Vi konfigurerer platformen, der drejer håndtaget som en motor i port B. Vi angiver gearforholdet for det totrins gear med antal tænder 20-12-28.

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

Vi konfigurerer løfteanordningen til håndtaget som en motor i port C:

seesaw_motor = Motor(Port.C)

Vi konfigurerer gyroskopet, der måler vinklen på håndtaget, i port 2:

gyro_sensor = GyroSensor(Port.S2)

Vi konfigurerer farvesensoren i port 3. Sensoren bruges til at bestemme det hvide papir under tegneautomaten:

color_sensor = ColorSensor(Port.S3)

Vi konfigurerer berøringssensoren i port 4. Robotten begynder at tegne, når sensoren trykkes:

touch_sensor = TouchSensor(Port.S4)

Vi definerer funktionerne, der hæver og sænker håndtaget:

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)

Definerer en funktion til at dreje penneholderen til en angivet vinkel eller indtil en bestemt vinkel nås:

def pen_holder_turn_to(target_angle):
  if target_angle > gyro_sensor.angle():

Hvis målvinklen er større end den nuværende vinkel fra gyrosensorn, fortsætter vi bevægelsen med positiv hastighed med uret:

    turntable_motor.run(70)
	
while gyro_sensor.angle() < target_angle:
  	
pass
  elif target_angle < gyro_sensor.angle():

Hvis målvinklen er mindre end den nuværende vinkel fra gyrosensoren, så bevæger vi os mod uret:

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

Stopper drejeplatformen, når målvinklen er nået:

  turntable_motor.stop(Stop.BRAKE)

Sætter pennehåndtagets startposition i den øverste position:

pen_holder_raise()

Nu kommer hoveddelen af programmet — en uendelig løkke. Først venter EV3, indtil farvesensoren opdager hvidt papir eller den blå startcelle, og trykføleren aktiveres. Derefter tegner den et mønster, vender tilbage til startpositionen og gentager alt.

Når enheden ikke er klar, bliver LED'erne på controlleren røde, og der vises et billede af "finger ned" på LCD-skærmen:

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

Venter på, at farvesensoren registrerer blå eller hvid farve, sætter LED'ernes farve til grøn, viser billedet af "finger op" på LCD-skærmen og meddeler, at enheden er klar til at arbejde:

  while color_sensor.color() not in (Color.BLUE, Color.WHITE):
	wait(10)
  brick.light(Color.GREEN)
  brick.display.image(ImageFile.THUMBS_UP)

Venter på, at trykføleren aktiveres, tildeler gyrosensoren vinkelværdien 0 og begynder at tegne:

  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)

Løfter penneholderen og returnerer den til startpositionen:

  pen_holder_raise()
  pen_holder_turn_to(0)

Sådan har vi lavet et simpelt program. Nu kører vi det og ser robottegneren i aktion. 

Hvad giver sådanne eksempler?

LEGO MINDSTORMS Education EV3 + MicroPython: programmering af børns konstruktioner i et voksent sprog

EV3 er et værktøj til karrierevejledning inden for STEM-fagene og en indgang til ingeniørfagene. Da det gør det muligt at løse praktiske opgaver, får børnene erfaring med teknisk udvikling og opbygning af industrielle robotter, lærer at modellere virkelige situationer, forstå programmer og analysere algoritmer, samt mestre grundlæggende programmeringskonstruktioner.

Understøttelsen af MicroPython gør EV3-platformen velegnet til undervisning i de ældre klasser. Eleverne kan prøve kræfter med programmering i et af de mest populære moderne sprog, blive introduceret til erhverv relateret til programmering og ingeniørprojektering. EV3-sættene viser, at det ikke er skræmmende at skrive kode, forbereder dem på alvorlige ingeniøropgaver og hjælper dem med at tage det første skridt mod at mestre tekniske fag. For dem, der arbejder i skoler og er involveret i uddannelse, har vi forberedt undervisningsprogrammer og undervisningsmaterialer. Heri er det detaljeret beskrevet, hvilke færdigheder der udvikles ved udførelsen af bestemte opgaver, og hvordan de opnåede færdigheder relaterer sig til undervisningsstandarderne.

Kilde: habr.com

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster