Set di base MINDSTORMS EV3

Crea un sistema di controllo della velocità

Progetta un sistema di controllo in grado di cambiare la velocità di un veicolo con il semplice tocco di un pulsante.

Oltre 120 min.
Intermedio
Dai 14 ai 18 anni
set-cruise-controle

Piano della lezione

Preparazione

  • Leggi il materiale per l'insegnante.
  • Se lo ritieni necessario, pianifica una lezione utilizzando il materiale introduttivo presente nel software EV3 Lab o nell'app EV3 Programming per aiutare gli studenti a familiarizzare con LEGO® MINDSTORMS® Education EV3.

Coinvolgimento (30 min.)

  • Utilizza le idee suggerite nella sezione Avvia una discussione riportata di seguito per coinvolgere gli studenti in una discussione incentrata sul progetto.
  • Spiega il progetto.
  • Dividi la tua classe in team composti da due studenti.
  • Concedi agli studenti il tempo necessario per scambiarsi le idee.

Esplorazione (30 min.)

  • Chiedi agli studenti di creare vari prototipi.
  • Incoraggiali a esplorare sia la costruzione che la programmazione.
  • Chiedi ad ogni coppia di studenti di costruire e testare due soluzioni.

Spiegazione (60 min.)

  • Invita gli studenti a testare le proprie soluzioni e a scegliere la migliore.
  • Accertati che siano in grado di creare le proprie tabelle di test.
  • Concedi ad ogni team il tempo necessario per completare il proprio progetto e raccogliere risorse per documentare il lavoro svolto.

Elaborazione (60 min.)

  • Concedi agli studenti il tempo necessario per elaborare i report finali.
  • Avvia una sessione di condivisione in cui ogni team presenta i risultati ottenuti.

Valutazione

  • Fornisci un riscontro su ciò che ogni studente ha realizzato.
  • Per semplificare la procedura, puoi utilizzare le sezioni di valutazione fornite.

Avvia una discussione

La funzione cruise control presente sulle automobili è un sistema che controlla automaticamente la velocità del veicolo. Anche se sembra una tecnologia molto moderna, è stata introdotta nel 1958. Ma come funziona?

set-cruise-controle

Incoraggia un processo di brainstorming attivo.

Chiedi agli studenti di riflettere su queste domande:

  • Qual è lo scopo del cruise control in un'auto?
  • In che modo il cruise control aiuta un conducente durante i tragitti più lunghi?
  • Come si potrebbe migliorare il cruise control?
  • In che modo un conducente potrebbe utilizzare un sistema di controllo della velocità basato sulla pressione di un pulsante?
  • Quali elementi è necessario includere nel programma per trasformare le pressioni del pulsante in modifiche della velocità del motore?

Concedi agli studenti il tempo necessario per rispondere a queste domande.

Incoraggia gli studenti a documentare le loro idee iniziali e a spiegare perché hanno scelto la soluzione che utilizzeranno per creare il loro primo prototipo. Invitali a descrivere la modalità di valutazione delle loro idee durante tutto il progetto. In questo modo, quando gli studenti eseguiranno la verifica e la revisione, disporranno di informazioni specifiche da utilizzare per valutare la soluzione e decidere se è stata o meno efficace.

Suggerimenti per la costruzione

Inizia costruendo un veicolo. Gli studenti possono utilizzare uno dei modelli di struttura motrice LEGO® MINDSTORMS® EV3 suggeriti o progettarne uno proprio. Assicurati che includano pulsanti simili a quelli che si trovano sul volante di un'auto dotata di cruise control.

ev3-robot-color-sensor

Utilizzo di due sensori di contatto

Spiega agli studenti che, nella lezione di oggi, dovranno utilizzare due sensori di contatto per controllare e mantenere la velocità del loro modello di struttura motrice.

Suggerimenti per la programmazione

Per questo progetto, gli studenti utilizzeranno probabilmente un Blocco Variabili. Un Blocco Variabili è un blocco di programmazione per l'archiviazione di dati (ad esempio, logici, di testo, valori numerici o matrici) che potranno essere sovrascritti in qualsiasi momento mentre il programma è in esecuzione.

