Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arduino 有没有办法通过互联网更新适用于esp32的固件?_Arduino_Firmware_Ota_Esp32 - Fatal编程技术网

Arduino 有没有办法通过互联网更新适用于esp32的固件?

Arduino 有没有办法通过互联网更新适用于esp32的固件?,arduino,firmware,ota,esp32,Arduino,Firmware,Ota,Esp32,我们可以使用OTA更新无线更新固件。但要更新固件,esp32设备需要位于本地网络上。 是否有任何方法或来源来更新不在本地网络上的设备固件?假设ESP32 OTA的工作原理与我使用的ESP8266非常相似。这至少可以通过两种方式实现 此链接: 提供有关使用浏览器将更新部署到设备的详细信息。您需要将端口80流量从公共IP转发到内部设备IP地址。然后,您可以通过浏览器和公共IP地址访问ESP。更好的选择是将更新的固件发布到外部可用的HTTP服务器,并更改ESP OTA代码以检查该外部服务器是否有更新。

我们可以使用OTA更新无线更新固件。但要更新固件,esp32设备需要位于本地网络上。
是否有任何方法或来源来更新不在本地网络上的设备固件?

假设ESP32 OTA的工作原理与我使用的ESP8266非常相似。这至少可以通过两种方式实现

此链接:


提供有关使用浏览器将更新部署到设备的详细信息。您需要将端口80流量从公共IP转发到内部设备IP地址。然后,您可以通过浏览器和公共IP地址访问ESP。更好的选择是将更新的固件发布到外部可用的HTTP服务器,并更改ESP OTA代码以检查该外部服务器是否有更新。上述文档的“HTTP服务器”部分详细介绍了此方法。这只是对你提出的一般问题的一般指导。我相信上述解决方案会奏效,但我自己还没有尝试过。

是的,绝对有效。OTA不要求设备位于本地网络上。您只需要在web服务器上托管固件.bin文件,然后让ESP32连接到服务器并发送GET请求。Espressif的OTA示例项目相当不错,但我假设您使用的是ESP32 Arduino库,而不是ESP-IDF


我猜您使用的是AWS OTA示例,我相信它是标准的ESP32 Arduino示例之一。下面是SparkFun ESP32的例子,更新,AWS_S3_OTA_更新。它似乎允许您从Amazon Web Services托管的服务器上下载OTA,该服务器应该完全满足您的需要。

还有一种方法可以通过internet更新ESP32固件,而无需任何额外的更新服务器(具有公共和静态IP地址)和端口转发。它基于Husarnet p2p VPN服务


说明如下:

您可以制作一个应用程序,从internet或其他地方获取更新文件,然后通过BLE将文件传输到ESP32。在这种情况下,ESP32只需通过BLE连接至手机(无需WIFI)


以下是ESP32的示例代码,代码

无网络表示无OTA。没有网络也意味着没有互联网。如果它没有连接到网络,它连接到什么?@Gerhard问题的标题是“有没有办法通过internet更新固件…”。我认为你误解了这个问题。我相信OP是在问固件是否可以通过互联网而不是LAN更新,它肯定可以。固件只需要托管在web服务器上,并且固件需要从该服务器中提取。那么是否可以从ESP触发它?我看到的大多数示例都是从托管固件的机器上的IDE或命令行触发它。我有一个场景,我希望设备本身检查远程地址以获取更新。@Scott是的,您完全可以让esp32启动更新。我现在正在开发一种设备,通过手机的蓝牙命令触发OTA更新。设备在接收到BLE命令时检查服务器是否有新固件文件。让设备不断(或偶尔)检查服务器上的新文件将以非常类似的方式实现。ESP-IDF OTA示例就是这样做的:好吧,我也这么认为。我想我有一个lib链接,它现在也展示了一个例子。我会让用户在设备上或通过网页界面触发它。现在,我正试图弄清楚如何在串行连接时触发EasyVR的更新。@Scott我不熟悉EasyVR。不过我很快就找到了。如果EasyVr有自己独立于ESP32的固件,您应该能够从web上将EasyVr固件下载到ESP32上,并使用新固件写入EasyVr闪存。因此,您实际上无法使用内置的ESP32 OTA函数来实现这一点,但只需下载一个文件并直接将其加载到EasyVr即可。如果没有单独的固件(ESP32完全驱动EasyVr),那么它将只是ESP32的标准OTA。我希望如此,因为我仍在试图从他们的文档中找出如何从另一个微控制器触发其声音编程模式。看起来,语音队列的车载编程模式的触发可以通过简单的tx/rx来完成,但我必须编写可以从网页触发的代码来完成。