Comunicación multi-drone
Visión general
Sección titulada «Visión general»La cooperación multi-drone es una frontera de la tecnología de drones. En este proyecto aprenderás a implementar una comunicación sencilla entre dos drones y a conocer los principios de la comunicación inalámbrica.
Lo que aprenderás
Sección titulada «Lo que aprenderás»- Principios de la comunicación inalámbrica
- Protocolo ESP-NOW
- Estrategias de cooperación multi-drone
- Modo líder-seguidor
Materiales necesarios
Sección titulada «Materiales necesarios»| Artículo | Cantidad | Descripción |
|---|---|---|
| Dos drones ensamblados | 2 | Drone A y drone B |
| Ordenador | 1 | Con entorno VS Code + ESP-IDF |
| Cables de datos USB | 2 | Para programar |
Paso 1: Conocer la comunicación inalámbrica
Sección titulada «Paso 1: Conocer la comunicación inalámbrica»El ESP32 soporta los protocolos de comunicación Wi-Fi y ESP-NOW.
ESP-NOW es un protocolo de comunicación punto a punto de baja latencia y bajo consumo, ideal para la comunicación entre drones.
Paso 2: Configurar ESP-NOW
Sección titulada «Paso 2: Configurar ESP-NOW»En el directorio components/drivers/general/wifi, conoce la configuración y el uso de ESP-NOW.
Configura ESP-NOW por separado para el drone A y el drone B, definiendo las direcciones de comunicación.
Paso 3: Escribir el código de comunicación
Sección titulada «Paso 3: Escribir el código de comunicación»Código de envío del drone A:
Sección titulada «Código de envío del drone A:»void sendPositionToFollower() { float x, y, z; estimatorGetPosition(&x, &y, &z);
// Construir el mensaje uint8_t message[12]; memcpy(message, &x, 4); memcpy(message + 4, &y, 4); memcpy(message + 8, &z, 4);
// Enviar el mensaje esp_now_send(follower_mac, message, sizeof(message));}Código de recepción del drone B:
Sección titulada «Código de recepción del drone B:»void onDataRecv(const uint8_t *mac_addr, const uint8_t *data, int data_len) { if (data_len == 12) { float leader_x, leader_y, leader_z; memcpy(&leader_x, data, 4); memcpy(&leader_y, data + 4, 4); memcpy(&leader_z, data + 8, 4);
// Seguir al líder float follower_x = leader_x - 1.0; // mantener 1 metro de distancia float follower_y = leader_y; float follower_z = leader_z;
commanderSetPositionSetpoint(follower_x, follower_y, follower_z, 0); }}Paso 4: Compilar, grabar y probar
Sección titulada «Paso 4: Compilar, grabar y probar»- Compila por separado el código del drone A y del drone B
- Grábalo en los drones correspondientes
- Enciende y prueba, y observa si el drone B puede seguir al drone A
Solución de problemas
Sección titulada «Solución de problemas»No hay comunicación
Sección titulada «No hay comunicación»- Comprueba que las direcciones MAC sean correctas
- Confirma que ESP-NOW esté inicializado
El seguimiento es inestable
Sección titulada «El seguimiento es inestable»- Ajusta la distancia de seguimiento
- Optimiza los parámetros de control
Sensación de logro
Sección titulada «Sensación de logro»¡Enhorabuena! Has completado todos los proyectos del material intermedio y dominas las habilidades de programación y depuración de drones.
Siguiente paso
Sección titulada «Siguiente paso»Ya estás listo para pasar al material avanzado y aprender algoritmos más complejos e integración de sistemas.
Publicado por primera vez endrone.imagrove.com/es/intermediate/multi-drone/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.
© 2026 ESP32 Drone. Todos los derechos reservados.