🚁 DroneBridge for ESP32 详细部署教程

DroneBridge for ESP32 是一个为 ESP32 模块设计的固件,能将 ESP32 变成一个透明、双向、加密的串口转 Wi-Fi 或 ESP-NOW 数传链路。它是连接飞控与地面站(如 QGroundControl、Mission Planner)最经济实惠的方式之一。

这份教程将引导你完成从固件烧录到最终配置使用的全过程。


📋 部署前准备

在开始之前,你需要准备以下硬件和软件:

硬件清单

  • ESP32 开发板:建议使用项目官方支持的型号(如 ESP32-C3、C6、S2、S3 等),以获得最佳兼容性。带有外部天线接口的模块能提供更远的距离。
  • 飞控板:如 Pixhawk 系列或任何有 UART 接口的飞控。
  • USB 数据线:用于连接 ESP32 和电脑,进行固件烧录。
  • 杜邦线:用于连接 ESP32 和飞控。
  • (可选)USB 转串口模块:在配置“GND-Unit”为特定长距离模式时可能需要。

软件准备

  • USB 串口驱动:确保电脑能识别你的 ESP32 开发板。
  • 浏览器:用于访问 ESP32 的 Web 配置界面。
  • 地面站软件:如 QGroundControl (QGC) 或 Mission Planner,用于最终测试数据链路。

🔧 第一步:烧录固件

烧录固件是部署的核心步骤。官方强烈推荐使用在线烧录工具,这是最简单、最不容易出错的方式。

方式一:使用官方在线烧录工具(强烈推荐)

  1. 连接 ESP32:使用 USB 数据线将 ESP32 开发板连接到你的电脑。
  2. 打开烧录工具:在浏览器中访问 DroneBridge 官方提供的在线烧录页面(通常在项目官网可以找到链接)。
  3. 连接设备:在网页工具中,选择正确的串口号(例如 Windows 上的 COMx 或 macOS/Linux 上的 /dev/cu.usbserial-xxx),然后点击“连接”。
  4. 选择固件版本和类型
    • 版本:一般选择最新的稳定版(Stable)。
    • 固件类型 (Firmware Flavor):这是关键的一步,根据你的硬件和用途选择:
      • ESP32(-XX)通用固件。适用于大多数开发板,作为连接飞控的“AIR-Unit”(空中端),或通过外部 USB 转串口模块连接电脑的“GND-Unit”(地面端)。
      • ESP32(-XX) Official HW:用于官方硬件的固件,UART 引脚已预先配置好。
      • ESP32(-XX) USBSerial用于 GND-Unit。让 ESP32 通过自身的 USB-JTAG 接口直接与电脑通信,无需外部 USB 转串口模块。
      • ESP32(-XX) noUARTConsole用于 GND-Unit。适用于那些带有板载 USB 转串口芯片,但该芯片连接到了调试 UART 的开发板。此固件会禁用调试控制台,释放该 UART 供 DroneBridge 使用。
  5. 开始烧录:点击“Flash Firmware to ESP32!”按钮,等待进度条完成。

方式二:使用 esptool.py 命令行烧录(进阶)

如果你更习惯命令行,可以使用 Espressif 官方工具 esptool.py

  1. 下载固件:从项目的 GitHub Releases 页面 下载最新的预编译二进制文件(.zip 压缩包)。

  2. 安装 esptoolpip install esptool

  3. 擦除 Flash 并烧录:在终端中导航到解压后的固件目录,运行类似以下的命令(注意替换 PORT 为你的串口号):

    1
    2
    esptool.py --chip esp32 --port PORT erase_flash
    esptool.py --chip esp32 --port PORT --baud 460800 write_flash 0x1000 bootloader.bin 0x8000 partitions.bin 0x10000 firmware.bin

    提示:具体的烧录地址和文件名请参考下载的固件包中的 flashing_instructions.txt 文件。在烧录新固件前,建议先执行擦除操作。


🔌 第二步:硬件连接

