跳转到内容

多机通信网络

多机协同是无人机技术的前沿方向。在本项目中,你将学习如何用 ESP-NOW 协议实现多无人机 MESH 网络。

  • ESP-NOW 协议
  • MESH 网络拓扑
  • 分布式系统设计
  • 信息共享机制
物品数量说明
3 架 ESP32 无人机3-
电脑1安装 Python + Socket
ground_station.py1地面站软件

ESP-NOW 是一种低延迟、点对点通信协议,适合近距离多设备通信。

解压 mesh_network.zip,用 VS Code 打开。

打开 mesh.c,实现网络初始化:

void mesh_init(void) {
// 1. 初始化 ESP-NOW
esp_now_init();
// 2. 添加所有无人机的 MAC 地址到对等列表
uint8_t peer_macs[3][6] = {
{0x11, 0x22, 0x33, 0x44, 0x55, 0x66}, // 无人机 1 MAC
{0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF}, // 无人机 2 MAC
{0x00, 0x11, 0x22, 0x33, 0x44, 0x55} // 无人机 3 MAC
};
for (int i = 0; i < 3; i++) {
esp_now_add_peer(peer_macs[i], ESP_NOW_ROLE_COMBO, 0, NULL, 0);
}
// 3. 注册数据发送/接收回调函数
esp_now_register_send_cb(on_data_sent);
esp_now_register_recv_cb(on_data_recv);
}
void mesh_broadcast_data(uint8_t* data, size_t len) {
// 1. 遍历所有对等节点
for (int i = 0; i < 3; i++) {
// 2. 发送数据到每个节点
esp_now_send(peer_macs[i], data, len);
}
}
  1. 每架无人机定期广播自己的位置、电量和任务状态
  2. 接收其他无人机的广播,更新全局状态
  1. 3 架无人机同时飞行
  2. 观察地面站是否能收到所有无人机的实时数据
  3. 挑战:实现”故障检测”,当一架无人机电量低时,其他无人机自动调整任务
  • 检查天线连接
  • 减少通信距离
  • 添加数据重传机制
  • 优化数据包大小

恭喜你!你已经实现了多无人机 MESH 网络,这是多机协同的基础!

在下一个项目中,你将学习如何实现多机编队飞行。