LEGO MINDSTORMS Education EV3 + MicroPython: programmera barnens byggsats med ett vuxensprÄk

Hej, Habr! Vi har redan om hur de tillĂ€mpar teknologin för en ovanlig uppgift — att hitta fel i rubriker.) I slutĂ€ndan lyckades vi automatisera upp till 90 % av flödet beroende pĂ„ tjĂ€nsten. 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.

LEGO MINDSTORMS Education EV3 + MicroPython: programmera barnens byggsats med ett vuxensprÄk

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.

LEGO MINDSTORMS Education EV3 + MicroPython: programmera barnens byggsats med ett vuxensprÄk

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 EV3 MicroPython-bilden till ett vilket microSD-kort som helst, installera det i EV3-mikrodatorn och slÄ pÄ den. Sedan behöver du installera det kostnadsfria tillÀgget för Visual Studio. Och sÄ kan du börja arbeta. 

Programmerar den första roboten med MicroPython

LEGO MINDSTORMS Education EV3 + MicroPython: programmera barnens byggsats med ett vuxensprÄk

PÄ vÄr webbplats 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 instruktionerna, 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?

LEGO MINDSTORMS Education EV3 + MicroPython: programmera barnens byggsats med ett vuxensprÄk

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 undervisningsprogram 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

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster