Ciao, Habr! Siamo già sulla piattaforma LEGO MINDSTORMS Education EV3. Le principali funzioni di questa piattaforma sono l'apprendimento attraverso esempi pratici, lo sviluppo di abilità STEAM e la formazione del pensiero ingegneristico. È possibile condurre esperimenti pratici per studiare meccanica e dinamica. I banchi di laboratorio costruiti con i mattoncini LEGO e le utilità per la registrazione e l'elaborazione dei dati rendono gli esperimenti ancora più interessanti e visivi, aiutando i bambini a comprendere meglio la fisica. Ad esempio, gli studenti possono raccogliere dati sulla temperatura di fusione e, con l'ausilio di un'app, ordinarli e presentarli sotto forma di grafico. Ma questo è solo l'inizio: oggi parleremo di come arricchire questo kit con l'ambiente di programmazione MicroPython e utilizzarlo per insegnare robotica.

Insegnare programmazione con EV3
Gli studenti moderni vogliono vedere risultati colorati. Sì, si annoiano se il programma visualizza numeri nella console e vogliono esplorare grafici colorati, diagrammi e creare veri robot che si muovono ed eseguono comandi. Il codice tradizionale sembra troppo complesso per i bambini, quindi è meglio iniziare con qualcosa di più semplice.
L'ambiente di programmazione di base EV3 è stato creato sulla base del linguaggio grafico LabVIEW e consente di definire algoritmi per il robot in modo visivo: i comandi sono presentati sotto forma di blocchi che possono essere trascinati e collegati.

Questo metodo funziona bene quando si deve mostrare come vengono costruiti gli algoritmi, ma non è adatto per programmi con un gran numero di blocchi. Con la complessità degli scenari, è necessario passare alla programmazione tramite codice, ma per i bambini è difficile compiere questo passo.
Qui ci sono alcuni trucchi, uno dei quali consiste nel mostrare che il codice svolge le stesse funzioni dei blocchi. Nell'ambiente EV3, questo è possibile grazie all'integrazione con MicroPython: i bambini creano lo stesso programma nell'ambiente di programmazione di base utilizzando i blocchi e nel linguaggio Python in Visual Studio Code di Microsoft. Possono vedere che entrambi i metodi funzionano allo stesso modo, ma è più comodo risolvere compiti complessi con il codice.
Passiamo a MicroPython
La piattaforma EV3 è basata su un processore ARM9 e gli sviluppatori hanno lasciato appositamente aperta l'architettura. Questa soluzione ha permesso di installare firmware alternativi, uno dei quali è l'immagine per lavorare con MicroPython. Essa consente di utilizzare Python per programmare l'EV3, rendendo il lavoro con il kit ancora più vicino alle sfide della vita reale.
Per cominciare a lavorare, è necessario scaricare su qualsiasi scheda microSD, installarla nel microcomputer EV3 e accenderlo. Poi bisogna installare per Visual Studio. E si può iniziare a lavorare.
Programmiamo il nostro primo robot su MycroPython

