我们可以使用OTA更新来无线更新固件。但是为了更新固件,esp32设备需要在本地网络上。 是否有任何方法或来源来更新不在本地网络上的设备的固件?
答案 0 :(得分:1)
还有一种方法可以通过Internet更新ESP32固件,而无需任何其他更新服务器(具有公共和静态IP地址),也无需端口转发。它基于Husarnet p2p VPN服务。
答案 1 :(得分:0)
假设ESP32 OTA的工作原理与我使用的ESP8266非常相似。这至少可以通过两种方法来完成。
此链接:http://esp8266.github.io/Arduino/versions/2.1.0/doc/ota_updates/ota_updates.html
提供有关使用浏览器将更新部署到设备的详细信息。您需要将端口80的流量从公用IP转发到内部设备IP地址。然后,您可以通过浏览器和公用IP地址访问ESP。更好的选择是将更新的固件发布到外部可用的HTTP服务器,并更改ESP OTA编码以检查该外部服务器是否有更新。上面文档的“ HTTP Server”部分中详细介绍了此方法。这只是您提出的一般问题的一般指导。我相信上面的解决方案可以用,但是我自己还没有尝试过。
答案 2 :(得分:0)
是的,绝对如此。 OTA不需要设备位于本地网络上。您只需要在Web服务器上托管固件.bin文件,然后将ESP32连接到服务器并发送GET请求即可。 Espressif的OTA示例项目相当不错,但我假设您使用的是ESP32 Arduino库,而不是ESP-IDF。
我猜您正在使用this.,我将看一下AWS OTA示例,我相信它是标准ESP32 Arduino示例之一。在示例,SparkFun ESP32示例,更新,AWS_S3_OTA_Update下。看起来,它使您可以从Amazon Web Services托管服务器进行OTA,这应该可以完全满足您的要求。
答案 3 :(得分:0)
您可以制作一个从互联网或其他地方获取更新文件的应用程序,然后通过 BLE 将文件传输到 ESP32。在这种情况下,ESP32 只需要通过 BLE 连接到手机(不需要 WIFI)。
这是 ESP32 的示例 Arduino 代码和 Android app 代码