Conjunto Principal MINDSTORMS EV3

Faça um Sistema de Controle de Velocidade de Cruzeiro

Projete um sistema de controle de cruzeiro que altere a velocidade de um veículo com o toque de um botão.

120+ min.
Intermediário
Ensino Médio
set-cruise-controle

Plano de aula

Preparar

  • Leia o material do professor.
  • Se você sentir que é necessário, planeje uma aula usando o material do guia de introdução no Software EV3 ou aplicativo de programação. Isso ajudará seus alunos a se familiarizarem com o LEGO® MINDSTORMS® Education EV3.

Envolver (30 min.)

  • Use as ideias da seção Iniciar uma Discussão abaixo para envolver seus alunos em uma discussão relacionada a esta aula.
  • Explique o projeto.
  • Divida sua turma em equipes de 2 alunos.
  • Permita que seus alunos tenham um tempo para terem ideias.

Explorar (30 min.)

  • Faça com que seus alunos criem múltiplos protótipos.
  • Incentive-os a explorarem a montagem e programação.
  • Faça com que cada dupla de alunos monte e teste 2 soluções.

Explicar (60 min.)

  • Peça que seus alunos testem suas soluções e escolham a melhor.
  • Certifique-se de que eles conseguem criar suas próprias tabelas de teste.
  • Permita que cada equipe tenha tempo para finalizar seu projeto e coletar dados para documentar seus trabalhos.

Elaborar (60 Min.)

  • Dê a seus estudantes algum tempo para produzirem seus relatórios finais.
  • Facilite uma sessão de compartilhamento em que cada equipe apresente seu resultado.

Avaliar

  • Dê feedback sobre o desempenho de cada aluno.
  • Você pode utilizar as rubricas de avaliação fornecidas para simplificar o processo.

Iniciar uma Discussão

A função de controle de velocidade de cruzeiro em carros pessoais é um sistema que controla automaticamente a velocidade do veículo. Mesmo que isso pareça uma tecnologia moderna, foi apresentada pela primeira vez em 1958. Como isso funciona?

set-cruise-controle

Incentive um processo de geração de ideias ativo.

Peça que seus alunos reflitam sobre essas questões:

  • Qual o propósito do controle de velocidade de cruzeiro em um carro?
  • Como o controle de velocidade de cruzeiro ajuda um motorista em longos períodos dirigindo?
  • Como o controle de velocidade de cruzeiro poderia ser ainda melhor?
  • Como um sistema de controle de velocidade por botões seria usado por um motorista?
  • Que elementos você irá precisar para incluir em seu programa a fim de fazer com que o apertar de botões seja convertido em mudanças de velocidade do motor?

Dê aos seus alunos algum tempo para responderem essas perguntas:

Incentive seus alunos a documentarem suas ideias iniciais e explicarem porque eles escolheram a solução que irão usar em seus primeiros protótipos. Peça a eles que descrevam como eles irão avaliar suas ideias durante o projeto. Dessa forma, quando eles estiverem analisando e revisando, eles terão informações específicas que poderão usar para avaliar sua solução e decidir se foi eficaz ou não.

Dicas de Montagem

Comece montando um veículo: Seus alunos podem usar qualquer modelo de base de direção LEGO® MINDSTORMS® EV3 sugerido ou projetar seu próprio modelo. Certifique-se de que eles incluam botões que simulam os botões encontrados no volante de um carro com controle de velocidade de cruzeiro.

ev3-robot-color-sensor

Usando dois Sensores de Toque

Explique que na aula de hoje, seus alunos irão usar os Sensores de Toque para controlar e manter a velocidade de seus modelos de base de direção.

Dicas de Programação

Seus alunos provavelmente irão usar um Bloco de Variável para esse projeto. Um Bloco de Variável é um bloco de programação que pode armazenar dados (por exemplo, texto, lógica, um número ou matrizes), que podem ser sobrescritos a qualquer momento quando o programa está sendo executado.

Uma variável é um jeito de armazenar valores atualizáveis em um programa. O valor armazenado em uma variável pode ser sobrescrito quantas vezes forem necessárias, desde que o programa esteja sendo executado.

Aumentar a Velocidade com Programa Variável

coding-07-01

