Bună, Habr! Noi deja despre platforma LEGO MINDSTORMS Education EV3. Obiectivele principale ale acestei platforme sunt învățarea prin exemple practice, dezvoltarea abilităților STEAM și dezvoltarea mentalității inginerești. Poate fi folosit pentru lucrări de laborator pentru a studia mecanica și dinamica. Băncile de laborator realizate din cărămizi LEGO și utilități pentru înregistrarea și procesarea datelor fac experimentele și mai interesante și mai vizuale și îi ajută pe copii să înțeleagă mai bine fizica. De exemplu, elevii pot colecta date despre punctul de topire și pot folosi aplicația pentru a le organiza și a le prezenta într-un grafic. Dar acesta este doar începutul: astăzi vă vom spune cum să completați acest set cu mediul de programare MicroPython și să îl folosiți pentru a preda robotica.

Învață programarea folosind EV3
Scolarii moderni vor sa vada rezultate pline de culoare. Da, se plictisesc dacă programul imprimă numere pe consolă și vor să se uite la grafice color, diagrame și să creeze roboți reali care se mișcă și urmează comenzile. Codul obișnuit pare, de asemenea, prea complicat pentru copii, așa că este mai bine să începeți să învățați cu ceva mai ușor.
Mediul de programare de bază EV3 se bazează pe limbajul grafic LabVIEW și vă permite să specificați vizual algoritmi pentru robot: comenzile sunt prezentate sub formă de blocuri care pot fi trase și conectate.

Această metodă funcționează bine atunci când trebuie să arătați cum sunt construiți algoritmii, dar nu este potrivită pentru programe cu un număr mare de blocuri. Pe măsură ce scenariile devin mai complexe, este necesar să treceți la programarea cu cod, dar acest pas este dificil de făcut pentru copii.
Există câteva trucuri aici, dintre care unul este să arate că codul face același lucru ca și blocurile. În mediul EV3, acest lucru este posibil prin integrarea MicroPython, astfel încât copiii să poată crea același program atât în mediul de bază de programare în bloc, cât și în Python în Visual Studio Code al Microsoft. Ei văd că ambele metode funcționează la fel, dar rezolvarea problemelor complexe folosind cod este mai convenabilă.
Trecerea la MicroPython
Mediul EV3 este construit pe un procesor ARM9, iar dezvoltatorii au lăsat în mod deliberat arhitectura deschisă. Această soluție a făcut posibilă lansarea unui firmware alternativ, unul dintre acestea fiind o imagine pentru lucrul cu MicroPython. Vă permite să utilizați Python pentru a vă programa EV3, aducând kitul și mai aproape de sarcinile din viața reală.
Pentru a începe, trebuie să descărcați pe orice card microSD, instalați-l în microcomputerul EV3 și porniți-l. Apoi trebuie să instalați pentru Visual Studio. Și poți începe să lucrezi.
Programarea primului robot în MycroPython

