LEGO MINDSTORMS Education EV3 + MicroPython: programujeme dětskou stavebnici dospělým jazykem

Ahoj, Habr! Už se psali o platformě LEGO MINDSTORMS Education EV3. Hlavní úkoly této platformy – učení na praktických příkladech, rozvoj dovedností STEAM a formování inženýrského myšlení. Lze zde provádět laboratorní práce zaměřené na studium mechaniky a dynamiky. Laboratorní stanice vyrobené z LEGO kostek a nástroje pro sběr a zpracování dat činí experimenty ještě zajímavější a názornější a pomáhají dětem lépe pochopit fyziku. Například žáci mohou shromáždit data o teplotě tání a pomocí aplikace je zpracovat a představit ve formě grafu. Ale to je teprve začátek: dnes vám ukážeme, jak doplnit tuto sadu prostředím programování MicroPython a používat ji pro výuku robotiky.

LEGO MINDSTORMS Education EV3 + MicroPython: programujeme dětskou stavebnici dospělým jazykem

Učíme programování pomocí EV3

Současní školáci chtějí vidět barevný výsledek. Ano, nudí je, když program vypisuje čísla do konzole, a chtějí si prohlížet barevné grafy, diagramy a tvořit skutečné roboty, kteří se pohybují a plní příkazy. Běžný kód připadá dětem také moc složitý, proto je lepší začít s něčím jednodušším.

Základní prostředí programování EV3 je vytvořeno na základě grafického jazyka LabVIEW a umožňuje vizuálně nastavovat algoritmy pro robota: příkazy jsou prezentovány ve formě bloků, které lze přetahovat a spojovat.

LEGO MINDSTORMS Education EV3 + MicroPython: programujeme dětskou stavebnici dospělým jazykem

Tento způsob se dobře osvědčuje, když je třeba ukázat, jak se budují algoritmy, ale není vhodný pro programy s velkým množstvím bloků. Při komplikaci scénářů je nutné přejít na programování pomocí kódu, ale pro děti je obtížné tento krok udělat. 

Existuje zde několik triků, jedním z nichž je ukázat, že kód vykonává ty samé úkoly, co bloky. V prostředí EV3 to lze udělat díky integraci s MicroPython: děti vytvářejí stejný program v základním prostředí programování pomocí bloků a v jazyce Python ve Visual Studio Code od Microsoftu. Vidí, že oba způsoby fungují stejně, ale kód je pohodlnější pro řešení složitých úloh.

Přecházíme na MicroPython

Platforma EV3 je postavena na architektuře procesoru ARM9 a vývojáři záměrně ponechali otvorené rozhraní. Toto řešení umožnilo instalaci alternativních firmware, z nichž jedním je obraz pro práci s MicroPython. Ten umožňuje používat Python pro programování EV3, což přibližuje práci s tímto setem úlohám z reálného života. 

Abychom mohli začít, je třeba stáhnout obraz EV3 MicroPython na jakoukoli microSD kartu, vložit ji do mikropočítače EV3 a zapnout ho. Poté je třeba nainstalovat bezplatné rozšíření pro Visual Studio. A můžeme se pustit do práce. 

Programujeme prvního robota na MicroPython

LEGO MINDSTORMS Education EV3 + MicroPython: programujeme dětskou stavebnici dospělým jazykem

Na našem webu je několik lekcí pro osvojení základních pojmů robotiky. Modely na EV3 seznamují děti se základy, které se využívají v autonomních automobilech, výrobních robotických montážních linkách nebo CNC strojích. 

Vezmeme si příklad rýsovacího stroje, který se naučí kreslit vzory a geometrické tvary. Tento případ je zjednodušenou verzí pokročilých svářecích nebo frézovacích robotů a ukazuje, jak lze využít EV3 ve spojení s MicroPython pro výuku žáků. A ještě rýsovací stroj může označit otvory v tištěném obvodu pro tatínka, ale to už je jiná úroveň, která vyžaduje matematické výpočty.

Na práci potřebujeme:

  • základní sadu LEGO MINDSTORMS Education EV3; 
  • velký list čtverečkovaného papíru;
  • barevné fixy. 

