Arduino OTA库支持通过WiFi网络更新固件。 Github地址:https://github.com/JAndrassy/ArduinoOTA 硬件支持classic ATmega AVR with at least 64 kB of flash (Arduino Mega, MegaCore MCUs, MightyCore 1284p and 644) Arduino SAMD boards like Zero, M0, MKR and Nano 33 IoT Arduino Uno R4 boards nRF5 board supported by nRF5 core. RP2040 boards with Pico core STM32F boards with STM32 core boards supported by ESP8266 and ESP32 Arduino boards package any board with MCU with SD bootloader any board with custom Storage and boot-load solution for that storage Nano RP2040 Connect with mbed core with custom storage example and SFU library
支持的网络通信库ArduinoOTA库适用于任何适当的Arduino以太网或WiFi库。对于以太网库,在包含ArduinoOTA库之前添加#define OTETHERNET。如果您不需要网络端口或库不支持它,请在包含ArduinoOTA库之前添加#define NO_OTA_port。如果您只想使用InternalStorage而不想从IDE进行网络上传,请在包含ArduinoOTA库之前添加#define NO_OTA_network。 测试通过的库有: Ethernet library - Ethernet shields and modules with Wiznet 5100, 5200 and 5500 chips WiFi101 - MKR 1000, Arduino WiFi101 shield and Adafruit WINC1500 WiFi shield or module WiFiNINA - MKR 1010, MKR 4000, Nano 33 IoT and any supported MCU with attached ESP32 as SPI network adapter with WiFiNINA firmware WiFiS3 library of Arduino Uno R4 WiFi WiFiEspAT - esp8266 or ESP32 as network adapter with AT firmware EthernetENC - shields and modules with ENC28j60 chip WiFi library of the Pico Core including its Ethernet network interfaces
EthernetENC和WiFiEspAT不支持MDNS的UDP组播,因此Arduino IDE不会显示网络上传端口。 安装ArduinoOTA该库位于Arduino IDE的库管理器中。 platformio用户注意:请不要将此库与platformio一起使用。它没有用platformio进行测试,大多数文档都不适用。 Arduino SAMD板(Zero、M0、MKR、Nano 33 IoT)支持“开箱即用”。除了通过内部闪存作为临时存储进行上传外,还可以通过SD卡和MEM shield的闪存进行上传。对于通过SD卡上传,使用WiFi101_SD_OTA中所示的SDU库或类似库。对于通过MKR MEM屏蔽上传,使用SFU库。 对于Uno R4、RP2040、nRF5和STM32板,必须将extras文件夹中的platform.local.txt复制到板包安装文件夹中。有关nRF5的详细信息,请向下滚动。对于RP2040,必须删除捆绑的ArduinoOTA库。 对于ESP8266和ESP32板卡,必须将extras文件夹中的platform.local.txt复制到板卡包安装文件夹中,并且必须删除捆绑的ArduinoOTA库。有关详细信息,请向下滚动。 ATmega板需要闪存修改后的Optiboot引导加载程序进行闪存写入操作。详情如下。 对于其他MCU,如果MCU具有SD引导加载程序,可以从SD卡引导加载更新箱,则可以通过SD卡上传。请参阅ATmega SD示例。一些MCU可以使用链接到草图的第二阶段SD引导加载程序作为类似于SAMD包SDU库的库。 使用InternalStorage,草图二进制大小限制为可用闪存大小的一半。可用闪存大小可以通过引导加载程序和EEPROM仿真空间来减小。 对于上传,可以配置“OTA编程器”技术。 IDE中的上传工具gas超时10秒。对于某些草图尺寸、MCU或库,它太短了。要设置更长的超时时间,请下载该工具的较新版本,替换1.3.0 arduinoOTA可执行文件,并在platform.local.txt中添加-t选项(秒)。 OTA上传不带端口号一些网络库没有UDP.beginMulticast功能,无法启动MDNS服务来传播Arduino IDE的网络端口。有时也无法检测到良好库的MDNS端口。Arduino IDE尚不允许输入IP地址。 解决方法是为Arduino OTA配置一个假程序员。您可以使用my_boards作为起点。对于Arduino Mega来说,它是所有ArduinoOTA方面的最佳选择,对于其他板来说,它可以让你控制你的自定义设置。在programmers.txt中的my_boards副本中,配置IP地址并重新启动IDE。注意:esp板包不能用作my_boards样式中的引用包。 如果你不想使用my_boards,这个库中extras文件夹中avr和samd的platform.local.txt文件包含程序员使用arduinoOTA工具的配置。将platform.local.txt复制到电路板硬件包中platform.txt旁边。programmers.txt文件不能有“本地”扩展名,因此您必须将您的OTA“编程器”配置添加到现有的programmers.txt文件中。然后重新启动IDE。 programmers.txt中的OTA“编程器”配置示例: arduinoOTA104.name=Arduino OTA (192.168.1.104) arduinoOTA104.program.tool=arduinoOTA arduinoOTA104.program.tool.default=arduinoOTA arduinoOTA104.ip=192.168.1.104
在IDE的“工具”菜单中选择“Arduino OTA(…)”编程器,然后从IDE的“草图”菜单中使用“使用编程器上传”。 重要!如果您使用“假”编程器测试OTA,请关闭IDE中的串行监视器。在串行监视器打开的情况下,IDE将在上传工具完成后重置电路板。然后,董事会不会完成应用更新。 远程下载固件注意:对于Arduino MKR WiFi 1010和Arduino Nano 33 IoT,nina固件中的SNU库和存储支持可用于下载OTA更新。请参阅IDE示例菜单中的SNU库示例。 注意:不要将此用于esp8266和esp32 Arduino。使用ESP8266httpUpdate和esp32 HTTPUpdate库下载esp8266/esp32的OTA更新。或者直接使用Update库esp8266内核中的Update对象。 WiFi101OTA和ArduinoOTA库是为从IDE上传而创建的。但在某些情况下,例如部署的睡眠电池供电设备,最好让设备下载更新。 在示例的高级部分,您可以找到从http服务器下载草图更新的示例。一个示例显示了ArduinoOTA库的InternalStorage对象的更新。通过SD卡进行更新的示例根本不使用此库。 已测试过的开发板SAMD21 SAMD51 Renesas core RP2040 Raspberry Pi Pico Arduino RP2040 Connect
STM32 nRF5 ATmega esp8266 esp32
|