Как запрограммировать Esp8266 удаленно через Wi-Fi?
Надеюсь, это не научная фантастика для Arduino. Но я видел, что двойная система с двумя MCU может программировать друг друга через радиосвязь. Это было сделано в экспериментальных проектах космического куба.
Это теоретически возможно? Я думаю о двух микроконтроллерах Arduino, первый из которых будет основным микроконтроллером, а второй будет похож на устройство программирования через последовательный канал. Я хочу программировать микроконтроллер через Wi-Fi без кабельного соединения. Каким-то образом отправить шестнадцатеричный файл через Wi-Fi в eeprom и загрузить во флэш-память второго устройства.
Как вы видите эту проблему? Это большая чепуха?
@Sahasrar, 👍3
Обсуждение1 ответ
Лучший ответ:
Обновление встроенного ПО через 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
- Загрузка Arduino Nano дает ошибку: avrdude: stk500_recv(): programmer is not responding
- Как добавить доходность перед else if?
- как быстро loop() работает в Arduino
- Есть ли способ загрузить предварительно скомпилированный код в Arduino?
- Использовать Arduino Nano V3 для программирования другого Arduino (Pro Mini)?
- Ведомое устройство Arduino с двумя мастерами, использующими одну и ту же шину I2C?
- Использовать NodeMCU 12E (ESP8266) в качестве экрана Wi-Fi для Arduino Nano
- Arduino nano ATmega328p с CH341 не загружается
Конечно, нет причин, почему это нельзя сделать. Каждый ESP8266 с достаточным количеством флэш-памяти может перепрошить себя по беспроводной связи (OTA), загрузив двоичный файл, содержащий новое содержимое флэш-памяти, с веб-сервера. Вы можете легко запустить такой веб-сервер на другом ESP8266. Вам просто нужно закодировать его., @StarCat