Перейти к содержимому

Esp32 wroom как прошить

  • автор:

Прошивка контроллера ESP32 через arduino ide.

Ну чтож у меня на сайте есть уже статьи как настроить arduino ide для прошивки esp8266, attiny85, attiny13. Настало время дополнить статью еще одной платой. И эта плата ESP32. ESP32 это более мощный брат платы esp8266.

Разные Варианты плат с данным микроконтроллером купить можно тут: http://ali.pub/3eyqvj

Прежде чем приступить к материалу, я Вас попрошу, если нравится то, что я делаю и хотите следить за моей деятельностью, то рекомендую подписаться на мой телеграмм канал: https://t.me/ypavla
Там я публикую новости о вышедших видео, статьях и разные устройства для умного дома и не только показываю.
Спасибо за внимание, теперь продолжим.

Если мы хотим прошить ESP32 через usb-ttl конвертер то нужно подключать все по такой схеме:

Обратите внимание на перемычку между IO0-GND. Без этой перемычки загрузка скетча не начнется. И также с этой перемычкой ESP32 не загрузится в нормальном режиме и не запустит скетч, после заливки скетча, данную перемычку обязательно нужно убрать. Если на Вашей ESP32 есть разъем microusb тогда вообще проблем нет, просто подключайте ее USB проводом.

Чтож с подключением разобрались, теперь давайте перейдем к программной части.

Сначала запускаем программу Arduino ide переходим в Файл-> Настройки. В открывшемся окне открываем пункт “Дополнительные ссылки для менеджера плат” и добавляем туда ссылку: https://dl.espressif.com/dl/package_esp32_index.json

После того как добавили ссылку в менеджер плат, нужно зайти в Инструменты -> Плата -> Менеджер плат. Далее в открывшемся окне в поисковой строке написать ESP32 и установить данный пакет плат.

На этом все манипуляции закончены. Теперь в Инструменты -> Плата: у Вас появятся всевозможные платы с контроллером ESP32

На этом все. Надеюсь Данная статья была полезна и Вам помогла с прошивкой данного микроконтроллера.

Esp32 wroom как прошить

Описание конструктора прошивки для wifi модуля ESP32(он же ESP32S). Прошивка основана на SDK RTOS(esp-idf) производителя чипа.

Поддержка модулей ESP32S, ESP32S2, ESP32C3, ESP32S3.

Тестовая поддержка ESP32S3. Могут быть ошибки компиляции.

Распиновка одного из распространенных модулей на базе ESP32:

Не проверенные опции:

ADC KEY, TSL2561, DS1621, Email check (не проверено без SSL), RFID замок(не проверен SPI), АЦП PCF8591, MPR121, UART bridge, VirtualWire 433/315, iButton

Просьба сообщить через обратную связь, работают ли у Вас указанные выше опции.

Опции, имеющие проблемы или недоделки:

IR передатчик (доступен только NEC и RAW протоколы)

IR приемник (принимает только NEC)

Прошивка модуля

Для начала соберем прошивку в конструкторе с необходимыми Вам функциями. Рекомендуется включать опции NVS настройки 2 и Экспорт/Импорт настроек.

Автоматическая прошивка модуля с загрузкой всех необходимых файлов можно произвести через WiFi-Iot Flasher (документация и ссылка на софт)

Прошивка через сторонние флешеры:

Прошивка через Flash_download_tools . Настройка DoNotChgBIn должна быть выключена.

Перед первой прошивкой в некоторых случаях, когда модуль не стартует из-за мусора в памяти требуется прошить пустой файл. Или воспользоваться опцией ERASE в настройках Flash tools.

Одним файлом — можно скачать и прошить только один этот файл по адресу 0x0000.

Или прошить 3 файла по указанным адресам:

0x1000 — загрузчик прошивки (bootloader), адрес для ESP32, ESP32S2. Для ESP32C3 и ESP32S3 — 0x0000 адрес;

0x8000 — таблица разметки разделов. Определяет размер секций и наличие SPIFFS диска;

0x10000 — сама прошивка. Только этот файл изменяется при компиляции новой прошивки.

Обратите внимание на размер flash памяти, обычно в модулях установлена память на 4 или 16 мегабайт. В прошивающей программе необходимо указать этот размер в мегабитах ! Установленный размер памяти в мегабитах видно в программе Flash download tools в окне Detected info.

