Рубрики
Проекты на ESP32

Программирование ESP32 «по воздуху» (Over-the-air) с помощью Arduino IDE

Технология программирования «по воздуху» (Over the Air, OTA) доступна для микроконтроллеров ESP32 и ESP8266, имеющих поддержку WiFi. Данная технология позволяет обновлять их прошивку или загружать в них новую программу беспроводным способом, без всякого физического контакта с ними. Эта технология особенно полезна в случаях, когда модуль жестко закреплен в каком-нибудь устройстве и подключение кабеля к нему затруднено или физически невозможно. Технология беспроводного программирования OTA широко востребована в различных проектах интернета вещей (IoT) и применяется для удаленного обновления программного обеспечения подключенных к сети интернет устройств.

Ранее на нашем сайте мы рассматривали беспроводное программирование платы ESP8266 NodeMCU, в этой же статье мы рассмотрим программирование модуля ESP32 «по воздуху» (Over-the-air) с помощью Arduino IDE.

Необходимые компоненты

  1. Модуль ESP32 (купить на AliExpress).
  2. Arduino IDE.

Как работает программирование «по воздуху» (OTA)

Для того чтобы иметь возможность программирования модуля ESP32 «по воздуху» (Over-the-air) сначала в него необходимо через последовательный порт загрузить специальный скетч, который содержит HTML код программы OTA Web Updater. Когда этот скетч будет загружен в модуль ESP32, он создаст веб-сервер, с помощью которого можно будет выбрать и загрузить новый скетч через веб-браузер.

Для загрузки этого специального скетча, содержащего OTA Web Updater, подключите модуль ESP32 к компьютеру/ноутбуку с помощью кабеля, откройте Arduino IDE, выберите в ней тип платы (Board Type) ESP32 Dev Kit и выберите COM порт, к которому подключен модуль.

Затем откройте пример File > Examples >ArduinoOTA> OTAWebUpdater.

Измените в нем имя и пароль для сети Wi-Fi на их значения для своей сети Wi-Fi.

Загрузите код этого примера в модуль ESP32. После успешной загрузки кода в модуль откройте окно монитора последовательной связи (serial monitor). Измените в нем бодовую скорость (Baud Rate) и нажмите кнопку сброса (Reset button) на модуле ESP32 – после этого в окне монитора последовательной связи вы должны увидеть IP адрес модуля ESP32.

Затем откройте браузер в вставьте в его адресную строку IP адрес модуля ESP32. После этого в браузере у вас должно открыться окно веб-сервера технологии OTA (программирования «по воздуху») как показано на рисунке ниже.

По умолчания имя пользователя (Username) и пароль (Password) в этом окне равны admin.

После ввода имени пользователя и пароля у вас откроется новая вкладка в браузере, с ее помощью вы сможете загружать новый код программы в модуль.

В данной программе мы загрузим в модуль простую программу мигания светодиодом. Учтите, что каждая программа, которую вы будет загружать в модуль ESP32 «по воздуху», должна содержать в себе специальный код технологии OTA. Поэтому добавьте код программы мигания светодиодом в код примера OTA, который вы открыли ранее. Полный код необходимой программы вы можете посмотреть в конце данной статьи.

Сохраните код вашей программы под новым именем и в Arduino IDE выберите пункт Sketch > Export compiled Binary. После этого создастся новый бинарный файл (с расширением .bin) в каталоге, в котором находится ваш скетч.

После этого вернитесь на веб-страницу OTA, на ней нажмите на кнопку ‘Choose File’ и выберите свой файл с расширением .bin. После этого нажмите на кнопку ‘Update’ чтобы загрузить ваш скетч в модуль ESP32. На этом загрузка программы в модуль ESP32 «по воздуху» будет закончена.

Исходный код программы (скетча)

14 ответов к “Программирование ESP32 «по воздуху» (Over-the-air) с помощью Arduino IDE”

Здрасте.
Юзаю ElegantOTA.

Загрузил пример, который выводит сообщение: «Привет, ElegantOTA».
(что бы прошить в МК код, который умеет по воздуху тянуть файлы )

Добавляю к IP — «/update».
Попадаю на страницу обновления firmware и FILESYSTEM.
Гружу ради примера чужие firmware и FILESYSTEM.
Загружаются — без проблем.

(Тот кто создавал эти файлы то-же юзал ElegantOTA)
FILESYSTEM — содержит WEB интерфейс, и возможность изменения данных.
firmware — содержит прошивку работы с подключенной периферией…

Да вот незадача:
После перезагрузки МК — я всё так же вижу текст «Привет, ElegantOTA»
И ни как не вижу тот самый WEB-интерфейс…

Ни как не могу понять в чем дело

Приветствую. Нужна помощь. В прошивку зашито обновление с адресом на виртуальном хосте.
Работало нормально пока не сдох хостер, переехали. На новом хосте Обновление заработало только после отключения HSTS. Проработало 2 дня и «no firmware url»… К json и бинарнику доступ 755, в браузере джейсон открывается. Хостеры говорят у нас нет проблем, ответы сервера 200 = все хорошо.
Вопрос — ЧЁ, мать его, НЕ ТАК?

Добрый вечер. К сожалению, не могу вам дать какой нибудь дельный совет по вашей проблеме

может пригодится кому. Итак, работали с программистом у меня дома — обновление работало. Он уехал к себе, забрал устройство с собой — вот тут-то и кончилась работа обновления… Сегодня (ангел в ухо напел) дай, думаю попробую. Взял второй экземпляр и попробовал обновить — летает! Короче толи провайдер инета у него такой, толи фаервол какой-то хитрый… Тестируйте инет…

Понятно. Спасибо вам за конструктивный комментарий для сайта

Добрый день А как правильно соединить скетч из этой статьи и скейч для обновления по воздуху? И если я правильно понимаю в принципе это всё сделать можно с телефона , через arduino IDE и раз данный wi-fi???

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

Ой, я прочитал и понял что не дописал вопрос.
Хотел использовать для блокировки лодочного мотора, (планирую скейтч из статьи обнаружения блютуз устройств, смартчасов) так скажем защита от пьяных друзей и ТД. И суть вопроса была чтоб мог тот скейч по воздуху обновлять с телефона на случай замены или добавления блютуз адресов.

Ну если вы установите на смартфон arduino ide или его аналог (пример можно посмотреть в этой статье — arduinoplus.ru/kak-zaprogrammirovat-arduino-cherez-android-telefon/?ysclid=lcow73d1r9476709003) и будете со смартфона WiFi на модуль ESP32 раздавать, то наверно можно

Это можно сделать программно командой ESP.restart();. Пример можно посмотреть здесь — techtutorialsx.com/2017/12/03/esp32-arduino-software-reset/

Абалденно! Только от вас узнал об этой возможности. Огромная благодарность!!!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *