Créer un système de contrôle de la vitesse
Concevez un régulateur de vitesse permettant de modifier la vitesse d’un véhicule en appuyant sur un bouton.
Plan de leçon
Préparer
- Lisez cette documentation destinée aux enseignants.
- Si nécessaire, prévoyez un cours préalable à l’aide du matériel de mise en route disponible dans le logiciel EV3 Lab ou l’application de programmation EV3. Cela permettra à vos élèves de se familiariser avec l’ensemble LEGO® MINDSTORMS® Education EV3.
Éveiller (30 min)
- Utilisez les idées évoquées dans la section Lancer une discussion ci-dessous pour engager une discussion en lien avec ce projet.
- Présentez le projet.
- Répartissez les élèves en binômes.
- Donnez à vos élèves le temps de rechercher des idées.
Explorer (30 min)
- Demandez à vos élèves de créer plusieurs prototypes.
- Encouragez-les à construire et à programmer.
- Demandez à chaque binôme de construire et de tester deux solutions.
Expliquer (60 min)
- Demandez à vos élèves de tester leurs solutions et de choisir la meilleure.
- Vérifiez qu’ils sont en mesure de créer leurs propres bancs de test.
- Accordez un peu de temps à chaque équipe pour finaliser leur projet et collecter des ressources pour documenter leur travail.
Développer (60 min)
- Laissez le temps à vos élèves de créer leur rapport final.
- Animez une session de partage au cours de laquelle chaque équipe présentera ses résultats.
Évaluer
- Commentez les performances de chaque élève.
- N’hésitez pas à utiliser les rubriques d’évaluation fournies.
Lancer une discussion
Le régulateur de vitesse est un système qui contrôle automatiquement la vitesse d’un véhicule. Bien que cette technologie semble moderne, elle a été introduite pour la première fois en 1958. Comment cela fonctionne-t-il ?
Encouragez la réflexion interactive.
Demandez à vos élèves de réfléchir à ces questions :
- Quel est le but d’un régulateur de vitesse dans une voiture ?
- Comment le régulateur de vitesse aide-t-il le conducteur pendant les longs trajets ?
- Comment pourrait-on améliorer le régulateur de vitesse ?
- Comment un système de contrôle de la vitesse avec bouton tactile serait-il utilisé par le conducteur ?
- Quels éléments devrez-vous inclure dans votre programme pour qu’une pression du bouton entraîne un changement de vitesse du moteur ?
Laissez-leur un peu de temps pour répondre à ces questions.
Incitez vos élèves à documenter leurs idées initiales et à expliquer pourquoi ils ont choisi cette solution pour leur premier prototype. Demandez-leur de décrire comment ils comptent évaluer leurs idées tout au long du projet. Ainsi, lors de la phase de révision et d’adaptation, ils disposeront d’informations spécifiques pour évaluer leur solution et décider si elle est efficace.
Astuces de construction
Commencez par construire un véhicule. Les élèves peuvent utiliser l’un des modèles de base motrice LEGO® MINDSTORMS® EV3 proposés ou développer leur propre conception. Vérifiez qu’elle comporte des boutons simulant ceux qui se trouvent sur le volant d’une voiture équipée d’un régulateur de vitesse.
Utilisation de deux capteurs tactiles
Expliquez à vos élèves que, pendant le cours d’aujourd’hui, ils utiliseront deux capteurs tactiles pour contrôler et maintenir la vitesse de leur base motrice.
Astuces de codage
Vos élèves utiliseront très probablement un bloc Variable pour ce projet. Un bloc Variable est un bloc de programmation permettant de stocker des données (par exemple : du texte, une valeur logique, une valeur numérique ou des tableaux) qui peuvent être écrasées à tout moment pendant l’exécution du programme.
Une variable permet de stocker des valeurs actualisables dans un programme. La valeur stockée dans une variable peut être écrasée encore et encore tant que le programme est en cours d’exécution.
Augmentation de la vitesse à l’aide du bloc Variable
Explication du programme
Démarrer le programme.
Créer un bloc Variable appelé « Vitesse » et définir la valeur 0.
Si le capteur tactile est touché :
a. Lire la variable appelée « Vitesse ».
b. Ajouter « 10 » à la valeur lue.
c. Écrire le résultat dans la variable appelée « Vitesse ».
d. Lire la variable appelée « Vitesse ».
e. Démarrer les moteurs B et C à la vitesse définie à l’aide de la valeur stockée dans la variable appelée « Vitesse », SINON (ne rien faire).Répéter les étapes 3a à 3e à l’infini.
Augmentation et diminution de la vitesse à l’aide du bloc Variable
Explication du programme
- Démarrer le programme.
- Créer un bloc Variable appelé « Vitesse », définir la valeur 0 et démarrer deux tâches.
Tâche 1
3. Si le capteur tactile 1 est touché :
a. Lire la variable appelée « Vitesse ».
b. Ajouter « 10 » à la valeur lue.
c. Écrire le résultat dans la variable appelée « Vitesse ».
d. Lire la variable appelée « Vitesse ».
e. Démarrer les moteurs B et C à la vitesse définie à l’aide de la valeur stockée dans la variable appelée « Vitesse », SINON (ne rien faire).
- Répéter les étapes 3a à 3e à l’infini.
Tâche 2
5. Si le capteur tactile 2 est touché :
a. Lire la variable appelée « Vitesse ».
b. Soustraire « 10 » de la valeur lue.
c. Écrire le résultat dans la variable appelée « Vitesse ».
d. Lire la variable appelée « Vitesse ».
e. Démarrer les moteurs B et C à la vitesse définie à l’aide de la valeur stockée dans la variable appelée « Vitesse », SINON (ne rien faire).
- Répéter les étapes 5a à 5e à l’infini.
Augmentation et diminution de la vitesse à l’aide des blocs Variable et Affichage
Demandez à vos élèves d’utiliser le bloc Affichage pour afficher la vitesse de la base motrice.
Explication du programme
- Démarrer le programme.
- Créer un bloc Variable appelé « Vitesse », définir la valeur 0 et démarrer trois tâches.
Tâche 1
3. Démarrer Mon bloc « Accélération ».
Tâche 2
4. Démarrer Mon bloc « Décélération ».
Tâche 3
5. Lire la variable appelée « Vitesse ».
6. Afficher la valeur stockée dans la variable appelée « Vitesse ».
7. Répéter les étapes 5 et 6 à l’infini.
Solutions de programme EV3 MicroPython
Augmentation de la vitesse à l’aide du bloc Variable
#!/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)
Augmentation et diminution de la vitesse à l’aide du bloc Variable
#!/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)
Augmentation et diminution de la vitesse à l’aide des blocs Variable et Affichage
#!/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)
Extensions
Extension Langue française
Option 1
Pour intégrer des notions d’arts du langage, demandez à vos élèves de :
- Utiliser leur travail écrit, leurs croquis et/ou leurs photos pour récapituler leur processus de conception et créer un rapport final.
- Enregistrer une vidéo qui détaille leur processus de conception, en commençant par leurs idées initiales et en finissant par le projet réalisé.
- Créer une présentation sur leur programme.
- Créer une présentation mettant leur projet en relation avec des applications réelles de systèmes similaires et décrivant de nouvelles inventions qui pourraient être imaginées grâce à ce qu’ils ont fabriqué.
Option 2
Dans le cadre de cette leçon, vos élèves ont créé une interface de contrôle de vitesse. Des individus et certains organismes recueillent des données relatives à la vitesse des véhicules afin de signaler les conditions de circulation et de réduire les risques d’accidents de la route.
Pour intégrer des notions d’arts du langage, demandez à vos élèves :
- de rédiger un argument soutenant l’affirmation selon laquelle la collecte, par des particuliers ou des organismes, de données relatives à la vitesse des véhicules motorisés dans le but de surveiller la sécurité routière permettrait effectivement de réduire la fréquence des accidents impliquant des véhicules motorisés ;
- d’aborder l’affirmation contraire, autrement dit que cette pratique constitue une violation majeure de la protection des données à caractère personnel, et d’utiliser des éléments probants spécifiques pour évaluer les forces et les faiblesses des arguments opposés.
Extension Maths
Dans le cadre de cette leçon, vos élèves ont créé une interface de contrôle de vitesse. Les conducteurs humains ont la faculté d’évaluer les conditions routières et d’adapter leur vitesse en conséquence. En revanche, les systèmes autonomes doivent être entraînés pour acquérir cette compétence.
Pour intégrer des notions de mathématiques et explorer le thème des véhicules autonomes faisant appel à l’intelligence artificielle, demandez à vos élèves :
- d’identifier les différentes variables à examiner pour déterminer la relation entre les conditions routières et leur effet sur la maniabilité et les performances d’un véhicule ;
- de choisir trois ou quatre de ces variables en vue des les inclure dans un modèle mathématique des conditions routières, et de créer un tableau de données pour organiser les relations entre ces variables et la vitesse idéale du véhicule ;
- sachant que les véhicules autonomes ont recours à l’apprentissage automatique pour déterminer et actualiser les liens entre les variables de conditions routières et la vitesse du véhicule, d’identifier des variables de conditions routières pour les routes sèches, humides et enneigées, puis de prédire la relation entre ces variables et des vitesses sûres (p. ex., une variable de route sèche pourrait être la rugosité de la route).
Opportunités d’évaluation
Checklist d’observation de l’enseignant
Créez un barème adapté à vos besoins, par exemple :
- Objectif partiellement atteint
- Objectif atteint
- Objectif dépassé
Utilisez les critères suivants pour évaluer la progression de vos élèves :
- Les élèves identifient les éléments clés d’un problème.
- Les élèves développent de manière autonome une solution opérationnelle et créative.
- Les élèves communiquent clairement leurs idées.
Auto-évaluation
Une fois que vos élèves ont recueilli des données sur les performances, donnez-leur le temps de réfléchir à leurs solutions. N’hésitez pas à leur poser des questions comme :
- Votre solution répond-elle aux critères de la présentation du problème ?
- Pouvez-vous rendre les mouvements de votre robot plus précis ?
- Comment les autres ont-ils résolu ce problème ?
Demandez à vos élèves de réfléchir et de documenter deux façons d’améliorer leurs solutions.
Commentaires des camarades
Encouragez vos élèves à s’évaluer entre eux en évaluant leur propre projet mais aussi ceux des autres. Ce processus d’évaluation permet aux élèves d’apprendre à formuler des commentaires constructifs, à développer leur esprit d’analyse et à utiliser des données objectives pour avancer des arguments.
Monde professionnel
Les élèves qui ont apprécié ce cours pourraient être intéressés par les secteurs professionnels suivants :
- Affaires et finance (entrepreneuriat)
- Fabrication et ingénierie (pré-ingénierie)
Support pour l’enseignant
Les élèves doivent :
- Utiliser le processus de conception pour résoudre un problème réel.
Sujets abordés : ingénierie, conception, algorithmique
Collège :
- 3ème, technologie
Lycée général :
- Seconde générale, enseignement d’exploration :
- sciences de l’ingénieur
- méthodes pratiques et scientifiques
- informatique et création numérique
- 1ère, toutes séries générales, option informatique et création numérique
- Tle, toutes séries générales, option informatique et création numérique
- Tle, série S, spécialité informatique et sciences du numérique
Lycée technique :
- STI2D, spécialité systèmes d’information et numérique
Matériel destiné aux élèves
Fiche de travail de l’élève
Vous pouvez télécharger, consulter ou partager cette ressource sous la forme d’une page HTML en ligne ou d’un PDF à imprimer.