LEGO MINDSTORMS Education EV3 + MicroPython: праграмуемы дзіцячы канструктар дарослай мовай

Прывітанне, Хабр! Мы ўжо расказвалі аб платформе LEGO MINDSTORMS Education EV3. Асноўныя задачы гэтай платформы - навучанне на практычных прыкладах, развіццё навыкаў STEAM і фарміраванне інжынернага мыслення. У ёй можна праводзіць лабараторныя работы па вывучэнні механікі і дынамікі. Лабараторныя стэнды з кубікаў LEGO і ўтыліты па рэгістрацыі і апрацоўцы дадзеных робяць досведы яшчэ цікавей і навочней і дапамагаюць дзецям лепш зразумець фізіку. Напрыклад, школьнікі могуць сабраць дадзеныя аб тэмпературы плаўлення і з дапамогай прыкладання сістэматызаваць іх і прадставіць у выглядзе графіка. Але гэта толькі пачатак: сёння мы раскажам, як дапоўніць гэты набор асяроддзем праграмавання MicroPython і выкарыстоўваць яго для навучання робататэхніцы.

LEGO MINDSTORMS Education EV3 + MicroPython: праграмуемы дзіцячы канструктар дарослай мовай

Вучым праграмаванні з дапамогай EV3

Сучасныя школьнікі жадаюць бачыць маляўнічы вынік. Так, ім сумна, калі праграма выводзіць у кансоль ліку, і яны жадаюць разглядаць каляровыя графікі, дыяграмы і ствараць сапраўдных робатаў, якія рухаюцца і выконваюць каманды. Звычайны код таксама здаецца дзецям занадта складаным, таму навучанне лепш пачынаць з чаго-небудзь лягчэй.

Базавае асяроддзе праграмавання EV3 створана на аснове графічнай мовы LabVIEW і дазваляе задаваць алгарытмы для робата візуальна: каманды прадстаўлены ў выглядзе блокаў, якія можна перацягваць і злучаць.

LEGO MINDSTORMS Education EV3 + MicroPython: праграмуемы дзіцячы канструктар дарослай мовай

Такі спосаб добра працуе, калі трэба паказаць, як будуюцца алгарытмы, але ён не падыходзіць для праграм з вялікай колькасцю блокаў. Пры ўскладненні сцэнарыяў неабходна пераходзіць на праграмаванне з дапамогай кода, але дзецям цяжка зрабіць гэты крок. 

Тут ёсць некалькі хітрасцяў, адна з якіх - паказаць, што код выконвае тыя ж задачы, што і блокі. У асяроддзі EV3 гэта можна зрабіць дзякуючы інтэграцыі з MicroPython: дзеці ствараюць адну і тую ж праграму ў базавым асяроддзі праграмавання з дапамогай блокаў і на мове Python у Visual Studio Code ад Microsoft. Яны бачаць, што абодва спосабы працуюць аднолькава, але кодам вырашаць складаныя задачы зручней.

Пераходзім на MicroPython

Серада EV3 пабудавана на базе працэсара ARM9, і распрацоўшчыкі спецыяльна пакінулі архітэктуру адкрытай. Гэтае рашэнне дазволіла накатваць альтэрнатыўныя прашыўкі, адной з якіх стала выява для працы з MicroPython. Ён дазваляе выкарыстоўваць Python для праграмавання EV3, што робіць працу з наборам яшчэ бліжэй да задач з рэальнага жыцця. 

Каб пачаць працаваць, трэба спампаваць выява EV3 MicroPython на любую microSD-карту, усталяваць яе ў мікракампутар EV3 і ўключыць яго. Затым трэба ўсталяваць бясплатнае пашырэнне для Visual Studio. І можна прыступіць да працы. 

Праграмуем першага робата на MycroPython

LEGO MINDSTORMS Education EV3 + MicroPython: праграмуемы дзіцячы канструктар дарослай мовай

