Обновления по воздуху?


8

Я хотел бы иметь возможность обновлять программное обеспечение на Arduino без физического прикосновения к устройству или кабеля. Это можно сделать?

Выберете беспроводной протокол, который делает это проще всего.


Посмотрите на Мотеино .
Гербен

Выглядит очень хорошо.
Йоханнес Эрнст

Я заказал пару Moteinos и, надеюсь, в ближайшие несколько дней попробую апгрейды.
Йоханнес Эрнст

Ответы:


6

Лучшее и простое решение, которое я нашел, - это использование Bluefruit EZ-Link от Adafruit. У них есть модуль, который вы подключаете к контактам Serial / Power / reset ( ссылка здесь ) или экран для uno ( ссылка здесь ). У них также есть отличное описание и руководство по использованию ( ссылка здесь ), что довольно хорошо. Он в основном выглядит как последовательная связь Bluetooth в IDE Arduino, и вы программируете его как обычно. У него есть дополнительное преимущество: он используется не только для программирования, но и для отправки и получения данных.


4

Мы реализовали удаленные обновления на Arduino Pro Mini (ATMega328P), поместив команду «boot» в обычную прошивку. Как это работает?

  • Хост отправляет команду «boot» на удаленный Arduino.
  • Arduino переходит на загрузчик (адрес программы 0x3C00 для Pro Mini)
  • Хост отправляет новую прошивку по ссылке, используя avrdude (протокол AVR109)

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

Некоторые устройства беспроводной связи, такие как XBees, имеют GPIO, который можно переключать удаленно. Подключение этого к выводу сброса Arduino позволит вместо этого сбросить плату в загрузчик.


3

Arduino Yun может быть удаленно reflashed (либо через Wi - Fi или сетевого кабеля): вы должны выбрать свой IP - адрес в разделе «Инструменты> Boards» меню в Arduino IDE , а затем нажмите кнопку загрузки , как обычно.


2

Можно написать загрузчик, работающий в ОЗУ (или даже во Flash, может быть, в специальном загрузочном блоке - зависит от микроконтроллера).
Этот загрузчик должен иметь возможность устанавливать беспроводную связь, понимать протокол и стирать / записывать флэш-память.
Существует два основных подхода к обновлению программного обеспечения:

  1. Загрузчик просматривает при запуске команду «обновление программного обеспечения». Если он получен, он ожидает последовательности программирования. Если он не получен, запускается приложение.
  2. Приложение может получить такую ​​команду и затем дает управление загрузчику.

Какой протокол вы выберете, практически не имеет значения. Просто убедитесь, что есть достаточно ресурсов для хранения его в RAM / Flash. Например, на платформе Arduino имеется более чем достаточно ресурсов для любой такой реализации.


Ах! Вы случайно не узнали какой-нибудь свободно доступный код, который где-то реализовывал подобные вещи?
Йоханнес Эрнст

1

Да, это может быть сделано. Lowpowerlab.com имеет Moteino, который может быть запрограммирован OTA.


1

Платы Spark.io также очень хороши для OTA-программируемых Arduino-подобных устройств. У меня есть один, и я обнаружил, что с ним довольно легко работать.

https://www.spark.io/

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.