Конструктор прошивки ESP32 Beta (updated: 05 Dec 2017, 13:56:52)

Описание Beta версии конструктора прошивки для wifi модуля ESP32

На данный момент идет импорт опций из конструктора прошивки ESP8266.

Некоторые уже импортированные опции могут  не работать. Доступные опции можно увидеть на вкладке конструктора

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

ADC KEY

TSL2561

GPIO PCF8574

INA219

DS1621

TFT

WakeOnLan

GPIO MCP23017

Email check (не проверено без SSL)

UART MP3

Livolo передатчик

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

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

1wire ds18b20 (возможны ошибки чтения)

DHT22/11 (возможны ошибки чтения)

MQTT может работать не стабильно, нет вывода состояния подключения(только вывод в uart)

Встроенные ADC пока не доступны в термостате

VirtualWire (не работает).

IR передатчик (пока только NEC и RAW - не проверено)

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

RCswitch приёмник (не  стабильно работает)

Counter60 (не работает)

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

Прошивка осуществляется через Flash_download_tools

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

Необходимо собрать прошивку в конструкторе ESP32 и скачать все 3 файла на свой компьютер:

0x1000 - загрузчик прошивки (bootloader)

0x8000 - таблица разметки разделов. Смотрите ниже про разметку памяти.

0x10000 - сама прошивка

Далее указать согласно адресам путь к файлам. Если в uart пишет ошибку запуска прошивки с секции 0x110000, то необходимо файл 0x10000 загрузить именно в адрес  0x110000.

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

Важно ! Если в модуле 4 мегабайта памяти, то  при прошивке через программатор файл прошивки(адрес 0x10000) должен быть не больше 1 мегабайта !  Больше 1 мегабайта можно загрузить прошивку только после патча секций через OTA ! При 16 мегабайт flash при прошивке таблицы разделов для данных модулей такого ограничения нет !

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

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

Готовые платы с USB-UART имеют на плате кнопку boot для включения режима прошивки(нужно зажать кнопку и запустить прошивку), а так же их не требуется перезапускать через reset. 

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

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 (ранее - вида ESPxxxx)

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

Разметка модуля имеет несколько секций, в том числе настройки 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
Файл таблицы для 4 мегабайт flash можно скачать тут. Секции по 1 мегабайту. Конструктор выдает данный файл по умолчанию.
Файл таблицы для 16 мегабайт можно скачать тут. Секции по 2 мегабайта.

Переразметка flash памяти

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

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

Режим PRO

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

Активным тестерам* ключ - бесплатно.

*Активный тестер - это пользователь, сообщающий о багах и недоделках прошивки.

Отличие ESP32 от ESP8266.

1. Имеет на борту больше доступного ОЗУ примерно в 5 раз.

2. Доступно подключение по Ethernet.

3. Имеется на борту Bluetooth.

4. Больше доступных GPIO. 40 штук. (реально доступно где-то 26)

5. Доступно 8 АЦП .

6. Аппаратный ШИМ до 8 каналов !

7. Подключение до 10 сенсорных кнопок без дополнительного железа.

8. Процессор имеет 2 ядра частотой до 240мгц.

9. ESP32 имеет сверхнизкий режим потребления энергии , при котором может выполнятся какой либо код (пишется на ASM).

10. Разнообразные варианты пробуждения из спящего режима, в том числе из сверхнизкого потребления энергии или по состоянию GPIO.

11.Три полноценных UART с возможностью выбора GPIO.

На данный момент за счет более больших ресурсов ESP32 поддерживает обратную связь на опции Telegram в отличии от ESP8266

Отладочная информация на 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 так же не получится.

Вывод модуля Имя 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 Земля