Zdravo, Habr! Već smo o LEGO MINDSTORMS Education EV3 platformi. Glavni ciljevi ove platforme su učenje kroz praktične primjere, razvoj STEAM vještina i razvoj inženjerskog načina razmišljanja. Može se koristiti za laboratorijske radove za proučavanje mehanike i dinamike. Laboratorijske klupe napravljene od LEGO kockica i alati za snimanje i obradu podataka čine eksperimente još zanimljivijim i vizualnijim i pomažu djeci da bolje razumiju fiziku. Na primjer, učenici mogu prikupiti podatke o tački topljenja i koristiti aplikaciju da ih organiziraju i prezentiraju u grafikonu. Ali ovo je tek početak: danas ćemo vam reći kako ovaj set dopuniti programskim okruženjem MicroPython i koristiti ga za podučavanje robotike.

Naučite programirati koristeći EV3
Moderni školarci žele da vide šarene rezultate. Da, dosadno im je ako program ispisuje brojeve na konzolu, i žele da gledaju grafikone u boji, dijagrame i kreiraju prave robote koji se kreću i prate komande. Obični kod se također čini previše kompliciranim za djecu, pa je bolje početi učiti s nečim lakšim.
Osnovno EV3 programsko okruženje bazirano je na LabVIEW grafičkom jeziku i omogućava vam da vizualno specificirate algoritme za robota: komande su predstavljene u obliku blokova koji se mogu prevući i povezati.

Ova metoda dobro funkcionira kada trebate pokazati kako su algoritmi izgrađeni, ali nije prikladna za programe s velikim brojem blokova. Kako scenariji postaju složeniji, potrebno je prijeći na programiranje sa kodom, ali je djeci ovaj korak teško poduzeti.
Ovdje postoji nekoliko trikova, od kojih je jedan pokazati da kod radi istu stvar kao i blokovi. U EV3 okruženju, to je moguće kroz MicroPython integraciju, tako da djeca mogu kreirati isti program u osnovnom okruženju blok programiranja i Python-u u Microsoftovom Visual Studio Code-u. Oni vide da obje metode rade isto, ali rješavanje složenih problema korištenjem koda je praktičnije.
Prelazak na MicroPython
EV3 okruženje je izgrađeno na ARM9 procesoru, a programeri su arhitekturu namjerno ostavili otvorenom. Ovo rješenje je omogućilo uvođenje alternativnog firmvera, od kojih je jedan bio imidž za rad sa MicroPython-om. Omogućava vam da koristite Python za programiranje vašeg EV3, čime se komplet još više približava stvarnim zadacima.
Da biste započeli, morate preuzeti na bilo koju microSD karticu, instalirajte je u EV3 mikroračunar i uključite. Zatim morate instalirati za Visual Studio. I možete početi sa radom.
Programiranje prvog robota u MycroPython-u

