Hallo, Habr! Wy al oer it platfoarm LEGO MINDSTORMS Education EV3. De haaddoelen fan dit platfoarm binne learen troch praktyske foarbylden, it ûntwikkeljen fan STEAM-feardigens en it ûntwikkeljen fan in technysk mindset. It kin brûkt wurde foar laboratoariumwurk om meganika en dynamyk te studearjen. Laboratoariumbanken makke fan LEGO-stiennen en nutsfoarsjenningen foar it opnimmen en ferwurkjen fan gegevens meitsje eksperiminten noch ynteressanter en fisueeler en helpe bern de fysika better te begripen. Studinten kinne bygelyks smeltpuntgegevens sammelje en de app brûke om it te organisearjen en yn in grafyk te presintearjen. Mar dit is mar it begjin: hjoed sille wy jo fertelle hoe't jo dizze set kinne oanfolje mei de MicroPython-programmearring omjouwing en it brûke om robotika te learen.

Learje programmearjen mei EV3
Moderne skoalbern wolle kleurrike resultaten sjen. Ja, se binne ferfeeld as it programma sifers printsje nei de konsole, en se wolle sjen nei kleurgrafiken, diagrammen en meitsje echte robots dy't bewege en folgje kommando's. Reguliere koade liket ek te yngewikkeld foar bern, dus it is better om te begjinnen mei learen mei wat makliker.
De basis EV3-programmearring omjouwing is basearre op de grafyske taal LabVIEW en kinne jo algoritmen foar de robot visueel opjaan: kommando's wurde presintearre yn 'e foarm fan blokken dy't kinne wurde sleept en ferbûn.

Dizze metoade wurket goed as jo moatte sjen litte hoe't algoritmen binne boud, mar it is net geskikt foar programma's mei in grut oantal blokken. As senario's komplekser wurde, is it needsaaklik om te gean nei programmearring mei koade, mar dizze stap is lestich foar bern om te nimmen.
D'r binne hjir in pear trúkjes, wêrfan ien is om sjen te litten dat de koade itselde docht as de blokken. Yn 'e EV3-omjouwing is dit mooglik troch MicroPython-yntegraasje, sadat bern itselde programma kinne oanmeitsje yn sawol de basisblokprogrammearring as Python yn Microsoft's Visual Studio Code. Se sjogge dat beide metoaden itselde wurkje, mar it oplossen fan komplekse problemen mei koade is handiger.
Oerskeakelje nei MicroPython
De EV3-omjouwing is boud op in ARM9-prosessor, en de ûntwikkelders lieten de arsjitektuer bewust iepen. Dizze oplossing makke it mooglik om alternative firmware út te rollen, wêrfan ien in ôfbylding wie foar wurkjen mei MicroPython. It lit jo Python brûke om jo EV3 te programmearjen, en bringt de kit noch tichter by taken yn it echte libben.
Om te begjinnen, moatte jo downloade op elke microSD-kaart, ynstallearje it yn 'e EV3-mikrokomputer en skeakelje it oan. Dan moatte jo ynstallearje foar Visual Studio. En jo kinne begjinne te wurkjen.
Programmearje de earste robot yn MycroPython

Op ús D'r binne ferskate lessen foar it behearskjen fan de basisbegripen fan robotika. EV3-modellen yntrodusearje bern oan 'e basis dy't wurde brûkt yn selsridende auto's, fabrieksmontagerobots en CNC-masines.
Wy nimme it foarbyld fan in tekenmasine, dy't kin wurde leard om patroanen en geometryske foarmen te tekenjen. Dit gefal is in ferienfâldige ferzje fan folwoeksen welding of milling robots en lit sjen hoe't EV3 kin brûkt wurde yn gearhing mei MicroPython te learen skoalbern. En in tekening masine kin markearje gatten yn in printe circuit board foar pa, mar dat is in oar nivo dat fereasket wiskunde.
Foar wurk sille wy nedich wêze:
- LEGO MINDSTORMS Underwiis EV3 Core Set;
- grut blêd fan geruit papier;
- kleurde markers.
De gearstalling fan 'e robot sels is yn , en wy sille sjen nei in programmearring foarbyld.
Earst inisjalisearje wy de EV3-modulebibleteek:
#!/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
Wy sette in platfoarm dat draait de handgreep as in motor yn haven B. Wy sette de gear ratio fan in twa-poadium gear trein mei in oantal tosken fan respektivelik 20-12-28.
turntable_motor = Motor(Port.B, Direction.CLOCKWISE, [20, 12, 28])
Wy konfigurearje it liftmeganisme foar de handgreep as in motor yn haven C:
seesaw_motor = Motor(Port.C)
Wy konfigurearje de gyroscoop, dy't de oanstriidhoeke fan 'e handgreep mjit, yn poarte 2:
gyro_sensor = GyroSensor(Port.S2)
Wy konfigurearje de kleursensor yn poarte 3. De sensor wurdt brûkt om wyt papier ûnder de tekenmasine te detektearjen:
color_sensor = ColorSensor(Port.S3)
Wy konfigurearje de touchsensor yn poarte 4. De robot begjint te tekenjen as de sensor yndrukt wurdt:
touch_sensor = TouchSensor(Port.S4)
Wy definiearje de funksjes dy't de handgreep ferheegje en ferleegje:
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)
Wy definiearje in funksje om de handgreep nei in bepaalde hoeke of nei in bepaalde hoeke te draaien:
def pen_holder_turn_to(target_angle):
if target_angle > gyro_sensor.angle():
As de doelhoeke grutter is as de hjoeddeistige hoeke fan 'e gyrosensor, trochgean mei de klok mei in positive snelheid:
turntable_motor.run(70)
while gyro_sensor.angle() < target_angle:
pass
elif target_angle < gyro_sensor.angle():
As de doelhoeke minder is dan de hjoeddeistige gyrosensor, ferpleatse dan tsjin de klok yn:
turntable_motor.run(-70)
while gyro_sensor.angle() > target_angle:
pass
Stopje it rotearjende platfoarm as de doelhoeke wurdt berikt:
turntable_motor.stop(Stop.BRAKE)
Stel de begjinposysje fan 'e handgreep yn' e boppeste posysje:
pen_holder_raise()
No komt it haaddiel fan it programma - in einleaze loop. EV3 wachtet earst op 'e kleursensor om in wyt papier of blau startplein te detektearjen en op' e touchsensor om te drukken. Dan tekenet er in patroan, giet werom nei de startposysje en werhellet alles wer.
As it apparaat net klear is, wurde de LED's op 'e controller read en in "thumbs down" ôfbylding wurdt werjûn op it LCD-skerm:
while True:
brick.light(Color.RED)
brick.display.image(ImageFile.THUMBS_DOWN)
Wy wachtsje oant de kleursensor blau of wyt telt, set de LED-kleur op grien, werjaan in "thumbs up" ôfbylding op it LCD-skerm en rapportearje dat it apparaat klear is foar gebrûk:
while color_sensor.color() not in (Color.BLUE, Color.WHITE):
wait(10)
brick.light(Color.GREEN)
brick.display.image(ImageFile.THUMBS_UP)
Wy wachtsje oant de touchsensor wurdt yndrukt, jouwe de hoekwearde 0 ta oan 'e gyroskopyske sensor en begjinne te tekenjen:
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)
Ferheegje de pinneholder en bring it werom nei de oarspronklike posysje:
pen_holder_raise()
pen_holder_turn_to(0)</i>
Dit is it ienfâldige programma dat wy hawwe makke. En no lansearje wy it en sjogge nei de tekenrobot yn aksje.
Wat jouwe sokke foarbylden?

EV3 is in karriêrebegeliedingsark foar STEM-karriêres en in yngongspunt yn yngenieurkarriêres. Om't it kin wurde brûkt om praktyske problemen op te lossen, krije bern ûnderfining yn technyske ûntwikkeling en oanmeitsjen fan yndustriële robots, learje om echte situaasjes te simulearjen, programma's te begripen en algoritmen te analysearjen, en basale programmearringkonstruksjes te behearskjen.
MicroPython-stipe makket it EV3-platfoarm geskikt foar ûnderwiis op middelbere skoallen. Studinten kinne harsels probearje as programmeurs yn ien fan 'e populêrste moderne talen, en yn' e kunde komme mei beroppen yn ferbân mei programmearring en technysk ûntwerp. EV3-kits litte sjen dat kodearring net eng is, tariede jo op serieuze technyske útdagings, en helpe jo de earste stap te nimmen nei it behearskjen fan technyske feardigens. En foar dyjingen dy't wurkje op skoallen en wurde ferbûn mei it ûnderwiis, wy hawwe taret en edukatyf materiaal. Se beskriuwe yn detail hokker feardichheden wurde ûntwikkele by it útfieren fan bepaalde taken, en hoe't de ferwurven feardichheden relatearje oan training noarmen.
Boarne: www.habr.com