将 ESP32 与飞控连接起来,实现物理层通信。

  1. 找到飞控的 TELEM 端口:通常飞控有 1-2 个 6 针的 TELEM 接口。
  2. 连接 UART:按照下面的对应关系连接飞控和 ESP32:
    • 飞控 TELEM 的 TXESP32 的 RX(接收引脚)
    • 飞控 TELEM 的 RXESP32 的 TX(发送引脚)
    • 飞控 TELEM 的 GNDESP32 的 GND
    • 飞控 TELEM 的 5V/VCCESP32 的 VIN/VCC注意:确认你的 ESP32 开发板支持 5V 输入,否则必须接 3.3V)。
  3. 选择引脚:大部分教程示例使用 GPIO17 (TX) 和 GPIO16 (RX)。官方不推荐使用开发板上直接标有 TX/RX 的引脚,因为它们通常连接到了内部的 USB 转串口芯片,用于输出调试信息。你可以在 Web 配置界面中自由指定其他空闲 GPIO 作为 UART 引脚。
  4. 供电:连接稳定后,ESP32 应该会通过飞控的 TELEM 端口供电并启动。

🌐 第三步:初次配置(Web 界面)

首次启动的 ESP32 会默认创建一个 Wi-Fi 热点,你可以通过浏览器连接到它进行配置。

  1. 连接 Wi-Fi 热点:在你的电脑或手机上,找到名为 DroneBridge ESP32 的 Wi-Fi 热点,密码是 dronebridge
  2. 访问配置页面:打开浏览器,在地址栏输入 http://dronebridge.localhttp://192.168.2.1 并访问。
  3. 进行基本配置:在 Web 界面中,你需要设置几个关键参数:
    • 模式 (Mode):选择工作模式。对于第一次测试,保持默认的 WiFi Access Point Mode
    • UART 引脚 (UART TX/RX Pin):设置为你实际连接的 GPIO 号码(例如 TX=17, RX=16)。
    • UART 波特率 (UART Baud Rate):必须与飞控对应串口的波特率一致。PX4 的 TELEM 端口默认通常是 115200
    • 协议 (Protocol):根据飞控的设定选择 MAVLinkMSPLTMTransparent(透传)。
  4. 保存并重启:点击页面底部的 Save 按钮,ESP32 将应用新配置并重启。

📡 第四步:连接地面站 (GCS)

配置完成后,就可以连接地面站软件,验证数据链路是否畅通了。

  • 对于 QGroundControl:一般情况下,QGC 会自动检测到来自 ESP32 的 UDP 广播(端口 14550)并建立连接。如果未自动连接,可以手动添加 UDP 连接,目标地址为 ESP32 的 IP(默认 192.168.2.1),端口 14550
  • 对于 Mission Planner:需要选择 UDP 连接,并在设置中指定 ESP32 的 IP 地址和端口 14550

🛠️ 高级配置:长距离模式

如果需要更远的通信距离(可达 1 公里以上),可以使用 ESP-NOW LR ModeWiFi LR Mode。这需要两个 ESP32 模块:一个作为“AIR-Unit”连接飞控,另一个作为“GND-Unit”连接地面站电脑。

配置要点:

  1. AIR-Unit:模式设置为 ESP-NOW LR Mode AIR,设置一个安全密码和通信信道。配置好后,Web 界面将不可用,只能通过按键重置
  2. GND-Unit:模式设置为 ESP-NOW LR Mode GND必须与 AIR-Unit 使用相同的密码和信道。GND-Unit 通过 USB 转串口模块或特殊固件连接到电脑。

🐛 常见问题与排障

  • 无法连接到 DroneBridge ESP32 热点:确保 ESP32 已正确供电。如果之前修改过配置导致问题,可以长按 ESP32 上的 Boot 按钮(超过 1.5 秒)来恢复所有设置到出厂默认值。
  • Web 界面无法打开:检查电脑是否真正连接到了 ESP32 的热点,可能需要暂时禁用电脑的蜂窝网络(手机热点),以防止流量被路由出去。
  • 地面站收不到数据
    • 确认 ESP32 和飞控的波特率完全匹配
    • 确认 TX 与 RX 引脚交叉连接正确。
    • 对于 UDP 连接,确保地面站向 ESP32 的端口(如 14550)发送了第一个数据包(如心跳包),以完成“注册”。在 QGC 中指定服务器地址可以解决此问题。
  • 不同固件版本更新:从 v1.x 升级到 v2.x 时,必须先擦除 Flash,否则可能无法启动。从 v2.0 之后版本升级则通常无需此操作。

对于更详细的信息,建议查阅项目官方的 DroneBridge DocsGitHub Wiki