如何通过http进行OTA,使用ESP32作为AP而不是STA,以及使用ESP-IDF?

问题描述 投票:0回答:1

我需要使用 ESP-IDF 编写一个程序,该程序能够无线更新基于 ESP32-S3 的设备的固件,而无需现场访问互联网。

我用谷歌搜索并找到了关于 OTA 的示例项目:

但是这个项目似乎使用 ESP32 作为 HTTP 客户端,连接到计算机上运行的服务器,并且 ESP32 和计算机都连接到由充当 AP 的路由器创建的同一本地网络。对于现场固件更新,我无法通过路由器访问互联网或本地网络,因此我需要在 ESP32 和我的计算机之间建立直接连接。我想我可以通过使用 ESP32 作为 AP,然后用我的 PC 连接到 ESP32 创建的网络来做到这一点。

对于使用 ESP32 作为 AP,我找到了以下示例项目:

为了使用 ESP32 作为 HTTP 服务器,我找到了以下示例项目:

我的想法是尝试结合上述 3 个示例项目中的代码,以便使用 ESP32 作为 AP 而不是 STA,在 ESP32 上运行 HTTP 服务器,使用计算机作为 HTTP 客户端连接到 ESP32 服务器,然后从电脑浏览器上传新固件文件到ESP32服务器,然后将新固件从缓冲区复制到ota flash分区。

由于我根本没有 OTA 经验,而且对 ESP32 的经验也更少,所以我想先问一下上述想法是否可行,或者是否存在更简单的方法来完成 OTA。如果没有更简单的方法,如何使用 ESP32 作为 HTTP 服务器而不是 HTTP 客户端的 OTA 代码(因为 OTA 示例似乎与 HTTP 客户端耦合)?

附注使用 ESP32 作为 HTTP 客户端似乎不适合我,因为我需要提前知道充当 HTTP 服务器的计算机的某个永久 IP 地址,但我认为我无法拥有,但我不确定我的想法是否正确?

http esp32 ota esp-idf
1个回答
0
投票

要使用 HTTP 和 ESP32 作为具有 ESP-IDF 的接入点 (AP) 进行无线 (OTA) 固件更新,请按照以下步骤操作:

  1. 将 ESP32 设置为 AP:使用 esp_wifi_set_mode 函数将 ESP32 配置为 AP。

  2. 在 ESP32 上启动 HTTP 服务器:创建一个可以处理文件上传的 HTTP 服务器。 ESP-IDF 有演示创建 HTTP 服务器的示例。

  3. 从 PC 连接到 ESP32 网络:使用 PC 作为 HTTP 客户端并连接到 ESP32 服务器。

  4. 上传固件:使用浏览器或curl等工具访问ESP32的HTTP服务器,上传新的固件文件。

要将 ESP32 设置为 AP,代码片段包括初始化 NVS 以及设置 AP 的 Wi-Fi 模式和属性。

完整的 OTA 流程可以参考 ESP-IDF 提供的 OTA 和 SoftAP 示例等示例项目。结合这些示例将为您在 AP 模式下实施 OTA 更新提供一个良好的起点。

确保上传的固件包含 OTA 功能以启用未来的 OTA 更新非常重要。使用数字签名或校验和来验证固件更新的完整性。

应使用自动化测试工具进行彻底的测试,以便在流程的早期检测和解决潜在问题。

ESP-IDF 文档和社区论坛可根据需要提供详细指导。

© www.soinside.com 2019 - 2024. All rights reserved.