Üdvözöljük, Habr! Már a LEGO MINDSTORMS Education EV3 platformáról. A platform fő feladatai - gyakorlati példákon keresztül való tanulás, a STEAM készségek fejlesztése és a mérnöki gondolkodás kialakítása. Laboratóriumi munkákat végezhetünk a mechanika és dinamika tanulmányozására. A LEGO építőkockákból készült laborgépek és az adatregisztráló és -feldolgozó eszközök még érdekesebbé és szemléletesebbé teszik a kísérleteket, és segítenek a gyerekeknek jobban megérteni a fizikát. Például a diákok adatokat gyűjthetnek az olvadáspont hőmérsékletéről, és az alkalmazás segítségével ezeket rendszerezhetik és grafikon formájában bemutathatják. De ez csak a kezdet: ma arról fogunk beszélni, hogyan egészíthetjük ki ezt a készletet a MicroPython programozási környezettel és hogyan használhatjuk azt a robotika tanításához.

Programozás tanulása EV3 segítségével
A mai diákok színes eredményekre vágynak. Igen, unalmasnak találják, ha a programok csak számokat jelenítenek meg a konzolon, és színes grafikákat, diagramokat szeretnének látni, valamint olyan valódi robotokat létrehozni, amelyek mozognak és parancsokat végrehajtanak. A hagyományos kód a gyerekek számára is túl nehéznek tűnik, így a tanítást érdemes valami egyszerűbb dologgal kezdeni.
Az EV3 alap programozási környezete a LabVIEW grafikus nyelvén alapul, és lehetővé teszi a robotok algoritmusainak vizuális beállítását: a parancsok blokk formájában jelennek meg, amelyeket húzhatunk és összekapcsolhatunk.

Ez a módszer jól működik, amikor meg kell mutatni, hogyan épülnek fel az algoritmusok, de nem alkalmas a sok blokkos programokhoz. A forgatókönyvek bonyolításakor át kell térni a kód segítségével történő programozásra, de a gyerekek számára ez nehézkes lépés.
Itt van néhány trükk, az egyik az, hogy meg kell mutatni, hogy a kód ugyanazokat a feladatokat hajtja végre, mint a blokkok. Az EV3 környezetben ezt a MicroPython integrációval lehet elérni: a gyerekek ugyanazt a programot hozhatják létre az alap programozási környezetben blokkok segítségével és Python nyelven a Microsoft Visual Studio Code-jában. Látják, hogy mindkét módszer ugyanúgy működik, de kóddal könnyebben oldhatók meg a bonyolult feladatok.
Átállás MicroPython-ra
Az EV3 környezet ARM9 processzorra épül, és a fejlesztők kifejezetten nyitott architektúrát terveztek. Ez a megoldás lehetővé tette alternatív firmware-ek telepítését, az egyik ilyen a MicroPython használatára készült kép. Ez lehetővé teszi a Python nyelv használatát az EV3 programozásához, ami a készlet használatát még közelebb hozza a valós élet kihívásaihoz.
A munka megkezdéséhez le kell tölteni bármely microSD-kártyára, be kell helyezni az EV3 mikroszámítógépbe, és be kell kapcsolni. Ezután telepíteni kell Ezután elkezdhetjük a munkát.
Az első robot programozása MycroPython segítségével

