LEGO MINDSTORMS Education EV3 + MicroPython: programmiamo un costruttore per bambini con un linguaggio da adulti

Ciao, Habr! Abbiamo già parlavano parlato della piattaforma LEGO MINDSTORMS Education EV3. Gli obiettivi principali di questa piattaforma sono l'apprendimento pratico, lo sviluppo delle competenze STEAM e la formazione del pensiero ingegneristico. È possibile eseguire esperimenti di laboratorio per studiare meccanica e dinamica. I banchi di laboratorio realizzati con i mattoncini LEGO e gli strumenti 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, tramite un'applicazione, organizzarli e presentarli sotto forma di grafico. Ma questo è solo l'inizio: oggi parleremo di come integrare questo kit con l'ambiente di programmazione MicroPython e usarlo per insegnare la robotica.

LEGO MINDSTORMS Education EV3 + MicroPython: programmiamo un costruttore per bambini con un linguaggio da adulti

Insegniamo la programmazione con EV3

Gli studenti moderni vogliono vedere risultati colorati. Sì, si annoiano se il programma visualizza numeri nella console e desiderano esaminare grafici colorati, diagrammi e creare veri robot che si muovono e svolgono compiti. Il codice tradizionale sembra troppo complicato per i bambini, quindi è meglio iniziare l'apprendimento con qualcosa di più semplice.

L'ambiente di programmazione di base di EV3 è basato sul linguaggio grafico LabVIEW e consente di impostare gli algoritmi per il robot in modo visivo: i comandi sono rappresentati da blocchi che possono essere trascinati e collegati.

LEGO MINDSTORMS Education EV3 + MicroPython: programmiamo un costruttore per bambini con un linguaggio da adulti

Questo metodo funziona bene per mostrare come si costruiscono gli algoritmi, ma non è adatto per programmi con un gran numero di blocchi. Quando gli scenari si complicano, è necessario passare alla programmazione tramite codice, ma per i bambini è difficile compiere questo passo. 

Qui ci sono alcuni suggerimenti, uno dei quali è dimostrare che il codice svolge gli stessi compiti dei blocchi. Nell'ambiente EV3 questo è possibile grazie all'integrazione con MicroPython: i bambini creano lo stesso programma nell'ambiente di programmazione di base con i blocchi e nel linguaggio Python utilizzando Visual Studio Code di Microsoft. Possono vedere che entrambi i metodi funzionano allo stesso modo, ma con il codice risolvere compiti complessi è più comodo.

Passiamo a MicroPython

L'ambiente EV3 è basato su un processore ARM9 e i programmatori hanno appositamente mantenuto l'architettura aperta. Questa decisione ha permesso di installare firmware alternativi, uno dei quali è l'immagine per lavorare con MicroPython. Consente di utilizzare Python per programmare EV3, avvicinando ulteriormente il lavoro con il kit alle sfide della vita reale. 

Per iniziare a lavorare, è necessario scaricare l'immagine EV3 MicroPython su qualsiasi scheda microSD, inserirla nel microcomputer EV3 e accenderlo. Dopodiché, occorre installare l'estensione gratuita per Visual Studio. E si può iniziare a lavorare. 

Programmiamo il primo robot in MicroPython

LEGO MINDSTORMS Education EV3 + MicroPython: programmiamo un costruttore per bambini con un linguaggio da adulti

Sul nostro sito ci sono diversi tutorial per apprendere i concetti di base della robotica. I modelli su EV3 introducono i bambini alle basi utilizzate nei veicoli autonomi, nei robot industriali e nelle macchine CNC. 

Prenderemo come esempio una macchina da disegno che si può insegnare a disegnare modelli e figure geometriche. Questo caso è una versione semplificata dei robot saldatori o fresatori per adulti e mostra come utilizzare EV3 in combinazione con MicroPython per l'insegnamento agli studenti. Inoltre, la macchina da disegno può segnare fori su una scheda elettronica per papà, ma questo è un altro livello che richiede calcoli matematici.

Per lavorare avremo bisogno di:

  • un kit base LEGO MINDSTORMS Education EV3; 
  • un grande foglio di carta millimetrata;
  • marker colorati. 

La costruzione del robot è disponibile in documentazione, ma noi esamineremo un esempio di programmazione.

Iniziamo con l'inizializzazione della 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

Impostiamo la piattaforma che ruota la penna come motore nella porta B. Impostiamo il rapporto di trasmissione della trasmissione a due stadi con un número di denti 20-12-28 rispettivamente.

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

Impostiamo il meccanismo di sollevamento per la penna come motore nella porta C:

seesaw_motor = Motor(Port.C)

Impostiamo il giroscopio che misura l'angolo di inclinazione della penna, nella porta 2:

gyro_sensor = GyroSensor(Port.S2)

Impostiamo il sensore di colore nella porta 3. Questo sensore viene utilizzato per riconoscere la carta bianca sotto la macchina da disegno:

color_sensor = ColorSensor(Port.S3)

Impostiamo il sensore di contatto nella porta 4. Il robot inizia a disegnare quando il sensore viene 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 la penna a un angolo specificato o fino a un angolo definito:

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

Se l'angolo obiettivo è maggiore dell'angolo attuale del giroscopio, continuiamo a muoverci in senso orario con 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'angolo attuale del sensore giroscopico, ci muoviamo in senso antiorario:

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

Fermiamo la piattaforma rotante quando l'angolo target è raggiunto:

  turntable_motor.stop(Stop.BRAKE)

Impostiamo la posizione iniziale del supporto della penna in alto:

pen_holder_raise()

Ora inizia la parte principale del programma: un ciclo infinito. Per prima cosa, l'EV3 attende che il sensore di colore rilevi carta bianca o una cella di partenza blu e che il sensore di contatto venga premuto. Poi disegna un motivo, torna alla posizione iniziale e ripete tutto da capo.

Quando il dispositivo non è pronto, i LED sul controller diventano rossi e sullo schermo LCD appare l'immagine "pollice verso il basso":

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

Attendiamo che il sensore di colore rilevi blu o bianco, impostiamo il colore dei LED su verde, visualizziamo sull'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 che il sensore di contatto venga premuto, azzeriamo l'angolo del sensore giroscopico 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)</i>

Ecco il programma piuttosto semplice che abbiamo creato. Ora lo avviamo e osserviamo il robot disegnatore in azione. 

Cosa possono insegnare questi esempi

LEGO MINDSTORMS Education EV3 + MicroPython: programmiamo un costruttore per bambini con un linguaggio da adulti

EV3 è uno strumento per l'orientamento professionale nelle professioni STEM ed un punto di ingresso nelle carriere ingegneristiche. Poiché può risolvere problemi 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 acquisiscono le basi della programmazione.

Il supporto per MicroPython rende la piattaforma EV3 adatta per l'insegnamento nelle scuole superiori. Gli studenti possono mettersi nei panni di programmatori in uno dei linguaggi moderni più popolari, conoscere le professioni legate alla programmazione e alla progettazione ingegneristica. I kit EV3 dimostrano che scrivere codice non è spaventoso, preparano a sfide ingegneristiche significative e aiutano a fare il primo passo verso l'acquisizione di specialità tecniche. Per chi lavora nella scuola e si occupa di educazione, abbiamo preparato programmi di lezioni e materiali didattici. Questi forniscono dettagli su quali competenze vengono sviluppate attraverso diversi compiti e come queste competenze si allineano con gli standard di istruzione.

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, server VPS VDS 🔥 Acquista hosting affidabile per siti web con protezione DDoS, server VPS VDS | ProHoster