远程固件更新 Arduino Nano

物联网 无线更新 阿杜伊诺
2021-06-01 01:24:51

我正在研究Arduino Nano (32Kb 闪存,其中 2Kb 由引导加载程序使用,2Kb SRAM,1Kb EEPROM)

微控制器通过RS485模块从电气设备获取输入,并使用GPRS A6模块将读取的数据发布到远程服务器该产品应该与远程服务器交互,每隔一段时间发布数据。

我已经完成了集成部分,设备工作正常,收集数据并在服务器上发布(大约 10-15 公里远)。我面临的唯一挑战是,如果有 100 个这样的设备并且我需要使用远程服务器(或任何其他合适的机制)更新固件,我应该如何进行。

我读过很多建议使用另一个 Arduino 作为 ISP 的帖子,这可能是我最后的方法(因为它会增加产品的最终成本)。

在 Stack Exchange 社区中,针对低端微控制器的无线固件更新仍不清楚。任何讨论对许多人都有很大帮助。

2个回答

简短的回答:这是可能的。

长答案:这很复杂。这就是为什么有这么多非常糟糕的实现存在的原因。

在任何远程/无线更新过程中,您至少有两个步骤。

  1. 传输固件
  2. 安装固件。

当然,这是绝对的最低限度。如果您在迭代中工作,这也是非常有效的第一步。如果您有多个设备,则必须能够将正确的固件与正确的设备相关联如果你想减少砌体设备的机会,你会想办法在更新之前和之后验证设备的状态,你还需要确保运输使运输尽可能可靠和天然在更新错误的情况下一个后备策略

这是使您获得可靠产品的另外五个步骤。这些事情有一些最佳实践,但它们取决于您的项目环境。也许它很便宜,5% 的更新失败率是可以的,也许它是一个起搏器,甚至一个错误都是不可接受的,因为它会导致致命的情况。您必须找到适合您产品的基础知识的解决方案。

此外,还有许多不同的事情需要考虑。你会有客户吗?你必须通知他们吗?他们在更新时间/安装方面有发言权吗?您的设备在不同的国家/地区吗?是否适用法律限制?规范性标准是否适用?你更新了多少设备?1?十几个?数百?百万?

如果您更新五个设备,这个过程可能会非常繁琐。如果您要更新数百万,那可能会变得非常昂贵。是的,这会影响我在上面列出的第一步,即传输固件。也许您确实创建了一个起搏器,并且考虑到替代方案,每次更新数百条消息的过程成本是可以接受的。

这些只是我在两分钟内写下的问题,所以这个列表当然不是详尽的。我的观点是,如果没有有关场景的信息,我们就无法真正为您提供帮助。

这个问题已经得到回答,但也许这对其他人有价值。

您可以将基于 ESP32 的开发板或模块连接到您的 Arduino,并使用https://vcon.io进行远程 OTA。vcon 固件可以充当 AVR(而不仅仅是 AVR)程序员,并远程刷新您的 Arduino。

此外,作为副作用,您将获得 Arduino 的远程控制功能。https://dash.vcon.io云服务为您提供设备仪表板和用于远程控制和 OTA 的 API。

免责声明:我代表https://vcon.io产品。