Código de búsqueda

Lección 7 de 10: Seguimiento de línea, Detección de acantilados Calibrar sensor de escala de grises Coche Raspberry Pi Pico

Esta lección es parte de: Coche inteligente Raspberry Pi Pico 4WD

Lección 7 de 10: Seguimiento de línea, Detección de acantilados Calibrar sensor de escala de grises Coche Raspberry Pi Pico

En esta séptima lección del curso de Smart Car con Raspberry Pi Pico, exploramos las funciones cruciales del seguimiento de línea y la detección de bordes utilizando un módulo de sensor de escala de grises. Este módulo actúa como los "ojos" de tu auto, permitiéndole seguir una ruta predeterminada de forma autónoma y evitar caídas peligrosas. El proyecto demuestra cómo calibrar el sensor para lecturas precisas e implementar lógica que mantiene el auto en el camino, con una divertida función "No Me Empujes" que simula la detección de bordes. Esta guía es perfecta para cualquiera que busque ir más allá del control remoto básico y adentrarse en el mundo de la robótica guiada por sensores.

Esta tecnología tiene numerosas aplicaciones prácticas más allá de un proyecto DIY divertido. Los principios que aprenderás aquí son fundamentales para construir sistemas autónomos del mundo real. Aquí tienes algunas ideas para inspirarte:

  • Robots de entrega automatizados: Construye un pequeño robot que pueda navegar por un almacén u oficina siguiendo líneas marcadas para entregar artículos.
  • Resolvedor de laberintos de mesa: Crea un robot que pueda navegar por un laberinto complejo dibujado con cinta aislante negra.
  • Robot de seguridad y vigilancia: Implementa un robot patrullero que siga una ruta establecida y use detección de bordes para evitar caer por escaleras o superficies elevadas.
  • Plataforma educativa: Usa el auto para enseñar los fundamentos del control PID, fusión de sensores y navegación autónoma.

Hardware y componentes

Este proyecto se basa en el kit de auto 4WD SunFounder Raspberry Pi Pico. El componente clave para esta lección es el módulo de sensor de escala de grises, esencial tanto para el seguimiento de línea como para la detección de bordes. El módulo cuenta con tres sensores independientes que miden la cantidad de luz reflejada desde la superficie inferior. Estos datos se utilizan para distinguir entre una línea negra, una superficie blanca y un "borde" o espacio abierto. El kit completo también incluye el chasis del auto Pico, motores y un paquete de baterías para alimentar el sistema.

Guía de cableado

Un cableado adecuado es el primer paso para que tu sensor funcione. El módulo de escala de grises se conecta al Raspberry Pi Pico usando cuatro cables. El cableado es sencillo y se demuestra claramente en el video.

Aquí está la configuración de cableado como se muestra en el video (en el video en 03:01):

  • Cable negro: Conéctalo a un pin GND en el Pico.
  • Cable rojo: Conéctalo al pin 3.3V en el Pico.
  • Cable amarillo (sensor derecho): Conéctalo al pin GPIO 28.
  • Cable marrón (sensor central): Conéctalo al pin GPIO 27.
  • Cable blanco/gris (sensor izquierdo): Conéctalo al pin GPIO 26.

Calibración del sensor de escala de grises

Antes de que el auto pueda seguir una línea de manera confiable, debes calibrar el sensor para comprender las diferentes lecturas para blanco, negro y espacio vacío. Este es un paso crítico para asegurar que tu auto tome las decisiones correctas. La sensibilidad del sensor se puede ajustar con un pequeño potenciómetro en el módulo.

El video demuestra el proceso de calibración (en el video en 04:39). El sensor debe colocarse a una altura óptima sobre el suelo, alrededor de 11 milímetros o un centímetro, para obtener lecturas claras. Al ajustar el potenciómetro y observar los valores, puedes encontrar el punto óptimo. El objetivo es tener una diferencia significativa entre las lecturas de una superficie blanca (que refleja mucha luz) y una línea negra (que refleja muy poca).