Важно ! Если в модуле 4 мегабайта памяти, то при прошивке через программатор файл прошивки(адрес 0x10000) должен быть не больше 1.6 мегабайта !

Необходимо указать режим работы flash памяти DIO. В режиме QIO модули не работают, bootloader собран в режиме DIO.

Для загрузки прошивки необходимо GPIO 0 подтянуть к GND и нажать reset.

Готовые платы с USB-UART обычно автоматически запускаются в режиме прошивки, но иногда при проблемах требуется так же замыкать GPIO 0. Иногда для этого отдельно выведена кнопка BOOT.

Особенности прошивки ESP32S2 mini

Три варианта прошивки:

1. Прошить через flash_download_tool_3.9.3 — она поддерживает ESP32S2. При подключении через USB нужно выключить no-stub установив в конфиге no-stub = True

2. Через USB используя прошивку dfu_esp32s2.bin . Требуется установка драйвера через программу https://zadig.akeo.ie/ . Прошить через онлайн прошиватор https://dfu.stetelthings.com/.

3. UART0 не выведен . Шьем через UART1(GPIO17-U1TXD, GPIO18-U1RXD ) через внешний USB-UART. Прошивка через esptools требуется ключ —no-stub.

В обеих случая для запуска режима прошивки требуется зажать кнопку «0» сбросив чип по питанию или нажав кнопку RST.

Ошибки запуска модуля

esp_image: Image length 1116272 doesn’t fit in partition length 1048576 — Сообщение о том, что размер файла прошивки больше секции, в данном случае 1 мегабайта( 1048576 байт) . Необходимо пересобрать прошивку меньшего размера. Ошибка возникает, если не читать предыдущий абзац.

boot: Failed to verify partition table — Ошибка таблицы разделов, возникает, если в модуле находится мусор от предыдущей прошивки. Требуется очистка модуля бланком.

Brownout detector was triggered — нехватка питания, срабатывает защита. Помогает установка электролита или замена кабеля(если он тонкий китайский)

Ошибки обновления по OTA

Если на главной ошибка:

Firmware update ERROR ! (code 3) — это значит не собрана прошивка, например из-за ошибки компиляции.

Firmware update ERROR ! (code 2) — превышен размер файла прошивки. Изучайте вариант переразметки памяти.

Firmware update ERROR ! (code 1) — у модуля нет доступа к Интернету или к серверу wifi-iot.com. Плохой интернет.

Не забываем, что в UART можно посмотреть более точную причину и состояние обновления.

Ошибки во время работы модуля

***ERROR*** A stack overflow in task vsens has been detected -ошибка переполнения стека задачи (в данном случае vsens). Произошла ситуация, когда задаче потребовалось больше ресурсов, чем выделено.

Ecли подобные ошибки появляются в UART , то необходимо сообщить в обратную связь для устранения проблемы.

Запуск модуля.

Первоначальная настройка требует запустить режим Safe mode. В эфире должна появится точка доступа WiFi-IoT. При пустых настройках точки доступа Safe mode включается автоматически.

Safe mode можно запустить замыканием GPIO 18 и 19 и перезапуском модуля. Если данные GPIO заняты и установка перемычки невозможна, то можно воспользоваться опцией Safe GPIO.

После подключения к точке доступа необходимо зайти через браузер по адресу 192.168.4.1 и настроить там параметры доступа к своему роутеру.

Прошивка через OTA или через веб интерфейс.

Прошивка поддерживает OTA — это обновление прошивки напрямую из конструктора на вкладке Firmware_update. В Free режиме будет загружена прошивка по умолчанию, в PRO будет загружаться прошивка из Вашего личного кабинета.

С 29.11.17 в модуле доступно обновление прошивки с локального компьютера, прошивку можно загрузить на этой же вкладке обновления по OTA. Опция доступна только в PRO режиме !

Структура разметки памяти:

При запуске модуля в UART выдается информация о разметке модуля.

Пример для 4 мегабайт flash с секциями по 1 мегабайту(старая разметка):

