Código de Pesquisa

Lição 7 de 10: Rastreamento de Linha, Detecção de Borda Calibrar Sensor de Escala de Cinza Carro Raspberry Pi Pico

Esta lição faz parte de: Carro inteligente Raspberry Pi Pico 4WD

Lição 7 de 10: Rastreamento de Linha, Detecção de Borda Calibrar Sensor de Escala de Cinza Carro Raspberry Pi Pico

Nesta sétima lição do curso Raspberry Pi Pico Smart Car, exploramos as funções cruciais de rastreamento de linha e detecção de precipício usando um módulo sensor de escala de cinza. Este módulo atua como os "olhos" do seu carro, permitindo que ele siga um caminho predeterminado de forma autônoma e evite quedas perigosas. O projeto demonstra como calibrar o sensor para leituras precisas e implementar uma lógica que mantém o carro no caminho, com um recurso divertido "Don't Push Me" que simula a detecção de precipício. Este guia é perfeito para quem deseja ir além do controle remoto básico e mergulhar no mundo da robótica guiada por sensores.

Esta tecnologia tem inúmeras aplicações práticas além de um projeto DIY divertido. Os princípios que você aprenderá aqui são fundamentais para construir sistemas autônomos do mundo real. Aqui estão algumas ideias para inspirar você:

  • Robôs de Entrega Automatizados: Construa um pequeno robô que possa navegar em um armazém ou escritório seguindo linhas marcadas para entregar itens.
  • Resolvedor de Labirinto de Mesa: Crie um robô que possa navegar em um labirinto complexo desenhado com fita isolante preta.
  • Robô de Segurança e Vigilância: Implemente um robô de patrulha que segue um caminho definido e usa detecção de precipício para evitar cair de escadas ou superfícies elevadas.
  • Plataforma Educacional: Use o carro para ensinar os fundamentos do controle PID, fusão de sensores e navegação autônoma.

Hardware e Componentes

Este projeto se baseia no kit de carro SunFounder Raspberry Pi Pico 4WD. O componente chave para esta lição é o módulo sensor de escala de cinza, essencial tanto para o rastreamento de linha quanto para a detecção de precipício. O módulo possui três sensores independentes que medem a quantidade de luz refletida da superfície abaixo. Esses dados são usados para distinguir entre uma linha preta, uma superfície branca e um "precipício" ou espaço aberto. O kit completo também inclui o chassi do carro Pico, motores e uma bateria para alimentar o sistema.

Guia de Conexões

A conexão correta é o primeiro passo para fazer seu sensor funcionar. O módulo de escala de cinza conecta-se ao Raspberry Pi Pico usando quatro fios. A conexão é simples e demonstrada claramente no vídeo.

Aqui está a configuração de conexão conforme mostrado no vídeo (no vídeo em 03:01):

  • Fio Preto: Conecte a um pino GND no Pico.
  • Fio Vermelho: Conecte ao pino 3.3V no Pico.
  • Fio Amarelo (Sensor Direito): Conecte ao pino GPIO 28.
  • Fio Marrom (Sensor Central): Conecte ao pino GPIO 27.
  • Fio Branco/Cinza (Sensor Esquerdo): Conecte ao pino GPIO 26.

Calibrando o Sensor de Escala de Cinza

Antes que o carro possa seguir uma linha de forma confiável, você deve calibrar o sensor para entender as diferentes leituras para branco, preto e espaço vazio. Este é um passo crítico para garantir que seu carro tome as decisões corretas. A sensibilidade do sensor pode ser ajustada com um pequeno potenciômetro no módulo.

O vídeo demonstra o processo de calibração (no vídeo em 04:39). O sensor deve ser posicionado a uma altura ideal acima do solo—cerca de 11 milímetros ou um centímetro—para obter leituras claras. Ao ajustar o potenciômetro e observar os valores, você pode encontrar o ponto ideal. O objetivo é ter uma diferença significativa entre as leituras para uma superfície branca (que reflete muita luz) e uma linha preta (que reflete muito pouco).