Una variabile consente di archiviare valori aggiornabili in un programma. Il valore memorizzato in una variabile può essere sovrascritto più volte fino a quando il programma è in esecuzione.

Aumento della velocità con programma basato su variabili

coding-07-01

Spiegazione del programma

  1. Avvia il programma.

  2. Crea un Blocco Variabili chiamato "Velocità" e immetti 0 come valore.

  3. Se si preme il sensore di contatto:

    a. Leggi la variabile denominata "Velocità".
    b. Aggiungi "10" al valore di lettura.
    c. Scrivi il risultato nella variabile denominata "Velocità".
    d. Leggi la variabile denominata "Velocità".
    e. Avvia i motori B e C a una velocità impostata sul valore memorizzato nella variabile "Velocità" ELSE (non fare nulla).

  4. Continua a ripetere i passaggi da 3A a 3e.

Aumento e diminuzione della velocità con variabile

coding-07-02

Spiegazione del programma

  1. Avvia il programma.
  2. Crea un Blocco Variabili chiamato "Velocità", immetti 0 come valore e avvia due attività.

Attività 1
3. Se si preme il sensore di contatto 1:

a. Leggi la variabile denominata "Velocità".
b. Aggiungi "10" al valore di lettura.
c. Scrivi il risultato nella variabile denominata "Velocità".
d. Leggi la variabile denominata "Velocità".
e. Avvia i motori B e C a una velocità impostata sul valore memorizzato nella variabile "Velocità" ELSE (non fare nulla).

  1. Continua a ripetere i passaggi da 3A a 3e.

Attività 2
5. Se si preme il sensore di contatto 2:

a. Leggi la variabile denominata "Velocità".
b. Sottrai "10" dal valore di lettura.
c. Scrivi il risultato nella variabile denominata "Velocità".
d. Leggi la variabile denominata "Velocità".
e. Avvia i motori B e C a una velocità impostata sul valore memorizzato nella variabile "Velocità" ELSE (non fare nulla).

6.Continua a ripetere i passaggi da 5A a 5e.

Aumento e diminuzione della velocità con variabile e visualizzazione
Invita gli studenti a utilizzare il Blocco di visualizzazione per consultare la velocità della struttura motrice.

coding-07-03

Spiegazione del programma

  1. Avvia il programma.
  2. Crea un Blocco Variabili chiamato "Velocità", immetti 0 come valore e avvia tre attività.

Attività 1
3. Avvia Il Mio Blocco "Accelerazione".

Attività 2
4. Avvia Il Mio Blocco "Decelerazione".

Attività 3
5. Leggi la variabile denominata "Velocità".
6. Visualizza il valore memorizzato nella variabile "Velocità".
7. Continua a ripetere i passaggi 5 e 6.

SCARICA I PROGRAMMI DI ESEMPIO15 KB, è richiesto il software EV3 Lab

Soluzioni del programma EV3 MicroPython

Aumento della velocità con variabile

#!/usr/bin/env pybricks-micropython

from pybricks import ev3brick as brick
from pybricks.ev3devices import Motor, TouchSensor
from pybricks.parameters import Port, Stop, Button
from pybricks.tools import wait
from pybricks.robotics import DriveBase

# Configure 2 motors with default settings on Ports B and C.  These
# will be the left and right motors of the Driving Base.
left_motor = Motor(Port.B)
right_motor = Motor(Port.C)

# The wheel diameter of the Robot Educator Driving Base is 56 mm.
wheel_diameter = 56

# The axle track is the distance between the centers of each of the
# wheels.  This is 118 mm for the Robot Educator Driving Base.
axle_track = 118

# The Driving Base is comprised of 2 motors.  There is a wheel on each
# motor.  The wheel diameter and axle track values are used to make the
# motors move at the correct speed when you give a drive command.
robot = DriveBase(left_motor, right_motor, wheel_diameter, axle_track)