I (113) boot: ## Label Usage Type ST Offset Length
I (135) boot: 0 nvs WiFi data 01 02 00009000 00004000
I (159) boot: 1 otadata OTA data 01 00 0000d000 00002000
I (182) boot: 2 phy_init RF data 01 01 0000f000 00001000
I (205) boot: 3 factory factory app 00 00 00010000 00100000
I (228) boot: 4 ota_0 OTA app 00 10 00110000 00100000
I (251) boot: 5 ota_1 OTA app 00 11 00210000 00100000

Пример для 4 мегабайт flash с секциями по 1.6 мегабайт и SPIFFS 512кб (новая разметка):

I (54) boot: Partition Table: I (58) boot: ## Label Usage Type ST Offset Length I (65) boot: 0 nvs WiFi data 01 02 00009000 00004000 I (73) boot: 1 otadata OTA data 01 00 0000d000 00002000 I (80) boot: 2 phy_init RF data 01 01 0000f000 00001000 I (88) boot: 3 ota_0 OTA app 00 10 00010000 00191000 I (95) boot: 4 ota_1 OTA app 00 11 001b0000 00191000 I (98) boot: 5 storage Unknown data 01 82 00341000 00080000

Разметка модуля имеет несколько секций, в том числе настройки OTA( otadata), настройки wif( nvs) и калибровки wifi( phy_init)

Секция factory содержит прошивку, которую обычно нужно зашить при первом использовании модуля, а уже при использовании OTA эта секция не используется.

ota_0 и ota_1 содержат прошивки, которые чередуются при обновлении OTA. По этой причине, если уже использовалось OTA ,а нужно зашить прошивку по кабелю,то требуется уже прошивать секцию OTA, которая грузится в данный момент. Это видно далее в логах UART в виде строки I (305) boot: Loading app partition at offset 00110000

Столбец Offset содержит начальный адрес секции, а Length её длину, этот параметр ограничивает максимальный размер прошивки, которую можно залить в модуль. Адрес секции ota_1, а так же длина обеих секций ota изменятся, если сделать переразметку flash памяти.

Данная таблица разметки находится по адресу flash памяти 0x8000
Конструктор прошивки выдает по умолчанию файл разметки для flash 4 мегабайт. С 9.05.20 секции по 1600кб. SPIFFS 512кб.

Файл таблицы для 16 мегабайт можно скачать тут. Секции по 2 мегабайта.

Переразметка flash памяти(актуально для прошивки до 9.05.20)

Если модуль с нуля прошит после 9.05.20, то эта команда не требуется .

Переразметка позволяет увеличить максимальный размер секции OTA с 1024 кб до 1348 кб.

Запускается командой http://[ip адрес]/patchpartions , Необходимо чтобы была загружена OTA partion 1 (смотрим на вкладке debug) , обновитесь по ОТА, чтобы была нужная секция. Естественно, что нужно пытаться обновлять прошивку, чтобы она укладывалась в 1 мегабайт.

Откат загруженной прошивки

С помощью команды http://[ip адрес]/configpartion?st=x можно переключится на предыдущую прошивку, где x- это номер партиции, на которую нужно переключится (1 или 2). Текущую партицию можно посмотреть в debug.

Режим PRO

Режим PRO дает возможность использовать модуль в полную силу. Активация модуля происходит на вкладке лицензий личного кабинета.

Работа с UART устройствами

Чип ESP32 имеет 3 UART (0,1,2), ESP32S2 и ESP32C3 — 2 UART(0 и 1). На данный момент UART 0 занят под debug, при его выборе в опциях отладка отключается — рекомендуется переназначать его на другие GPIO.

У каждой UART опции в дополнительных настройках необходимо указать номер UART, который не должен пересекаться с другими UART устройствами. Требуется так же указать GPIO выводы, они никак не привязаны к номеру UART и могут быть назначены любые свободные в указанном диапазоне.

Некоторые опции экперементально поддерживают программный UART выбрав номера UART 3 или 4.

Сравнительная таблица чипов

Чип Аппаратный
ethernet
Bluetooth Количество
UART
Количество
GPIO
Количество
АЦП
Аппаратный
ШИМ
USB ОЗУ*
ESP8266 нет нет 1 + 1 только TX 16 1 нет нет 40 (RTOS)
ESP32 да да 3 40 8 да нет 245
ESP32S2 нет нет 2 47 8 да да 110
ESP32C3 нет да 2 22 5 да нет** 180
ESP32S3 нет да 3 47 8 да да 260
ESP32C2 нет да 2 21 5 да нет** ?