Az oldalunkon több leckét is talál, amelyek segítenek a robotika alapfogalmainak elsajátításában. Az EV3 modellek megismertetik a gyerekeket azokkal az alapokkal, amelyeket az önvezető autókban, gyári szerelőrobotokban és CNC gépekben használnak.
Például egy rajzgépet veszünk, amit meg lehet tanítani mintákat és geometriai alakzatokat rajzolni. Ez az eset leegyszerűsített változata a felnőtt hegesztő- vagy marógépeknek, és bemutatja, hogyan használható az EV3 a MicroPython-nal együtt az iskolások számára. A rajzgép emellett nyílásokat is fúrhat egy nyomtatott áramkörbe az apukának, de ez már egy másik szint, ami matematikai számításokat igényel.
A munkához szükségünk lesz:
- a LEGO MINDSTORMS Education EV3 alapcsomagjára;
- egy nagy négyzetrácsos papírra;
- színes filctollakra.
A robot összeszerelése a oldalunkon található, mi pedig példát fogunk bemutatni a programozásra.
Először inicializáljuk az EV3 modul könyvtárát:
#!/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
Beállítjuk a platformot, amely az órát, mint motort a B portban forgatja. Megadjuk a kétfokozatú fogaskerék áttételét, amelynek a fogainak száma 20-12-28 azelőtt.
turntable_motor = Motor(Port.B, Direction.CLOCKWISE, [20, 12, 28])
A felemelő mechanizmust az C portban mint motort állítjuk be:
seesaw_motor = Motor(Port.C)
Beállítjuk a giroszkópot, amely a toll dőlésszögét méri, a 2-es portba:
gyro_sensor = GyroSensor(Port.S2)
Beállítjuk a színérzékelőt a 3-as portban. Az érzékelő arra szolgál, hogy észlelje a rajzgép alatt lévő fehér papírt:
color_sensor = ColorSensor(Port.S3)
Beállítjuk a tapintásérzékelőt a 4-es portban. A robot akkor kezd el rajzolni, amikor az érzékelő meg van nyomva:
touch_sensor = TouchSensor(Port.S4)
Meghatározzuk a tollat emelő és süllyesztő funkciókat:
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)
Meghatározzuk a funkciót a tolltartó adott szögbe forgatásához vagy egy megadott szögig:
def pen_holder_turn_to(target_angle):
if target_angle > gyro_sensor.angle():
Ha a cél szög nagyobb, mint az aktuális szög a giroszkóp érzékelőnél, folytatjuk az óramutató járásával megegyező irányú mozgást pozitív sebességgel:
turntable_motor.run(70)
while gyro_sensor.angle() < target_angle:
pass
elif target_angle < gyro_sensor.angle():
Ha a cél szög kisebb, mint az aktuális giroszkóp szög, akkor az óramutató járásával ellentétes irányba mozgunk:
turntable_motor.run(-70)
while gyro_sensor.angle() > target_angle:
pass
Megállítjuk a forgó platformot, amikor a cél szög elérve:
turntable_motor.stop(Stop.BRAKE)
Beállítjuk a tolltartó kezdeti pozícióját a felső helyzetbe:
pen_holder_raise()
Most következik a program fő része – a végtelen ciklus. Először az EV3 vár, amíg a színszenzor észlel egy fehér papírt vagy egy kék start mezőt, és a tapintás érzékelő megnyomásra kerül. Ezt követően mintát rajzol, visszatér a kiindulási pozícióba, és mindent megismétel.
Amikor a készülék nem készen áll, a vezérlő LED-jei piros színt vesznek fel, és a LCD-képernyőn a „lefelé mutató ujj” kép jelenik meg:
while True:
brick.light(Color.RED)
brick.display.image(ImageFile.THUMBS_DOWN)
Megvárjuk, míg a színszenzor észlel kék vagy fehér színt, beállítjuk a LED-ek színét zöldre, megjelenítjük az LCD-képernyőn a „felfelé mutató ujj” képet, és jelezzük, hogy a készülék készen áll a munkára:
while color_sensor.color() not in (Color.BLUE, Color.WHITE):
wait(10)
brick.light(Color.GREEN)
brick.display.image(ImageFile.THUMBS_UP)
Megvárjuk, amíg a tapintás érzékelő megnyomódik, a giroszkóp érzékelő szögét 0-ra állítjuk, és elkezdünk rajzolni:
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)
Megemeljük a tolltartót, és visszakerül a kiindulási pozíciójába:
pen_holder_raise()
pen_holder_turn_to(0)
Íme egy egyszerű programunk van. Most elindítjuk, és megnézzük a rajzoló robotunkat akcióban.
Milyen előnyöket nyújtanak ezek a példák?

Az EV3 egy eszköz a STEM pályákra való orientálódásra és egy belépési pont az mérnöki szakmákhoz. Mivel praktikus feladatokat lehet vele megoldani, a gyerekek tapasztalatot szereznek a technikai fejlesztések és ipari robotok létrehozásában, valós helyzetek modellezésében, programok megértésében és algoritmusok elemzésében, valamint elsajátítják a programozás alapvető elemeit.
A MicroPython támogatás lehetővé teszi az EV3 platform számára, hogy középiskolások számára is alkalmas legyen. A diákok lehetőséget kapnak arra, hogy programozóként próbálják ki magukat az egyik legnépszerűbb modern nyelven, megismerjék a programozással és mérnöki tervezéssel kapcsolatos szakmákat. Az EV3 készletek megmutatják, hogy a kódírás nem ijesztő, felkészítik őket a komoly mérnöki feladatokra, és segítenek az első lépés megtételében a technikai szakmák elsajátításában. Azok számára, akik az iskolában dolgoznak és az oktatással foglalkoznak, mi és tananyagokat kínálunk. Ezekben részletesen bemutatjuk, hogy milyen készségek alakulnak ki az egyes feladatok elvégzése során, és hogyan kapcsolódnak az elsajátított készségek az oktatási szabványokhoz.
Forrás: habr.com
