LEGO MINDSTORMS Education EV3 + MicroPython: programăm constructorul pentru copii cu un limbaj destinat adulților

Salut, Habr! Noi deja despre despre platforma LEGO MINDSTORMS Education EV3. Principalele obiective ale acestei platforme sunt învățarea prin exemple practice, dezvoltarea abilităților STEAM și formarea gândirii inginerești. Aceasta permite desfășurarea de lucrări de laborator în studierea mecanicii și dinamicii. Standurile de laborator realizate din blocuri LEGO și utilitarele pentru înregistrarea și prelucrarea datelor fac experimentele și mai interesante și vizibile, ajutând copiii să înțeleagă mai bine fizica. De exemplu, elevii pot colecta date despre temperatura de topire și, cu ajutorul aplicației, să le sistematizeze și să le prezinte sub formă de grafic. Dar aceasta este doar începutul: astăzi vă vom spune cum să completați acest set cu un mediu de programare MicroPython și să-l folosiți pentru a învăța robotică.

LEGO MINDSTORMS Education EV3 + MicroPython: programăm constructorul pentru copii cu un limbaj destinat adulților

Învățăm programarea cu ajutorul EV3

Elevii moderni doresc să vadă rezultate colorate. Da, le este plictisitor dacă programul afișează numere în consolă, iar ei vor să analizeze grafice colorate, diagrame și să creeze roboti reali care se mișcă și execută comenzi. Codul obișnuit pare, de asemenea, prea complicat pentru copii, așa că este mai bine să începem învățarea cu ceva mai simplu.

Mediul de programare de bază EV3 este creat pe baza limbajului grafic LabVIEW și permite definirea algoritmilor pentru robot vizual: comenzile sunt reprezentate sub formă de blocuri, care pot fi mutați și conectați.

LEGO MINDSTORMS Education EV3 + MicroPython: programăm constructorul pentru copii cu un limbaj destinat adulților

Această metodă funcționează bine atunci când trebuie să arăți cum sunt construite algoritmii, dar nu este potrivită pentru programele cu un număr mare de blocuri. Pe măsură ce scenariile devin mai complicate, este necesar să treci la programarea cu ajutorul codului, dar copiilor le este greu să facă acest pas. 

Aici sunt câteva trucuri, printre care — să arătăm că codul îndeplinește aceleași sarcini ca și blocurile. În mediul EV3, acest lucru se poate face datorită integrării cu MicroPython: copiii creează același program în mediul de programare de bază folosind blocuri și în limbajul Python în Visual Studio Code de la Microsoft. Ei văd că ambele metode funcționează la fel, dar folosind codul este mai convenabil să rezolvi sarcini complexe.

Trecem la MicroPython

Mediul EV3 este construit pe baza procesorului ARM9, iar dezvoltatorii au lăsat arhitectura deschisă. Această soluție a permis instalarea de firmware-uri alternative, dintre care una este imaginea pentru lucrul cu MicroPython. Aceasta permite utilizarea Python pentru programarea EV3, ceea ce face ca lucrul cu setul să fie și mai apropiat de sarcinile din viața reală. 

Pentru a începe, trebuie să descărcați imaginea EV3 MicroPython pe orice card microSD, să-l instalați în microcomputerul EV3 și să-l porniți. Apoi trebuie să instalați extensia gratuită pentru Visual Studio. Și puteți începe lucrul. 

Programăm primul robot cu MycroPython

LEGO MINDSTORMS Education EV3 + MicroPython: programăm constructorul pentru copii cu un limbaj destinat adulților

Pe site-ul nostru site sunt câteva lecții pentru a învăța conceptele de bază ale roboticii. Modelele de pe EV3 familiarizează copiii cu principiile folosite în automobilele autonome, roboții de asamblare din fabrici, mașinile cu CNC. 

Vom lua ca exemplu o mașină de desen, pe care o putem învăța să deseneze modele și forme geometrice. Acest caz este o variantă simplificată a roboților de sudură sau frezare și arată cum poate fi folosit EV3 împreună cu MicroPython pentru a învăța elevii. De asemenea, mașina de desen poate marca găuri pe un circuit imprimat pentru tata, dar acesta este un alt nivel care necesită calcule matematice.

