Hej, Habr! Vi har redan om plattformen LEGO MINDSTORMS Education EV3. HuvudmÄlen med denna plattform Àr praktiskt lÀrande, utveckling av STEAM-fÀrdigheter och frÀmjande av ingenjörstÀnkande. Den kan anvÀndas för laboratoriearbeten inom mekanik och dynamik. Laboratoriestationerna av LEGO-klossar och verktyg för insamling och bearbetning av data gör experimenten Ànnu mer intressanta och illustrativa, vilket hjÀlper barn att bÀttre förstÄ fysik. Till exempel kan eleverna samla in data om smÀltpunkten och med hjÀlp av en app systematisera dem och presentera dem i form av diagram. Men det hÀr Àr bara början: idag kommer vi att berÀtta hur man kompletterar detta kit med programmeringsmiljön MicroPython och anvÀnder den för att lÀra sig robotteknik.

Vi lÀr ut programmering med EV3
Moderna elever vill se en fÀrgglad resultat. Ja, de tycker det Àr trÄkigt om programmet skriver ut siffror i konsolen, och de vill se fÀrgglada diagram och skapa riktiga robotar som rör sig och utför kommandon. Vanlig kod verkar ocksÄ för komplicerat för barn, sÄ det Àr bÀttre att börja med nÄgot lÀttare.
Den grundlÀggande programmeringsmiljön EV3 Àr skapad baserat pÄ det grafiska sprÄket LabVIEW och gör det möjligt att visuellt stÀlla in algoritmer för roboten: kommandon presenteras som block som kan dras och kopplas samman.

Denna metod fungerar bra nĂ€r man ska visa hur algoritmer byggs, men den Ă€r inte lĂ€mplig för program med mĂ„nga block. NĂ€r manusen blir mer komplexa mĂ„ste man gĂ„ över till programmering med kod, men barn har svĂ„rt för att ta det steget.Â
Det finns nÄgra knep hÀr, varav en Àr att visa att koden utför samma uppgifter som blocken. I EV3-miljön kan barnen skapa samma program i den grundlÀggande programmeringsmiljön med hjÀlp av block och pÄ Python-sprÄket i Visual Studio Code frÄn Microsoft. De ser att bÄda metoderna fungerar pÄ samma sÀtt, men att det Àr smidigare att lösa komplexa uppgifter med kod.
Vi gÄr över till MicroPython
EV3-plattformen Ă€r baserad pĂ„ ARM9-processorn, och utvecklarna har medvetet lĂ€mnat arkitekturen öppen. Denna lösning gör det möjligt att installera alternativa firmware, varav en Ă€r bilden för att arbeta med MicroPython. Det gör att Python kan anvĂ€ndas för programmering av EV3, vilket gör arbetet med uppsĂ€ttningen Ă€nnu mer i linje med verkliga livsuppgifter.Â
För att börja arbeta behöver du ladda ner till ett vilket microSD-kort som helst, installera det i EV3-mikrodatorn och slĂ„ pĂ„ den. Sedan behöver du installera för Visual Studio. Och sĂ„ kan du börja arbeta.Â
Programmerar den första roboten med MicroPython

PĂ„ vĂ„r finns det flera lektioner för att lĂ€ra sig grundlĂ€ggande begrepp inom robotik. Modellerna pĂ„ EV3 introducerar barn till grunderna som anvĂ€nds i sjĂ€lvstyrande bilar, fabriksrobotar och CNC-maskiner.Â
Vi kommer att ta en ritmaskin som exempel, som kan lÀras att rita mönster och geometriska figurer. Detta fall Àr en förenklad version av vuxna svetsrobotar eller frÀsmaskiner och visar hur man kan anvÀnda EV3 i kombination med MicroPython för att utbilda skolbarn. Dessutom kan ritmaskinen mÀrka hÄl i en kretskort för pappa, men det Àr en annan nivÄ som krÀver matematisk berÀkning.
För arbetet behöver vi:
- En grunduppsĂ€ttning av LEGO MINDSTORMS Education EV3;Â
- Ett stort rutat papper;
- FĂ€rgade marker.Â
Monteringen av sjÀlva roboten finns i , men vi kommer att titta pÄ ett exempel pÄ programmering.
Först initialiserar 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 stÀller in plattformen som snurrar handtaget som en motor i port B. Vi anger utvÀxlingsförhÄllandet för den tvÄstegs kugghjulet med antalet tÀnder 20-12-28.
turntable_motor = Motor(Port.B, Direction.CLOCKWISE, [20, 12, 28])
Vi stÀller in lyftmekanismen för handtaget som en motor i port C:
seesaw_motor = Motor(Port.C)
Vi stÀller in gyroskopet som mÀter lutningsvinkeln för handtaget i port 2:
gyro_sensor = GyroSensor(Port.S2)
Vi stÀller in fÀrgsensorn i port 3. Sensorn anvÀnds för att identifiera det vita papperet under ritmaskinen:
color_sensor = ColorSensor(Port.S3)
Vi stÀller in trycksensorn i port 4. Robotens början att rita sker nÀr sensorn trycks:
touch_sensor = TouchSensor(Port.S4)
Vi definierar funktioner som höjer och sÀnker handtaget:
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)
Definiera en funktion för att vrida pennhÄllaren till en angiven vinkel eller tills en viss vinkel uppnÄs:
def pen_holder_turn_to(target_angle):
if target_angle > gyro_sensor.angle():
Om den angivna vinkeln Àr större Àn den aktuella vinkeln pÄ gyrosensorn fortsÀtter vi att röra oss medurs med positiv hastighet:
    turntable_motor.run(70)
