Tere, Habr! Oleme juba platvormist LEGO MINDSTORMS Education EV3. Selle platvormi peamised eesmĂ€rgid on praktiliste nĂ€idete kaudu Ă”ppimine, STEAM-oskuste arendamine ja insenerimĂ”tlemise kujundamine. Sellega saab lĂ€bi viia laboritöid, et uurida mehhaanikat ja dĂŒnaamikat. LEGO klotsidest moodustatud laboristendid ja andmete registreerimise ja töötlemise utiliidid teevad katsed veelgi huvitavamaks ja visuaalsemaks ning aitavad lastel paremini mĂ”ista fĂŒĂŒsikat. NĂ€iteks saavad koolilapsed koguda sulamistemperatuuri kohta andmeid ja kasutada rakendust nende sĂŒsteemseks korraldamiseks ning esitada need graafikuna. Kuid see on alles algus: tĂ€na rÀÀgime, kuidas tĂ€iendada seda komplekti MicroPython programmeerimiskeskkonnaga ja kasutada seda robootika Ă”petamiseks.

Ăpime programmeerimist EV3 abil
Kaasaegsed koolilapsed tahavad nÀha vÀrvikat tulemust. Jah, neile on igav, kui programm vÀljastab konsoolile numbreid, ja nad soovivad vaadata vÀrvilisi graafikuid, diagramme ja luua pÀris roboteid, mis liiguvad ja tÀidavad kÀske. Tavaline kood tundub lastele samuti liiga keeruline, seega on parem alustada millegagi lihtsamaga.
EV3 pĂ”hikeskkond on loodud graafilise keele LabVIEW alusel ja vĂ”imaldab mÀÀratleda roboti algoritmide visuaalselt: kĂ€sud on esitatud blokke kujul, mida saab lohistada ja ĂŒhendada.

Selline lĂ€henemine töötab hĂ€sti, kui on vaja nĂ€idata, kuidas algoritmid on ĂŒles ehitatud, kuid see ei sobi programmide jaoks, kus on palju blokke. Aja jooksul keerukamate stsenaariumide puhul on vajalik liikuda koodipĂ”hise programmeerimise juurde, kuid lastele on selle sammu astumine keeruline.Â
Siin on mĂ”ned nipid, ĂŒks neist on nĂ€idata, et kood tĂ€idab samu ĂŒlesandeid kui blokid. EV3 keskkonnas on see vĂ”imalik tĂ€nu MicroPython integreerimisele: lapsed loovad ĂŒhe ja sama programmi pĂ”hikeskkonnas plokkide abil ning Pythonis Microsoft Visual Studio Code'is. Nad nĂ€evad, et mĂ”lemad meetodid töötavad ĂŒhtemoodi, kuid koodi kasutamine keerukate ĂŒlesannete lahendamiseks on mugavam.
Liigume MicroPythoni peale
EV3 keskkond on ehitatud ARM9 protsessori baasil ja arendajad on spetsiaalselt jĂ€tnud arhitektuuri avatud. See lahendus vĂ”imaldas installida alternatiivseid sĂŒsteemipilte, millest ĂŒks on MicroPythoniga töötamiseks mĂ”eldud pilt. See vĂ”imaldab kasutada Pythonit EV3 programmeerimiseks, muutes komplekti töö veelgi lĂ€hemale reaalse elu ĂŒlesannetele.Â
Et alustada, tuleb alla laadida igal microSD-kaardile, paigaldada see EV3 mikrokontrollerisse ja sisse lĂŒlitada. SeejĂ€rel tuleb installida Visual Studio jaoks. Ja saab alustada tööd.Â
Programmeerime esimest robotit MycroPythoniga

