(1)(1.4) ESP32 wifi telemetry
文章目录
前言
1 用于ESP32的DroneBridge
2 推荐的硬件
3 下载和烧录固件
4 为ESP32配置DroneBridge
前言
ESP32 是现成的 Wi-Fi 模块,具有完整的 TCP/IP 协议栈和微控制器功能。它们提供专用的 UART、SPI 和 I2C 接口。它们可与任何 ArduPilot 自动驾驶控制器配合使用。
1 用于ESP32的DroneBridge
适用于 ESP32 的 DroneBridge 提供透明、双向的串行至 WiFi 桥接器。
使用 WiFi 协议无法提供与其他 DroneBridge 实现相同的范围。典型的 WiFi 范围约为 50m 至 200m,具体取决于天线。高增益定向天线可提供更大的范围。
2 推荐的硬件
几乎所有 ESP32 开发板都能运行 ESP32 的 DroneBridge。建议使用带有外部天线连接器的电路板和模块,因为这些电路板和模块可以提供更远的距离。
!Warning
大多数模块仅支持 3.3V 输入,而某些自动驾驶仪串行端口仅提供 5V。你需要检查兼容性,必要时降低电压。一般不建议使用自动驾驶仪的 3.3V 电源,除非你确定它能为你使用的 ESP32 板提供足够的电流。
接受 3.3V 电源的模块和 DevKits 的一些示例:
- AZDelivery DevKit C
- TinyPICO - ESP32 Development Board - V2
- Adafruit HUZZAH32 – ESP32 Feather Board
- Adafruit AirLift – ESP32 WiFi Co-Processor Breakout Board (需要 FTDI 适配器来烧录固件)
- Adafruit HUZZAH32 (需要 FTDI 适配器来烧录固件)
- ESP32-WROOM-32UE (仅模块 - 需要定制 PCB)
- ESP32-WROOM-32E (仅模块 - 需要定制 PCB)
!Note
带有 IPEX 外置天线端口的 NodeMCU 型 DevKit 板通常也提供默认激活的板载天线。你可能需要重新焊接一个电阻器来激活外部天线端口。
3 下载和烧录固件
从 GitHub 存储库下载固件(Download the firmware from the GitHub repository),并按照其中的烧录说明进行操作(follow the flashing instructions there)。它们始终是最新的。
!Note
请按照 GitHub 存储库中的闪存说明进行操作(Follow the flashing instructions inside the GitHub Repository)。不同版本的 ESP32 DroneBridge 可能会有不同的确切参数。
为方便起见,在此给出一些简短说明:
- 下载预编译固件二进制文件(Download the pre-compiled firmware binaries);
- 通过 USB/Serial 桥接器将 DEVKit 与电脑连接(大多数 DEVKit 已提供 USB 端口,用于闪存和调试);
- 擦除闪存并将 DroneBridge for ESP32 固件烧录到 ESP32 上;
- 使用 Espressif Flash 下载工具(Espressif Flash Download Tool)(仅限 Windows);
- 使用 esp-idf/esptool(所有平台)。
- 对 ESP32 进行电源循环;
- 连接到"DroneBridge for ESP32" WiFi 网络并为你的应用配置固件。
4 为ESP32配置DroneBridge
你可以通过 Web 界面更改默认配置。通过 WiFi 连接到 ESP32,然后在浏览器地址栏中输入 dronebridge.local、http://dronebridge.local 或 192.168.2.1。
默认配置
- SSID: DroneBridge for ESP32
- Password: dronebridge
- Transparent/MAVLink
- UART baud rate 115200
- UART TX pin 17
- UART RX pin 16
- Gateway IP: 192.168.2.1
自定义设置和网络界面
你可以通过网络界面更改默认配置。
通过 WiFi 连接到 ESP32,并在浏览器地址栏中输入 dronebridge.local、http://dronebridge.local 或 192.168.2.1。
!Note
某些设置需要重新启动 ESP32 才能生效。
布线
接线非常简单,对于连接到自动驾驶仪任何串行端口(如 TELEM1 或 TELEM2)的所有设备而言,接线方式基本相同。本指南在此不作详细介绍,但提供了以下接线大纲。
1. 将 ESP32 的 UART 连接到自动驾驶仪的 UART(例如 TELEM 1 或 TELEM 2 端口)。确保电压水平匹配!大多数 ESP32 DevKits 只能使用 3.3V!
- TX to RX;
- RX to TX;
- GND to GND;
- 为 ESP32 提供稳定的 3.3V 或 5V 电源(取决于 DevKit 的可用输入和自动驾驶仪的功能)。
2. 将自动驾驶仪端口设置为 MAVLINK 1 或 2 协议。
有些 ESP32 DevKits 制造商在其产品上标注了错误的引脚。如果遇到问题,请确保电路板上的引脚标签正确无误。
确保在布线时始终遵循 ESP32 板制造商的说明。尤其是电源。
ArduPilot配置
配置与 ESP32 连接的自动驾驶仪的 UART。DroneBridge 的默认配置为:
- Protocol: MAVLink (v1 or v2);
- Baudrate: 115200 baud。
如果连接到串行接口 2,则应在自动驾驶仪上设置这些参数(如果使用其他串行接口,请将参数名称中的"2"替换为串行接口的编号):
- SERIAL2_PROTOCOL = 2 (MAVLink2) or 1 (MAVLink1);
- SERIAL2_BAUD = 115 (115200 baud)。
如果出现连接问题,可将 BRD_SER2_RTSCTS = 0 设置为禁用流量控制,但通常没有必要这样做。
连接到地面站
提供以下连接选项:
- 通过 14550 端口向所有连接设备发送 UDP 单播;
- 5760 端口的 TCP。
DroneBridge for ESP32 将自动通过 UDP 将所有数据转发至所有连接的 WiFi 设备的 14550 端口。QGroundControl 或 Mission Planner 将自动检测连接,无需采取进一步行动。
故障排除
在刷新新版本/固件之前,请务必擦除 ESP32 的闪存。
检查 ESP 板上的引脚是否标注正确。
在浏览器地址栏中输入 IP 地址 http://192.168.2.1。不支持 https!使用手机时,可能需要断开蜂窝网络连接才能访问网络界面。
如果你的网络与 ESP32 DB 的 IP 范围相同,则需要将 Webinterface 中的网关 IP 地址更改为 192.168.5.1。
API
ESP32 的 DroneBridge 提供 REST:API,允许你读写配置选项。你不必局限于 Web 界面提供的选项(如波特率)。你可以使用 API 设置自定义波特率或将系统集成到自己的设置中。
申请设置
http://dronebridge.local/api/settings/request
申请统计资料
http://dronebridge.local/api/system/stats
触发重启
http://dronebridge.local/api/system/reboot
触发设置更改:发送有效的 JSON
{
"wifi_ssid": "DroneBridge ESP32",
"wifi_pass": "dronebridge",
"ap_channel": 6,
"tx_pin": 17,
"rx_pin": 16,
"telem_proto": 4,
"baud": 115200,
"msp_ltm_port": 0,
"ltm_pp": 2,
"trans_pack_size": 64,
"ap_ip": "192.168.2.1"
}
to
http://dronebridge.local/api/settings/change