Начало работы с платой ESP32
Впервые работаете с ESP32? Начните отсюда! ESP32 — это серия недорогих и энергоэффективных микроконтроллеров типа System on a Chip (SoC), разработанных компанией Espressif, которые включают беспроводные возможности Wi-Fi и Bluetooth, а также двухъядерный процессор. Если вы знакомы с ESP8266, то ESP32 — это его преемник с множеством новых функций.
Обновлено 5 августа 2024
Впервые работаете с ESP32? Вы попали куда нужно. Это руководство содержит всю необходимую информацию для начала работы с ESP32. Узнайте, что такое ESP32, как выбрать плату ESP32, как запустить свою первую программу и многое другое. Вот что мы рассмотрим в этом руководстве:
Знакомство с ESP32
Для начала, что такое ESP32? ESP32 — это серия микроконтроллерных чипов, разработанных компанией Espressif.
Почему они так популярны? В основном благодаря следующим особенностям:
Низкая стоимость: ESP32 можно приобрести от $6, что делает его легко доступным для широкой аудитории;
Низкое энергопотребление: ESP32 потребляет очень мало энергии по сравнению с другими микроконтроллерами, а также поддерживает режимы пониженного энергопотребления, такие как глубокий сон, для экономии энергии;
Возможности Wi-Fi (подробнее): ESP32 может легко подключаться к сети Wi-Fi для доступа в интернет (режим станции) или создавать собственную беспроводную сеть Wi-Fi (режим точки доступа), чтобы другие устройства могли подключаться к нему — это необходимо для проектов IoT и домашней автоматизации — вы можете иметь несколько устройств, взаимодействующих друг с другом через Wi-Fi;
Bluetooth: ESP32 поддерживает Bluetooth Classic и Bluetooth Low Energy (BLE) — что полезно для широкого спектра IoT-приложений;
Двухъядерный процессор: большинство ESP32 являются двухъядерными — они имеют 2 микропроцессора Xtensa 32-bit LX6: ядро 0 и ядро 1.
Богатый набор периферийных интерфейсов ввода-вывода — ESP32 поддерживает широкий спектр периферийных устройств ввода (чтение данных из внешнего мира) и вывода (отправка команд/сигналов во внешний мир), таких как ёмкостное касание, АЦП, ЦАП, UART, SPI, I2C, ШИМ и многое другое.
Совместимость с «языком программирования» Arduino: те, кто уже знаком с программированием платы Arduino, будут рады узнать, что ESP32 можно программировать в стиле Arduino.
Совместимость с MicroPython: ESP32 можно программировать с прошивкой MicroPython — это повторная реализация Python 3, предназначенная для микроконтроллеров и встраиваемых систем.
Спецификации ESP32
Если вы хотите немного углубиться в технические подробности, ознакомьтесь со следующими детальными спецификациями ESP32 (источник: http://esp32.net/) — для получения более подробной информации ознакомьтесь с datasheet:
Модуль ESP32: ESP-WROOM-32
Беспроводная связь Wi-Fi: скорость передачи данных 150.0 Мбит/с с HT40
Bluetooth: BLE (Bluetooth Low Energy) и Bluetooth Classic
Процессор: Tensilica Xtensa Dual-Core 32-bit LX6 микропроцессор, работающий на частоте 160 или 240 МГц
Память:
ROM: 448 КБ (для загрузки и основных функций)
SRAM: 520 КБ (для данных и инструкций)
RTC fast SRAM: 8 КБ (для хранения данных и основного ЦПУ при загрузке RTC из режима глубокого сна)
RTC slow SRAM: 8 КБ (для сопроцессора с доступом в режиме глубокого сна)
eFuse: 1 Кбит (из которых 256 бит используются системой (MAC-адрес и конфигурация чипа), а оставшиеся 768 бит зарезервированы для пользовательских приложений, включая шифрование Flash и идентификатор чипа)
Встроенная flash: flash-память, подключённая внутри через IO16, IO17, SD_CMD, SD_CLK, SD_DATA_0 и SD_DATA_1 на ESP32-D2WD и ESP32-PICO-D4.
0 МиБ (чипы ESP32-D0WDQ6, ESP32-D0WD и ESP32-S0WD)
2 МиБ (чип ESP32-D2WD)
4 МиБ (SiP-модуль ESP32-PICO-D4)
Низкое энергопотребление: обеспечивает возможность использования, например, преобразований АЦП в режиме глубокого сна.
Периферийные интерфейсы ввода-вывода (подробнее):
Периферийный интерфейс с DMA, включающий ёмкостное касание
ЦАП (цифро-аналоговый преобразователь)
UART (универсальный асинхронный приёмопередатчик)
I²S (Integrated Interchip Sound)
RMII (Reduced Media-Independent Interface)
Безопасность: аппаратные ускорители для AES и SSL/TLS
Основные различия между ESP32 и ESP8266
Ранее мы упоминали, что ESP32 является преемником ESP8266. Каковы основные различия между платами ESP32 и ESP8266?
ESP32 добавляет дополнительное ядро ЦПУ, более быстрый Wi-Fi, больше GPIO, поддержку Bluetooth 4.2 и Bluetooth Low Energy. Кроме того, ESP32 оснащён сенсорными пинами, которые можно использовать для пробуждения ESP32 из глубокого сна, а также встроенным датчиком Холла.
Обе платы недорогие, но ESP32 стоит немного дороже. ESP32 стоит примерно от $6 до $12, а ESP8266 — от $4 до $6 (но это зависит от того, где вы их покупаете и какую модель выбираете).
Итого:
ESP32 быстрее, чем ESP8266;
ESP32 имеет больше GPIO с множеством функций;
ESP32 поддерживает аналоговые измерения на 18 каналах (пинах с поддержкой аналогового ввода) по сравнению с одним 10-битным АЦП на ESP8266;
ESP32 поддерживает Bluetooth, а ESP8266 — нет;
ESP32 двухъядерный (большинство моделей), а ESP8266 — одноядерный;
ESP32 немного дороже ESP8266.
Для более детального анализа различий между этими платами рекомендуем прочитать следующую статью: ESP32 vs ESP8266 – плюсы и минусы.
Платы разработки ESP32
ESP32 относится к голому чипу ESP32. Однако термин «ESP32» также используется для обозначения плат разработки ESP32. Использование голых чипов ESP32 непросто и непрактично, особенно при обучении, тестировании и прототипировании. В большинстве случаев вам понадобится плата разработки ESP32.
Эти платы разработки поставляются со всей необходимой обвязкой для питания и программирования чипа, подключения к компьютеру, пинами для подключения периферии, встроенными светодиодами питания и управления, антенной для Wi-Fi сигнала и другими полезными функциями. Некоторые даже поставляются с дополнительным оборудованием, таким как конкретные датчики или модули, дисплеи или камера в случае ESP32-CAM.
Как выбрать плату разработки ESP32?
Когда вы начнёте искать платы ESP32 в интернете, вы обнаружите, что существует широкий выбор плат от разных производителей. Хотя все они работают аналогично, некоторые платы могут быть более подходящими для определённых проектов. При выборе платы разработки ESP32 необходимо учитывать несколько аспектов:
Интерфейс USB-to-UART и схема стабилизатора напряжения. Большинство полнофункциональных плат разработки имеют эти две функции. Это важно для удобного подключения ESP32 к компьютеру для загрузки кода и подачи питания.
Кнопки BOOT и RESET/EN для перевода платы в режим прошивки или перезагрузки (перезапуска) платы. Некоторые платы не имеют кнопки BOOT. Обычно такие платы переходят в режим прошивки автоматически.
Конфигурация и количество пинов. Для правильного использования ESP32 в ваших проектах вам необходим доступ к распиновке платы (как карта, которая показывает, какой пин соответствует какому GPIO и его функциям). Поэтому убедитесь, что у вас есть доступ к распиновке приобретаемой платы. В противном случае вы можете использовать ESP32 неправильно.
Разъём для антенны. Большинство плат поставляются с встроенной антенной для Wi-Fi сигнала. Некоторые платы оснащены разъёмом для антенны, позволяющим опционально подключить внешнюю антенну. Добавление внешней антенны увеличивает дальность Wi-Fi.
Разъём для батареи. Если вы хотите питать ESP32 от батарей, существуют платы разработки с разъёмами для LiPo батарей — это может быть удобнее. Вы также можете питать «обычный» ESP32 от батарей через пины питания.
Дополнительные аппаратные возможности. Существуют платы разработки ESP32 с дополнительными аппаратными функциями. Например, некоторые могут иметь встроенный OLED-дисплей, модуль LoRa, модуль SIM800 (для GSM и GPRS), держатель батареи, камеру и другое.
Какая плата ESP32 лучше всего подходит для начинающих?
Для начинающих мы рекомендуем плату ESP32 с большим количеством доступных GPIO и без каких-либо дополнительных аппаратных функций. Также важно, чтобы плата имела стабилизатор напряжения и USB-вход для питания и загрузки кода.
В большинстве наших проектов ESP32 мы используем плату ESP32 DEVKIT DOIT, и именно её мы рекомендуем для начинающих. Существуют различные версии этой платы с разным количеством доступных пинов (30, 36 и 38) — все платы работают аналогично.
Где купить?
Вы можете проверить следующую ссылку, чтобы найти плату ESP32 DEVKIT DOIT в различных магазинах:
Другие аналогичные платы с упомянутыми ранее характеристиками также могут быть хорошим вариантом, например Adafruit ESP32 Feather, Sparkfun ESP32 Thing, NodeMCU-32S, Wemos LoLin32 и т.д.
ESP32 DEVKIT DOIT
В этой статье мы будем использовать плату ESP32 DEVKIT DOIT в качестве эталонной. Если у вас другая плата, не беспокойтесь. Информация на этой странице также совместима с другими платами разработки ESP32.
На изображении ниже показана плата ESP32 DEVKIT DOIT V1 с 36 GPIO-пинами.
Спецификации — ESP32 DEVKIT V1 DOIT
В следующей таблице представлена сводка характеристик и спецификаций платы ESP32 DEVKIT V1 DOIT:
Количество ядер |
2 (двухъядерный) |
Wi-Fi |
2.4 ГГц, до 150 Мбит/с |
Bluetooth |
BLE (Bluetooth Low Energy) и классический Bluetooth |
Архитектура |
32 бита |
Тактовая частота |
До 240 МГц |
RAM |
512 КБ |
Пины |
30, 36 или 38 (в зависимости от модели) |
Периферия |
Ёмкостное касание, АЦП (аналого-цифровой преобразователь), ЦАП (цифро-аналоговый преобразователь), I2C (Inter-Integrated Circuit), UART (универсальный асинхронный приёмопередатчик), CAN 2.0 (Controller Area Network), SPI (Serial Peripheral Interface), I2S (Integrated Inter-IC Sound), RMII (Reduced Media-Independent Interface), ШИМ (широтно-импульсная модуляция) и многое другое. |
Встроенные кнопки |
Кнопки RESET и BOOT |
Встроенные светодиоды |
Встроенный синий LED на GPIO2; встроенный красный LED, показывающий наличие питания на плате |
USB-to-UART мост |
CP2102 |
Данная модель платы ESP32 имеет 36 пинов, по 18 с каждой стороны. Количество доступных GPIO зависит от модели вашей платы.
Чтобы узнать больше о GPIO ESP32, прочитайте наше руководство по GPIO: ESP32 Pinout Reference: какие GPIO-пины следует использовать?
Плата оснащена интерфейсом microUSB, который можно использовать для подключения платы к компьютеру для загрузки кода или подачи питания.
Она использует чип CP2102 (USB-to-UART) для связи с компьютером через COM-порт по последовательному интерфейсу. Другой популярный чип — CH340. Проверьте, какой конвертер USB-to-UART используется на вашей плате, так как вам потребуется установить необходимые драйверы, чтобы ваш компьютер мог взаимодействовать с платой (подробнее об этом далее в руководстве).
Эта плата также оснащена кнопкой RESET (может быть обозначена как EN) для перезагрузки платы и кнопкой BOOT для перевода платы в режим прошивки (готовность к приёму кода). Обратите внимание, что на некоторых платах кнопка BOOT может отсутствовать.
Также плата имеет встроенный синий LED, внутренне подключённый к GPIO 2. Этот LED полезен для отладки, чтобы обеспечить визуальный физический вывод. Есть также красный LED, который загорается при подаче питания на плату.
Распиновка GPIO ESP32
Чип ESP32 имеет 48 пинов с различными функциями. Не все пины доступны на всех платах разработки ESP32, и некоторые пины не следует использовать. Плата ESP32 DEVKIT V1 DOIT обычно имеет 36 доступных GPIO, которые можно использовать для подключения периферии.
Пины питания
Обычно все платы имеют пины питания: 3V3, GND и VIN. Вы можете использовать эти пины для питания платы (если вы не подаёте питание через USB-порт) или для питания другой периферии (если вы питаете плату через USB-порт).
Пины общего назначения ввода-вывода (GPIO)
Почти все GPIO имеют номер, и именно по номеру к ним следует обращаться.
С ESP32 вы можете решить, какие пины будут UART, I2C или SPI — вам просто нужно задать это в коде. Это возможно благодаря функции мультиплексирования чипа ESP32, которая позволяет назначать несколько функций одному и тому же пину.
Если вы не зададите их в коде, пины будут настроены по умолчанию, как показано на рисунке ниже (расположение пинов может различаться в зависимости от производителя). Кроме того, есть пины со специфическими функциями, которые делают их подходящими или неподходящими для конкретного проекта.
У нас есть подробное руководство, посвящённое GPIO ESP32, которое мы рекомендуем прочитать: ESP32 Pinout Reference Guide. В нём показано, как использовать GPIO ESP32, и объясняется, какие GPIO лучше всего подходят для различных проектов.
Расположение GPIO может различаться в зависимости от модели вашей платы. Однако обычно каждый конкретный GPIO работает одинаково независимо от используемой платы разработки (за некоторыми исключениями). Например, независимо от платы, обычно GPIO5 всегда является пином VSPI CS0, GPIO 23 всегда соответствует VSPI MOSI для SPI-связи и т.д.
Как программировать ESP32?
ESP32 можно программировать с использованием различных прошивок и языков программирования. Вы можете использовать:
Espressif IDF (IoT Development Framework)
JavaScript
LUA
…
Наш предпочтительный метод программирования ESP32 — с использованием C/C++ «язык программирования Arduino». У нас также есть руководства и уроки с использованием прошивки MicroPython.
В этом руководстве мы рассмотрим программирование ESP32 с использованием Arduino core для платы ESP32. Если вы предпочитаете использовать MicroPython, обратитесь к этому руководству: Начало работы с MicroPython на ESP32.
Программирование ESP32 с Arduino IDE
Для программирования ваших плат вам нужна IDE для написания кода. Для начинающих мы рекомендуем использовать Arduino IDE. Хотя это не лучшая IDE, она хорошо работает и проста и интуитивно понятна для начинающих. После знакомства с Arduino IDE, когда вы начнёте создавать более сложные проекты, вам может быть полезно использовать VS Code с расширением PlatformIO.
Если вы только начинаете работу с ESP32, начните с Arduino IDE.
Установка Arduino IDE
Для запуска Arduino IDE вам необходимо установить JAVA на компьютер. Если у вас его нет, перейдите на следующий веб-сайт для загрузки и установки последней версии: http://java.com/download.
Скачивание и установка Arduino IDE
Для загрузки Arduino IDE перейдите по следующему URL:
Перейдите на сайт Arduino и скачайте версию для вашей операционной системы.
Windows: запустите скачанный файл и следуйте инструкциям установщика.
Mac OS X: скопируйте скачанный файл в папку приложений.
Linux: распакуйте скачанный файл и откройте файл arduino-ide, который запустит IDE.
Если у вас возникли сомнения, обратитесь к руководству по установке Arduino.
Нужна плата ESP32? Вы можете купить её здесь.
Рекомендуем к прочтению: Обзор и сравнение плат разработки ESP32
Установка ESP32 в Arduino IDE
Для установки платы ESP32 в вашу Arduino IDE выполните следующие инструкции:
1. В вашей Arduino IDE 2 перейдите в File > Preferences.
2. Скопируйте и вставьте следующую строку в поле Additional Boards Manager URLs.
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
Примечание: если у вас уже есть URL плат ESP8266, вы можете разделить URL запятой:
http://arduino.esp8266.com/stable/package_esp8266com_index.json, https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
3. Откройте Менеджер плат. Вы можете перейти в Tools > Board > Boards Manager… или просто нажать на иконку Boards Manager в левом углу.
4. Найдите ESP32 и нажмите кнопку установки для esp32 by Espressif Systems версии 3.X.
Вот и всё. Установка завершится через несколько секунд.
После этого перезапустите Arduino IDE.
Затем перейдите в Tools > Board и проверьте, что платы ESP32 доступны.
Теперь вы готовы начать программирование ESP32 с помощью Arduino IDE.
Тестирование установки и загрузка кода на ESP32
Теперь давайте проверим, была ли установка успешной и можем ли мы загрузить новый код на плату ESP32.
Мы просто загрузим пример скетча из библиотеки доступных примеров.
Подключите плату разработки ESP32 к компьютеру с помощью USB-кабеля. Если у вас плата ESP32 DEVKIT DOIT, встроенный красный LED загорится. Это означает, что плата получает питание.
Важно: необходимо использовать USB-кабель с проводами данных. Некоторые USB-кабели от зарядных устройств или пауэрбанков предназначены только для питания и не передают данные — такие кабели не подойдут.
Откройте Arduino IDE и выполните следующие шаги:
1) Выберите вашу плату в меню Tools > Board или в выпадающем меню сверху нажмите «Select other board and port…»
Откроется новое окно, как показано ниже. Найдите вашу модель платы ESP32.
Выберите модель используемой платы и COM-порт. В нашем примере мы используем DOIT ESP32 DEVKIT V1. Нажмите OK, когда закончите.
Установка USB-драйверов
Если вы не видите COM-порт в вашей Arduino IDE, вероятно, вам нужно установить USB-to-UART драйверы на компьютер. Большинство плат ESP32 используют чип CP210x или CH340 в зависимости от модели платы.
Если вам нужно установить драйверы CP210x, рекомендуем ознакомиться с этим руководством: Установка USB-драйверов ESP32/ESP8266 – CP210x USB to UART Bridge
2) Откройте следующий пример — он ищет Wi-Fi сети в радиусе действия вашей платы.
ESP32: File > Examples > WiFi (ESP32) > WiFiScan
3) В Arduino IDE откроется новый скетч:
4) Нажмите кнопку Upload в Arduino IDE. Подождите несколько секунд, пока код скомпилируется и загрузится на плату.
Примечание: если вы видите множество точек в окне отладки, за которыми следует ошибка загрузки, это означает, что ваша плата не переходит в режим прошивки автоматически. Нажмите кнопку Upload ещё раз, и когда вы увидите точки в окне отладки, нажмите встроенную кнопку BOOT на несколько секунд.
5) Если всё прошло успешно, код загрузится через несколько секунд. Вы получите подобное сообщение:
6) Откройте Serial Monitor в Arduino IDE на скорости 115200 бод:
7) Нажмите встроенную кнопку Enable/RESET на ESP32, и вы увидите сети, доступные вблизи вашей платы.
Если у вас возникли проблемы с загрузкой кода на плату ESP32, рекомендуем ознакомиться со следующим руководством по устранению неполадок: ESP32 Troubleshooting Guide.
Примеры ESP32
В вашей Arduino IDE вы можете найти множество примеров для ESP32. Сначала убедитесь, что у вас выбрана плата ESP32 в Tools > Boards. Затем перейдите в File > Examples и ознакомьтесь с примерами в разделе ESP32.
Обновление ядра ESP32 в Arduino IDE
Рекомендуется периодически проверять наличие последней версии установленных плат ESP32. В Arduino IDE 2 вы получите всплывающее уведомление с предложением обновления, когда станет доступна новая версия.
Заключение
Надеемся, что это руководство по началу работы оказалось полезным. Мы постарались включить всю необходимую информацию для начала работы. Вы узнали, что такое ESP32, как выбрать плату разработки ESP32 и как загрузить новый код на ESP32 с помощью Arduino IDE.
Хотите узнать больше? Рекомендуем следующие уроки для начала:
Также не забудьте ознакомиться с распиновкой ESP32, чтобы узнать, как использовать GPIO:
Все бесплатные уроки и руководства по ESP32 доступны по следующей ссылке:
Источник: Random Nerd Tutorials — Getting Started with the ESP32