while gyro_sensor.angle() < target_angle:
pass
elif target_angle < gyro_sensor.angle():
Om den angivna vinkeln Àr mindre Àn den aktuella vinkeln pÄ gyrosensorn rör vi oss moturs:
    turntable_motor.run(-70)
while gyro_sensor.angle() > target_angle:
pass
Stoppa den roterande plattformen nÀr den angivna vinkeln har uppnÄtts:
  turntable_motor.stop(Stop.BRAKE)
StÀll in pennhÄllarens ursprungliga lÀge i övre lÀget:
pen_holder_raise()
Nu kommer huvuddelen av programmet â en oĂ€ndlig loop. Först vĂ€ntar EV3 pĂ„ att fĂ€rgsensorn ska upptĂ€cka vit papper eller den blĂ„ startcellen, och att trycksensorn ska tryckas ned. Sedan ritar den ett mönster, Ă„tervĂ€nder till ursprungspositionen och upprepar allt igen.
NÀr enheten inte Àr klar lyser LED-lamporna pÄ kontrolleraren rött, och pÄ LCD-skÀrmen visas bilden "tumme ner":
while True:
brick.light(Color.RED)
brick.display.image(ImageFile.THUMBS_DOWN)
VÀnta tills fÀrgsensorn ser blÄ eller vit, sÀtt LED-lamporna till grönt, visa bilden "tumme upp" pÄ LCD-skÀrmen och informera om att enheten Àr redo att anvÀnda:
  while color_sensor.color() not in (Color.BLUE, Color.WHITE):
wait(10)
brick.light(Color.GREEN)
brick.display.image(ImageFile.THUMBS_UP)
VÀnta pÄ trycksensorns tryckning, sÀtt gyrosensorns vinkel till 0 och börja rita:
  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)
Höj pennhÄllaren och Äterför den till ursprungspositionen:
  pen_holder_raise()
pen_holder_turn_to(0)<\/i>
SĂ„ hĂ€r har vi skapat ett enkelt program. Nu kör vi det och ser vĂ„r ritrobot i aktion.Â
Vad ger sÄdana exempel?

EV3 Àr ett verktyg för yrkesorientering inom STEM-yrken och en ingÄngspunkt till ingenjörsspecialiteter. Eftersom det möjliggör lösning av praktiska uppgifter fÄr barn erfarenhet av tekniska utvecklingar och skapande av industriella robotar, lÀr sig att modellera verkliga situationer, förstÄ program och analysera algoritmer samt bemÀstra grundlÀggande programmeringskonstruktioner.
Stödet för MicroPython gör EV3-plattformen lÀmplig för undervisning pÄ gymnasiet. Elever kan prova pÄ att vara programmerare pÄ ett av de mest populÀra moderna sprÄken, bekanta sig med yrken kopplade till programmering och ingenjörsprojekt. EV3-seten visar att det inte Àr svÄrt att skriva kod, förbereder för allvarliga ingenjörsuppgifter och hjÀlper till att ta det första steget mot att bemÀstra tekniska yrken. För dem som arbetar i skolan och Àr kopplade till utbildning har vi förberett och utbildningsmaterial. Dessa beskriver noggrant vilka fÀrdigheter som utvecklas vid genomförandet av olika uppgifter och hur de inhÀmtade fÀrdigheterna relaterar till utbildningsstandarder.
KĂ€lla: habr.com