Sul nostro ci sono diverse lezioni per apprendere i concetti di base della robotica. I modelli EV3 introducono i bambini alle basi utilizzate nelle auto a guida autonoma, nei robot da assemblaggio e nelle macchine a controllo numerico.
Prenderemo come esempio una macchina da disegno che può essere insegnata a disegnare motivi e figure geometriche. Questo caso è una versione semplificata dei robot saldatori o fresatori per adulti e mostra come è possibile utilizzare l'EV3 insieme a MicroPython per insegnare agli studenti. Inoltre, la macchina da disegno può fare i segni per i fori su un circuito stampato per papà, ma questo è un livello diverso che richiede calcoli matematici.
Per il lavoro ci serviranno:
- il kit base LEGO MINDSTORMS Education EV3;
- un grande foglio di carta a quadretti;
- marcatori colorati.
La costruzione del robot è disponibile in , mentre noi esamineremo un esempio di programmazione.
Iniziamo a inizializzare la libreria dei 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
Configuriamo la piattaforma che fa girare la penna come un motore nella porta B. Impostiamo il rapporto di trasmissione della trasmissione a due stadi con un numero di denti di 20-12-28 rispettivamente.
turntable_motor = Motor(Port.B, Direction.CLOCKWISE, [20, 12, 28])
Configuriamo il meccanismo di sollevamento per la penna come motore nella porta C:
seesaw_motor = Motor(Port.C)
Configuriamo il giroscopio, che misura l'angolo di inclinazione della penna, nella porta 2:
gyro_sensor = GyroSensor(Port.S2)
Configuriamo il sensore di colore nella porta 3. Il sensore viene utilizzato per determinare la carta bianca sotto la macchina da disegno:
color_sensor = ColorSensor(Port.S3)
Configuriamo il sensore di contatto nella porta 4. Il robot inizia a disegnare quando il sensore è premuto:
touch_sensor = TouchSensor(Port.S4)
Definiamo le funzioni che sollevano e abbassano la penna:
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)
Definiamo una funzione per ruotare il supporto della penna a un angolo specifico o fino a un angolo determinato:
def pen_holder_turn_to(target_angle):
if target_angle > gyro_sensor.angle():
Se l'angolo target è maggiore dell'angolo attuale del sensore giroscopico, continuiamo a muoverci in senso orario con una velocità positiva:
turntable_motor.run(70)
while gyro_sensor.angle() < target_angle:
pass
elif target_angle < gyro_sensor.angle():
Se l'angolo target è minore dell'attuale angolo del giroscopio, ci muoviamo in senso antiorario:
turntable_motor.run(-70)
while gyro_sensor.angle() > target_angle:
pass
Fermiamo la piattaforma rotante quando l'angolo target è stato raggiunto:
turntable_motor.stop(Stop.BRAKE)
Impostiamo la posizione iniziale del supporto della penna in posizione alta:
pen_holder_raise()
Ora inizia la parte principale del programma: un ciclo infinito. Inizialmente, l'EV3 aspetta che il sensore di colore rilevi della carta bianca o una cella di partenza blu, e che il sensore di contatto sia premuto. Poi disegna un motivo, torna nella posizione di partenza e ripete tutto da capo.
Quando il dispositivo non è pronto, i LED sul controller diventano rossi e sul display LCD appare l'immagine "pollice verso il basso":
while True:
brick.light(Color.RED)
brick.display.image(ImageFile.THUMBS_DOWN)
Aspettiamo che il sensore di colore rilevi un colore blu o bianco, impostiamo il colore dei LED su verde, visualizziamo sul display LCD l'immagine "pollice verso l'alto" e comunichiamo che il dispositivo è pronto per l'uso:
while color_sensor.color() not in (Color.BLUE, Color.WHITE):
wait(10)
brick.light(Color.GREEN)
brick.display.image(ImageFile.THUMBS_UP)
Aspettiamo di premere il sensore di contatto, impostiamo il valore dell'angolo del giroscopio a 0 e iniziamo a disegnare:
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)
Solleviamo il supporto della penna e lo riportiamo nella posizione iniziale:
pen_holder_raise()
pen_holder_turn_to(0)
Ecco un programma piuttosto semplice che abbiamo creato. Ora lo avviamo e osserviamo il robot disegnatore in azione.
Cosa offrono tali esempi

EV3 è uno strumento di orientamento professionale nel campo delle professioni STEM e un punto di accesso alle specialità ingegneristiche. Poiché si possono risolvere compiti pratici, i bambini acquisiscono esperienza nello sviluppo tecnico e nella creazione di robot industriali, apprendono a modellare situazioni reali, comprendere programmi e analizzare algoritmi, e padroneggiano le basi della programmazione.
Il supporto a MicroPython rende la piattaforma EV3 adatta all'insegnamento nelle classi superiori. Gli studenti possono provare a ricoprire il ruolo di programmatori in uno dei linguaggi più popolari al giorno d'oggi, conoscere professioni legate alla programmazione e alla progettazione ingegneristica. I kit EV3 mostrano che scrivere codice non è spaventoso, preparano per compiti ingegneristici seri e aiutano a fare il primo passo verso la padronanza delle specialità tecniche. E per chi lavora nella scuola e si occupa di istruzione, abbiamo preparato e materiali didattici. In essi sono dettagliate le competenze che vengono sviluppate nell'esecuzione di determinate attività e come le competenze acquisite si riferiscono agli standard educativi.
Fonte: habr.com
