Ciao, Habr! Avemu digià nantu à a piattaforma LEGO MINDSTORMS Education EV3. L'ugettivi principali di sta piattaforma sò l'apprendimentu attraversu esempi pratichi, u sviluppu di cumpetenze STEAM è u sviluppu di una mentalità ingegneria. Pò esse usatu per u travagliu di laboratoriu per studià a meccanica è a dinamica. Banchi di laboratoriu fatti di mattoni LEGO è utilità per a registrazione è u processu di dati facenu esperimenti ancu più interessanti è visuali è aiutanu i zitelli à capisce megliu a fisica. Per esempiu, i studienti ponu cullà i dati di u puntu di fusione è aduprà l'app per urganizà è prisentallu in un graficu. Ma questu hè solu u principiu: oghje vi diceremu cumu cumplementari stu settore cù l'ambiente di prugrammazione MicroPython è l'utilizanu per insignà a robotica.

Amparate a prugrammazione cù EV3
I scolari muderni volenu vede risultati culuriti. Iè, sò annoiati se u prugramma stampa numeri à a cunsola, è volenu guardà grafici di culore, diagrammi è creanu veri robots chì si movenu è seguitanu cumandamenti. U codice regulare pare ancu troppu cumplicatu per i zitelli, cusì hè megliu principià à amparà cù qualcosa di più faciule.
L'ambiente di prugrammazione EV3 di basa hè basatu annantu à a lingua gràfica LabVIEW è permette di specificà l'algoritmi per u robot visualmente: i cumandamenti sò presentati in forma di blocchi chì ponu esse trascinati è cunnessi.

Stu metudu funziona bè quandu avete bisognu di vede cumu l'algoritmi sò custruiti, ma ùn hè micca adattatu per i prugrammi cù un gran numaru di blocchi. Quandu i scenarii diventanu più cumplessi, hè necessariu di passà à a prugrammazione cù u codice, ma questu passu hè difficiule per i zitelli.
Ci hè uni pochi di trucchi quì, unu di i quali hè di dimustrà chì u codice faci a listessa cosa cum'è i blocchi. In l'ambiente EV3, questu hè pussibule attraversu l'integrazione MicroPython, cusì i zitelli ponu creà u stessu prugramma sia in l'ambiente di prugrammazione di bloccu di basa sia in Python in Visual Studio Code di Microsoft. Vedenu chì i dui metudi funzionanu uguali, ma risolve i prublemi cumplessi cù u codice hè più cunvene.
Passendu à MicroPython
L'ambiente EV3 hè custruitu nantu à un processore ARM9, è i sviluppatori anu lasciatu deliberatamente l'architettura aperta. Questa suluzione hà permessu di sparghje un firmware alternativu, unu di quale era una maghjina per travaglià cù MicroPython. Permette di utilizà Python per programà u vostru EV3, purtendu u kit ancu più vicinu à i travaglii di a vita reale.
Per cumincià, avete bisognu di scaricà in ogni carta microSD, installate in u microcomputer EV3 è accende. Allora avete bisognu di stallà per Visual Studio. È pudete cumincià à travaglià.
Programmazione di u primu robot in MycroPython

