Рубрики
Проекты на 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) (Реклама: ООО «АЛИБАБА.КОМ (РУ)» ИНН: 7703380158).
  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 не будет опубликован. Обязательные поля помечены *