Pe noastre Există mai multe lecții pentru stăpânirea conceptelor de bază ale roboticii. Modelele EV3 îi prezintă copiilor noțiunile de bază care sunt utilizate în mașinile cu conducere autonomă, roboții de asamblare din fabrică și mașinile CNC.
Vom lua exemplul unei mașini de desen, care poate fi învățată să deseneze modele și forme geometrice. Acest caz este o versiune simplificată a roboților de sudură sau frezare pentru adulți și arată cum EV3 poate fi utilizat împreună cu MicroPython pentru a-i învăța pe școlari. Și o mașină de desenat poate marca găuri pe o placă de circuit imprimat pentru tata, dar acesta este un alt nivel care necesită matematică.
Pentru muncă avem nevoie de:
- Set de bază LEGO MINDSTORMS Education EV3;
- foaie mare de hârtie în carouri;
- markere colorate.
Asamblarea robotului în sine este în , și ne vom uita la un exemplu de programare.
Mai întâi inițializam biblioteca de module 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
Am instalat o platformă care rotește mânerul ca un motor în portul B. Am stabilit raportul de transmisie al unui tren de viteze în două trepte cu un număr de dinți de 20-12-28, respectiv.
turntable_motor = Motor(Port.B, Direction.CLOCKWISE, [20, 12, 28])
Configuram mecanismul de ridicare pentru maner ca motor in portul C:
seesaw_motor = Motor(Port.C)
Configuram giroscopul, care masoara unghiul de inclinare al manerului, in portul 2:
gyro_sensor = GyroSensor(Port.S2)
Configuram senzorul de culoare în portul 3. Senzorul este utilizat pentru a detecta hârtie albă sub mașina de desen:
color_sensor = ColorSensor(Port.S3)
Configuram senzorul tactil in portul 4. Robotul incepe sa deseneze cand este apasat senzorul:
touch_sensor = TouchSensor(Port.S4)
Definim funcțiile care ridică și coboară mânerul:
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)
Definim o funcție pentru a roti mânerul la un unghi dat sau la un anumit unghi:
def pen_holder_turn_to(target_angle):
if target_angle > gyro_sensor.angle():
Dacă unghiul țintă este mai mare decât unghiul curent al senzorului giroscop, continuați în sensul acelor de ceasornic cu o viteză pozitivă:
turntable_motor.run(70)
while gyro_sensor.angle() < target_angle:
pass
elif target_angle < gyro_sensor.angle():
Dacă unghiul țintă este mai mic decât senzorul giroscop actual, atunci deplasați-vă în sens invers acelor de ceasornic:
turntable_motor.run(-70)
while gyro_sensor.angle() > target_angle:
pass
Opriți platforma rotativă când este atins unghiul țintă:
turntable_motor.stop(Stop.BRAKE)
Setați poziția inițială a mânerului în poziția superioară:
pen_holder_raise()
Acum vine partea principală a programului - o buclă fără sfârșit. EV3 așteaptă mai întâi ca senzorul de culoare să detecteze o hârtie albă sau un pătrat albastru de început și ca senzorul tactil să fie apăsat. Apoi desenează un model, revine la poziția inițială și repetă totul din nou.
Când dispozitivul nu este pregătit, LED-urile controlerului devin roșii și pe ecranul LCD este afișată o imagine „degetul mare în jos”:
while True:
brick.light(Color.RED)
brick.display.image(ImageFile.THUMBS_DOWN)
Așteptăm până când senzorul de culoare numără albastru sau alb, setăm culoarea LED-ului la verde, afișăm o imagine „degetul mare” pe ecranul LCD și raportăm că dispozitivul este gata de utilizare:
while color_sensor.color() not in (Color.BLUE, Color.WHITE):
wait(10)
brick.light(Color.GREEN)
brick.display.image(ImageFile.THUMBS_UP)
Așteptăm să fie apăsat senzorul tactil, atribuim valoarea unghiului 0 senzorului giroscopic și începem desenul:
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)
Ridicați suportul stiloului și readuceți-l în poziția inițială:
pen_holder_raise()
pen_holder_turn_to(0)</i>
Acesta este programul simplu pe care l-am creat. Și acum îl lansăm și ne uităm la robotul de desenare în acțiune.
Ce oferă astfel de exemple?

EV3 este un instrument de orientare în carieră pentru carierele STEM și un punct de intrare în carierele de inginerie. Deoarece poate fi folosit pentru a rezolva probleme practice, copiii dobândesc experiență în dezvoltarea tehnică și crearea roboților industriali, învață să simuleze situații reale, să înțeleagă programe și să analizeze algoritmi și să stăpânească constructe de programare de bază.
Suportul MicroPython face ca platforma EV3 să fie potrivită pentru predarea în liceu. Studenții se pot încerca ca programatori într-una dintre cele mai populare limbi moderne și se pot familiariza cu profesii legate de programare și proiectare inginerească. Kiturile EV3 arată că codarea nu este înfricoșătoare, te pregătește pentru provocări serioase de inginerie și te ajută să faci primul pas către stăpânirea abilităților tehnice. Iar pentru cei care lucrează în școli și sunt asociați cu educația, ne-am pregătit și materiale educaționale. Ele descriu în detaliu ce abilități sunt dezvoltate atunci când îndeplinesc anumite sarcini și modul în care abilitățile dobândite se raportează la standardele de formare.
Sursa: www.habr.com