Explicação do Programa

  1. Iniciar o programa.

  2. Crie um Bloco de Variável chamado “Velocidade” e atribua um valor de 0.

  3. Se o Sensor de Toque estiver pressionado:

    a. Leia a variável chamada “Velocidade”.
    b. Adicione “10” ao valor lido.
    c. Escreva o resultado da variável chamada “Velocidade”.
    d. Leia a variável chamada “Velocidade”.
    e. Ligue os motores B e C a uma velocidade definida no valor armazenado na variável chamada “Velocidade” SENÃO (não faça nada).

  4. Repita os passos 3a até 3e para sempre.

Aumentar e Diminuir a Velocidade com Variável

coding-07-02

Explicação do Programa

  1. Iniciar o programa.
  2. Crie um Bloco de Variável chamado “Velocidade”, atribua um valor de 0 e inicie duas tarefas.

TAREFA 1
3. Se o Sensor de Toque1 estiver pressionado:

a. Leia a variável chamada “Velocidade”.
b. Adicione “10” ao valor lido.
c. Escreva o resultado da variável chamada “Velocidade”.
d. Leia a variável chamada “Velocidade”.
e. Ligue os motores B e C a uma velocidade definida no valor armazenado na variável chamada “Velocidade” SENÃO (não faça nada).

  1. Repita os passos 3a até 3e para sempre.

TAREFA 2
5. Se o Sensor de Toque 2 estiver pressionado:

a. Leia a variável chamada “Velocidade”.
b. Subtraia “10” do valor de leitura.
c. Escreva o resultado da variável chamada “Velocidade”.
d. Leia a variável chamada “Velocidade”.
e. Ligue os motores B e C a uma velocidade definida no valor armazenado na variável chamada “Velocidade” SENÃO (não faça nada).

  1. Repita os passos 5a a 5e para sempre.

Aumentar e Diminuir a Velocidade com Variável e Monitor
Faça seus estudantes usarem o Bloco Monitor para exibir a velocidade da base de direção.

coding-07-03

Explicação do Programa

  1. Iniciar o programa.
  2. Crie um Bloco de Variável chamado “Velocidade”, atribua um valor de 0 e inicie três tarefas.

Tarefa 1
3. Inicie o Meu Bloco “Aceleração”

Tarefa 2
4. Inicie o Meu Bloco “Desaceleração”

Tarefa 3
5. Leia a variável chamada “Velocidade”.
6. Exiba o valor armazenado na variável chamada “Velocidade”.
7. Repita as etapas 5 e 6 para sempre.

Soluções de Programa EV3 MicroPython

Aumentar a Velocidade com Variável

#!/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)

Aumentar e Diminuir a Velocidade com Variável

#!/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)

Aumentar e Diminuir a Velocidade com Variável e Monitor

#!/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)

Extensões

Extensão de Linguagem e Literatura

Opção 1
Para incorporar habilidades de desenvolvimento de linguagem, faça com que seus alunos:

  • Usem o trabalho escrito, rascunhos e/ou fotos deles para resumirem o processo de projeto e criarem um relatório final.
  • Criem um vídeo demonstrando seu processo de projeto começando com suas ideias iniciais e finalizando com seus projetos concluídos.
  • Criem uma apresentação sobre o programa deles.
  • Criem uma apresentação que conecte o projeto deles com aplicações de sistemas similares do mundo real e descrevam novas invenções que possam ser feitas com base no que eles criaram.

Opção 2
Nessa aula, seus alunos criaram uma interface de controle de velocidade. Pessoas individuais e agências coletam dados de velocidade de veículos para relatar as condições de trânsito e reduzir as chances de acidentes.
Para incorporar habilidades de desenvolvimento de linguagem, faça com que seus alunos:

  • Escrevam um argumento para sustentar o argumento de que os indivíduos privados ou agências que coletam dados de velocidade de veículos com o fim de monitorar a segurança no trânsito podem de fato reduzir a frequência de acidentes automotivos
  • Desafie-os a abordarem o contra-argumento de que essa prática é uma violação significativa da privacidade de dados pessoais, e a usarem evidências específicas para avaliar os pontos fortes e fracos dos argumentos opostos

Extensão de Matemática

Nessa aula, seus alunos criaram uma interface de controle de velocidade. Os motoristas humanos possuem a habilidade de avaliar as condições da estrada e mudar sua velocidade de acordo com isso. No entanto, os sistemas sem motorista devem ser treinados para fazer isso.
Para incorporar o desenvolvimento de habilidades matemáticas e explorar a inteligência artificial por trás dos veículos sem motorista, faça com que seus alunos:

  • Contemplem as diferentes variáveis que eles devem examinar para determinar a relação entre as condições da estrada e seus efeitos na condução e desempenho de um veículo.
  • Escolham três ou quatro dessas variáveis para incluir em um modelo matemático de condições de estrada, e criem uma tabela de dados para organizar as relações entre essas variáveis e a velocidade ideal do veículo
  • Tendo em mente que os veículos sem motorista utilizam o processo de machine learning para identificar e atualizar as relações entre as variáveis de condições de estrada e a velocidade do veículo, identifiquem variáveis de condições para estradas secas, molhadas e com neve e, em seguida, prevejam a relação entre essas variáveis e velocidades seguras (p.ex., uma variável de estrada seca pode ser a aspereza da estrada)

Oportunidades de Avaliação

Lista de Observações do Professor
Crie uma escala que corresponda com suas necessidades, por exemplo:

  1. Concluído parcialmente
  2. Concluído completamente
  3. Além do esperado

Use os seguintes critérios de sucesso para avaliar o progresso dos seus alunos:

  • Os alunos conseguem identificar os elementos fundamentais de um problema.
  • Os alunos são autônomos ao desenvolverem uma solução que funciona e é criativa.
  • Os alunos conseguem comunicar com clareza suas ideias.

Autoavaliação
Uma vez que seus alunos tenham coletado alguns dados de desempenho, dê a eles tempo para refletirem nas soluções. Ajude-os fazendo perguntas como:

  • Sua solução está obedecendo os critérios do Resumo do Projeto?
  • Os movimentos do seu robô podem ser mais precisos?
  • Quais foram as formas com as quais os outros solucionaram esse problema?

Peça que seus alunos tenham ideias e documentem duas maneiras através das quais eles poderiam melhorar suas soluções.

Feedback por Pares
Incentive um processo de “Feedback por Pares” no qual cada grupo seja responsável por avaliar seu próprio projeto e os dos outros. Esse processo de revisão pode ajudar os alunos a desenvolver habilidades em dar feedback construtivo, assim como aprimorar suas habilidades de análise e a habilidade de usar dados objetivos para dar suporte a um argumento.

Conexões de Carreira

Os alunos que gostaram dessa aula podem ter interesse em explorar essas carreiras:

  • Negócios e Finanças (Empreendedorismo)
  • Manufatura e Engenharia (Pré-engenharia)

Suporte ao Professor

Os alunos irão:

  • Usar o processo de projeto para resolver um problema do mundo real

BNCC
(EM13LP34) Produzir textos para a divulgação do conhecimento e de resultados de levantamentos e pesquisas – texto monográfico, ensaio, artigo de divulgação científica, verbete de enciclopédia (colaborativa ou não), infográfico (estático ou animado), relato de experimento, relatório, relatório multimidiático de campo, reportagem científica, podcast ou vlogcientífico, apresentações orais, seminários, comunicações em mesas redondas, mapas dinâmicos etc. –, considerando o contexto de produção e utilizando os conhecimentos sobre os gêneros de divulgação científica, de forma a engajar-se em processos significativos de socialização e divulgação do conhecimento.
(EM13LP35) Utilizar adequadamente ferramentas de apoio a apresentações orais, escolhendo e usando tipos e tamanhos de fontes que permitam boa visualização, topicalizando e/ou organizando o conteúdo em itens, inserindo de forma adequada imagens, gráficos, tabelas, formas e elementos gráficos, dimensionando a quantidade de texto e imagem por slide e usando, de forma harmônica, recursos (efeitos de transição, slides mestres, layouts personalizados, gravação de áudios em slides etc.).
(EM13CNT301) Construir questões, elaborar hipóteses, previsões e estimativas, empregar instrumentos de medição e representar e interpretar modelos explicativos, dados e/ou resultados experimentais para construir, avaliar e justificar conclusões no enfrentamento de situações-problema sob uma perspectiva científica.
(EM13MAT405) Utilizar conceitos iniciais de uma linguagem de programação na implementação de algoritmos escritos em linguagem corrente e/ou matemática.
(EM13MAT406) Construir e interpretar tabelas e gráficos de frequências com base em dados obtidos em pesquisas por amostras estatísticas, incluindo ou não o uso de softwares que interrelacionem estatística, geometria e álgebra.

Material do aluno

Planilha do Aluno

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

Compartilhar com:

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.