# Set up the Touch Sensor on Port 1.  It is used to increase the speed
# of the robot.
increase_touch_sensor = TouchSensor(Port.S1)

# Initialize the "old_speed" variable to "None."  It is used to check
# whether the speed variable has changed.  Setting it to "None" ensures
# this check will be "True" when the speed variable is initialized with
# a value.
old_speed = None

# Initialize the speed variable to 0.
speed = 0

# This is the main part of the program.  It is a loop that repeats
# endlessly.
while True:

    # Check whether the Touch Sensor is pressed, and increase the speed
    # variable by 10 mm per second if it is.
    if increase_touch_sensor.pressed():
        speed += 10

    # If the speed variable has changed, update the speed of the robot.
    if speed != old_speed:
        old_speed = speed
        robot.drive(speed, 0)

    # Wait 200 milliseconds before starting the loop again.
    wait(200)

Aumento e diminuzione della velocità con variabile

#!/usr/bin/env pybricks-micropython

from pybricks import ev3brick as brick
from pybricks.ev3devices import Motor, TouchSensor
from pybricks.parameters import Port, Stop, Button
from pybricks.tools import wait
from pybricks.robotics import DriveBase

# Configure 2 motors with default settings on Ports B and C.  These
# will be the left and right motors of the Driving Base.
left_motor = Motor(Port.B)
right_motor = Motor(Port.C)

# The wheel diameter of the Robot Educator Driving Base is 56 mm.
wheel_diameter = 56

# The axle track is the distance between the centers of each of the
# wheels.  This is 118 mm for the Robot Educator Driving Base.
axle_track = 118

# The Driving Base is comprised of 2 motors.  There is a wheel on each
# motor.  The wheel diameter and axle track values are used to make the
# motors move at the correct speed when you give a drive command.
robot = DriveBase(left_motor, right_motor, wheel_diameter, axle_track)

# Set up the Touch Sensor on Port 1.  It is used to increase the speed
# of the robot.
increase_touch_sensor = TouchSensor(Port.S1)

# Set up the Touch Sensor on Port 2.  It is used to decrease the speed
# of the robot.
decrease_touch_sensor = TouchSensor(Port.S2)

# Initialize the "old_speed" variable to "None."  It is used to check
# whether the speed variable has changed.  Setting it to "None" ensures
# this check will be "True" when the speed variable is initialized with
# a value.
old_speed = None

# Initialize the speed variable to 0.
speed = 0

# This is the main part of the program.  It is a loop that repeats
# endlessly.
#
# First, increase the speed variable if Touch Sensor 1 is pressed.
# Second, decrease the speed variable if Touch Sensor 2 is pressed.
# Finally, the robot updates its speed if the speed variable was
# changed.
#
# Then the loop starts over after a brief pause.
while True:

    # Check whether Touch Sensor 1 is pressed, and increase the speed
    # variable by 10 mm per second if it is.
    if increase_touch_sensor.pressed():
        speed += 10

    # Check whether Touch Sensor 2 is pressed, and decrease the speed
    # variable by 10 mm per second if it is.
    if decrease_touch_sensor.pressed():
        speed -= 10

    # If the speed variable has changed, update the speed of the robot.
    if speed != old_speed:
        old_speed = speed
        robot.drive(speed, 0)

    # Wait 200 milliseconds before starting the loop again.
    wait(200)

Aumento e diminuzione della velocità con variabile e visualizzazione

#!/usr/bin/env pybricks-micropython

from pybricks import ev3brick as brick
from pybricks.ev3devices import Motor, TouchSensor
from pybricks.parameters import Port, Stop, Button
from pybricks.tools import wait
from pybricks.robotics import DriveBase

# Configure 2 motors with default settings on Ports B and C.  These
# will be the left and right motors of the Driving Base.
left_motor = Motor(Port.B)
right_motor = Motor(Port.C)

# The wheel diameter of the Robot Educator Driving Base is 56 mm.
wheel_diameter = 56

# The axle track is the distance between the centers of each of the
# wheels.  This is 118 mm for the Robot Educator Driving Base.
axle_track = 118

