Bok, Habr! Već smo o platformi LEGO MINDSTORMS Education EV3. Glavni ciljevi ove platforme su praktično učenje, razvoj STEAM vještina i oblikovanje inženjerskog razmišljanja. U njoj se mogu provoditi laboratorijski radovi za proučavanje mehanike i dinamike. Laboratorijski setovi od LEGO kocaka i alati za registraciju i obradu podataka čine eksperimentiranje još zanimljivijim i preglednijim te pomažu djeci da bolje razumiju fiziku. Na primjer, učenici mogu prikupiti podatke o temperaturi taljenja i, koristeći aplikaciju, sustavno ih obraditi i predstaviti u obliku grafikona. No, to je samo početak: danas ćemo govoriti o tome kako dopuniti ovaj set programskim okruženjem MicroPython i koristiti ga za poučavanje robotike.

Učimo programiranje pomoću EV3
Suvremeni učenici žele vidjeti šareni rezultat. Da, dosadno im je kada program ispisuje brojeve u konzolu, a žele razgledavati šarene grafikone, dijagrame i stvarati prave robote koji se kreću i izvode naredbe. Običan kod također im se čini presloženim, pa je bolje započeti s nečim lakšim.
Osnovno programsko okruženje EV3 izgrađeno je na temelju grafičkog jezika LabVIEW i omogućuje vizualno postavljanje algoritama za robota: naredbe su prikazane u obliku blokova koje se mogu povlačiti i spajati.

Ovaj pristup dobro funkcionira kada je potrebno pokazati kako se grade algoritmi, ali nije prikladan za programe s velikim brojem blokova. Kada se scenariji zakompliciraju, potrebno je preći na programiranje pomoću koda, ali djeci je teško napraviti taj korak.
Postoji nekoliko trikova, jedan od njih je pokazati da kod izvodi iste zadatke kao i blokovi. U EV3 okruženju to se može učiniti zahvaljujući integraciji s MicroPython: djeca stvaraju isti program u osnovnom programskom okruženju pomoću blokova i na jeziku Python u Visual Studio Code od Microsofta. Vide da oba pristupa rade na isti način, ali je lakše rješavati složenije zadatke kodom.
Prelazimo na MicroPython
EV3 platforma temelji se na ARM9 procesoru, a programeri su namerno ostavili arhitekturu otvorenom. Ovo rešenje omogućava instalaciju alternativnih firmware-a, od kojih je jedan slika za rad sa MicroPython-om. To omogućava korišćenje Pythona za programiranje EV3, što čini rad sa kompletom još bližim stvarnim zadacima.
Da biste počeli raditi, potrebno je preuzeti na bilo koju microSD karticu, instalirati je u EV3 mikroračunar i uključiti ga. Zatim je potrebno instalirati za Visual Studio. I možete početi rad.
Programiramo prvog robota na MycroPython-u

Na našem nalazi se nekoliko lekcija za ovladavanje osnovnim konceptima robotike. Modeli na EV3 upoznaju decu sa osnovama koje se koriste u samostalnim automobilima, robotskim montažnim linijama i CNC mašinama.
Uzećemo kao primer crtačku mašinu koju možemo naučiti da crta obrasce i geometrijske oblike. Ovaj slučaj predstavlja pojednostavljenu verziju odraslih robota za zavarivanje ili friziranje i pokazuje kako se EV3 može koristiti zajedno sa MicroPython-om za obuku učenika. A crtačka mašina može da označi rupe na štampanoj ploči za tatu, ali to je već drugi nivo koji zahteva matematičke proračune.
Za rad nam je potrebno:
- osnovni LEGO MINDSTORMS Education EV3 set;
- veliki list kariranog papira;
- šarene markere.
Sastavljanje samog robota možete naći u , a mi ćemo razmotriti primer programiranja.
Prvo inicijalizujemo EV3 modul biblioteku:
#!/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
Podešavamo platformu koja pokreće olovku kao motor u portu B. Postavljamo prenosni odnos dvostepene zupčaste prenosi sa brojem zuba 20-12-28, redom.
turntable_motor = Motor(Port.B, Direction.CLOCKWISE, [20, 12, 28])
Podešavamo mehanizam za podizanje olovke kao motor u portu C:
seesaw_motor = Motor(Port.C)
Podešavamo žiroskop koji meri ugao nagiba olovke u portu 2:
gyro_sensor = GyroSensor(Port.S2)
Podešavamo kolor senzor u portu 3. Senzor se koristi za određivanje bele papirne površine ispod crtačke mašine:
color_sensor = ColorSensor(Port.S3)
Podešavamo dodirni senzor u portu 4. Robot počinje da crta kada se senzor pritisne:
touch_sensor = TouchSensor(Port.S4)
Definišemo funkcije koje podižu i spuštaju olovku:
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)
Definiramo funkciju za okretanje držača olovke do određenog kuta ili do određenog kuta:
def pen_holder_turn_to(target_angle):
if target_angle > gyro_sensor.angle():
Ako je ciljni kut veći od trenutnog kuta žiroskopske sonda, nastavljamo se kretati u smjeru kazaljke na satu s pozitivnom brzinom:
turntable_motor.run(70)
while gyro_sensor.angle() < target_angle:
pass
elif target_angle < gyro_sensor.angle():
Ako je ciljni kut manji od trenutnog kuta žiroskopske sonda, pomičemo se u smjeru suprotnom od kazaljke na satu:
turntable_motor.run(-70)
while gyro_sensor.angle() > target_angle:
pass
Zaustavljamo rotirajuću platformu kada se dostigne ciljni kut:
turntable_motor.stop(Stop.BRAKE)
Postavljamo početnu poziciju držača olovke u gornju poziciju:
pen_holder_raise()
Sada slijedi glavni dio programa — beskonačna petlja. Prvo EV3 čeka kada senzor boje otkrije bijeli papir ili plavu startnu ćeliju te kada se senzor dodira pritisne. Zatim crta uzorak, vraća se u početnu poziciju i ponavlja sve iznova.
Kada uređaj nije spreman, LED svjetla na kontroleru postaju crvena, a na LCD ekranu prikazuje se slika „palac dolje“:
while True:
brick.light(Color.RED)
brick.display.image(ImageFile.THUMBS_DOWN)
Čekamo da senzor boje prepozna plavu ili bijelu boju, postavljamo boju LED svjetala na zelenu, prikazujemo na LCD ekranu sliku „palac gore“ i signaliziramo da je uređaj spreman za rad:
while color_sensor.color() not in (Color.BLUE, Color.WHITE):
wait(10)
brick.light(Color.GREEN)
brick.display.image(ImageFile.THUMBS_UP)
Čekamo pritisak senzora dodira, postavljamo žiroskopskoj sondi vrijednost kuta 0 i započinjemo crtanje:
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)
Podižemo držač olovke i vraćamo ga u početnu poziciju:
pen_holder_raise()
pen_holder_turn_to(0)<\/i>
Evo ovakvog jednostavnog programa smo dobili. A sada ga pokrećemo i gledamo robota crtača u akciji.
Što donose ovakvi primjeri

EV3 je alat za profesionalnu orijentaciju unutar STEM profesija i ulazna točka u inženjerske specijalnosti. Budući da se na njemu mogu rješavati praktični zadaci, djeca stječu iskustvo u tehničkim razvojnim projektima i stvaranju industrijskih robota, uče modelirati stvarne situacije, razumjeti programe i analizirati algoritme, te ovladavaju temeljnim konstruktima programiranja.
Podrška za MicroPython čini platformu EV3 pogodnom za podučavanje u višim razredima. Učenici mogu isprobati ulogu programera na jednom od najpopularnijih suvremenih jezika, upoznati se s profesijama vezanim uz programiranje i inženjersko projektiranje. EV3 setovi pokazuju da pisanje koda nije zastrašujuće, pripremaju za ozbiljne inženjerske zadatke i pomažu napraviti prvi korak prema osposobljavanju za tehničke specijalnosti. A za one koji rade u školama i povezanima s obrazovanjem, pripremili smo i nastavne materijale. U njima je detaljno objašnjeno koji se vještine razvijaju rješavanjem određenih zadataka i kako se stečene vještine odnose prema obrazovnim standardima.
Izvor: habr.com
