LEGO MINDSTORMS Education EV3 + MicroPython: programmering af et børnebyggesæt på voksensprog

Hej, Habr! Vi allerede fortalt om LEGO MINDSTORMS Education EV3 platformen. Hovedformålene med denne platform er læring gennem praktiske eksempler, udvikling af STEAM-færdigheder og udvikling af en ingeniørtankegang. Det kan bruges til laboratoriearbejde for at studere mekanik og dynamik. Laboratoriebænke lavet af LEGO klodser og hjælpemidler til registrering og behandling af data gør eksperimenter endnu mere interessante og visuelle og hjælper børn med bedre at forstå fysik. Elever kan for eksempel indsamle smeltepunktsdata og bruge appen til at organisere dem og præsentere dem i en graf. Men dette er kun begyndelsen: I dag vil vi fortælle dig, hvordan du supplerer dette sæt med MicroPython-programmeringsmiljøet og bruger det til at undervise i robotteknologi.

LEGO MINDSTORMS Education EV3 + MicroPython: programmering af et børnebyggesæt på voksensprog

Lær programmering ved hjælp af EV3

Moderne skolebørn ønsker at se farverige resultater. Ja, de keder sig, hvis programmet udskriver tal til konsollen, og de vil se på farvegrafer, diagrammer og skabe rigtige robotter, der bevæger sig og følger kommandoer. Almindelig kode virker også for kompliceret for børn, så det er bedre at begynde at lære med noget lettere.

Det grundlæggende EV3-programmeringsmiljø er baseret på det grafiske LabVIEW-sprog og giver dig mulighed for visuelt at angive algoritmer for robotten: kommandoer præsenteres i form af blokke, der kan trækkes og forbindes.

LEGO MINDSTORMS Education EV3 + MicroPython: programmering af et børnebyggesæt på voksensprog

Denne metode fungerer godt, når du skal vise, hvordan algoritmer er bygget op, men den egner sig ikke til programmer med et stort antal blokke. Efterhånden som scenarier bliver mere komplekse, er det nødvendigt at gå over til programmering med kode, men dette trin er svært for børn at tage. 

Der er et par tricks her, hvoraf et er at vise, at koden udfører de samme opgaver som blokkene. I EV3-miljøet er dette muligt gennem MicroPython-integration, så børn kan oprette det samme program i både det grundlæggende blokprogrammeringsmiljø og Python i Microsofts Visual Studio Code. De ser, at begge metoder fungerer ens, men det er mere bekvemt at løse komplekse problemer ved hjælp af kode.

Skifter til MicroPython

EV3-miljøet er bygget på en ARM9-processor, og udviklerne lod bevidst arkitekturen stå åben. Denne løsning gjorde det muligt at udrulle alternativ firmware, hvoraf den ene var et image til at arbejde med MicroPython. Det giver dig mulighed for at bruge Python til at programmere din EV3, hvilket bringer sættet endnu tættere på virkelige opgaver. 

For at komme i gang skal du downloade EV3 MicroPython billede på ethvert microSD-kort, skal du installere det i EV3-mikrocomputeren og tænde det. Så skal du installere gratis forlængelse til Visual Studio. Og du kan begynde at arbejde. 

Programmering af den første robot i MycroPython

LEGO MINDSTORMS Education EV3 + MicroPython: programmering af et børnebyggesæt på voksensprog

På vores Online Der er flere lektioner til at mestre de grundlæggende begreber inden for robotteknologi. EV3-modeller introducerer børn til det grundlæggende, der bruges i selvkørende biler, fabriksmonteringsrobotter og CNC-maskiner. 

Vi tager eksemplet med en tegnemaskine, som kan læres at tegne mønstre og geometriske former. Denne sag er en forenklet version af voksne svejse- eller fræserobotter og viser, hvordan EV3 kan bruges sammen med MicroPython til at undervise skolebørn. Og en tegnemaskine kan markere huller i et printkort til far, men det er et andet niveau, der kræver matematik.

Til arbejde har vi brug for:

  • LEGO MINDSTORMS Education EV3 kernesæt; 
  • stort ark ternet papir;
  • farvede markører. 

Samlingen af ​​selve robotten er inde Kørselsvejledning, og vi vil se på et programmeringseksempel.

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 sætter en platform op, der roterer håndtaget som en motor i port B. Vi indstiller gearforholdet på et to-trins gear med et antal tænder på henholdsvis 20-12-28.

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

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

seesaw_motor = Motor(Port.C)

Vi konfigurerer gyroskopet, som måler hældningsvinklen på håndtaget, i port 2:

gyro_sensor = GyroSensor(Port.S2)

Vi konfigurerer farvesensoren i port 3. Sensoren bruges til at detektere hvidt papir under tegnemaskinen:

color_sensor = ColorSensor(Port.S3)

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

touch_sensor = TouchSensor(Port.S4)

Vi definerer de funktioner, 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)

Vi definerer en funktion til at dreje håndtaget til en given vinkel eller til en bestemt vinkel:

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

Hvis målvinklen er større end den aktuelle gyrosensorvinkel, skal du fortsætte med uret med en positiv hastighed:

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

Hvis målvinklen er mindre end den aktuelle gyrosensor, så flyt mod uret:

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

Stop den roterende platform, når målvinklen er nået:

  turntable_motor.stop(Stop.BRAKE)

Indstil startpositionen for håndtaget i den øverste position:

pen_holder_raise()

Nu kommer hoveddelen af ​​programmet - en endeløs loop. EV3 venter først på, at farvesensoren registrerer et hvidt papir eller blåt startfirkant, og på at der trykkes på berøringssensoren. Så tegner han et mønster, vender tilbage til startpositionen og gentager alt igen.

Når enheden ikke er klar, lyser LED'erne på controlleren røde, og et "thumbs down"-billede vises på LCD-skærmen:

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

Vi venter, indtil farvesensoren tæller blå eller hvid, indstiller LED-farven til grøn, viser et "thumbs up"-billede på LCD-skærmen og rapporterer, at enheden er klar til brug:

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

Vi venter på, at berøringssensoren bliver trykket, tildeler vinkelværdien 0 til den gyroskopiske sensor 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øft penneholderen og sæt den tilbage til dens oprindelige position:

  pen_holder_raise()
  pen_holder_turn_to(0)</i>

Dette er det enkle program, vi har lavet. Og nu lancerer vi den og ser på tegnerobotten i aktion. 

Hvad giver sådanne eksempler?

LEGO MINDSTORMS Education EV3 + MicroPython: programmering af et børnebyggesæt på voksensprog

EV3 er et karrierevejledningsværktøj til STEM-karrierer og et indgangspunkt til ingeniørkarrierer. Da det kan bruges til at løse praktiske problemer, får børn erfaring med teknisk udvikling og skabelse af industrirobotter, lærer at simulere virkelige situationer, forstå programmer og analysere algoritmer og mestre grundlæggende programmeringskonstruktioner.

MicroPython-understøttelse gør EV3-platformen velegnet til gymnasieundervisning. Studerende kan prøve sig som programmører på et af de mest populære moderne sprog og stifte bekendtskab med erhverv relateret til programmering og ingeniørdesign. EV3-sæt viser, at kodning ikke er skræmmende, forbereder dig til seriøse tekniske udfordringer og hjælper dig med at tage det første skridt mod at mestre tekniske færdigheder. Og for dem, der arbejder i skoler og er tilknyttet uddannelse, har vi forberedt lektionsprogrammer og undervisningsmateriale. De beskriver i detaljer, hvilke færdigheder der udvikles, når man udfører bestemte opgaver, og hvordan de erhvervede færdigheder relaterer sig til træningsstandarder.

Kilde: www.habr.com

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