安泰电子世界网 首页 Ardunio Arduino OTA支持

Arduino OTA支持

2024-11-5 16:20 | 发布者: txc | 查看: 74 | 评论: 0

简介:Arduino OTA支持

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卡进行更新的示例根本不使用此库。

已测试过的开发板

最新评论

友情链接:

返回顶部