* — примерное свободное ОЗУ на «пустой» прошивке.

** — USB только для отладки и прошивки.

Отладочная информация на UART порте

Через UART0 на скорости 115200 выводится отладочная информация модуля. Здесь видно все ошибки. При проблемах работы прошивки просьба сообщать эту информацию разработчику.

Для вывода данных подходит приложение Putty в режиме uart монитора.

Распиновка выводов чипа ESP32

Тут не отображены GPIO 6-11 , использующиеся под SPI Flash память.

GPIO 20, 24, 28, 29 ,30, 31 не выведены на модулях и нигде не фигурируют в документации(?) 37 и 38 так же часто не доступны на модулях.

ADC2_CHx не доступны в SDK на данный момент из-за конфликта с WI-FI. С учетом отсутствия GPIO 37 и 38 доступны всего 6 ADC.

GPIO 34 -39 доступны только на вход, на выход сконфигурировать вывод невозможно. Назначить выводы для I2C так же не получится.

Системные GPIO, которые мешают штатному запуску модуля, должно быть: GPIO0 — 1, GPIO12 -1(3.3в) 0(1.8в) в зависимости от модели spi флеш памяти.

Для прошивки требуется чтобы GPIO2 и GPIO0 были на GND. Обычно схема у готовых плат это делает автоматически

При некорректном режиме включения системных GPIO в UART отладке будет другое отличное от сообщение SPI_FAST_FLASH_BOOT (это нормальный режим загрузки с SPI FLASH)

Вывод модуля Имя Pin Описание
1 GND Земля
2 EN Разрешить работу чипа
3 SVP SENSOR_VP, GPIO36, ADC1_CH0, RTC_GPIO0
4 SVN SENSOR_VN, GPIO39, ADC1_CH3, RTC_GPIO3
5 IO34 GPIO34, ADC1_CH6, RTC_GPIO4
6 IO35 GPIO35, ADC1_CH7, RTC_GPIO5
7 IO32 GPIO32, 32K_XP (кварц 32,768 кГц), ADC1_CH4, TOUCH9, RTC_GPIO9
8 IO33 GPIO33, 32K_XN (кварц 32,768 кГц), ADC1_CH5, TOUCH8, RTC_GPIO8
9 IO25 GPIO25, DAC_1, ADC2_CH8, RTC_GPIO6
10 IO26 GPIO26, DAC_2, ADC2_CH9, RTC_GPIO7
11 IO27 GPIO27, ADC2_CH7, TOUCH7, RTC_GPIO17
12 IO14 GPIO14, ADC2_CH6, TOUCH6, RTC_GPIO16, MTMS, HSPICLK
13 IO12 GPIO12, ADC2_CH5, TOUCH5, RTC_GPIO15, MTDI, HSPIQ
14 IO13 GPIO13, ADC2_CH4, TOUCH4, RTC_GPIO14, MTCK, HSPID, U0CTS
15 IO15 GPIO15, ADC2_CH3, TOUCH3, RTC_GPIO13, MTDO, HSPICS0, U0RTS
16 GND Земля
17 IO2 GPIO2, ADC2_CH2, TOUCH2, RTC_GPIO12, HSPIWP
18 Io0 GPIO0, ADC2_CH1, TOUCH1, RTC_GPIO11, CLK_OUT1
19 IO4 GPIO4, ADC2_CH0, TOUCH0, RTC_GPIO10, HSPIHD
20 IO16 GPIO16, HS1_DATA4
21 3V3 3.3V
22 IO17 GPIO17, HS1_DATA5
23 IO5 GPIO5, VSPICS0, HS1_DATA6
24 IO18 GPIO18, VSPICLK, HS1_DATA7
25 IO23 GPIO23
26 IO19 GPIO19, VSPIQ, HS2_DATA2
27 IO22 GPIO22, VSPIWP, HS2_CLK
28 U0RX U0RXD, GPIO3, CLK_OUT2, HS2_DATA0
29 U0TX U0TXD, GPIO1, CLK_OUT3, HS2_DATA1
30 IO21 GPIO21, VSPIHD, HS2_CMD
31 GND Земля

