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 lição do curso de Carro Inteligente com Raspberry Pi Pico, exploramos o fascinante mundo da navegação autônoma combinando um servomotor, um sensor ultrassônico e controle de motores para permitir que o carro detecte e evite obstáculos. Este projeto transforma um kit básico de tração nas quatro rodas em um robô inteligente capaz de navegar em ambientes dinâmicos, sendo uma excelente base para aprender sobre fusão de sensores e algoritmos de controle reativo. O valor prático deste projeto vai muito além da sala de aula, oferecendo uma plataforma para aplicações reais, como construir um aspirador robótico que navega ao redor de móveis, criar um robô de patrulha de segurança que mapeia zonas seguras ou desenvolver um protótipo de veículo de entrega autônomo que possa navegar por espaços lotados.

O núcleo deste projeto está em usar um servomotor para girar um sensor ultrassônico, criando um sistema de radar simples. Ao escanear o ambiente de 0 a 180 graus, o carro pode medir distâncias até obstáculos e identificar o caminho mais desimpedido à frente. Esta lição fornece um guia passo a passo para implementar a lógica que interpreta esses dados do sensor para tomar decisões inteligentes de direção.

Hardware/Componentes

Este projeto é baseado no kit de carro de quatro rodas SunFounder Raspberry Pi Pico. Embora o modelo exato possa variar, os componentes principais necessários são:

  • Placa microcontroladora Raspberry Pi Pico
  • Kit de chassi de carro inteligente SunFounder 4WD (ou similar)
  • Sensor de distância ultrassônico (ex.: HC-SR04)
  • Servomotor (para girar o sensor ultrassônico)
  • Placa controladora de motores (integrada ao kit do carro)
  • Fonte de alimentação (baterias)

Guia de Conexões

As conexões para este projeto geralmente já estão pré-configuradas na placa de expansão do kit SunFounder. Os pinos de trigger e echo do sensor ultrassônico, juntamente com o pino de sinal do servomotor, estão conectados a pinos GPIO específicos no Raspberry Pi Pico. O controlador de motores também está conectado ao Pico para controlar a direção e a velocidade dos quatro motores.

Para um diagrama de conexões detalhado específico para o seu kit, consulte a documentação fornecida pela SunFounder. Um esquema geral geralmente está incluído no manual do kit ou no site do fabricante.

Explicação do Código

Esta lição foca na lógica e nos parâmetros configuráveis pelo usuário dentro do programa de desvio de obstáculos. O código é estruturado para controlar o comportamento do carro com base na entrada do sensor ultrassônico. As principais variáveis que você pode ajustar para otimizar o desempenho do carro geralmente são definidas no topo do script.

Aqui estão as principais configurações ajustáveis pelo usuário que você encontrará no código:

  • Distância de Referência do Radar: Este é o limite de distância (ex.: 20 cm) que determina se um obstáculo é considerado um "perigo". Se o sensor ler uma distância menor que esse valor, o carro iniciará uma manobra de desvio.
  • Ângulo do Passo: Este é o incremento (ex.: 10 graus) pelo qual o servomotor gira ao escanear o ambiente. Um ângulo de passo menor fornece uma varredura mais detalhada, mas leva mais tempo.
  • Velocidade para Frente: Esta variável (ex.: 30) define o nível de potência dos motores quando o carro está se movendo para frente.
  • Velocidade de Curva: Esta variável (ex.: 50) define o nível de potência dos motores quando o carro está fazendo uma curva, que geralmente é maior que a velocidade para frente para garantir uma curva decisiva.
  • Ângulo de Varredura para Frente: Este valor (ex.: 50 graus) define a faixa de ângulos que o servomotor irá escanear quando o carro estiver se movendo para frente. Uma varredura mais estreita é mais rápida e suficiente para detectar obstáculos diretamente no caminho.

Para entender como usar essas variáveis, imagine que você quer que o carro seja mais cauteloso. Você poderia aumentar o RADAR_REFERENCE para 25 cm, fazendo com que ele detecte e evite obstáculos a uma distância maior. Por outro lado, para um carro mais rápido e agressivo, você poderia diminuir esse valor para 15 cm.

A lógica principal usa uma função get_direction() para analisar os dados do sensor. Esta função converte a matriz de leituras de distância em uma string de '1's (espaço livre) e '0's (obstáculo). Em seguida, ela divide essa string nos zeros para encontrar o caminho contínuo mais largo. Com base na posição desse caminho mais largo, a função retorna uma direção: 'esquerda', 'direita' ou 'frente'. O loop principal então executa a manobra correspondente.

Projeto ao Vivo/Demonstração

(no vídeo em 02:47) O instrutor começa demonstrando o recurso de desvio de obstáculos. O carro usa o servomotor para girar o sensor ultrassônico, funcionando como um radar. Conforme o carro se move, ele escaneia seus arredores para encontrar um caminho livre.

(no vídeo em 03:34) O código é executado, e o carro é testado em uma área aberta. O instrutor explica a estrutura do código, mostrando como a função get_distance() do módulo sonar é usada para medir distâncias. As leituras do sensor são exibidas no shell, demonstrando sua precisão e limitações.

(no vídeo em 07:45) O instrutor então abre o exemplo "obstacle_avoid" e percorre seu fluxograma. Este auxílio visual explica o processo de tomada de decisão: o carro escaneia, verifica se há perigo e, se um caminho estiver bloqueado, determina a melhor direção para virar com base no caminho livre mais largo.

(no vídeo em 16:02) Um teste ao vivo é realizado. O carro detecta com sucesso um obstáculo (uma caixa) e manobra ao redor dele, virando à esquerda para encontrar um caminho livre. O instrutor explica os dados em tempo real sendo impressos no shell, mostrando '0' para obstáculo e '1' para espaço livre.

(no vídeo em 22:53) Uma demonstração final, mais complexa, é montada com múltiplos obstáculos. O carro navega pelo percurso, tomando decisões de virar à esquerda ou à direita para evitar colisões e encontrar uma rota livre, mostrando a eficácia do algoritmo em um ambiente mais desafiador.

Capítulos

  • [00:00] Introdução à Lição
  • [01:31] Visão Geral do Curso e do Kit
  • [02:47] Demonstração do Recurso de Desvio de Obstáculos
  • [03:34] Testando o Sensor Ultrassônico
  • [07:45] Entendendo o Algoritmo de Desvio de Obstáculos
  • [12:49] Análise do Código: Loop Principal e Lógica
  • [16:02] Testes ao Vivo e Análise de Dados
  • [22:53] Demonstração do Percurso de Obstáculos Complexo
Nenhum código anexado.

Recursos e referências

Ainda não há recursos.

Arquivos📁

Nenhum arquivo disponível.