На нашым сайце ёсць некалькі ўрокаў для засваення базавых паняццяў робататэхнікі. Мадэлі на EV3 знаёмяць дзяцей з асновамі, якія выкарыстоўваюцца ў самакіравальнай аўтамабілях, завадскіх робатах-зборшчыках, станках з ЧПУ. 

Мы возьмем для прыкладу чарцёжную машыну, якую можна навучыць маляваць узоры і геаметрычныя фігуры. Дадзены кейс з'яўляецца спрошчаным варыянтам дарослых робатаў-зваршчыкаў або фрэзероўшчыкаў і паказвае, як можна выкарыстоўваць EV3 сумесна з MicroPython для навучання школьнікаў. А яшчэ чарцёжная машына можа размеціць адтуліны ў друкаваным поплатку для таты, але гэта ўжо іншы ўзровень, які патрабуе матэматычных разлікаў.

Для працы нам спатрэбяцца:

  • базавы набор LEGO MINDSTORMS Education EV3; 
  • вялікі ліст клятчастай паперы;
  • каляровыя маркеры. 

Зборка самога робата ёсць у інструкцыі, а мы разгледзім прыклад праграмавання.

Спачатку ініцыялізуем бібліятэку модуляў 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 чакае, калі датчык колеру выявіць белую паперу ці сінюю стартавую клетку, а датчык дотыку будзе націснуты. Затым ён малюе ўзор, вяртаецца ў зыходнае становішча і паўтарае ўсё нанова.

Калі прылада не гатова, святлодыёды на кантролеры прымаюць чырвоны колер, і на ВК-экране адлюстроўваецца выява "палец уніз":

while True:
  brick.light(Color.RED)
  brick.display.image(ImageFile.THUMBS_DOWN)

Чакаем, калі датчык колеру лічыць сіні ці белы колер, усталёўваны колер святлодыёдаў зялёным, адлюстроўваем на ВК-экране малюнак «палец уверх» і паведамляем, што прылада гатова да працы:

  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>

Вось такая нескладаная праграма ў нас атрымалася. І зараз запускаем яе і глядзім на робата-чарцяжніка ў справе. 

Што даюць такія прыклады

LEGO MINDSTORMS Education EV3 + MicroPython: праграмуемы дзіцячы канструктар дарослай мовай

EV3 - гэта інструмент для прафарыентацыі ў рамках прафесій STEM і кропка ўваходу ў інжынерныя спецыяльнасці. Бо на ім можна вырашаць практычныя задачы, дзеці атрымліваюць досвед тэхнічных распрацовак і стварэнні прамысловых робатаў, вучацца мадэляваць рэальныя сітуацыі, разумець праграмы і аналізаваць алгарытмы, асвойваюць базавыя канструкцыі праграмавання.

Падтрымка MicroPython робіць платформу EV3 прыдатнай для навучання ў старэйшых класах. Вучні могуць паспрабаваць сябе ў ролі праграмістаў на адной з самых папулярных сучасных моў, пазнаёміцца ​​з прафесіямі, звязанымі з праграмаваннем і інжынерным праектаваннем. Наборы EV3 паказваюць, што пісаць код - гэта не страшна, рыхтуюць да сур'ёзных інжынерных задач і дапамагаюць зрабіць першы крок да засваення тэхнічных спецыяльнасцяў. А для тых, хто працуе ў школе і звязаны з адукацыяй, у нас падрыхтаваны праграмы заняткаў і навучальныя матэрыялы. У іх дэталёва распісана, якія навыкі фарміруюцца пры выкананні тых ці іншых задач, і як атрыманыя навыкі суадносяцца са стандартамі навучання.

Крыніца: habr.com

Купіць надзейны хостынг для сайтаў з абаронай ад DDoS, VPS VDS серверы 🔥 Купіць надзейны хостынг для сайтаў з абаронай ад DDoS, VPS VDS серверы | ProHoster