Tere, Habr! Oleme juba LEGO MINDSTORMS Education EV3 platvormist. Selle platvormi peamised eesmĂ€rgid on praktiliste nĂ€idete alusel Ă”ppimine, STEAM-oskuste arendamine ning insenerimĂ”tlemise kujundamine. Selle abil saab lĂ€bi viia laboritööd mehaanika ja dĂŒnaamikaga. LEGO kuubikutest valmistatud laboriseinad ja andmete kogumise ning töötlemise tööriistad muudavad eksperimendid veelgi huvitavamaks ja arusaadavamaks ning aitavad lastel paremini mĂ”ista fĂŒĂŒsikat. NĂ€iteks saavad Ă”pilased koostada andmeid sulamistemperatuuri kohta ja kasutada rakendust nende sĂŒsteemseks esitamiseks graafiku nĂ€ol. Kuid see on alles algus: tĂ€na rÀÀgime, kuidas tĂ€iendada seda komplekti MicroPython'i programmeerimiskeskkonnaga ja kasutada seda robotitehnika Ă”petamiseks.

Ăpime programmeerimist EV3 abil
Kaasaegsed Ôpilased tahavad nÀha vÀrvikat tulemust. Jah, neile on igav, kui programm prindib konsooli numbreid, ja nad tahavad vaadata vÀrvilisi graafikute ja diagramme ning luua tÔelisi roboteid, mis liiguvad ja tÀidavad kÀske. Tavaline kood tundub samuti lastele liiga keeruline, seega on Ôppimist parem alustada millegagi lihtsamat.
EV3 pĂ”hikirjanduse programmeerimiskeskkond on loodud graafilise keele LabVIEW alusel ja vĂ”imaldab algoritme robotite jaoks visuaalselt seada: kĂ€sud on esitatud plokkidena, mida saab lohistada ja ĂŒhendada.

See meetod toimib hĂ€sti, kui on vaja nĂ€idata, kuidas algoritmid on ĂŒles ehitatud, kuid see ei sobi programmide jaoks, kus on palju plokke. Skeemide keerukuse korral tuleb liikuda koodi pĂ”hjalisele programmeerimisele, kuid lastele on selle sammu astumine keeruline.Â
Siin on mĂ”ned nipid, millest ĂŒks on nĂ€idata, et kood tĂ€idab samu ĂŒlesandeid nagu plokid. EV3 keskkonnas saab seda teha MicroPython'i integreerimise kaudu: lapsed loovad sama programmi pĂ”hikirjanduse programmeerimiskeskkonnas plokkide ja Python'i keeles Microsoft Visual Studio Code'is. Nad nĂ€evad, et mĂ”lemad meetodid töötavad samamoodi, kuid keerukate ĂŒlesannete lahendamine koodiga on mugavam.
Liigume MicroPython'i peale
EV3 keskkond on loodud ARM9 protsessori baasil ja arendajad jĂ€tsid arhitektuuri tahtlikult avatud. See lahendus vĂ”imaldas rakendada alternatiivseid pĂŒsivara, millest ĂŒks on pilt MicroPython'iga töötamiseks. See vĂ”imaldab kasutada Python'i EV3 programmeerimisel, mis muudab komplekti töötamise veel lĂ€hemale reaalses elus olevatele ĂŒlesannetele.Â
Alustamiseks tuleb alla laadida igal microSD-kaardil, paigaldada see EV3 mikrokonsooli ja sisse lĂŒlitada. SeejĂ€rel tuleb paigaldada Visual Studio jaoks. Ja siis saab alustada tööd.Â
Programmeeri oma esimest robotit MycroPython'il

