Программные обновления FOTA (микропрограммы по беспроводной сети) с Uno R3

Я искал способ обновить скетч на моем Arduino Uno по беспроводной сети (предпочтительно WiFi, но не обязательно). Поддерживает ли Uno такую функцию? Если нет - есть ли другие платы, которые могут это поддерживать?

Кроме того, чтобы расширить проблему, я бы не стал загружать новый скетч через Arduino IDE, а сделал бы это программно (пытаясь интегрировать его с собственной системой управления версиями).

, 👍2

Обсуждение

[**"Particle"**](https://www.particle.io/) (ранее Spark Core) — это ARM-процессор, совместимый с Arduino, со встроенным Wi-Fi, который поддерживает загрузку программ из «облака» и передачу данных в из других мест также по WiFi. Не дешево, но разумно. [**Магазин - много вкусностей**](https://store.particle.io/), @Russell McMahon

[http://lowpowerlab.com/blog/category/moteino/wireless-programming/](moteino) поддерживает обновление прошивки OTA, но не через WiFi., @Gerben


3 ответа


4

Для этого можно использовать два способа: аппаратный и программный.

Чтобы сделать это в программном обеспечении, потребуется написать новый загрузчик, поддерживающий любую выбранную вами беспроводную среду. Загрузчик может оказаться довольно большим и, таким образом, ограничить размер скетча, который вы можете поддерживать. Это также может потребовать передовых методов программирования, чтобы поместить его в память. Задача не для новичка.

Выполнение этого на аппаратном уровне проще, но требует больше ограничений. Вам нужен беспроводной носитель, который может эмулировать последовательное устройство, включая возможность выполнять сброс Arduino. Существуют интерфейсы bluetooth для Arduino, которые могут выполнять такие функции, но я не знаю ничего о Wi-Fi или Ethernet, которые хотя бы отдаленно приближались к этому.

Есть платы Arduino с таким встроенным интерфейсом Bluetooth.

Возможный третий вариант является чем-то средним: у вас есть два Arduino (или какая-либо другая внешняя система на основе MCU, например, ATTiny), «цель» и «программатор». «Программист» — это то, что подключено к беспроводной сети и принимает инструкции и команды по воздуху. Затем он может перевести «цель» в режим загрузчика (сбросить его) и передать данные через свой последовательный порт для программирования. Это означает, что «цель» не подключена напрямую к беспроводной сети, поэтому «программист» должен поддерживать любую необходимую беспроводную функциональность и правильно взаимодействовать с «целью», чтобы заставить ее делать все, что нужно. Однако нет никакого способа сделать FOTA для «программиста», так что вы вернулись к исходной точке, если хотите перепрограммировать это...

,

Чипы Wi-Fi серии ESP смогут обновлять программное обеспечение Arduino. Но я не знаю, что это было сделано еще., @Avamander

Это возможно с использованием стандартных компонентов ESP8266 и Arduino. Мой [вопрос](http://arduinoprosto.ru/q/24350/21191) касается этого и содержит соответствующие ссылки, которые я нашел. Альтернативой тому, что я делаю, является прошивка ESP8266 какой-либо альтернативной прошивкой, например, ESPLink, NodeMCU или uPython. ESPLink, похоже, специально создан для беспроводных обновлений, но у меня нет опыта работы с ними., @Carel


3

Существует множество примеров использования Arduino для перепрограммирования Arduino:

  • Использование Arduino в качестве AVR ISP (внутрисистемного программатора)
  • Автономный комплект программатора AVR ISP
  • Автономный программатор микросхем Atmega для загрузки файлов .hex
  • программатор загрузчика Atmega

Поэтому очевидным выбором здесь будет наличие двух фишек. Один делает основную работу, другой программирует первую, когда это необходимо.

Микросхема "программатор" может быть написана для чтения с диска, приема данных через Ethernet, Wi-Fi или что-то еще. И его можно запрограммировать на перепрограммирование целевого чипа в определенное время суток или по команде.

В этой системе "основной" чип занимается тем, что он делает, а "программатор" просто следит за своим источником нового кода.

Поддерживает ли Uno такую функцию? Если нет - есть ли другие платы, которые могут это поддерживать?

Я не знаю ни одной платы, которая напрямую поддерживает это. Эти платы, как правило, создаются в качестве образовательных инструментов, а не готовых к развертыванию в полевых условиях, как надежные устройства с автоматическим обновлением. Во-первых, одним из критериев проектирования было обеспечение достаточно низкой стоимости вещей, чтобы учащиеся могли покупать их, возможно, по одной на каждого учащегося в классе из 30 человек.

,

Нет смысла использовать для этого другой Arduino, так как у них также нет необходимого подключения. Скорее используйте процессор подключения (WiFi, BLE, что угодно) для перепрограммирования Arduino... или просто используйте процессор подключения вместо ATmega Arduino, поскольку большинство этих устройств имеют гораздо лучшую поддержку самопрограммирования и больше ресурсов для обработки сообщений. в общем., @Chris Stratton


0

Вы можете подключить плату или модуль на основе ESP32 к Arduino и использовать https://vcon.io для удаленного OTA. Прошивка vcon может выступать в роли программатора AVR (и не только AVR) и удаленно перепрошивать Arduino.

Кроме того, в качестве побочного эффекта вы получите возможность удаленного управления вашим Arduino. Облачная служба https://dash.vcon.io предоставляет панель управления устройством и API для удаленного управления и беспроводного подключения.

Отказ от ответственности: я представляю продукт https://vcon.io.

,