Aquí tienes un resumen de lo que significan las lecturas:

  • Superficie blanca: Alta reflexión, lo que resulta en valores altos del sensor (por ejemplo, alrededor de 20,000).
  • Línea negra: Baja reflexión, lo que resulta en valores bajos del sensor (por ejemplo, alrededor de 3,000).
  • Borde (espacio hueco): Sin reflexión, lo que resulta en los valores más bajos del sensor (por ejemplo, alrededor de 1,200).

Explicación del código

Dado que no se proporcionó código para esta lección, nos centraremos en la lógica conceptual y las funciones clave de la biblioteca Robojax que se utilizan para hacer funcionar el auto. El video explica las dos funciones principales que usarás de la biblioteca proporcionada.

Probando el sensor

El primer paso es probar tu sensor con un script simple. Este script usa una función llamada get_grayscale_value() para leer los valores brutos de los tres sensores. Imprime estos valores en el monitor serie para que puedas ver cómo cambian cuando el sensor está sobre diferentes superficies. Esto es útil para verificar tu cableado y realizar el paso de calibración.


# Este es un ejemplo conceptual de la función de prueba
from machine import Pin, ADC
import time

# Define los pines ADC para los sensores de escala de grises
grayscale_pins = [26, 27, 28]
sensors = [ADC(Pin(pin)) for pin in grayscale_pins]

while True:
    # Lee los valores brutos de 16 bits de los sensores
    values = [sensor.read_u16() for sensor in sensors]
    print("Izquierdo: {} Centro: {} Derecho: {}".format(values[0], values[1], values[2]))
    time.sleep_ms(100)

Lógica de seguimiento de línea

Para el seguimiento de línea, el código no usa los valores analógicos brutos. En su lugar, los convierte a un estado digital simple: 1 si el sensor está sobre la línea negra, y 0 si está sobre la superficie blanca. Esto se maneja con una función que devuelve una lista de tres valores (por ejemplo, [0, 1, 0]). El bucle de control principal luego usa esta lista para determinar las acciones del auto.

La lógica se basa en comparar el estado del sensor con condiciones predefinidas. Por ejemplo, si el estado es [0, 1, 0], el coche está perfectamente sobre la línea y debe avanzar. Si el estado es [1, 0, 0], el coche se ha desviado hacia la izquierda y necesita corregir su trayectoria hacia la derecha. El video explica estas condiciones en detalle (en el video en 13:05), mostrando cómo diferentes combinaciones de lecturas del sensor corresponden a diferentes comandos del motor, como girar a la izquierda, girar a la derecha o realizar una corrección brusca.


# Este es un ejemplo conceptual de la lógica de seguimiento de línea
# Supongamos que 'status' es una lista como [0, 1, 0] del sensor de escala de grises

if status == [0, 1, 0]:  # Sensor central sobre la línea
    # Avanzar
    pass
elif status == [1, 0, 0]:  # Sensor izquierdo sobre la línea
    # Girar a la derecha
    pass
elif status == [0, 0, 1]:  # Sensor derecho sobre la línea
    # Girar a la izquierda
    pass
# ... otras condiciones para giros más bruscos

Demostración en Vivo del Proyecto

En la demostración del video, el coche se coloca sobre una pista impresa con una línea negra gruesa. El coche sigue la línea con éxito, realizando giros y correcciones mientras avanza por el recorrido. El video destaca un problema común donde las ruedas pueden aflojarse durante giros bruscos, y muestra una solución simple de añadir un pequeño trozo de cinta al eje de la rueda para un ajuste más firme. Una vez solucionado esto, el coche recorre toda la pista sin problemas, demostrando la efectividad de la calibración y la lógica de seguimiento de línea.

Capítulos del Video

  • [00:00] Introducción al Seguimiento de Línea y Detección de Acantilados
  • [03:01] Cableado del Módulo de Sensor de Escala de Grises
  • [04:39] Calibración del Sensor de Escala de Grises
  • [13:05] Comprensión de la Lógica de Seguimiento de Línea
  • [19:43] Prueba del Código de Seguimiento de Línea
  • [24:50] Demostración en Vivo en una Pista de Prueba
Sin código adjunto.

Recursos y referencias

Aún no hay recursos.

Archivos📁

No hay archivos disponibles.