Установка, прошивка платы ESP32 в Arduino IDE (Windows, Mac OS X, Linux)

.Установка, прошивка платы ESP32 в Arduino IDE (Windows, Mac OS X, Linux)

Существует надстройка для Arduino IDE, которая позволяет программировать ESP32 с использованием Arduino IDE и его языка программирования. В этой статье мы покажем вам, как установить плату ESP32 в Arduino IDE, не зависимо от используемой вами операционной системы: Windows, Mac OS X или Linux.

Если у вас возникли какие-либо проблемы во время процедуры установки, сообщите об этом на форуме.

esp32 devkit

Необходимые условия: Arduino IDE последней версии.
Перед началом установки убедитесь,что на вашем компьютере установлена последняя версия Arduino IDE. Если у вас стоит не последняя версия, сперва удалите текущую версию и затем установите более новую версию. В противном случае, данная инструкция может не сработать.
Имея последнюю версию Arduino IDE, установленную с официального сайта, продолжайте установку по данной инструкции.

Установка дополнения ESP32 в Arduino IDE

Чтобы установить плату ESP32 в Arduino IDE, выполните следующие действия:
1. В вашем Arduino IDE перейдите в Файл> Настройки

установить плату ESP32 в Arduino IDE

2. Войдите https://dl.espressif.com/dl/package_esp32_index.json. в поле «Дополнительные ссылки для менеджера платы», как показано на рисунке ниже. Затем нажмите кнопку OK.

Дополнительные ссылки для менеджера платы

Внимание: Если вы у вас установлена в Arduino IDE ESP8266 то добавьте 2 строки или через запятую:

https://dl.espressif.com/dl/package_esp32_index.json http://arduino.esp8266.com/stable/package_esp8266com_index.json

3. Откройте Менеджер плат. Перейдите в меню Инструменты > Платы > Менеджер плат

Менеджер плат

4. Ищем ESP32. И нажимаем кнопку Установка.

Ищем ESP32

5. Вот и все. Через пару минут у вас все установиться.

Первая загрузка скетча в ESP32.

Подключите плату ESP32 к компьютеру. Открываем Arduino IDE и выполним следующие действия:

1. Выберите доску в меню Инструменты > Плата (в моем случае это DOIT ESP32 DEVKIT V1 )

Инструменты WiFiScan

Плата (в моем случае это DOIT ESP32 DEVKIT V1)» width=»382″ height=»240″ style=»display: block; margin: auto; width: 382px; height: 240px;» rel=»display: block; margin: auto; width: 382px; height: 240px;»>

2. Выберите порт (если вы не видите COM-порт в Arduino IDE, вам необходимо установить драйверы CP210x USB to UART Bridge VCP). В моем случае ком порт отображается по другому. Это связанно с тем что я использую OS Linux.

Выберите порт

3. Открыть в следующем примере в Файл > Примеры > WiFi > WiFiScan

Примеры WiFiScan

4. В вашей среде Arduino IDE откроется новый скетч.

Arduino IDE откроется новый скетч

5. Нажмите кнопку Загрузить в Arduino IDE. Подождите несколько секунд, пока код компилируется и загружается на вашу плату.

 Загрузить в Arduino IDE

Внимание! Если у вас бежит строка с повторяющимися точками и линиями. Нажмите кнопку Boot на плате и удерживайте ее пока не побегут проценты загрузки. После чего кнопку можно отпустить.

Нажмите кнопку Boot

6. Откройте последовательный монитор Arduino IDE со скоростью передачи данных 115200.

 Откройте последовательный монитор Arduino IDE

7. Нажмите кнопку EN на борту ESP32 , и вы увидите список сетей, доступных для вашей ESP32.

Распиновка ESP32 DEVKIT V1

Подведение итогов.
Это краткое руководство, которое иллюстрирует, как подготовить ваш Arduino IDE для ESP32 на компьютере с ОС Windows, Mac OS X или Linux. Если во время установки возникнут какие-либо проблемы, пишите на форум.

Теперь вы можете начать создавать свои собственные проекты IoT с ESP32.