Sestavení samotného robota je v instrukci, a my se zaměříme na příklad programování.

Nejprve inicializujeme knihovnu modulů EV3:

#!/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

Nastavujeme platformu, která otáčí rukojetí jako motor v portu B. Určujeme převodový poměr dvoustupňové převodovky s počtem zubů 20-12-28.

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

Nastavujeme zvedací mechanizmus pro rukojeť jako motor v portu C:

seesaw_motor = Motor(Port.C)

Nastavujeme gyroskop, který měří úhel sklonu rukojeti, v portu 2:

gyro_sensor = GyroSensor(Port.S2)

Nastavujeme barevný senzor v portu 3. Senzor se používá k určení bílé papíru pod rýsovacím strojem:

color_sensor = ColorSensor(Port.S3)

Nastavujeme dotykový senzor v portu 4. Robot začne kreslit, když je senzor stlačen:

touch_sensor = TouchSensor(Port.S4)

Definujeme funkce, které zvedají a spouštějí rukojeť:

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)

Definujeme funkci pro otočení držáku pera na zadaný úhel nebo do určitého úhlu:

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

Pokud je cílový úhel větší než aktuální úhel gyroskopického senzoru, pokračujeme v pohybu po směru hodinových ručiček s kladnou rychlostí:

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

Pokud je cílový úhel menší než aktuální úhel gyroskopického senzoru, pak se pohybujeme proti směru hodinových ručiček:

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

Zastavujeme otáčející se platformu, když je cílový úhel dosažen:

  turntable_motor.stop(Stop.BRAKE)

Nastavujeme počáteční polohu držáku pera do horní polohy:

pen_holder_raise()

Nyní přichází hlavní část programu — nekonečná smyčka. Nejprve EV3 čeká, až senzor barvy detekuje bílý papír nebo modrou startovní buňku, a senzor dotyku bude stisknut. Poté vykreslí vzor, vrátí se do výchozí polohy a vše zopakuje.

Když zařízení není připraveno, LED diody na ovladači svítí červeně a na LCD displeji se zobrazuje obrázek „palec dolů“:

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

Čekáme, až senzor barvy rozpozná modrou nebo bílou barvu, nastavíme barvu LED diod na zelenou, zobrazíme na LCD displeji obrázek „palec nahoru“ a oznámíme, že zařízení je připraveno k práci:

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

Čekáme na stisknutí dotykového senzoru, přidělíme gyroskopickému senzoru hodnotu úhlu 0 a začneme kreslit:

  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)

Zvedáme držák pera a vracíme ho do výchozí polohy:

  pen_holder_raise()
  pen_holder_turn_to(0)

Takový jednoduchý program jsme vytvořili. A nyní ho spouštíme a sledujeme robota-kreslíře v akci. 

Jaké přínosy přinášejí takové příklady

LEGO MINDSTORMS Education EV3 + MicroPython: programujeme dětskou stavebnici dospělým jazykem

EV3 je nástroj pro profesní orientaci v oborech STEM a vstupní bod do inženýrských oborů. Díky možnosti řešit praktické úkoly získávají děti zkušenosti s technickými projekty a stavbou průmyslových robotů, učí se modelovat skutečné situace, porozumět programům a analyzovat algoritmy, osvojí si základní konstrukce programování.

Podpora MicroPythonu činí platformu EV3 vhodnou pro výuku na středních školách. Žáci si mohou vyzkoušet roli programátorů v jednom z nejpopulárnějších moderních jazyků, seznamují se s profesemi souvisejícími s programováním a inženýrským projektováním. Sady EV3 ukazují, že psaní kódu není strašidelné, připravují k vážným inženýrským úkolům a pomáhají učinit první krok k ovládnutí technických oborů. A pro ty, kteří pracují ve škole a mají co do činění s vzděláváním, máme připraveny programy lekcí a vzdělávací materiály. Tyto materiály podrobně popisují, jaké dovednosti se rozvíjejí při plnění různých úkolů a jak se získané dovednosti vztahují ke vzdělávacím standardům.

Zdroj: habr.com

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster