Silav Habr! Me berê di derbarê platforma LEGO MINDSTORMS Education EV3 de. Armancên sereke yên vê platformê fêrbûna bi mînakên pratîkî, pêşxistina jêhatîbûnên STEAM û pêşxistina hişmendiyek endezyariyê ye. Ew dikare ji bo xebata laboratîfê were bikar anîn da ku mekanîka û dînamîk lêkolîn bike. Bendeyên laboratûwaran ên ku ji tuxleyên LEGO hatine çêkirin û amûrên ji bo tomarkirin û hilberandina daneyan ceribandinan hê balkêştir û dîtbartir dike û ji zarokan re dibe alîkar ku fizîkê baştir fam bikin. Mînakî, xwendekar dikarin daneyên xala helandinê berhev bikin û sepanê bikar bînin da ku wê birêxistin bikin û di grafiyekê de pêşkêş bikin. Lê ev tenê destpêk e: îro em ê ji we re vebêjin ka meriv çawa vê setê bi hawîrdora bernamesaziya MicroPython re temam dike û wê ji bo hînkirina robotîkê bikar tîne.

Bi karanîna EV3 bernamekirinê fêr bibin
Zarokên dibistana nûjen dixwazin encamên rengîn bibînin. Erê, ew aciz dibin ger bername hejmaran li konsolê çap bike, û ew dixwazin li grafikên rengîn, diagraman binihêrin û robotên rastîn ên ku tevdigerin û fermanan dişopînin biafirînin. Koda birêkûpêk jî ji bo zarokan pir tevlihev xuya dike, ji ber vê yekê çêtir e ku meriv bi tiştek hêsantir dest bi fêrbûnê bike.
Jîngeha bernameya bingehîn a EV3 li ser bingeha zimanê grafîkî yê LabVIEW-ê ye û dihêle hûn ji bo robot bi dîtbarî algorîtmayan diyar bikin: ferman di forma blokên ku dikarin werin kişandin û girêdan de têne pêşkêş kirin.

Dema ku hûn hewce ne ku nîşan bidin ka algorîtma çawa têne çêkirin ev rêbaz baş dixebite, lê ew ji bo bernameyên bi hejmareke mezin blokan re ne maqûl e. Ji ber ku senaryo tevlihevtir dibin, pêdivî ye ku meriv bi kodê bernamesaziyê bikişîne, lê ji bo zarokan ev gav dijwar e.
Li vir çend hîle hene, yek ji wan ev e ku nîşan bide ku kod heman tiştê blokan dike. Di hawîrdora EV3 de, ev yek bi yekbûna MicroPython ve gengaz e, ji ber vê yekê zarok dikarin heman bernameyê hem di hawîrdora bernamesaziya bloka bingehîn de hem jî Python di Koda Visual Studio ya Microsoft-ê de biafirînin. Ew dibînin ku her du rêbaz bi heman rengî dixebitin, lê çareserkirina pirsgirêkên tevlihev bi karanîna kodê hêsantir e.
Veguherîna MicroPython
Jîngeha EV3 li ser pêvajoyek ARM9 hatî çêkirin, û pêşdebiran bi qestî mîmarî vekirî hiştin. Vê çareseriyê gengaz kir ku firmware-ya alternatîf derxîne, yek ji wan wêneyek ji bo xebata bi MicroPython re bû. Ew dihêle hûn Python-ê bikar bînin da ku EV3-ya xwe bername bikin, û kîtê hîn bêtir nêzikî peywirên jiyana rast dike.
Ji bo ku hûn dest pê bikin, hûn hewce ne ku dakêşin li ser her qerta microSD, wê di mîkrokomputera EV3 de saz bikin û vekin. Hingê hûn hewce ne ku saz bikin ji bo Visual Studio. Û hûn dikarin dest bi xebatê bikin.
Robotê yekem di MycroPython de bernamekirin

Li ser me Ji bo serweriya têgehên bingehîn ên robotîkê gelek ders hene. Modelên EV3 zarokan bi bingehên ku di otomobîlên xwe-ajotinê de, robotên komkirina kargehê û makîneyên CNC de têne bikar anîn nas dikin.
Em ê mînaka makîneya xêzkirinê bigirin, ku meriv dikare fêrî xêzkirina qalib û şeklên geometrîkî bike. Ev doz guhertoyek sadekirî ya robotên welding an çîpkirinê yên mezinan e û destnîşan dike ka EV3 çawa dikare bi MicroPython re bi hev re were bikar anîn da ku xwendekarên dibistanê hîn bike. Û makîneyek xêzkirinê dikare ji bo bavê kunên li ser panelek çapkirî nîşan bide, lê ew astek din e ku matematîkê hewce dike.
Ji bo xebatê em ê hewce ne:
- LEGO MINDSTORMS Perwerde EV3 Core Set;
- kaxezek mezin a kaxiz;
- nîşankerên rengîn.
Meclîsa robot bixwe tê de ye , û em ê li mînakek bernamekirinê binêrin.
Pêşî em pirtûkxaneya modula EV3 dest pê dikin:
#!/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
Me di bendera B de platformek ku destikê mîna motorê dizivirîne saz kir. Me rêjeya gemarê ya trênek pêlavê ya du qonax bi rêzê ve bi hejmarek diranên 20-12-28 saz kir.
turntable_motor = Motor(Port.B, Direction.CLOCKWISE, [20, 12, 28])
Em mekanîzmaya hilgirtina destikê wekî motorek di porta C de mîheng dikin:
seesaw_motor = Motor(Port.C)
Em gyroscope, ku goşeya meyla destikê dipîve, di porta 2-ê de mîheng dikin:
gyro_sensor = GyroSensor(Port.S2)
Em di porta 3-ê de senzora rengîn mîheng dikin. Sensor ji bo tespîtkirina kaxeza spî di binê makîneya xêzkirinê de tê bikar anîn:
color_sensor = ColorSensor(Port.S3)
Em di porta 4-ê de senzora destikê mîheng dikin. Dema ku sansor tê pêl kirin robot dest bi xêzkirinê dike:
touch_sensor = TouchSensor(Port.S4)
Em fonksiyonên ku destikê bilind û nizm dikin diyar dikin:
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)
Em fonksiyonek diyar dikin ku destikê li goşeyek diyar an goşeyek diyar bizivirîne:
def pen_holder_turn_to(target_angle):
if target_angle > gyro_sensor.angle():
Ger goşeya armancê ji goşeya sensora gyro ya heyî mezintir be, bi lezek erênî li gorî demjimêrê bidomînin:
turntable_motor.run(70)
while gyro_sensor.angle() < target_angle:
pass
elif target_angle < gyro_sensor.angle():
Ger goşeya armancê ji senora gyro ya heyî kêmtir be, wê hingê berevajiyê demjimêrê tevbigerin:
turntable_motor.run(-70)
while gyro_sensor.angle() > target_angle:
pass
Dema ku goşeya armancê gihîştiye platforma zivirandinê rawestîne:
turntable_motor.stop(Stop.BRAKE)
Helwesta destpêkê ya destikê di pozîsyona jorîn de bicîh bikin:
pen_holder_raise()
Naha beşa sereke ya bernameyê tê - kelekek bêdawî. EV3 pêşî li bendê ye ku senzora rengîn kaxezek spî an çargoşeya destpêkê ya şîn tespît bike û ji bo ku senzora destikê were pêl kirin. Dûv re ew nexşeyek xêz dike, vedigere cîhê destpêkê û her tiştî dîsa dubare dike.
Dema ku amûr ne amade ye, LED-yên li ser kontrolkerê sor dibin û wêneyek "tilikê xwar" li ser ekrana LCD-ê tê xuyang kirin:
while True:
brick.light(Color.RED)
brick.display.image(ImageFile.THUMBS_DOWN)
Em li bendê ne heya ku senzorê reng şîn an spî bihejmêre, rengê LED-ê li ser kesk saz bikin, wêneyek "tiştan" li ser ekrana LCD-ê nîşan bidin û ragihînin ku amûr ji bo karanîna amade ye:
while color_sensor.color() not in (Color.BLUE, Color.WHITE):
wait(10)
brick.light(Color.GREEN)
brick.display.image(ImageFile.THUMBS_UP)
Em li bendê ne ku senzora destikê were pêl kirin, nirxa goşeyê 0 bi senzora gyroskopîk veqetînin û dest bi xêzkirinê bikin:
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)
Xwediyê pênûsê bilind bikin û vegerînin rewşa xweya bingehîn:
pen_holder_raise()
pen_holder_turn_to(0)</i>
Ev bernameya hêsan e ku me çêkiriye. Û naha em wê dest pê dikin û li robotê pêşnûmeyê di çalakiyê de dinêrin.
Mînakên weha çi didin?

EV3 ji bo kariyerên STEM amûrek rêberiya kariyerê ye û xalek têketinê di kariyerên endezyariyê de ye. Ji ber ku ew dikare ji bo çareserkirina pirsgirêkên pratîkî were bikar anîn, zarok di pêşkeftina teknîkî û çêkirina robotên pîşesaziyê de ezmûnek werdigirin, fêrî simulasyona rewşên rastîn dibin, bernameyan fam dikin û algorîtmayan analîz dikin, û avahîyên bernamesaziya bingehîn master dikin.
Piştgiriya MicroPython platforma EV3 ji bo hînkirina dibistana navîn guncan dike. Xwendekar dikarin xwe wekî bernameçêker bi yek ji zimanên nûjen ên herî populer biceribînin, û bi pîşeyên ku bi bernamekirin û sêwirana endezyariyê ve girêdayî ne nas bikin. Kîtên EV3 destnîşan dikin ku kodkirin ne tirsnak e, we ji dijwariyên endezyariyê yên ciddî re amade dike, û ji we re dibe alîkar ku hûn gava yekem berbi serwerkirina jêhatîbûnên teknîkî bavêjin. Û ji bo kesên ku di dibistanan de dixebitin û bi perwerdehiyê ve girêdayî ne, me amade kir û materyalên perwerdehiyê. Ew bi hûrgulî diyar dikin ka çi jêhatîbûn di dema pêkanîna hin karan de têne pêşve xistin, û çawa behremendiyên bidestxistî bi standardên perwerdehiyê re têkildar in.
Source: www.habr.com