Meie sisaldab mitmeid Ă”ppetunde, et omandada robotitehnika pĂ”hikontseptsioone. EV3 mudelid tutvustavad lastele aluseid, mida kasutatakse isesĂ”itvates autodest, tehasrobotitest ja CNC masinatest.Â
VĂ”tame nĂ€iteks joonistamisrobot, mida saab Ă”petada joonistama mustreid ja geomeetrilisi figuure. See juhtum on lihtsustatud versioon tĂ€iskasvanute keevitus- vĂ”i freesimisrobotitest ja nĂ€itab, kuidas saab kasutada EV3 koos MicroPython'iga laste Ă”petamiseks. Ja veel, joonistamisrobot vĂ”ib mĂ€rkida auke trĂŒkkplaadil 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 me vaatame programmeerimise nÀidet.
KÀivitame kÔigepealt EV3 moodulite teegi:
#!/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
Konfigureerime platvormi, mis pöörab kĂ€epide nagu mootor port B-s. MÀÀrame kaheastmelise hammasĂŒlekande suhete arvud 20-12-28 vastavalt.
turntable_motor = Motor(Port.B, Direction.CLOCKWISE, [20, 12, 28])
Konfigureerime kÀepide tÔste mehhanismi nagu mootor port C-s:
seesaw_motor = Motor(Port.C)
Konfigureerime gĂŒroskoobi, mis mÔÔdab kĂ€epideme kallutamist, port 2-s:
gyro_sensor = GyroSensor(Port.S2)
Konfigureerime vÀrvisensori port 3-s. Sensorit kasutatakse, et mÀÀrata valge paber joonistamisroboti all:
color_sensor = ColorSensor(Port.S3)
Konfigureerime puutesensori port 4-s. Robot hakkab joonistama, kui sensor on aktiveeritud:
touch_sensor = TouchSensor(Port.S4)
MÀÀratleme 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, mis pöörab kÀepideme soovitud nurga peale vÔi kindla nurga juures:
def pen_holder_turn_to(target_angle):
if target_angle > gyro_sensor.angle():
Kui soovitud nurk on suurem kui praegune nurk gĂŒrosensoris, jĂ€tkame liikumist pĂ€ripĂ€eva positiivse kiirusiga:
    turntable_motor.run(70)
while gyro_sensor.angle() < target_angle:
 Â
pass
  elif target_angle < gyro_sensor.angle():
Kui sihtnurga vÀÀrtus on vÀiksem kui aktuatuurse gyrosensori nurk, liigume vastupÀeva:
    turntable_motor.run(-70)
while gyro_sensor.angle() > target_angle:
 Â
pass
Peatame pöörleva platvormi, kui sihtnurga vÀÀrtus on saavutatud:
  turntable_motor.stop(Stop.BRAKE)
Seame pliiatsi hoidja algasendi ĂŒlespoole:
pen_holder_raise()
NĂŒĂŒd lĂ€heb programmis pĂ”hiosa â lĂ”pmatu tsĂŒkkel. Esiteks ootab EV3, kuni vĂ€rvisensor tuvastab valge paber vĂ”i sinine stardiruut ning puutesensor on vajutatud. Siis joonistab see mustri, tagastab end algasendisse ja kordab kĂ”ike uuesti.
Kui seade ei ole valmis, muutuvad kontrolleri LEDid punaseks ja LCD-ekraanil kuvatakse pilt «alla suunatud sÔrm»:
while True:
  brick.light(Color.RED)
  brick.display.image(ImageFile.THUMBS_DOWN)
Ootame, kuni vĂ€rvisensor tuvastab sinise vĂ”i valge vĂ€rvi, seame LEDide vĂ€rvi roheliseks, kuvame LCD-ekraanil pildi Â«ĂŒla poole suunatud sĂ”rm» ja anname teada, et seade on tööks valmis:
  while color_sensor.color() not in (Color.BLUE, Color.WHITE):
wait(10)
  brick.light(Color.GREEN)
  brick.display.image(ImageFile.THUMBS_UP)
Ootame puutesensori vajutamist, mÀÀrame gyrosensorile nurga vÀÀrtuse 0 ja alustame joonistamist:
  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 pliiatsi hoidja ja tagastame selle algasendisse:
  pen_holder_raise()
  pen_holder_turn_to(0)
Selline lihtne programm meil on. NĂŒĂŒd kĂ€ivitame selle ja vaatame roboti joonistaja tööd.Â
Mis sellised nÀited annavad

EV3 on vahend, mis aitab noortel orienteeruda STEM-erialades ja on sissepÀÀs inseneriteadusesse. Kuna sellega saab lahendada praktilisi ĂŒlesandeid, saavad lapsed kogemusi tehniliste arenduste ja tööstuslike robotite loomisest, Ă”pivad mudeldama reaalseid olukordi, mĂ”istma programme ja analĂŒĂŒsima algoritme ning valdama programmeerimise pĂ”hikonstruktsioone.
MicroPython'i tugi muudab EV3 platvormi sobivaks keskkooliĂ”ppeks. Ăpilased saavad proovida end programmijana ĂŒhes populaarseimas kaasaegses keeles, tutvuda programmimise ja inseneriprojektiinguga seotud ametitega. EV3 komplektid nĂ€itavad, et koodi kirjutamine ei ole hirmus, valmistavad ette tĂ”sisteks insenerite ĂŒlesanneteks ja aitavad astuda esimese sammu tehniliste erialade omandamiseks. Neile, kes töötavad koolis ja on seotud haridusega, on meil ette valmistatud ja Ă”ppe materjalid. Neis on detailselt kirjas, milliseid oskusi arendatakse erinevate ĂŒlesannete tĂ€itmisel ja kuidas saadud oskused seonduvad Ă”pistandarditega.
Allikas: habr.com