Pentru lucru avem nevoie de:

  • setul de bază LEGO MINDSTORMS Education EV3; 
  • o foaie mare de hârtie pătrată;
  • marker colorat. 

Asamblarea robotului este disponibilă în instrucțiuni, iar noi vom analiza un exemplu de programare.

Mai întâi, inițializăm biblioteca modulelor 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

Configurăm platforma care rotește mânerul ca un motor în portul B. Setăm raportul de transmisie al transmisiei cu pinioane cu 20-12-28 de dinți, respectiv.

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

Configurăm mecanismul de ridicare pentru mâner ca un motor în portul C:

seesaw_motor = Motor(Port.C)

Configurăm giroscopul care măsoară unghiul de înclinare al mânerului, în portul 2:

gyro_sensor = GyroSensor(Port.S2)

Configurăm senzorul de culoare în portul 3. Senzorul este utilizat pentru a determina hârtia albă de sub mașina de desen:

color_sensor = ColorSensor(Port.S3)

Configurăm senzorul de atingere în portul 4. Robotul începe să deseneze când senzorul este apăsat:

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 suportul stiloului la un unghi specific sau până 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 giroscopic, continuăm să ne mișcăm în sens orar 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 unghiul curent al senzorului giroscopic, ne mișcăm în sens antihorariu:

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

Oprim platforma rotativă atunci când unghiul țintă este atins:

  turntable_motor.stop(Stop.BRAKE)

Setăm poziția inițială a suportului stiloului în poziția superioară:

pen_holder_raise()

Acum urmează partea principală a programului — un ciclu infinit. Mai întâi, EV3 așteaptă ca senzorul de culoare să detecteze hârtie albă sau un patrat de start albastru, iar senzorul de atingere să fie apăsat. Apoi desenează un model, se întoarce în poziția inițială și repetă totul din nou.

Când dispozitivul nu este pregătit, LED-urile de pe controller devin roșii, iar pe ecranul LCD apare imaginea "deget în jos":

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

Așteptăm până când senzorul de culoare percepe culoarea albastră sau albă, setăm culoarea LED-urilor pe verde, afișăm pe ecranul LCD imaginea "deget în sus" și anunțăm că dispozitivul este pregătit de lucru:

  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 apăsarea senzorului de atingere, atribuim senzorului giroscopic valoarea unghiului 0 și începem să desenăm:

  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)

Ridicăm suportul stiloului și îl readucem în poziția inițială:

  pen_holder_raise()
  pen_holder_turn_to(0)

Asta este o programare simplă pe care am creat-o. Și acum o lansăm și ne uităm la robotul desenator în acțiune. 

Ce ne oferă astfel de exemple.

LEGO MINDSTORMS Education EV3 + MicroPython: programăm constructorul pentru copii cu un limbaj destinat adulților

EV3 este un instrument pentru orientarea profesională în cadrul profesiilor STEM și un punct de plecare pentru specializările inginerești. Deoarece este posibil să rezolve sarcini practice, copiii dobândesc experiență în dezvoltări tehnice și crearea de roboți industriali, învață să modeleze situații reale, să înțeleagă programele și să analizeze algoritmii, stăpânesc conceptele de bază ale programării.

Suportul pentru MicroPython face ca platforma EV3 să fie potrivită pentru învățământul în clasele superioare. Elevii pot încerca să se pună în pielea programatorilor pe unul dintre cele mai populare limbaje moderne, să se familiarizeze cu profesiile legate de programare și proiectarea inginerească. Seturile EV3 demonstrează că a scrie cod nu este înfricoșător, pregătesc pentru sarcini inginerești serioase și ajută la primul pas în stăpânirea specializărilor tehnice. Iar pentru cei care lucrează în domeniul educației, am pregătit programa de activități și materialele educaționale. Acestea detaliază ce abilități se dezvoltă în urma îndeplinirii anumitor sarcini și cum se raportează abilitățile dobândite la standardele de învățare.

Sursa: habr.com

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster