Салам, Хабр! Биз уже LEGO MINDSTORMS Education EV3 платформасы жөнүндө. Бул платформанын негизги максаттары практикалык мисалдар аркылуу үйрөнүү, STEAM көндүмдөрүн өнүктүрүү жана инженердик ой жүгүртүүнү өнүктүрүү болуп саналат. Бул механиканы жана динамиканы изилдөө үчүн лабораториялык иш үчүн колдонулушу мүмкүн. LEGO кирпичтеринен жасалган лабораториялык отургучтар жана маалыматтарды жаздыруу жана иштетүү үчүн утилиталар эксперименттерди ого бетер кызыктуу жана визуалдык кылат жана балдарга физиканы жакшыраак түшүнүүгө жардам берет. Мисалы, студенттер эрүү чекити боюнча маалыматтарды чогултуп, аны иретке келтирүү жана графикте көрсөтүү үчүн колдонмону колдоно алышат. Бирок бул башталышы гана: бүгүн биз бул топтомду MicroPython программалоо чөйрөсү менен кантип толуктап, аны робототехниканы үйрөтүү үчүн колдонууну айтып беребиз.

EV3 аркылуу программалоону үйрөнүңүз
Заманбап мектеп окуучулары түстүү натыйжаларды көргүсү келет. Ооба, эгер программа консолго сандарды басып чыгарса, алар тажашат жана алар түстүү графиктерди, диаграммаларды карап, кыймылдаган жана буйруктарды аткарган чыныгы роботторду түзгүсү келет. Кадимки код да балдар үчүн өтө татаал көрүнөт, андыктан оңой нерседен үйрөнүп баштаганыңыз жакшы.
Негизги EV3 программалоо чөйрөсү LabVIEW графикалык тилине негизделген жана роботтун алгоритмдерин визуалдык түрдө көрсөтүүгө мүмкүндүк берет: буйруктар сүйрөп жана туташтырылган блоктор түрүндө берилет.

Бул ыкма алгоритмдердин кантип курулгандыгын көрсөтүү керек болгондо жакшы иштейт, бирок ал көп сандагы блоктору бар программаларга ылайыктуу эмес. Сценарийлер татаалдашкан сайын, код менен программалоого өтүү керек, бирок бул кадамды жасоо балдар үчүн кыйын.
Бул жерде бир нече трюктар бар, алардын бири код блокторго окшош нерсени жасай турганын көрсөтүү. EV3 чөйрөсүндө бул MicroPython интеграциясы аркылуу мүмкүн, ошондуктан балдар негизги блок программалоо чөйрөсүндө жана Microsoftтун Visual Studio Code Pythonунда бир эле программаны түзө алышат. Алар эки ыкманын бирдей иштегенин көрүшөт, бирок кодду колдонуу менен татаал маселелерди чечүү ыңгайлуураак.
MicroPython'го которулууда
EV3 чөйрөсү ARM9 процессоруна курулган жана иштеп чыгуучулар архитектураны атайылап ачык калтырышкан. Бул чечим альтернативдүү микропрограмманы чыгарууга мүмкүндүк берди, алардын бири MicroPython менен иштөө үчүн сүрөт болгон. Бул EV3 программалоо үчүн Pythonду колдонууга мүмкүндүк берет, бул комплектти чыныгы жашоодогу тапшырмаларга дагы жакындатат.
Баштоо үчүн, жүктөп алышыңыз керек каалаган microSD картага, аны EV3 микрокомпьютерине орнотуп, күйгүзүңүз. Андан кийин орнотуу керек Visual Studio үчүн. Жана сиз иштей баштасаңыз болот.
MycroPythonдо биринчи роботту программалоо

Биздин Роботехниканын негизги түшүнүктөрүн өздөштүрүү үчүн бир нече сабактар бар. EV3 моделдери балдарды өзүн-өзү башкара турган унааларда, завод чогултуучу роботтордо жана CNC машиналарында колдонулган негиздер менен тааныштырат.
Биз үлгүлөрдү жана геометриялык фигураларды тартууну үйрөтө турган чийүүчү машинаны мисалга тартабыз. Бул окуя чоңдор үчүн ширетүүчү же фрезердик роботтордун жөнөкөйлөштүрүлгөн версиясы жана мектеп окуучуларын окутуу үчүн EV3 кантип MicroPython менен бирге колдонуларын көрсөтөт. Ал эми чийүүчү машина ата үчүн басылган схемадагы тешиктерди белгилей алат, бирок бул математиканы талап кылган дагы бир деңгээл.
Жумуш үчүн бизге керек болот:
- LEGO MINDSTORMS Education EV3 Core Set;
- черный кагаздын чоң барагы;
- түстүү маркерлер.
Роботтун өзү чогултулуп жатат , жана биз программалоо мисалын карап чыгабыз.
Алгач EV3 модулунун китепканасын инициализациялайбыз:
#!/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
Биз B портунда мотор сыяктуу тутканы айландырган платформаны орноттук. Биз эки баскычтуу тиштүү поезддин тиштүү катышын тиштеринин саны 20-12-28 болгон.
turntable_motor = Motor(Port.B, Direction.CLOCKWISE, [20, 12, 28])
Биз тутканы көтөрүү механизмин C портунда мотор катары конфигурациялайбыз:
seesaw_motor = Motor(Port.C)
2-портто тутканын жантайышын өлчөөчү гироскопту конфигурациялайбыз:
gyro_sensor = GyroSensor(Port.S2)
Биз 3-портто түстүү сенсорду конфигурациялайбыз. Сенсор чийүүчү машинанын астындагы ак кагазды аныктоо үчүн колдонулат:
color_sensor = ColorSensor(Port.S3)
Сенсордук сенсорду 4-портто конфигурациялайбыз. Робот сенсор басылганда тарта баштайт:
touch_sensor = TouchSensor(Port.S4)
Биз тутканы көтөрүүчү жана түшүрүүчү функцияларды аныктайбыз:
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)
Биз тутканы берилген бурчка же белгилүү бир бурчка айлантуу функциясын аныктайбыз:
def pen_holder_turn_to(target_angle):
if target_angle > gyro_sensor.angle():
Эгер максаттуу бурч учурдагы гиросенсор бурчунан чоңураак болсо, оң ылдамдык менен сааттын жебеси боюнча улантыңыз:
turntable_motor.run(70)
while gyro_sensor.angle() < target_angle:
pass
elif target_angle < gyro_sensor.angle():
Эгер максаттуу бурч учурдагы гиросенсордон азыраак болсо, анда саат жебесине каршы жылдырыңыз:
turntable_motor.run(-70)
while gyro_sensor.angle() > target_angle:
pass
Максаттуу бурчка жеткенде айлануучу платформаны токтотуңуз:
turntable_motor.stop(Stop.BRAKE)
Тутканын баштапкы абалын жогорку абалга коюңуз:
pen_holder_raise()
Эми программанын негизги бөлүгү - чексиз цикл келет. EV3 адегенде түстүү сенсордун ак кагазды же көк старттык квадратты аныктоосун жана сенсордук сенсордун басылышын күтөт. Андан кийин үлгү чийип, баштапкы абалына кайтып келип, баарын кайталайт.
Аппарат даяр болбогондо, контроллердеги LED шамдары кызыл түскө айланат жана ЖК экранында "баш бармак" сүрөтү пайда болот:
while True:
brick.light(Color.RED)
brick.display.image(ImageFile.THUMBS_DOWN)
Биз түстүү сенсор көк же ак деп эсептелгенге чейин күтөбүз, LED түсүн жашыл кылып коюңуз, ЖК экранында "бармак жогору" сүрөтүн көрсөтүп, аппарат колдонууга даяр экендигин билдиребиз:
while color_sensor.color() not in (Color.BLUE, Color.WHITE):
wait(10)
brick.light(Color.GREEN)
brick.display.image(ImageFile.THUMBS_UP)
Биз сенсордук сенсор басылганча күтүп, гироскопиялык сенсорго 0 бурчтун маанисин ыйгарып, тарта баштайбыз:
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)
Калем кармагычты көтөрүп, аны баштапкы абалына келтириңиз:
pen_holder_raise()
pen_holder_turn_to(0)</i>
Бул биз түзгөн жөнөкөй программа. Эми биз аны ишке киргизип, иштеп жаткан чийүүчү роботту карап жатабыз.
Мындай мисалдар эмнени берет?

EV3 бул STEM карьерасы үчүн карьералык багыт берүүчү курал жана инженердик карьерага кирүү чекити. Ал практикалык маселелерди чечүү үчүн колдонулушу мүмкүн болгондуктан, балдар өнөр жай роботторун техникалык жактан өнүктүрүү жана түзүү боюнча тажрыйбага ээ болушат, реалдуу кырдаалдарды симуляциялоону, программаларды түшүнүүнү жана алгоритмдерди талдоону үйрөнүшөт, программалоонун негизги конструкцияларын өздөштүрүшөт.
MicroPython колдоосу EV3 платформасын орто мектепте окутуу үчүн ылайыктуу кылат. Студенттер өздөрүн эң популярдуу заманбап тилдердин биринде программист катары сынап көрүп, программалоо жана инженердик дизайнга байланыштуу кесиптер менен тааныша алышат. EV3 комплекттери коддоо коркунучтуу эмес экенин көрсөтүп турат, олуттуу инженердик кыйынчылыктарга даярдайт жана техникалык көндүмдөрдү өздөштүрүү үчүн биринчи кадамды таштоого жардам берет. Ал эми мектептерде иштеп, билим берүү менен байланышкандар үчүн биз даярдап койдук жана окуу материалдары. Алар белгилүү бир тапшырмаларды аткарууда кандай көндүмдөр иштелип чыкканын жана алынган көндүмдөрдүн окутуу стандарттарына кандай тиешеси бар экенин деталдуу сүрөттөйт.
Source: www.habr.com
