LEGO MINDSTORMS Education EV3 + MicroPython: programowanie dziecięcego konstruktora dorosłym językiem

Cześć, Habr! Już opowiadaliśmy o platformie LEGO MINDSTORMS Education EV3. Główne cele tej platformy to uczenie poprzez praktyczne przykłady, rozwijanie umiejętności STEAM oraz kształtowanie myślenia inżynieryjnego. Można w niej przeprowadzać laboratoria dotyczące mechaniki i dynamiki. Laboratoria z zestawów LEGO oraz narzędzia do rejestrowania i przetwarzania danych sprawiają, że eksperymenty stają się jeszcze ciekawsze i bardziej zrozumiałe, co pomaga dzieciom lepiej zrozumieć fizykę. Na przykład uczniowie mogą zbierać dane na temat temperatury topnienia i porządkować je za pomocą aplikacji, przedstawiając w formie wykresu. Ale to dopiero początek: dzisiaj opowiemy, jak wzbogacić ten zestaw o środowisko programowania MicroPython i wykorzystać je do nauki robotyki.

LEGO MINDSTORMS Education EV3 + MicroPython: programowanie dziecięcego konstruktora dorosłym językiem

Uczymy programowania za pomocą EV3

Współczesne dzieci pragną widzieć kolorowy wynik. Tak, nudzi ich, gdy program wyświetla liczby w konsoli, a one chcą oglądać kolorowe wykresy, diagramy i tworzyć prawdziwe roboty, które poruszają się i wykonują polecenia. Zwykły kod wydaje się dzieciom zbyt skomplikowany, dlatego lepiej zacząć naukę od czegoś prostszego.

Podstawowe środowisko programowania EV3 zostało stworzone na bazie graficznego języka LabVIEW i umożliwia wizualne definiowanie algorytmów dla robota: polecenia przedstawione są w postaci bloków, które można przeciągać i łączyć.

LEGO MINDSTORMS Education EV3 + MicroPython: programowanie dziecięcego konstruktora dorosłym językiem

Taki sposób dobrze sprawdza się, gdy trzeba pokazać, jak budowane są algorytmy, ale nie nadaje się do programów z dużą ilością bloków. W miarę skomplikowania scenariuszy konieczne jest przejście na programowanie za pomocą kodu, co jest trudne dla dzieci. 

Jest kilka sztuczek, z których jedna polega na pokazaniu, że kod wykonuje te same zadania, co bloki. W środowisku EV3 można to zrobić dzięki integracji z MicroPython: dzieci tworzą ten sam program w podstawowym środowisku programowania za pomocą bloków i w języku Python w Visual Studio Code od Microsoft. Widzą, że oba sposoby działają tak samo, ale rozwiązywanie skomplikowanych zadań za pomocą kodu jest wygodniejsze.

Przechodzimy na MicroPython

Środowisko EV3 opiera się na procesorze ARM9, a twórcy celowo pozostawili architekturę otwartą. To rozwiązanie umożliwiło nałożenie alternatywnych firmware'ów, jednym z nich jest obraz do pracy z MicroPython. Dzięki temu można programować EV3 w języku Python, co znacznie przybliża pracę z zestawem do rzeczywistych zadań. 

Aby rozpocząć pracę, należy pobrać obraz EV3 MicroPython na dowolną kartę microSD, zainstalować ją w mikrokontrolerze EV3 i włączyć go. Następnie trzeba zainstalować darmowe rozszerzenie do Visual Studio. I można przystąpić do pracy. 

Programujemy pierwszego robota w MycroPython

LEGO MINDSTORMS Education EV3 + MicroPython: programowanie dziecięcego konstruktora dorosłym językiem

Na naszej stronie znajdziesz kilka lekcji, które pomogą opanować podstawowe pojęcia z zakresu robotyki. Modele na EV3 zaznajamiają dzieci z podstawami, które są stosowane w autonomicznych pojazdach, robotach montażowych oraz maszynach CNC. 

Weźmiemy za przykład maszynę rysującą, którą można nauczyć rysowania wzorów i figur geometrycznych. Ten przypadek jest uproszczoną wersją dorosłych robotów spawających lub frezarskich i pokazuje, jak można wykorzystać EV3 w połączeniu z MicroPython do nauczania uczniów. A także maszyna rysująca może nanieść otwory na płytkę drukowaną dla taty, ale to już inny poziom, wymagający obliczeń matematycznych.

Do pracy będziemy potrzebować:

  • podstawowy zestaw LEGO MINDSTORMS Education EV3; 
  • duża kartka papieru w kratkę;
  • kolorowe markery. 

Złożenie samego robota jest dostępne w instrukcją, a my przeanalizujemy przykład programowania.

Najpierw inicjalizujemy bibliotekę modułów 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

Konfigurujemy platformę, która obraca rękę jako silnik w porcie B. Ustalamy stosunek przekładni dwuetapowej z ilością zębów 20-12-28 odpowiednio.

turntable_motor = Motor(Port.B, Direction.CLOCKWISE, [20, 12, 28])

Konfigurujemy mechanizm podnoszenia dla ręki jako silnik w porcie C:

seesaw_motor = Motor(Port.C)

Konfigurujemy żyroskop, który mierzy kąt nachylenia ręki, w porcie 2:

gyro_sensor = GyroSensor(Port.S2)

Konfigurujemy czujnik koloru w porcie 3. Czujnik służy do określania białego papieru pod maszyną rysującą:

color_sensor = ColorSensor(Port.S3)

Konfigurujemy czujnik dotyku w porcie 4. Robot zaczyna rysować, gdy czujnik jest naciśnięty:

touch_sensor = TouchSensor(Port.S4)

Definiujemy funkcje, które podnoszą i opuszczają rękę:

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)

Definiujemy funkcję do obrotu uchwytu pióra pod określonym kątem lub do osiągnięcia określonego kąta:

def pen_holder_turn_to(target_angle):
  if target_angle > gyro_sensor.angle():

Jeśli celowy kąt jest większy niż bieżący kąt czujnika żyroskopowego, kontynuujemy ruch zgodnie z ruchem wskazówek zegara z dodatnią prędkością:

    turntable_motor.run(70)
	
while gyro_sensor.angle() < target_angle:
  	
pass
  elif target_angle < gyro_sensor.angle():

Jeśli celowy kąt jest mniejszy niż aktualny kąt czujnika żyroskopowego, poruszamy się przeciwnie do ruchu wskazówek zegara:

    turntable_motor.run(-70)
	
while gyro_sensor.angle() > target_angle:
  	
pass

Zatrzymujemy obracającą się platformę, gdy docelowy kąt zostanie osiągnięty:

  turntable_motor.stop(Stop.BRAKE)

Ustalamy początkową pozycję uchwytu pióra w górnej pozycji:

pen_holder_raise()

Teraz przechodzimy do głównej części programu — nieskończonej pętli. Najpierw EV3 czeka, aż czujnik koloru wykryje biały papier lub niebieską startową komórkę, a czujnik dotykowy zostanie naciśnięty. Następnie rysuje wzór, wraca do pozycji początkowej i powtarza wszystko od nowa.

Gdy urządzenie nie jest gotowe, diody LED na kontrolerze świecą się na czerwono, a na wyświetlaczu LCD pojawia się obrazek „kciuk w dół”:

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

Czekamy, aż czujnik koloru wykryje kolor niebieski lub biały, ustawiamy kolor diod LED na zielony, wyświetlamy na LCD obrazek „kciuk w górę” i informujemy, że urządzenie jest gotowe do pracy:

  while color_sensor.color() not in (Color.BLUE, Color.WHITE):
	
wait(10)
  brick.light(Color.GREEN)
  brick.display.image(ImageFile.THUMBS_UP)

Czekamy na naciśnięcie czujnika dotykowego, przypisujemy czujnikowi żyroskopowemu wartość kąta 0 i zaczynamy rysować:

  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)

Podnosimy uchwyt pióra i przywracamy go do pozycji początkowej:

  pen_holder_raise()
  pen_holder_turn_to(0)

Oto taka prosta program, którą stworzyliśmy. Teraz uruchamiamy ją i obserwujemy robota rysownika w akcji. 

Co dają takie przykłady?

LEGO MINDSTORMS Education EV3 + MicroPython: programowanie dziecięcego konstruktora dorosłym językiem

EV3 to narzędzie do doradztwa zawodowego w ramach zawodów STEM oraz punkt wejścia w inżynieryjne specjalności. Ponieważ można na nim rozwiązywać praktyczne problemy, dzieci zdobywają doświadczenie w technicznych projektach i budowie przemysłowych robotów, uczą się modelować rzeczywiste sytuacje, rozumieć programy i analizować algorytmy, a także opanowują podstawowe konstrukcje programowania.

Wsparcie dla MicroPython sprawia, że platforma EV3 jest odpowiednia do nauki w starszych klasach. Uczniowie mogą spróbować swoich sił w roli programistów w jednym z najpopularniejszych współczesnych języków, zapoznając się z zawodami związanymi z programowaniem i inżynieryjnym projektowaniem. Zestawy EV3 pokazują, że pisanie kodu nie jest straszne, przygotowują do poważnych zadań inżynieryjnych i pomagają zrobić pierwszy krok w kierunku zdobywania technicznych specjalności. A dla tych, którzy pracują w szkole i są związani z edukacją, mamy przygotowane programy zajęć i materiały edukacyjne. Zawierają one szczegółowy opis umiejętności nabywanych podczas wykonywania określonych zadań oraz tego, w jaki sposób nabyte umiejętności odnoszą się do standardów nauczania.

Źródło: habr.com

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster