LEGO MINDSTORMS Education EV3 + MicroPython: programmering av et byggesett for barn på voksenspråk

Hei, Habr! Vi allerede fortalte om LEGO MINDSTORMS Education EV3-plattformen. Hovedmålene med denne plattformen er å lære gjennom praktiske eksempler, utvikle STEAM-ferdigheter og utvikle en ingeniørtankegang. Den kan brukes til laboratoriearbeid for å studere mekanikk og dynamikk. Laboratoriebenker laget av LEGO-klosser og verktøy for registrering og behandling av data gjør eksperimenter enda mer interessante og visuelle og hjelper barn å forstå fysikk bedre. Elever kan for eksempel samle inn smeltepunktdata og bruke appen til å organisere dem og presentere dem i en graf. Men dette er bare begynnelsen: i dag vil vi fortelle deg hvordan du kan utfylle dette settet med MicroPython-programmeringsmiljøet og bruke det til å lære bort robotikk.

LEGO MINDSTORMS Education EV3 + MicroPython: programmering av et byggesett for barn på voksenspråk

Lær programmering med EV3

Moderne skolebarn ønsker å se fargerike resultater. Ja, de kjeder seg hvis programmet skriver ut tall til konsollen, og de vil se på fargegrafer, diagrammer og lage ekte roboter som beveger seg og følger kommandoer. Vanlig kode virker også for komplisert for barn, så det er bedre å begynne å lære med noe enklere.

Det grunnleggende EV3-programmeringsmiljøet er basert på det grafiske språket LabVIEW og lar deg spesifisere algoritmer for roboten visuelt: kommandoer presenteres i form av blokker som kan dras og kobles til.

LEGO MINDSTORMS Education EV3 + MicroPython: programmering av et byggesett for barn på voksenspråk

Denne metoden fungerer bra når du skal vise hvordan algoritmer er bygget opp, men den egner seg ikke for programmer med et stort antall blokker. Etter hvert som scenarier blir mer komplekse, er det nødvendig å gå over til programmering med kode, men dette trinnet er vanskelig for barn å ta. 

Det er noen få triks her, hvorav ett er å vise at koden gjør det samme som blokkene. I EV3-miljøet er dette mulig gjennom MicroPython-integrasjon, slik at barn kan lage det samme programmet i både det grunnleggende blokkprogrammeringsmiljøet og Python i Microsofts Visual Studio Code. De ser at begge metodene fungerer likt, men å løse komplekse problemer ved hjelp av kode er mer praktisk.

Bytter til MicroPython

EV3-miljøet er bygget på en ARM9-prosessor, og utviklerne lot arkitekturen bevisst være åpen. Denne løsningen gjorde det mulig å rulle ut alternativ firmware, hvorav en var et bilde for arbeid med MicroPython. Den lar deg bruke Python til å programmere EV3-en din, og bringer settet enda nærmere virkelige oppgaver. 

For å komme i gang må du laste ned EV3 MicroPython-bilde på et hvilket som helst microSD-kort, installer det i EV3-mikrodatamaskinen og slå det på. Deretter må du installere gratis utvidelse for Visual Studio. Og du kan begynne å jobbe. 

Programmering av den første roboten i MycroPython

LEGO MINDSTORMS Education EV3 + MicroPython: programmering av et byggesett for barn på voksenspråk

På vår nettsted Det er flere leksjoner for å mestre de grunnleggende konseptene innen robotikk. EV3-modeller introduserer barn til det grunnleggende som brukes i selvkjørende biler, fabrikkmonteringsroboter og CNC-maskiner. 

Vi tar eksemplet med en tegnemaskin, som kan læres å tegne mønstre og geometriske former. Denne saken er en forenklet versjon av voksne sveise- eller freseroboter og viser hvordan EV3 kan brukes sammen med MicroPython for å lære skolebarn. Og en tegnemaskin kan merke hull i et kretskort for far, men det er et annet nivå som krever matematikk.