Meie on mitu Ă”petust robotitehnika pĂ”hikontseptsioonide Ă”ppimiseks. EV3 mudelid tutvustavad lastele aluseid, mida kasutatakse isesĂ”itevates autodes, tööstusrobotites ja CNC masinates.Â
VĂ”tame nĂ€iteks joonistusmasina, mida saab Ă”petada mustrite ja geomeetriliste joonte joonistamiseks. See juhtum on lihtsustatud versioon tĂ€iskasvanud keevitus- vĂ”i freespinkidest ja nĂ€itab, kuidas kasutada EV3 koos MicroPythoniga kooliĂ”pilaste Ă”petamiseks. Lisaks vĂ”ib joonistusmasin mĂ€rkida auke trĂŒkkplaadis isale, kuid see on juba teine tase, mis nĂ”uab matemaatilisi arvutusi.
Tööks vajame:
- pĂ”hikomplekti LEGO MINDSTORMS Education EV3;Â
- suurt ruudulist paberilehte;
- vĂ€rvilisi markereid.Â
Roboti kokkupanek on , kuid vaatame nÀidet programmeerimisest.
Alustame EV3 moodulite teegi algatamisega:
#!/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
Seame platvormi, mis pöörab kĂ€epideme nagu mootori sadamasse B. MÀÀrame kaheastmelise hammasĂŒlekande suhe: hammaste arv on vastavalt 20-12-28.
turntable_motor = Motor(Port.B, Direction.CLOCKWISE, [20, 12, 28])
Seame kÀepideme tÔste mehhanismi nagu mootori sadamasse C:
seesaw_motor = Motor(Port.C)
Seame gĂŒroskoobi, mis mÔÔdab kĂ€epideme kallutamise nurka, sadamasse 2:
gyro_sensor = GyroSensor(Port.S2)
Seame vÀrvitud anduri sadamasse 3. Andur aitab mÀÀrata joonistusmasina all oleva valge paberi:
color_sensor = ColorSensor(Port.S3)
Seame puudutusanduri sadamasse 4. Robot hakkab joonistama, kui andur on aktiivne:
touch_sensor = TouchSensor(Port.S4)
MÀÀrame funktsioonid, mis tÔstavad ja langetavad kÀepideme:
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)
MÀÀratleme funktsiooni, et pöörata pastapleki teatud nurga vÔi kindla nurga jÀrgi:
def pen_holder_turn_to(target_angle):
if target_angle > gyro_sensor.angle():
Kui sihitud nurk on suurem kui praegune nurk gyroskoopanduri, jÀtkame kellavÀrgiga positiivsest kiirusest liikumist:
    turntable_motor.run(70)
while gyro_sensor.angle() < target_angle:
pass
elif target_angle < gyro_sensor.angle():
Kui sihitud nurk on vÀiksem kui praegune nurk gyroskoopanduri, liikumine vastupidises suunas:
    turntable_motor.run(-70)
while gyro_sensor.angle() > target_angle:
pass
Peatame pööratava platvormi, kui sihitud nurk on saavutatud:
  turntable_motor.stop(Stop.BRAKE)
Seame pastapleki algseisundi ĂŒlesse:
pen_holder_raise()
NĂŒĂŒd on peamine osa programmist â lĂ”putu tsĂŒkkel. Esiteks ootab EV3, kuni vĂ€rv Sensor tuvastab valge paberit vĂ”i sinise algusruudu, ja puuteandur on vajutatud. Siis joonistatakse muster, naaseme algasendisse ja kordame kĂ”ike uuesti.
Kui seade ei ole valmis, muutuvad kontrolleri LED-id punaseks, ja vedelkristallekraanil kuvatakse pilt "punane".
while True:
brick.light(Color.RED)
brick.display.image(ImageFile.THUMBS_DOWN)
Ootame, kuni vĂ€rv Sensor loeb sinise vĂ”i valge vĂ€rvi, seame LED-id roheliseks, kuvame vedelkristallekraanil pildi "nĂ€pp ĂŒles" ja teatame, et seade on töökorras:
  while color_sensor.color() not in (Color.BLUE, Color.WHITE):
wait(10)
brick.light(Color.GREEN)
brick.display.image(ImageFile.THUMBS_UP)
Ootame puuteanduri vajutamist, mÀÀrame gyroskoopanduri nurga vÀÀrtuse 0 ja hakkame joonistama:
  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)
TÔstame pastapleki ja viime selle tagasi algasendisse:
  pen_holder_raise()
pen_holder_turn_to(0)
Selline lihtne programm meil on. Ja nĂŒĂŒd kĂ€ivitame selle ja vaatame roboti joonistaja töös.Â
Mida need nÀiteks annavad?

EV3 on STEM ametivĂ”itude tööriist ja sissejuhatus inseneriteaduste erialadesse. Kuna selle abil saab lahendada praktilisi ĂŒlesandeid, saavad lapsed kogemusi tehniliste arenduste ja tööstuslike robotite loomise alal, Ă”pivad modelleerima reaalseid olukordi, mĂ”istma programme ja analĂŒĂŒsima algoritme, omandavad programmeerimise pĂ”histruktuurid.
MicroPythoni tugi teeb EV3 platvormi sobivaks gĂŒmnaasiumiastme Ă”petamiseks. Ăpilased saavad proovida end programmeerijatena ĂŒhes kĂ”ige populaarsemas tĂ€napĂ€evases keeles, tutvuda programmimise ja inseneri projekteerimisega seotud ametitega. EV3 komplektid nĂ€itavad, et koodi kirjutamine ei ole hirmutav, valmistavad ette tĂ”sisteks inseneriĂŒlesanneteks ja aitavad teha esimese sammu tehniliste erialade omandamiseks. Ja neile, kes töötavad koolis ja on seotud haridusega, oleme ette valmistanud. ja Ă”ppe materjalid. Neis on detailselt kirjas, milliseid oskusi arendatakse erinevate ĂŒlesannete tĂ€itmisel ning kuidas saadud oskused vastavad Ă”ppekava standarditele.
Allikas: habr.com
