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


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

Внешний вид проекта программирование ESP32 "по воздуху" (Over-the-air) с помощью Arduino IDE

Ранее на нашем сайте мы рассматривали беспроводное программирование платы 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.

Открытие примера в Arduino IDE для беспроводного программирования модуля ESP32

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

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

Определение IP адреса модуля ESP32

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

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

Окно ввода имени пользователя и пароля

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

Вкладка в браузере, с которой можно загружать новый код программы в модуль

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

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

Созданный бинарный файл для беспроводной загрузки программы в модуль ESP32

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

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

(Проголосуй первым!)
Загрузка...
3 532 просмотров

Комментарии

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

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

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

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

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

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

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

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

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

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

  3. Добрый день А как правильно соединить скетч из этой статьи и скейч для обновления по воздуху? И если я правильно понимаю в принципе это всё сделать можно с телефона , через 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/

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

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

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