For arbeid trenger vi:

  • LEGO MINDSTORMS Education EV3 kjernesett; 
  • stort ark med rutete papir;
  • fargede markører. 

Monteringen av selve roboten er inne instruksjoner, og vi skal 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 setter opp en plattform som roterer håndtaket som en motor i port B. Vi setter girforholdet til et to-trinns girtog med et antall tenner på henholdsvis 20-12-28.

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

Vi konfigurerer løftemekanismen for håndtaket som en motor i port C:

seesaw_motor = Motor(Port.C)

Vi konfigurerer gyroskopet, som måler helningsvinkelen til håndtaket, i port 2:

gyro_sensor = GyroSensor(Port.S2)

Vi konfigurerer fargesensoren i port 3. Sensoren brukes til å oppdage hvitt papir under tegnemaskinen:

color_sensor = ColorSensor(Port.S3)

Vi konfigurerer berøringssensoren i port 4. Roboten begynner å tegne når sensoren trykkes inn:

touch_sensor = TouchSensor(Port.S4)

Vi definerer funksjonene som hever og senker håndtaket:

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 funksjon for å rotere håndtaket til en gitt vinkel eller til en viss vinkel:

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

Hvis målvinkelen er større enn gjeldende gyrosensorvinkel, fortsett med klokken med positiv hastighet:

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

Hvis målvinkelen er mindre enn gjeldende gyrosensor, flytt deretter mot klokken:

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

Stopp den roterende plattformen når målvinkelen er nådd:

  turntable_motor.stop(Stop.BRAKE)

Sett utgangsposisjonen til håndtaket i øvre posisjon:

pen_holder_raise()

Nå kommer hoveddelen av programmet - en endeløs loop. EV3 venter først på at fargesensoren oppdager et hvitt papir eller blått startfirkant og at berøringssensoren trykkes inn. Så tegner han et mønster, går tilbake til startposisjonen og gjentar alt igjen.

Når enheten ikke er klar, blir lysdiodene på kontrolleren røde og et "tommel ned"-bilde vises på LCD-skjermen:

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

Vi venter til fargesensoren teller blått eller hvitt, setter LED-fargen til grønn, viser et "tommel opp"-bilde på LCD-skjermen og rapporterer at enheten er klar til bruk:

  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 skal trykkes, tilordner vinkelverdien 0 til den gyroskopiske sensoren og begynner å 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 sett den tilbake til sin opprinnelige posisjon:

  pen_holder_raise()
  pen_holder_turn_to(0)</i>

Dette er det enkle programmet vi har laget. Og nå lanserer vi den og ser på tegneroboten i aksjon. 

Hva gir slike eksempler?

LEGO MINDSTORMS Education EV3 + MicroPython: programmering av et byggesett for barn på voksenspråk

EV3 er et karriereveiledningsverktøy for STEM-karrierer og et inngangspunkt til ingeniørkarrierer. Siden det kan brukes til å løse praktiske problemer, får barn erfaring med teknisk utvikling og skaping av industriroboter, lærer å simulere virkelige situasjoner, forstå programmer og analysere algoritmer, og mestre grunnleggende programmeringskonstruksjoner.

MicroPython-støtte gjør EV3-plattformen egnet for videregående undervisning. Studentene kan prøve seg som programmerere på et av de mest populære moderne språkene, og bli kjent med yrker knyttet til programmering og ingeniørdesign. EV3-sett viser at koding ikke er skummelt, forbereder deg på alvorlige tekniske utfordringer og hjelper deg å ta det første skrittet mot å mestre tekniske ferdigheter. Og for de som jobber i skolen og er tilknyttet utdanning, har vi forberedt leksjonsprogrammer og undervisningsmateriell. De beskriver i detalj hvilke ferdigheter som utvikles når man utfører visse oppgaver, og hvordan de oppnådde ferdighetene relaterer seg til treningsstandarder.

Kilde: www.habr.com

Kjøp pålitelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere 🔥 Kjøp pålitelig webhotell med DDoS-beskyttelse, VPS VDS-servere | ProHoster