Найти в Дзене

ESP32 игрушка или мини компьютер...

Оглавление

Статья будет дополняться по мере необходимости изучения материала...

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

Плата ESP32-Devkitc_V4, которая попалась в руки первой
Плата ESP32-Devkitc_V4, которая попалась в руки первой

Разобранные модули:

  1. ESP32-WRDOM-32D на плате ESP32-Devkitc_V4

Что на борту?

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

  • основной процессор: ESP32-D0WD (1);
  • встроенная память: 32 Mbits (1);
  • контроллеры беспроводных интерфейсов (Wi-Fi и Bluetooth);
  • цифровая периферия (UART, Ethernet, SPI, I2C и т.д.);
  • модуль RTC, предназначенный для работы камня в режимах с низким энергопотреблением, общего управления питанием, а также включающий в себя всю аналоговую периферию («медленные» контроллеры АЦП, ЦАП, драйвер сенсорных датчиков, осциллятор на 32кГц);
  • аппаратные блоки шифрования данных.
  • 34 порта ввода-вывода;
!!!
Контакты D0, D1, D2, D3, CMD и CLK используются для внутренней связи между ESP32 и флэш-памятью SPI. Они расположены с обеих сторон рядом с разъемом USB. Избегайте использования этих контактов, так как это может нарушить доступ к флэш-памяти SPI / SPI RAM.
-3

Дружим Arduino IDE и ESP32

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

  • Заходим в меню Параметры (Файл > Параметры)
  • В строке "Дополнительные ссылки для менеджера плат" нажимаем на кнопочку с окошками.
  • В новом открывшемся окне вставляем данную ссылку https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json В случае, если в этом окошке у вас уже есть другие ссылки, то вставляем эту в новой строке. Нажимаем ОК, ОК.
  • Переходим в менеджер плат (Инструменты > Плата: " ... " > Менеджер плат...)
  • Вверху слева в поисковой строке, где написано "Отфильтровать результаты поиска" пишем ESP32 и, в результатах, выбираем «esp32 by Espressif Systems» и нажимаем "Установка". Если, вместо "Установка" у вас высвечивается кнопочка "Удалить", то вы зря читали этот параграф, так как, просто забыли, что это уже делали :)

Заливаем проект в микроконтроллер

Linux

По тому, как подружить ArduinoIDE c Linux я описывал в статье "Шпаргалка по Линукс" Теперь займёмся уже самой прошивкой микроконтроллера через USB.

Подключаем ESP32 к компьютеру USB проводом (стоит обратить внимание, что не все провода поддерживают передачу data, некоторые провода рассчитаны только для зарядки телефона) При этом, в ArduinoIDE, появляется новый порт: /dev/ttyUSB0 Serial Port (USB). Нажимаем на данный порт и нам предлагают выбрать подключенную плату. Поскольку в куче плат у меня нет точного совпадения с моей, я выбираю ESP32 Dev Module.

-4

При всём при этом, на плате ESP32-Devkitc_V4 никаких заморочек с нажатиями кнопок при загрузке нет. Просто нажимаем на кнопку загрузки и плата готова к работе.

Проект для ознакомления "Выводим основные характеристики в монитор порта"

Очень хреново, что площадка дзена не оптимизирована под публикацию кода, поэтому как есть... Копируем код, вставляем в ArduinoIDE и делаем оптимизацию в меню Изменить > Автоформатирование

Сразу предупрежу для одновременной работы и вай-фай и блютуз на 4Мб флеш памяти на борту, придётся поменять стандартные настройки в разделе инструменты >> partition scheme По умолчанию стоит вариант "Default 4mb with spiffs" с разделом под прошивку APP 1,2 Мб. Скетч совместного использования вай-фай и блютуз будет весить порядка 1,6 Мб и будет выдавать ошибку при загрузке прошивки Compilation error: text section exceeds available space in board Поэтому, пока я остановился на варианте "Minimal SPIFFS". Где (если я правильно понимаю) Имеется два раздела APP под загрузку прошивки с вариантом обновления по воздуху OTA и раздел SPIFFS для постоянного хранения данных. Более подробнее про разделы можно почитать здесь

Весовые характеристики различных библиотек.

"Чистый" код. Только setup() и loop()

Скетч использует 265741 байт (20%) памяти устройства.
Глобальные переменные используют 20224 байт (6%) динамической памяти

Только Serial.begin

Скетч использует 278529 байт (21%) памяти устройства.
Глобальные переменные используют 20232 байт (6%) динамической памяти

Только LittleFS.h

Скетч использует 274845 байт (20%) памяти устройства.
Глобальные переменные используют 20232 байт (6%) динамической памяти

Только Arduino.h

Скетч использует 265741 байт (20%) памяти устройства.
Глобальные переменные используют 20224 байт (6%) динамической памяти

Если сравнивать цифры размера скетча, то, получается, АрдуиноIDE вставляет библиотеку Arduino.h автоматически, при компиляции для ESP32...

Только WiFiConnector.h

Скетч использует 882953 байт (67%) памяти устройства.
Глобальные переменные используют 43784 байт (13%) динамической памяти

Как мы видим, работа с вай-фай посредством этой библиотеки автоматом съедает 47% памяти

Только WiFi.h

Скетч использует 882481 байт (67%) памяти устройства.
Глобальные переменные используют 43704 байт (13%) динамической памяти

Для сравнения

Только BluetoothSerial.h

Скетч использует 281117 байт (21%) памяти устройства.
Глобальные переменные используют 20368 байт (6%) динамической памяти

Только SettingsGyver.h

Скетч использует 910713 байт (69%) памяти устройства.
Глобальные переменные используют 43920 байт (13%) динамической памяти

Полезные ссылки:

Datasheet ESP32 Series

ESP32-WROOM-32D & ESP32-WROOM-32U Datasheet

Краткое описание микроконтроллеров ESP32 и модулей на их основе по-русски

Руководство по программированию ESP-IDF ссылка дана на старую версию инструкции, так как в новой нет описания модулей на обозрении

Руководство Espressif по ArduinoIDEv2 https://github.com/espressif/arduino-esp32

Страничка гитхаб библиотек Гайвера, в том числе и для ESP8266/ESP32