Подписывайтесь на наш канал на Youtube и вступайте в группы в Вконтакте и Facebook.

Всем Пока-Пока. И до встречи в следующей статье.

Понравилась статья? Поделитесь ею с друзьями:

Прошивка esp32 — по воздуху, через wi-fi

Каждый, кто хоть раз занимался хобби-проектами на основе микроконтроллеров, знает, что такая идея проходит множество итераций, прежде чем займёт своё законное место на пыльной полке будет служить верой и правдой.

Обновление программного обеспечения при этом довольно часто становится одной из основных задач. В этой статье мы попробуем испытать способ, который позволит любому разработчику обновлять своё программное обеспечение легко и просто — прямо через сеть wi-fi! При этом задача существенно облегчится, если мы возьмём для экспериментов замечательный микроконтроллер esp32, так как он уже имеет в своём составе wifi-адаптер.

Обновление по воздуху (англ. over-the-air, OTA) предполагает разные методы распространения новых версий программ, настроек и обновлений ключей шифрования для телефонов, ресиверов и устройств зашифрованной передачи речи (двухканальные рации с шифрованием).

Что же касается esp32, то обновление по воздуху является весьма интересной «фишкой», так как позволяет обновлять программу на устройствах, доступ к которым осложнён или невозможен. Например, если устройство расположено где-то высоко (на дереве или фонарном столбе).

Интересным моментом такого рода обновлений является возможность постоянно апдейтить приложения на целой сети устройств, используя для этого центральный сервер с программным обеспечением.

Давайте попробуем реализовать нечто подобное.

Заранее хочу оговориться, что все необходимые файлы находятся внизу под статьёй, и вы можете скачать их по предложенным ссылкам. Все материалы полностью рабочие и протестированы лично.

Сначала нам необходимо зайти на официальный сайт и скачать python версии 2.7.15. Возможно, будет работать и с другой версией, но я пробовал только с этой. Я скачивал 64-битную версию под windows 7 (вот такой я ретроград! 🙂 ).

Далее вам необходимо установить её на компьютер для всех пользователей:

На следующем шаге необходимо выбрать опцию, как я показал на рисунке ниже:

Проблема в том, что изначально плата esp32 совсем не обладает функционалом для обновления программ по воздуху, поэтому нам необходимо выбрать из примеров опцию ArduinoOTA, как показано ниже:

Далее в предложенный ниже код мы должны вставить название своей точки доступа, к которой мы будем подключаться, а также её пароль. После чего прошьём этим скетчем свою плату:

#include #include #include #include const char* ssid = "testNet"; const char* password = "parole"; void setup() < Serial.begin(115200); Serial.println("Booting"); WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); while (WiFi.waitForConnectResult() != WL_CONNECTED) < Serial.println("Connection Failed! Rebooting. "); delay(5000); ESP.restart(); >ArduinoOTA .onStart([]() < String type; if (ArduinoOTA.getCommand() == U_FLASH) type = "sketch"; else // U_SPIFFS type = "filesystem"; // NOTE: if updating SPIFFS this would be the place to unmount SPIFFS using SPIFFS.end() Serial.println("Start updating " + type); >) .onEnd([]() < Serial.println("\nEnd"); >) .onProgress([](unsigned int progress, unsigned int total) < Serial.printf("Progress: %u%%\r", (progress / (total / 100))); >) .onError([](ota_error_t error) < Serial.printf("Error[%u]: ", error); if (error == OTA_AUTH_ERROR) Serial.println("Auth Failed"); else if (error == OTA_BEGIN_ERROR) Serial.println("Begin Failed"); else if (error == OTA_CONNECT_ERROR) Serial.println("Connect Failed"); else if (error == OTA_RECEIVE_ERROR) Serial.println("Receive Failed"); else if (error == OTA_END_ERROR) Serial.println("End Failed"); >); ArduinoOTA.begin(); Serial.println("Ready"); Serial.print("IP address: "); Serial.println(WiFi.localIP()); > void loop()

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

