Как запрограммировать Esp8266 удаленно через Wi-Fi?

programming arduino-nano nodemcu uploading programming-sequence

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

Это теоретически возможно? Я думаю о двух микроконтроллерах Arduino, первый из которых будет основным микроконтроллером, а второй будет похож на устройство программирования через последовательный канал. Я хочу программировать микроконтроллер через Wi-Fi без кабельного соединения. Каким-то образом отправить шестнадцатеричный файл через Wi-Fi в eeprom и загрузить во флэш-память второго устройства.

Как вы видите эту проблему? Это большая чепуха?

, 👍3

Обсуждение

Конечно, нет причин, почему это нельзя сделать. Каждый ESP8266 с достаточным количеством флэш-памяти может перепрошить себя по беспроводной связи (OTA), загрузив двоичный файл, содержащий новое содержимое флэш-памяти, с веб-сервера. Вы можете легко запустить такой веб-сервер на другом ESP8266. Вам просто нужно закодировать его., @StarCat


1 ответ


Лучший ответ:

2

Обновление встроенного ПО через Wi-Fi называется обновлением OTA. OTA означает "по воздуху".

ESP8266 может обновляться автоматически. Библиотека Arduino для этого называется ArduinoOTA и входит в пакет поддержки плат Arduino ESP8266.

См. пример для библиотеки ArduinoOTA в меню примеров IDE.

Другие MCU также имеют функцию самообновления. У ESP32 она конечно есть, потом для плат SAMD Arduino сделал библиотеку WiFi101OTA. Для ATmega я сделал библиотеку ArduinoOTA на основе библиотеки WiFi101OTA, поэтому она также поддерживает SAMD. И это не обязательно должен быть Wi-Fi. Кабель тоже работает.

Обновление OTA сохраняет загруженную прошивку в свободной части флэш-памяти и после успешной загрузки перемещает прошивку в целевое расположение и сбрасывает MCU.

Для любого Arduino с SD-загрузчиком возможно OTA-обновление, потому что библиотека должна только сохранить загруженную прошивку на SD-карту и сбросить MCU.

Для небольших ATmega существуют загрузчики ftp. Здесь загрузчик ожидает сетевой загрузки.

Решения MCU с обновлением в течение секунды предназначены для MCU с меньшим количеством флэш-памяти, в основном для ATmega328p. Прошивка ESPLink и прошивка WiFiLink для ESP8266 могут прошивать подключенный ATmega328p через RX/TX. ESP8266AVRISP может прошивать ATmega, подключенную через SPI.

ArduinoIDE поддерживает OTA-загрузку. Он создает сетевой порт на основе записи MDNS, распространяемой библиотекой ArduinoOTA или прошивкой с поддержкой OTA.

Другой способ обновления — загрузить новую прошивку с сервера или через веб-страницу. ESP8266 имеет для этого библиотеки ESP8266httpUpdate и ESP8266HTTPUpdateServer. Для плат SAMD, ATmega и других в моей библиотеке ArduinoOTA есть примеры того, как сохранить и применить обновление, полученное в виде загрузки или загрузки.

,

Спасибо, приеду домой попробую, @Sahasrar

Я понял, это довольно круто... Спасибо :), @Sahasrar