# The Driving Base is comprised of 2 motors.  There is a wheel on each
# motor.  The wheel diameter and axle track values are used to make the
# motors move at the correct speed when you give a drive command.
robot = DriveBase(left_motor, right_motor, wheel_diameter, axle_track)

# Set up the Touch Sensor on Port 1.  It is used to increase the speed
# of the robot.
increase_touch_sensor = TouchSensor(Port.S1)

# Set up the Touch Sensor on Port 2.  It is used to decrease the speed
# of the robot.
decrease_touch_sensor = TouchSensor(Port.S2)

# Initialize the "old_speed" variable to "None."  It is used to check
# whether the speed variable has changed.  Setting it to "None" ensures
# this check will be "True" when the speed variable is initialized with
# a value.
old_speed = None

# Initialize the speed variable to 0.
speed = 0

# This is the main part of the program.  It is a loop that repeats
# endlessly.
#
# First, increase the speed variable if Touch Sensor 1 is pressed.
# Second, decrease the speed variable if Touch Sensor 2 is pressed.
# Finally, the robot updates its speed if the speed variable was
# changed, and displays it on the screen.
#
# Then the loop starts over after a brief pause.
while True:

    # Check whether Touch Sensor 1 is pressed, and increase the speed
    # variable by 10 mm per second if it is.
    if increase_touch_sensor.pressed():
        speed += 10

    # Check whether Touch Sensor 2 is pressed, and decrease the speed
    # variable by 10 mm per second if it is.
    if decrease_touch_sensor.pressed():
        speed -= 10

    # If the speed variable has changed, update the speed of the robot
    # and display the new speed in the center of the screen.
    if speed != old_speed:
        old_speed = speed
        robot.drive(speed, 0)
        brick.display.clear()
        brick.display.text(speed, (85, 70))

    # Wait 200 milliseconds before starting the loop again.
    wait(200)

Estensioni

Miglioramento delle capacità linguistiche

Opzione 1
Per promuovere lo sviluppo delle capacità linguistiche, invita gli studenti a:

  • Utilizzare testi scritti, disegni e/o foto per riepilogare il processo di progettazione e creare un report finale.
  • Creare un video che illustri il processo di progettazione dalle idee iniziali al progetto completato.
  • Creare una presentazione incentrata sul programma.
  • Creare una presentazione che colleghi il loro progetto ad applicazioni reali basate su sistemi simili e descriva le nuove invenzioni che potrebbero nascere da ciò che hanno creato.

Opzione 2
In questa lezione, gli studenti hanno creato un'interfaccia di controllo della velocità. Individui e agenzie raccolgono i dati sulla velocità dei veicoli per segnalare le condizioni del traffico e ridurre le possibilità di incidenti stradali.
Per promuovere lo sviluppo delle capacità linguistiche, invita gli studenti a:

  • Scrivere un'argomentazione a sostegno dell'affermazione secondo cui i privati o le agenzie che raccolgono i dati sulla velocità dei veicoli a motore al fine di monitorare la sicurezza del traffico potrebbero ridurre efficacemente la frequenza degli incidenti stradali
  • Confutare la contro-affermazione secondo la quale questa pratica costituisce una violazione significativa della privacy dei dati personali e di utilizzare prove specifiche per pesare i punti di forza e di debolezza delle argomentazioni opposte

Miglioramento delle capacità matematiche