Na našem Postoji nekoliko lekcija za savladavanje osnovnih pojmova robotike. EV3 modeli upoznaju djecu s osnovama koje se koriste u samovozećim automobilima, robotima za fabričku montažu i CNC mašinama.
Uzet ćemo primjer stroja za crtanje, koji se može naučiti crtati uzorke i geometrijske oblike. Ovaj slučaj je pojednostavljena verzija robota za zavarivanje ili glodanje za odrasle i pokazuje kako se EV3 može koristiti u kombinaciji s MicroPythonom za podučavanje školaraca. A mašina za crtanje može da označi rupe na štampanoj ploči za tatu, ali to je drugi nivo koji zahteva matematiku.
Za rad će nam trebati:
- Osnovni set LEGO MINDSTORMS Education EV3;
- veliki list kockastog papira;
- markeri u boji.
Montaža samog robota je u toku , a mi ćemo pogledati primjer programiranja.
Prvo inicijaliziramo biblioteku EV3 modula:
#!/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
Postavili smo platformu koja rotira ručku kao motor u portu B. Postavili smo omjer prijenosa dvostepenog zupčanika s brojem zubaca 20-12-28, respektivno.
turntable_motor = Motor(Port.B, Direction.CLOCKWISE, [20, 12, 28])
Podizni mehanizam za ručku konfiguriramo kao motor u priključku C:
seesaw_motor = Motor(Port.C)
Konfigurišemo žiroskop, koji meri ugao nagiba ručke, u portu 2:
gyro_sensor = GyroSensor(Port.S2)
Konfigurišemo senzor boje u portu 3. Senzor se koristi za detekciju belog papira ispod mašine za crtanje:
color_sensor = ColorSensor(Port.S3)
Konfiguriramo senzor dodira u portu 4. Robot počinje crtati kada se senzor pritisne:
touch_sensor = TouchSensor(Port.S4)
Definiramo funkcije koje podižu i spuštaju ručku:
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 rotiranje ručke do određenog ili 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 žiro senzora, nastavite u smjeru kazaljke na satu 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 žiro senzora, pomaknite se u smjeru suprotnom od kazaljke na satu:
turntable_motor.run(-70)
while gyro_sensor.angle() > target_angle:
pass
Zaustavite rotirajuću platformu kada se postigne ciljni ugao:
turntable_motor.stop(Stop.BRAKE)
Postavite početni položaj ručke u gornji položaj:
pen_holder_raise()
Sada dolazi glavni dio programa - beskonačna petlja. EV3 prvo čeka da senzor u boji otkrije bijeli papir ili plavi početni kvadrat i da se pritisne senzor za dodir. Zatim crta uzorak, vraća se u početnu poziciju i sve ponavlja.
Kada uređaj nije spreman, LED diode na kontroleru svetle crveno i na LCD ekranu se prikazuje slika „palac dole“:
while True:
brick.light(Color.RED)
brick.display.image(ImageFile.THUMBS_DOWN)
Čekamo da senzor boje odbroji plavo ili bijelo, postavimo LED boju na zelenu, prikažemo sliku „palac gore“ na LCD ekranu i javimo da je uređaj spreman za upotrebu:
while color_sensor.color() not in (Color.BLUE, Color.WHITE):
wait(10)
brick.light(Color.GREEN)
brick.display.image(ImageFile.THUMBS_UP)
Čekamo da se pritisne senzor dodira, dodijelimo vrijednost ugla 0 žiroskopskom senzoru i počnemo crtati:
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)
Podignite držač olovke i vratite ga u prvobitni položaj:
pen_holder_raise()
pen_holder_turn_to(0)</i>
Ovo je jednostavan program koji smo kreirali. A sada ga pokrećemo i gledamo robota za crtanje u akciji.
Šta takvi primjeri pružaju?

EV3 je alat za karijerno vođenje za STEM karijere i ulazna tačka u inženjerske karijere. Budući da se može koristiti za rješavanje praktičnih problema, djeca stiču iskustvo u tehničkom razvoju i stvaranju industrijskih robota, uče simulirati stvarne situacije, razumjeti programe i analizirati algoritme, te savladati osnovne programske konstrukcije.
Podrška za MicroPython čini platformu EV3 pogodnom za nastavu u srednjoj školi. Učenici se mogu okušati kao programeri na jednom od najpopularnijih savremenih jezika, te upoznati zanimanja vezana za programiranje i inženjerski dizajn. EV3 kompleti pokazuju da kodiranje nije strašno, pripremaju vas za ozbiljne inženjerske izazove i pomažu vam da napravite prvi korak ka ovladavanju tehničkim vještinama. A za one koji rade u školama i povezani su sa obrazovanjem, pripremili smo i edukativni materijali. Oni detaljno opisuju koje se vještine razvijaju prilikom obavljanja određenih zadataka i kako se stečene vještine odnose na standarde obuke.
izvor: www.habr.com
