Teach Lições com laboratórios remotos

Lição do Teach

Robô Arduino Visual (3/4): sensores de proximidade sem colisões

Os estudantes leem sensores de proximidade, escolhem um limiar a partir de observações e programam uma reação segura antes de o robô colidir.

  • Arduino robot (visual)
  • 55 min
  • Ensino fundamental II / ensino médio inicial
  • Português (Brasil)
  • Robótica · Sistemas embarcados

Entre com uma conta de professor para preparar uma sessão. Os estudantes entram com um código da turma.

Arduino robot (visual)
Arduino robot (visual) · Detalhes do laboratório

Objetivos de aprendizagem

  • Ler sensores de proximidade antes de tomar uma decisão.

  • Calibrar um limiar simples a partir de observações.

  • Programar uma reação segura diante de um obstáculo próximo.

Visualização da atividade do estudante

Conteúdo da atividade

Apenas visualização. Em uma sessão de aula, os estudantes podem preencher respostas e entregar o trabalho ao professor.

1

Sensor antes da decisão

8 min

O sensor não decide sozinho. O programa lê, compara com um limiar e escolhe uma reação segura.

Diagrama de leitura de proximidade, comparação com limiar e reação segura

Um sensor mede algo e fornece uma leitura. A contagem de proximidade responde à luz infravermelha refletida; não é uma distância em centímetros. Superfície, ângulo e posição influenciam. Compare leituras reais em posições seguras antes de decidir se uma contagem maior indica menor distância no seu teste.

Um limiar é o número de corte que separa "seguro" de "perto demais". O programa:

  1. Lê os sensores.
  2. Compara a leitura com um limiar.
  3. Escolhe uma reação.
  4. Observa se a reação foi segura.

Se uma leitura de proximidade aumenta quando um objeto está mais perto, o que significa usar a condição leitura >= 3? Por que não convém escolher o limiar sem observar primeiro?

2

Medir antes de reagir

20 min

Posicionamento remoto: mova o robô; você não pode mover um objeto físico na sala. Ao enviar o programa, selecione Only robots on 8-shaped circuits (circuitos em forma de oito). O piso branco, a linha preta e a parede são referências fixas. Localize a frente do robô na câmera e confira o espaço livre. Acrescente o esquema de posicionamento abaixo. Cada novo pressionamento de B produz um único avanço de 100 ms; solte antes de pressionar novamente. A e C podem usar o mesmo padrão para virar (−125,125 ou 125,−125). Leia somente com os dois motores parados. Não avance contra uma parede para forçar uma leitura alta; mantenha uma distância visível e informe posições que não puder medir com segurança.

[Button B as stepButton]  (Buttons)
[Setup Serial speed 9600]
Arduino run first:
  [Change two motors speed] Left: 0 Right: 0
Arduino loop forever:
  if [stepButton single press]:
    [Change two motors speed] Left: 125 Right: 125
    [wait] 100 milliseconds
    [Change two motors speed] Left: 0 Right: 0
  ... leia os sensores e mostre o valor aqui ...
  [wait] 50 milliseconds

Use single press, não is pressed: ele dispara uma vez por novo pressionamento, mesmo mantendo o botão. Deixe o bloco separado Button B as stepButton na área de trabalho e selecione stepButton na condição. A parada fica dentro da condição, após o pulso. Teste uma vez em espaço livre e observe por três segundos: deve ficar parado até um novo pressionamento. Se não se mover, confira envio, botão e espaço antes de alterar o pulso.

O editor em inglês rotula o bloco central/esquerdo como center sensor detect on his left; escolha center e left nos dois menus.

  1. Após a condição de posicionamento, acrescente Read proximity sensors, imprima center sensor detect on his left e espere 300 ms. Use sempre o mesmo lado. Com os motores parados, meça três posições seguras a distâncias diferentes da mesma parede; descreva-as pela câmera sem inventar centímetros. Sem saída serial, construa agora a decisão com LED abaixo usando limiar inicial 3 e registre LED ligado/desligado e esse limiar, sem inventar números. Depois escolha um limiar com a tabela. Se as leituras não distinguirem posições, registre isso e explique por que a calibração é inconclusiva.

  2. ```text

  3. [Read proximity sensors]

  4. if [center sensor detect on his left >= o número escolhido]: [Set red led to HIGH] [Set blue led to LOW]

  5. else: [Set red led to LOW] [Set blue led to HIGH]

  6. [Change two motors speed] Left: 0 Right: 0

  7. ```

Situação observada Sensor usado Leitura (número, ou onde o LED reage) Deveria reagir? Notas

Escolha um limiar provisório de aviso com duas observações. Se não distinguirem posições, explique por que ele ainda não está justificado e proponha outro teste seguro.

3

Programar uma reação segura

18 min

Construa um aviso de proximidade com o robô parado e seu limiar calibrado. Somente a condição de posicionamento pode movê-lo. As duas saídas do aviso deixam os motores parados. Teste uma posição mais distante e outra mais próxima, ambas seguras, e confira se o LED as distingue. Se o limiar não separar as observações, a calibração é inconclusiva; não comprova condução autônoma segura.

[Read proximity sensors]
if [center sensor detect on his left >= o número escolhido]:
  [Set red led to HIGH]
  [Set blue led to LOW]
else:
  [Set red led to LOW]
  [Set blue led to HIGH]
[Change two motors speed] Left: 0 Right: 0

A reação ocorreu cedo demais, tarde demais ou no momento adequado? Indique o que você mudaria: limiar, velocidade ou tempo de espera.

Descreva uma limitação deste sensor ou do seu teste. Por exemplo: objeto mal posicionado, leitura instável, robô em outra posição ou falta de tempo de câmera.

4

Entrega de evidência

9 min

Programa de reação por proximidade

Entregue seu limiar, uma captura ou descrição do programa e uma observação de um teste em que o robô reagiu ou deveria ter reagido.

Transforme esta visualização em uma sessão de aula

Continue para o LabsLand Teach para usar esta lição com seus estudantes e conferir o acesso disponível para sua conta.