In questa lezione, gli studenti hanno creato un'interfaccia di controllo della velocità. I conducenti umani sono abili a valutare le condizioni della strada e a modificare di conseguenza la velocità. Tuttavia, i sistemi senza conducente devono essere addestrati a tale scopo.
Per incorporare lo sviluppo delle competenze matematiche ed esplorare l'intelligenza artificiale alla base dei veicoli senza conducente, chiedi ai tuoi studenti di:

  • Contemplare le diverse variabili che devono esaminare per determinare la relazione tra le condizioni della strada e il loro effetto sulla guidabilità e sulle prestazioni di un veicolo
  • Scegliere tre o quattro di queste variabili da includere in un modello matematico di condizioni stradali e creare una tabella di dati per organizzare le relazioni tra le variabili e la velocità ideale del veicolo
  • Tenendo presente che i veicoli senza conducente utilizzano il Machine Learning per identificare e aggiornare le relazioni tra le variabili delle condizioni stradali e la velocità del veicolo, identificare le variabili delle condizioni stradali per le strade asciutte, bagnate e innevate, quindi prevedere la relazione tra tali variabili e le velocità sicure (ad esempio, una variabile di strada asciutta potrebbe essere l'asperità della strada)

Opportunità di valutazione

Checklist di osservazione per l’insegnante
Crea una scala adeguata alle tue esigenze, ad esempio:

  1. Obiettivo parzialmente raggiunto
  2. Obiettivo completamente raggiunto
  3. Obiettivo superato

Per valutare i progressi compiuti dagli studenti, utilizza i seguenti criteri:

  • Gli studenti sono in grado di identificare gli elementi chiave di un problema.
  • Gli studenti riescono a sviluppare autonomamente una soluzione funzionante e creativa.
  • Gli studenti comunicano chiaramente le proprie idee.

Autovalutazione
Concedi agli studenti il tempo necessario per raccogliere alcuni dati su ciò che hanno realizzato e per riflettere sulle loro soluzioni. Per aiutarli, potresti porre domande quali:

  • Questa soluzione soddisfa i criteri indicati nella descrizione del progetto?
  • È possibile rendere più accurati i movimenti del robot?
  • Quali sono le possibili risoluzioni del problema applicate da altri?

Chiedi agli studenti di impegnarsi in una sessione di brainstorming e di documentare due possibili miglioramenti delle loro soluzioni.

Riscontro dei compagni
Proponi una verifica tra pari, in modo che ciascun gruppo sia responsabile della valutazione dei propri progetti e di quelli degli altri. Questo processo di revisione può stimolare gli studenti a sviluppare e affinare le capacità di critica costruttiva e analisi e di utilizzo di dati obiettivi a supporto di un'argomentazione.

Gli studenti che hanno apprezzato questa lezione potrebbero essere interessati ai seguenti percorsi di studio:

  • Economia e finanza (imprenditoria)
  • Produzione e ingegneria (valutazione dei progetti)

Supporto per insegnante

Gli studenti saranno in grado di:

  • Utilizzare il processo di progettazione per risolvere un problema inerente una situazione reale

Collegamenti con il programma curricolare per Licei scientifici, Licei scientifici delle scienze applicate, e Istituti tecnici

  • utilizzare criticamente strumenti informatici e telematici per svolgere attività di studio e di approfondimento, per fare ricerca e per comunicare, in particolare in ambito scientifico e tecnologico;
  • utilizzare gli strumenti e le metodologie dell’informatica nell’analisi dei dati, nella formalizzazione e modellizzazione dei processi complessi e nell’individuazione di procedimenti risolutivi;
  • utilizzare le strutture logiche, i modelli e i metodi della ricerca scientifica, e gli apporti dello sviluppo tecnologico, per individuare e risolvere problemi di varia natura, anche in riferimento alla vita quotidiana;
  • individuare le caratteristiche e l’apporto dei vari linguaggi (storico-naturali, simbolici, matematici, logici, formali, artificiali);
  • comprendere il ruolo della tecnologia come mediazione fra scienza e vita quotidiana;
  • approfondire la realizzazione e la conduzione dei sistemi di trasporto.

Materiale per studenti

Foglio di lavoro per gli studenti

Download to view and share the student worksheet.

Download, view or share the student worksheet, either as an online HTML page or a printable PDF

Condividi con:

Google ClassroomGoogle Classroom
LEGO, the LEGO logo, the Minifigure, DUPLO, the SPIKE logo, MINDSTORMS and the MINDSTORMS logo are trademarks and/or copyrights of the LEGO Group. ©2020 The LEGO Group. All rights reserved. Use of this site signifies your agreement to the terms of use.