Aqui está um resumo do que as leituras significam:

  • Superfície Branca: Alta reflexão, resultando em altos valores de sensor (por exemplo, cerca de 20.000).
  • Linha Preta: Baixa reflexão, resultando em baixos valores de sensor (por exemplo, cerca de 3.000).
  • Precipício (Espaço Vazio): Sem reflexão, resultando nos menores valores de sensor (por exemplo, cerca de 1.200).

Explicação do Código

Como nenhum código foi fornecido para esta lição, vamos nos concentrar na lógica conceitual e nas funções-chave da biblioteca Robojax usadas para fazer o carro funcionar. O vídeo explica as duas funções principais que você usará da biblioteca fornecida.

Testando o Sensor

O primeiro passo é testar seu sensor com um script simples. Este script usa uma função chamada get_grayscale_value() para ler os valores brutos dos três sensores. Ele imprime esses valores no monitor serial para que você possa ver como eles mudam quando o sensor está sobre diferentes superfícies. Isso é útil para verificar suas conexões e realizar a etapa de calibração.


# Este é um exemplo conceitual da função de teste
from machine import Pin, ADC
import time

# Defina os pinos ADC para os sensores de escala de cinza
grayscale_pins = [26, 27, 28]
sensors = [ADC(Pin(pin)) for pin in grayscale_pins]

while True:
    # Leia os valores brutos de 16 bits dos sensores
    values = [sensor.read_u16() for sensor in sensors]
    print("Esquerda: {} Centro: {} Direita: {}".format(values[0], values[1], values[2]))
    time.sleep_ms(100)

Lógica de Rastreamento de Linha

Para o rastreamento de linha, o código não usa os valores analógicos brutos. Em vez disso, converte-os em um status digital simples: 1 se o sensor estiver sobre a linha preta e 0 se estiver sobre a superfície branca. Isso é tratado por uma função que retorna uma lista de três valores (por exemplo, [0, 1, 0]). O loop de controle principal então usa esta lista para determinar as ações do carro.

A lógica baseia-se em comparar o status do sensor com condições predefinidas. Por exemplo, se o status for [0, 1, 0], o carro está perfeitamente na linha e deve avançar. Se o status for [1, 0, 0], o carro desviou para a esquerda e precisa corrigir seu caminho para a direita. O vídeo explica essas condições em detalhes (no vídeo em 13:05), mostrando como diferentes combinações de leituras do sensor correspondem a diferentes comandos do motor, como virar à esquerda, virar à direita ou fazer uma correção brusca.


# Este é um exemplo conceitual da lógica de seguir linha
# Suponha que 'status' seja uma lista como [0, 1, 0] do sensor em escala de cinza

if status == [0, 1, 0]:  # Sensor central na linha
    # Avançar
    pass
elif status == [1, 0, 0]:  # Sensor esquerdo na linha
    # Virar à direita
    pass
elif status == [0, 0, 1]:  # Sensor direito na linha
    # Virar à esquerda
    pass
# ... outras condições para curvas mais bruscas

Demonstração ao Vivo do Projeto

Na demonstração do vídeo, o carro é colocado em uma pista impressa com uma linha preta grossa. O carro segue a linha com sucesso, fazendo curvas e correções enquanto se move ao longo do caminho. O vídeo destaca um problema comum em que as rodas podem se soltar durante curvas bruscas e mostra uma solução simples de adicionar um pequeno pedaço de fita adesiva ao eixo da roda para um ajuste mais firme. Uma vez corrigido isso, o carro navega por toda a pista suavemente, demonstrando a eficácia da calibração e da lógica de seguir linha.

Capítulos do Vídeo

  • [00:00] Introdução ao Rastreamento de Linha e Detecção de Obstáculos
  • [03:01] Conexão do Módulo do Sensor em Escala de Cinza
  • [04:39] Calibração do Sensor em Escala de Cinza
  • [13:05] Entendendo a Lógica de Seguir Linha
  • [19:43] Testando o Código de Rastreamento de Linha
  • [24:50] Demonstração ao Vivo em uma Pista de Teste
Nenhum código anexado.

Recursos e referências

Ainda não há recursos.

Arquivos📁

Nenhum arquivo disponível.