Ir al contenido

Maestro de la evasión

La evitación de obstáculos es una función importante de la inteligencia del drone. En este proyecto aprenderás a implementar la evitación de obstáculos frontal con un sensor ultrasónico.

  • Principio del sensor ultrasónico
  • Programación de la interfaz del sensor
  • Diseño de lógica condicional
  • Control en tiempo real
Artículo Cantidad Descripción
Drone ESP32 1 -
Módulo ultrasónico HC-SR04 1 Sensor de medición de distancia
Protoboard, cables Dupont varios Para las conexiones

Conecta el HC-SR04 al ESP32:

HC-SR04 ESP32
VCC 5V
GND GND
Trig GPIO 18
Echo GPIO 19

Descomprime obstacle_avoid.zip y ábrelo con VS Code.

Paso 3: Escribir la función de medición de distancia

Sección titulada «Paso 3: Escribir la función de medición de distancia»

Abre ultrasonic.c e implementa la función ultrasonic_get_distance:

float ultrasonic_get_distance(void) {
// 1. Enviar una señal de disparo de 10us
gpio_set_level(TRIG_PIN, 1);
ets_delay_us(10);
gpio_set_level(TRIG_PIN, 0);
// 2. Medir la duración del nivel alto en Echo
uint32_t start = 0, end = 0;
while (!gpio_get_level(ECHO_PIN)) start = esp_timer_get_time();
while (gpio_get_level(ECHO_PIN)) end = esp_timer_get_time();
// 3. Calcular la distancia: velocidad del sonido 340m/s, distancia = tiempo * velocidad / 2
float distance = (end - start) * 0.034 / 2;
return distance;
}

Abre flight_control.c y añade en el bucle principal:

float distance = ultrasonic_get_distance();
if (distance < 50) { // distancia menor de 50cm
if (distance < 20) { // distancia menor de 20cm
// Frenada de emergencia
motorsSetRatio(MOTOR_M1, 0);
motorsSetRatio(MOTOR_M2, 0);
motorsSetRatio(MOTOR_M3, 0);
motorsSetRatio(MOTOR_M4, 0);
} else {
// Reducir la velocidad y girar a la izquierda
motorsSetRatio(MOTOR_M1, current_ratio * 0.5);
motorsSetRatio(MOTOR_M2, current_ratio * 0.8);
motorsSetRatio(MOTOR_M3, current_ratio * 0.5);
motorsSetRatio(MOTOR_M4, current_ratio * 0.8);
}
}

Mueve un obstáculo (por ejemplo, una caja) delante del drone y observa si lo evita automáticamente.

  • Comprueba la conexión del sensor
  • Ajusta el parámetro de la velocidad del sonido
  • Optimiza la frecuencia de ejecución del código
  • Reduce los retardos innecesarios

¡Enhorabuena! Has implementado la función de evitación de obstáculos del drone, ¡un paso importante hacia la inteligencia!

En el siguiente proyecto aprenderás a implementar funciones de reconocimiento visual con la cámara.

Publicado por primera vez endrone.imagrove.com/es/intermediate/obstacle-avoidance/Al citar o reproducir, indica la fuente Imagrove y enlaza a esta página.

¿Dudas o problemas con este tutorial?

Inicia sesión con GitHub para comentar. Si un paso te falla, avísanos: lo verificamos y actualizamos el tutorial.

ImagroveMás tutoriales sobre ESP32 · ESP32 IoT Tutorial

© 2026 ESP32 Drone. Todos los derechos reservados.