Nantu à i nostri Ci hè parechje lezioni per ammaistrà i cuncetti basi di robotica. I mudelli EV3 introducenu i zitelli à i principii chì sò usati in vitture autoguidati, robot d'assemblea di fabbrica è macchine CNC.
Pigliemu l'esempiu di una machina di disegnu, chì pò esse insignatu à disegnà mudelli è formi geomettichi. Stu casu hè una versione simplificata di robot di saldatura o fresa per adulti è mostra cumu EV3 pò esse usatu in cungiunzione cù MicroPython per insignà i scolari. È una macchina di disegnu pò marcà i buchi in un circuitu stampatu per u babbu, ma questu hè un altru livellu chì esige matematica.
Per u travagliu avemu bisognu:
- LEGO MINDSTORMS Education EV3 Core Set;
- grande foglia di carta a scacchi;
- marcatori di culore.
L'assemblea di u robot stessu hè in , è fighjemu un esempiu di prugrammazione.
Prima avemu inizializatu a biblioteca di moduli 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
Avemu stallatu una piattaforma chì rotate u manicu cum'è un mutore in u portu B. Avemu stabilitu u rapportu di l'ingranaggio di un trenu d'ingranaggi di dui fasi cù una quantità di denti di 20-12-28, rispettivamente.
turntable_motor = Motor(Port.B, Direction.CLOCKWISE, [20, 12, 28])
Configuremu u mecanismu di elevazione per u manicu cum'è un mutore in u portu C:
seesaw_motor = Motor(Port.C)
Cunfiguremu u giroscopiu, chì misura l'angolo di inclinazione di u manicu, in u portu 2:
gyro_sensor = GyroSensor(Port.S2)
Avemu cunfigurà u sensoru di culore in u portu 3. U sensoru hè utilizatu per detectà carta bianca sottu a macchina di disegnu:
color_sensor = ColorSensor(Port.S3)
Cunfiguremu u sensoru di u toccu in u portu 4. U robot principia à disegnu quandu u sensoru hè pressatu:
touch_sensor = TouchSensor(Port.S4)
Definimu e funzioni chì elevanu è abbassanu u manicu:
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)
Definimu una funzione per rotà u manicu à un angulu datu o à un certu angulu:
def pen_holder_turn_to(target_angle):
if target_angle > gyro_sensor.angle():
Se l'angolo di destinazione hè più grande ch'è l'angolo di u sensoru di gyro currente, cuntinueghja in u sensu orariu cù una velocità positiva:
turntable_motor.run(70)
while gyro_sensor.angle() < target_angle:
pass
elif target_angle < gyro_sensor.angle():
Se l'angolo di destinazione hè menu di u sensoru di gyro currente, move in senso antiorario:
turntable_motor.run(-70)
while gyro_sensor.angle() > target_angle:
pass
Ferma a piattaforma rotativa quandu l'angolo di destinazione hè righjuntu:
turntable_motor.stop(Stop.BRAKE)
Pone a pusizione iniziale di u manicu in a pusizione superiore:
pen_holder_raise()
Avà vene a parte principale di u prugramma - un ciclu infinitu. EV3 prima aspetta chì u sensoru di culore detecte un cartulare biancu o un quadratu di partenza blu è chì u sensoru di u toccu sia pressatu. Allora disegna un mudellu, torna à a pusizione di partenza è ripeti tuttu.
Quandu u dispusitivu ùn hè micca prontu, i LED nantu à u controller diventanu rossi è una maghjina "pollice giù" hè visualizata nantu à u screnu LCD:
while True:
brick.light(Color.RED)
brick.display.image(ImageFile.THUMBS_DOWN)
Aspittemu finu à chì u sensoru di culore conta blu o biancu, stabilisce u culore LED à verde, affissà una maghjina "pulgaru" nantu à a pantalla LCD è informa chì u dispusitivu hè prontu per l'usu:
while color_sensor.color() not in (Color.BLUE, Color.WHITE):
wait(10)
brick.light(Color.GREEN)
brick.display.image(ImageFile.THUMBS_UP)
Aspittemu chì u sensoru touch sia pressatu, assignate u valore d'angolo 0 à u sensoru giroscopicu è cuminciate à disegnu:
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)
Alzate u supportu di penna è torna à a so pusizione originale:
pen_holder_raise()
pen_holder_turn_to(0)</i>
Questu hè u prugramma simplice chì avemu creatu. È avà u lanciamu è fighjemu u robot di scrittura in azzione.
Chì furnisce tali esempii ?

EV3 hè un strumentu di guida di carriera per e carriere STEM è un puntu d'entrata in carriere di ingegneria. Siccomu pò esse usatu per risolve i prublemi pratichi, i zitelli acquistenu sperienza in u sviluppu tecnicu è a creazione di robot industriali, amparà à simulà situazioni reali, capiscenu i prugrammi è analizà l'algoritmi, è maestru di custruzzioni di prugrammazione di basa.
U supportu MicroPython rende a piattaforma EV3 adatta per l'insignamentu di u liceu. I studienti ponu pruvà sè stessi cum'è programatori in una di e lingue muderne più populari, è familiarizà cù e professioni ligati à a prugrammazione è u disignu di l'ingegneria. I kit EV3 mostranu chì a codificazione ùn hè micca spaventosa, vi preparanu per seri sfidi di l'ingegneria, è vi aiutanu à fà u primu passu versu u maestru di e cumpetenze tecniche. È per quelli chì travaglianu in i scoli è sò assuciati cù l'educazione, avemu preparatu è materiali educativi. Descrivenu in dettaglio quali cumpetenze sò sviluppate quandu anu realizatu certi travaglii, è cumu e cumpetenze acquistate sò in relazione cù i normi di furmazione.
Source: www.habr.com