Если кто не знает, делается это так, как показано на картинке ниже, то есть можно выбрать среди доступных COM-портов тот самый, к которому у вас подключена esp32. Скорее всего, у вас там будет отображаться несколько портов, один из которых — ваш нужный. Ничего страшного, если вы немного «потыкаетесь» и найдёте методом тыка нужный порт. Однако, если вы хотите поступить более правильным образом, следует нажать на значок компьютера на рабочем столе (повторяю, у меня – Win’7) правой кнопкой мыши и пройти по пути, как показано ниже. Таким образом вы сможете выяснить порт, к которому подключена у вас esp32, это нужно, чтобы вы знали, какой порт необходимо мониторить.

Если в мониторе порта ничего не показывается — то вам необходимо нажать на кнопку «EN» на плате esp32, что приведёт к перезагрузке платы, и в монитор порта выведется вся необходимая информация.

Если всё прошло успешно, то в конце этой информации будет показан IP-адрес, который был выдан вашей плате точкой доступа wi-fi, к которой плата подключилась:

Теперь мы внесём изменения в этот скетч, чтобы при его повторной загрузке в плату, что-то происходило. Например, сделаем так, чтобы встроенный в плату светодиод мерцал с некоторым интервалом.

Для этого в приведённый выше код были внесены некоторые изменения, которые показаны на рисунке ниже:

Сам изменённый код будет выглядеть следующим образом:

#include #include #include #include const char* ssid = "testNet"; const char* password = "parole"; //переменные для мигания светодиодом через millis const int led = 2; unsigned long previousMillis = 0; const long interval = 1000; int ledState = LOW; void setup() < pinMode(led, OUTPUT); Serial.begin(115200); Serial.println("Booting"); WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); while (WiFi.waitForConnectResult() != WL_CONNECTED) < Serial.println("Connection Failed! Rebooting. "); delay(5000); ESP.restart(); >ArduinoOTA .onStart([]() < String type; if (ArduinoOTA.getCommand() == U_FLASH) type = "sketch"; else // U_SPIFFS type = "filesystem"; // NOTE: if updating SPIFFS this would be the place to unmount SPIFFS using SPIFFS.end() Serial.println("Start updating " + type); >) .onEnd([]() < Serial.println("\nEnd"); >) .onProgress([](unsigned int progress, unsigned int total) < Serial.printf("Progress: %u%%\r", (progress / (total / 100))); >) .onError([](ota_error_t error) < Serial.printf("Error[%u]: ", error); if (error == OTA_AUTH_ERROR) Serial.println("Auth Failed"); else if (error == OTA_BEGIN_ERROR) Serial.println("Begin Failed"); else if (error == OTA_CONNECT_ERROR) Serial.println("Connect Failed"); else if (error == OTA_RECEIVE_ERROR) Serial.println("Receive Failed"); else if (error == OTA_END_ERROR) Serial.println("End Failed"); >); ArduinoOTA.begin(); Serial.println("Ready"); Serial.print("IP address: "); Serial.println(WiFi.localIP()); > void loop() < ArduinoOTA.handle(); unsigned long currentMillis = millis(); if (currentMillis - previousMillis >= interval) < previousMillis = currentMillis; ledState = not(ledState); digitalWrite(led, ledState); >> 

Загрузим этот код в нашу плату. И тут возникает один очень интересный момент: у вас в списке COM-портов появляется сетевой порт, имеющий IP адрес — это и есть наша плата esp32!

Выберем её и нажмём на загрузку скетча. В результате в нижнем окошке появится следующий статус происходящего: будет увеличиваться в длину индикатор загрузки и расти процент:

Кстати сказать, во время этой загрузки у меня плата была подключена к power-банку, т.е. была отключена от компьютера, и загрузка производилась непосредственно через сеть wi-fi.

Ну вот и всё в целом.

В качестве небольшого примечания следует сказать, что код, поддерживающий беспроводную загрузку (первый кусок кода в этой статье), должен быть всегда включён в ваш скетч (который выполняет какую-либо полезную деятельность для вас). Если этого не сделать, то вы потеряете возможность загружать скетчи «по воздуху».

P.S. Если кого-то интересует прошивка по воздуху предыдущей версии платы (esp8266), то вот тут есть весьма подробный мануал.

Загрузки:
  • скетчи в архиве
  • python 2.7.15

НЛО прилетело и оставило здесь промокод для читателей нашего блога:

— 15% на все тарифы VDS (кроме тарифа Прогрев) — HABRFIRSTVDS .

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

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