⚠️ 🔧 Друзі, з 26 вересня по 1 жовтня ми йдемо в міні-відпустку, тож відправок не буде. Але сайт працює, і замовлення приймаємо як завжди! Усе, що оформите в ці дні, почнемо відправляти 2 жовтня 📦 Дякуємо, що ви з нами! 💛
Каталог товаров
Клиенту
Тема сайта:
+38 (066) 305-77-25
Наш адрес
Україна, времено - только доставка Новой Почтой, УкрПочтой, МистЕкспрес, ROZETKA Delivery
Телефоны:
Время работы
  • Пн-Пт: с 9 до 18
  • Сб.: с 10 до 17
  • Вс: с 11 до 16
E-mail
Мы в соцсетях
Перейти в контакты
0 0
Каталог
Главная
Закладки
0
Сравнить
0
Контакты

Плата разработчика ESP-WROOM-32 (ESP-32S) CP2102

Страна-производитель: Китай Код товара: 1322
1
Все о товаре
Описание
Характеристики
Отзывы 1
Вопросы0
FAQ
Инструкция
Плата разработчика ESP-WROOM-32 (ESP-32S) CP2102
Плата разработчика ESP-WROOM-32 (ESP-32S) CP2102
Плата разработчика ESP-WROOM-32 (ESP-32S) CP2102
Плата разработчика ESP-WROOM-32 (ESP-32S) CP2102
Плата разработчика ESP-WROOM-32 (ESP-32S) CP2102
Плата разработчика ESP-WROOM-32 (ESP-32S) CP2102
Плата разработчика ESP-WROOM-32 (ESP-32S) CP2102
Нет в наличии
Код товара: 1322
265.00 грн
🚚 Відправка щодня о 15 годині
-Оперативная память (SRAM)-:520 КБ
-Тактовая частота процессора-:до 240 МГц
-Тип антенны-:встроенная PCB-антенна
-Входное напряжение-:5 В через Micro-USB
-Максимальный ток-:800 мА
-Рабочая частота-:2,412–2,484 ГГц (Wi‑Fi)
-Флеш-память-:4 МБ SPI Flash
-Микроконтроллер-:ESP32, двухъядерный Xtensa LX6
-Количество контактов-:30 или 38 — в зависимости от исполнения платы
-Тип разъема-:Micro-USB (питание и передача данных)
Доставка
Новой почтой в отделения и почтоматы
Новой почтой в отделения и почтоматы
от 80 ₴
ROZETKA Delivery
ROZETKA Delivery
Фиксировано 49 грн
Укрпочтой в отделение по Украине
Укрпочтой в отделение по Украине
от 45 ₴
Meest Почта
Meest Почта
от 49 ₴
Оплата
Оплата картой Оплата картой
Перевод на карточку Перевод на карточку
Оплата на IBAN Оплата на IBAN
Безналичный расчет Безналичный расчет
Наложенный платеж Наложенный платеж
Гарантийные положения
Гарантийные обязательства на товары, которые были паяные, не распространяются
Плата разработчика ESP-WROOM-32 (ESP-32S) CP2102
Код товара: 1322
265.00 грн
Описание

Кратко об ESP-WROOM-32 / ESP-32S CP2102

ESP-WROOM-32 / ESP-32S CP2102 — плата разработчика для IoT-устройств, беспроводных датчиков, домашней автоматизации и учебных проектов. Она сочетает Wi‑Fi 2,4 ГГц, Bluetooth 4.2, GPIO и распространённые цифровые интерфейсы, а встроенный USB–UART CP2102 позволяет прошивать контроллер через Micro-USB без отдельного программатора.

Плата может поставляться в 30- или 38-контактном исполнении. Эти версии отличаются габаритами и расположением выводов, поэтому перед монтажом необходимо сверить количество контактов, надписи на плате и распиновку именно полученного экземпляра. Плата питается от 5 В через Micro-USB, а сигнальные GPIO работают с логическими уровнями 3,3 В.

Ключевые характеристики

Платформа
ESP32; модуль с маркировкой ESP-WROOM-32 или ESP-32S
Процессор
32-битный двухъядерный Xtensa LX6, до 240 МГц
Память
4 МБ Flash, 520 КБ SRAM
Wi‑Fi
IEEE 802.11 b/g/n, 2,4 ГГц
Bluetooth
Bluetooth 4.2 BR/EDR и BLE
USB–UART
CP2102
USB-разъём
Micro-USB
Питание платы
5 В через Micro-USB
Логические уровни GPIO
3,3 В
Интерфейсы
GPIO, ADC, DAC, PWM, I²C, SPI, UART, I²S; доступность контактов зависит от исполнения платы
Исполнение
30 pin или 38 pin
Размеры
52 × 28 мм для 30 pin; 48 × 25 мм для 38 pin

Подробное описание и особенности

Беспроводной контроллер для прототипирования

ESP32 позволяет совместить управление периферией с Wi‑Fi 802.11 b/g/n и Bluetooth 4.2 BR/EDR и BLE. Плата подходит для локального веб-интерфейса, обмена данными с сервером, BLE-управления со смартфона и автономной обработки сигналов от датчиков. Wi‑Fi работает только в диапазоне 2,4 ГГц, поэтому сеть только на 5 ГГц для подключения не подойдёт.

Прошивка и последовательный порт через CP2102

CP2102 выполняет функцию моста USB–UART: после подключения к компьютеру плата определяется как виртуальный последовательный порт для загрузки прошивки и работы с Serial Monitor. Для подключения необходим Micro-USB кабель с передачей данных; кабель только для зарядки может подавать питание, но не создаст COM/tty-порт.

Плату можно программировать в Arduino IDE, ESP-IDF или MicroPython. Профиль платы, параметры Flash и назначение GPIO необходимо подбирать по фактическому модулю и 30- или 38-контактной распиновке; один профиль Arduino IDE нельзя считать универсальным для всех исполнений.

Подключение датчиков, дисплеев и исполнительных узлов

I²C, SPI, UART, ADC, DAC и PWM позволяют подключать сенсоры, дисплеи, память и другие модули. Конкретная доступность функций зависит от того, какие GPIO выведены на плату. Для UART соединяйте TX одного устройства с RX другого, RX — с TX и обязательно делайте общую землю.

GPIO являются управляющими сигналами с логикой 3,3 В, а не силовыми выходами. Реле, двигатели, мощные зуммеры и другие нагрузки подключайте через соответствующий драйвер, транзисторный каскад или готовый управляющий модуль с учётом тока нагрузки.

Подойдёт / не подойдёт

Подойдёт

  • для беспроводных датчиков и телеметрии через Wi‑Fi 2,4 ГГц;
  • для BLE-пультов, конфигураторов и локального обмена данными;
  • для домашней автоматизации, изучения ESP32 и макетирования IoT-узлов;
  • для работы с периферией через I²C, SPI, UART, ADC, DAC или PWM после проверки GPIO;
  • для прошивки через Micro-USB без отдельного USB–UART адаптера.

Не подойдёт

  • для сетей Wi‑Fi только 5 ГГц;
  • для прямого приёма GPIO сигналов с уровнем 5 В без согласования;
  • для прямого питания или управления мощными нагрузками от GPIO;
  • для проекта с фиксированной механической посадкой без проверки версии 30/38 pin;
  • когда обязателен USB Type-C или нативный USB-интерфейс микроконтроллера.

Исполнение 30 pin и 38 pin

ИсполнениеРазмеры платыЧто проверить
30 pin52 × 28 ммнумерацию, обозначения GPIO и ширину посадки
38 pin48 × 25 ммфактическую распиновку, расстояние между рядами и посадочные места

Версии 30 pin и 38 pin не являются механически взаимозаменяемыми без проверки. Для корпуса, гребёнок, макетной или собственной печатной платы используйте размеры и pinout конкретного экземпляра.

Примеры применения

Беспроводной сенсорный узел

Плата может опрашивать цифровой датчик через I²C или SPI, обрабатывать показания и передавать их локальному серверу или системе автоматизации через Wi‑Fi.

Панель состояния устройства

ESP32 может считывать кнопки и датчики и выводить параметры на OLED-дисплей. Для исполнительных нагрузок используйте отдельный драйвер в соответствии с их напряжением и током.

BLE-пульт или конфигуратор

Bluetooth Low Energy подходит для передачи команд, настроек и короткой телеметрии между платой и совместимым смартфоном без подключения к Wi‑Fi.

UART-шлюз для двух устройств

Плата может принимать данные через UART, обрабатывать их и передавать по сети. Перед запуском проверьте логические уровни, перекрёстное соединение TX↔RX, общую землю и назначение контактов.

Подключение и первый запуск

  1. Осмотрите полученную плату

    Посчитайте контакты, прочитайте маркировку модуля и сверьте обозначения GPIO с pinout именно этого 30- или 38-контактного исполнения.

  2. Подключите кабель с передачей данных

    Используйте исправный Micro-USB кабель и стабильный источник 5 В. После подключения проверьте появление виртуального COM/tty-порта.

  3. Настройте среду

    Выберите последовательный порт и совместимый профиль ESP32. Если порт не появился, проверьте кабель, USB-разъём компьютера и установите драйвер CP210x VCP.

  4. Загрузите тестовую программу

    Сначала прошейте простой тест без внешней периферии. Если загрузка остановилась на Connecting, проверьте правильность порта; при необходимости удерживайте BOOT, кратковременно нажмите EN/RESET и отпустите BOOT после начала соединения. Последовательность может зависеть от исполнения платы.[2]

  5. Подключите периферию

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

Совместимые товары и аксессуары

Ограничения и безопасность

GPIO работают с логикой 3,3 В

Не подавайте 5 В непосредственно на сигнальные входы ESP32. Для 5-вольтовой периферии используйте согласование уровней или другое проверенное решение, ограничивающее напряжение до безопасного уровня.

Питание должно быть стабильным

Плата питается от 5 В через Micro-USB. Неисправный кабель или источник без достаточного запаса может вызывать перезагрузки, ошибки прошивки и разрывы беспроводного соединения.[3]

Не занимайте контакты встроенной Flash

GPIO6–GPIO11 в модуле ESP32-WROOM-32 соединены с SPI Flash и не рекомендуются для внешней периферии.[1] Дополнительно проверяйте boot-strapping GPIO: внешнее устройство не должно принудительно задавать неправильный уровень во время сброса.

Мощные нагрузки требуют драйвера

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

Оставляйте свободной зону антенны

Металлический корпус, экран, провода или другая плата рядом с печатной антенной могут ухудшить Wi‑Fi и Bluetooth. При компоновке оставляйте рядом с краем антенны свободное пространство.

FAQ

Поддерживает ли плата Wi‑Fi 5 ГГц?

Нет. ESP-WROOM-32 / ESP-32S работает с Wi‑Fi 802.11 b/g/n в диапазоне 2,4 ГГц.

Какую версию я получу — 30 или 38 pin?

Плата может поставляться в 30- или 38-контактном исполнении. Перед проектированием корпуса или собственной PCB сверьте фактическое количество контактов, габариты и pinout полученного экземпляра.

Почему компьютер не видит последовательный порт?

Проверьте, поддерживает ли Micro-USB кабель передачу данных, попробуйте другой USB-порт и установите драйвер Silicon Labs CP210x VCP. Светодиод питания может светиться даже при использовании кабеля без линий данных.

Почему прошивка остановилась на Connecting?

Сначала проверьте выбранный COM/tty-порт, профиль ESP32, кабель и питание. Затем отсоедините периферию от boot-strapping GPIO и при необходимости вручную переведите плату в загрузчик кнопками BOOT и EN/RESET.[2][3]

Можно ли подключить сенсор с выходом 5 В?

Не подключайте 5-вольтовый сигнал непосредственно к GPIO. Используйте преобразователь логических уровней или другую схему согласования, подходящую для конкретного интерфейса.

Нужен ли отдельный программатор?

Для обычной прошивки через Micro-USB отдельный USB–UART программатор не нужен: эту функцию выполняет CP2102.

Документы и источники

Micro-USB, блютуз, вайфай

Характеристики
-Основные-
-Оперативная память (SRAM)-
520 КБ
-Тактовая частота процессора-
до 240 МГц
-Тип антенны-
встроенная PCB-антенна
-Входное напряжение-
5 В через Micro-USB
-Максимальный ток-
800 мА
-Рабочая частота-
2,412–2,484 ГГц (Wi‑Fi)
-Флеш-память-
4 МБ SPI Flash
-Микроконтроллер-
ESP32, двухъядерный Xtensa LX6
-Количество контактов-
30 или 38 — в зависимости от исполнения платы
-Тип разъема-
Micro-USB (питание и передача данных)
-Логический уровень GPIO-
3,3 В
-Дополнительные-
-Размеры-
52 × 28 мм (30 контактов); 48 × 25 мм (38 контактов)
-Тип микросхемы-
CP2102 (мост USB–UART)
-Поддержка стандартов-
Wi‑Fi; Bluetooth Classic (BR/EDR); Bluetooth Low Energy (BLE)
-Стандарт Wi-Fi-
IEEE 802.11 b/g/n, 2,4 ГГц
-Интерфейс подключения-
GPIO, UART, SPI, I²C, I²S, ADC, DAC, PWM
-Стандарт Bluetooth-
Bluetooth 4.2 BR/EDR и BLE
Отзывы
Рейтинг товара
5
Отзывов: 1
5
1
4
0
3
0
2
0
1
0
Константин
06 декабря 2023 (21:34)
Все пришло в идеальном состоянии и быстро
Все как описано на сайте
Продавцам 5 за оперативность
Ответ:
Дякуємо
Вопросы и ответы
Добавьте вопрос, и мы ответим в ближайшее время.

Нет вопросов о данном товаре, станьте первым и задайте свой вопрос.

Инструкция

⚡ Инструкция подключения ESP-WROOM-32 (ESP-32S) с CP2102

Wi-Fi/Bluetooth, 4MB Flash, для IoT и DIY-проектов

1. Идентификация и основные компоненты

ESP-WROOM-32 (ESP-32S) — это мощный модуль на базе двухъядерного процессора ESP32 с встроенными модулями Wi-Fi и Bluetooth, что делает его идеальным выбором для разнообразных IoT проектов.

flowchart TD
    subgraph ESP32["ESP-WROOM-32 (ESP-32S) с CP2102"]
      direction TB
      
      subgraph Components["Основные компоненты"]
        ESP["ESP32
двухъядерный процессор"] CP["CP2102
USB-UART конвертер"] AMS["AMS1117
стабилизатор 3.3В"] LUSB["MicroUSB
порт"] FLASH["4MB Flash
память"] ANT["Wi-Fi/BT
антенна"] BOOT["Кнопка BOOT/FLASH
(GPIO0)"] EN["Кнопка EN
(RESET)"] LED["Светодиод
(GPIO2)"] end subgraph Pins["Выводы"] direction TB subgraph LeftPins["Левая сторона"] direction TB L1["3V3"] --- L2["EN"] --- L3["VP"] --- L4["VN"] --- L5["IO34"] --- L6["IO35"] --- L7["IO32"] --- L8["IO33"] --- L9["IO25"] --- L10["IO26"] --- L11["IO27"] --- L12["IO14"] --- L13["IO12"] --- L14["GND"] --- L15["IO13"] end subgraph RightPins["Правая сторона"] direction TB R1["VIN"] --- R2["GND"] --- R3["IO23"] --- R4["IO22"] --- R5["IO1"] --- R6["IO3"] --- R7["IO21"] --- R8["GND"] --- R9["IO19"] --- R10["IO18"] --- R11["IO5"] --- R12["IO17"] --- R13["IO16"] --- R14["IO4"] --- R15["IO0"] --- R16["IO2"] --- R17["IO15"] --- R18["GND"] --- R19["3V3"] end end end classDef comp fill:#b3e0ff,stroke:#333,stroke-width:2px classDef pin fill:#f96,stroke:#333,stroke-width:2px class ESP,CP,AMS,LUSB,FLASH,ANT,BOOT,EN,LED comp class L1,L2,L3,L4,L5,L6,L7,L8,L9,L10,L11,L12,L13,L14,L15,R1,R2,R3,R4,R5,R6,R7,R8,R9,R10,R11,R12,R13,R14,R15,R16,R17,R18,R19 pin

Особенности выводов ESP32:

Вывод Функция Примечания
3V3 Питание 3.3В Выход внутреннего стабилизатора
EN (Enable) Сигнал включения Уровень LOW выключает ESP32
VP (GPIO36) Аналоговый вход 1 Высокочувствительный АЦП
VN (GPIO39) Аналоговый вход 2 Высокочувствительный АЦП
IO34-IO39 Входные GPIO Только входные, без внутренних подтягивающих резисторов
IO0 GPIO / Boot режим LOW при загрузке = режим прошивки
IO2 GPIO / LED Часто подключён к встроенному светодиоду
VIN Вход питания 5-12В, соединён с USB через диод
В отличие от большинства микроконтроллеров, ESP32 имеет лишь некоторые пины, поддерживающие аналоговый ввод (ADC). Пины GPIO34-GPIO39 являются входными, они не могут работать как выходы. Также ESP32 имеет два встроенных 8-битных ЦАП (GPIO25 и GPIO26).

2. Необходимые компоненты для начала работы

2.1. Аппаратное обеспечение

  • Плата ESP-WROOM-32 (ESP-32S) с CP2102
  • Кабель Micro-USB
  • Компьютер с USB-портом
  • Макетная плата и соединительные провода (опционально для проектов)

2.2. Программное обеспечение

  • Visual Studio Code (VS Code)
  • Расширение PlatformIO IDE для VS Code
  • Драйверы для CP2102 (при необходимости)
Использование PlatformIO в VS Code предоставляет более профессиональную среду разработки по сравнению со стандартным Arduino IDE, включая автодополнение кода, многоплатформенную поддержку и лучшую организацию проектов.

3. Подключение и настройка

3.1. Физическое подключение

flowchart LR
    PC["Компьютер
USB-порт"] --> |"Micro-USB
кабель"| ESP32["ESP-WROOM-32
Micro-USB порт"] subgraph Internal["Внутренние соединения в ESP-WROOM-32"] direction TB USBP["Micro-USB
порт"] --> CP2102["CP2102
USB-UART
конвертер"] CP2102 --> |"UART
(TX/RX)"| ESP32Core["ESP32
процессор"] CP2102 --> |"DTR/RTS"| AutoReset["Схема
авто-сброса"] AutoReset --> |"EN/GPIO0"| ESP32Core USBP --> |"5V"| AMS1117["AMS1117
3.3V стабилизатор"] AMS1117 --> |"3.3V"| ESP32Core end ESP32 --- Internal classDef pc fill:#f9f,stroke:#333,stroke-width:2px classDef board fill:#9cf,stroke:#333,stroke-width:2px classDef comp fill:#fc9,stroke:#333,stroke-width:2px class PC pc class ESP32 board class USBP,CP2102,ESP32Core,AutoReset,AMS1117 comp
  1. Подключите кабель Micro-USB к порту на плате ESP-WROOM-32.
  2. Подключите другой конец кабеля к USB-порту вашего компьютера.
  3. На плате должен загореться светодиод питания, что свидетельствует о правильном подключении.

3.2. Установка драйверов CP2102 (при необходимости)

Большинство современных операционных систем автоматически устанавливают драйверы для CP2102, но если ваша плата не определяется, выполните следующие шаги:

Для Windows:

  1. Скачайте драйверы CP210x с официального сайта Silicon Labs.
  2. Распакуйте архив и запустите файл установщика.
  3. Следуйте инструкциям для завершения установки.
  4. Проверьте "Диспетчер устройств" (Device Manager) в разделе "Порты (COM и LPT)", где должен появиться "Silicon Labs CP210x USB to UART Bridge (COMx)".

Для macOS и Linux:

Для macOS драйверы можно найти на том же сайте Silicon Labs. В большинстве дистрибутивов Linux CP2102 поддерживается из коробки, но могут потребоваться права для доступа к последовательному порту:

sudo usermod -a -G dialout $USER # Для Ubuntu/Debian sudo usermod -a -G uucp $USER # Для Arch Linux

3.3. Установка VS Code и PlatformIO

  1. Скачайте и установите VS Code с официального сайта.
  2. Откройте VS Code.
  3. Перейдите в раздел расширений (Extensions): нажмите на иконку с квадратиками на боковой панели слева или используйте комбинацию Ctrl+Shift+X (Cmd+Shift+X на Mac).
  4. В поле поиска введите "PlatformIO IDE".
  5. Найдите расширение от PlatformIO.org и нажмите "Install".
  6. Дождитесь завершения установки и активации расширения.
  7. После установки может потребоваться перезапустить VS Code.

4. Создание первого проекта

4.1. Создание проекта "Blink" в PlatformIO

  1. Откройте VS Code с установленным PlatformIO.
  2. Нажмите на иконку PlatformIO (логотип с головой пришельца) на боковой панели.
  3. На вкладке "PIO Home" нажмите "New Project".
  4. Заполните поля для создания проекта:
    • Name: введите название проекта (например, "ESP32_Blink")
    • Board: в поле поиска введите "ESP32 DEVKIT" и выберите "DOIT ESP32 DEVKIT V1"
    • Framework: выберите "Arduino"
    • Location: можете оставить флажок "Use default location" или выбрать другую папку
  5. Нажмите "Finish".
  6. Дождитесь, пока PlatformIO создаст структуру проекта и загрузит необходимые инструменты.
flowchart TD
    A["Откройте VS Code"] --> B["Нажмите на иконку PlatformIO"]
    B --> C["Выберите 'New Project'"]
    C --> D["Заполните данные проекта:"]
    D --> D1["Name: ESP32_Blink"]
    D --> D2["Board: DOIT ESP32 DEVKIT V1"]
    D --> D3["Framework: Arduino"]
    D --> E["Нажмите 'Finish'"]
    E --> F["Дождитесь завершения
создания проекта"]

4.2. Создание тестового скетча

  1. В проводнике файлов VS Code (левая панель) раскройте папку вашего проекта.
  2. Перейдите в папку src и откройте файл main.cpp.
  3. Удалите весь существующий код и вставьте следующий скетч для мигания светодиодом:
#include // Определение пина для встроенного светодиода // На большинстве плат ESP32 DevKit V1 это GPIO2 #define LED_BUILTIN 2 void setup() { // Настраиваем последовательный порт для отладки Serial.begin(115200); Serial.println("ESP32 Тест светодиода"); // Настраиваем пин светодиода как выход pinMode(LED_BUILTIN, OUTPUT); } void loop() { // Включаем светодиод digitalWrite(LED_BUILTIN, HIGH); Serial.println("LED ON"); delay(1000); // Ждём 1 секунду // Выключаем светодиод digitalWrite(LED_BUILTIN, LOW); Serial.println("LED OFF"); delay(1000); // Ждём 1 секунду }

4.3. Загрузка прошивки на ESP32

  1. Убедитесь, что плата ESP32 подключена к компьютеру.
  2. В VS Code нажмите на иконку PlatformIO в левой боковой панели.
  3. В разделе "Project Tasks" найдите ваш проект и разверните его.
  4. Нажмите на "Build" для компиляции проекта (без загрузки).
  5. После успешной сборки нажмите на "Upload" для загрузки прошивки на плату.
Некоторые платы ESP32 не имеют функционального автоматического сброса в режим загрузки. Если загрузка останавливается на этапе "Connecting..." или "Waiting for device", нужно перевести плату в режим загрузки вручную.

4.4. Ручной режим загрузки (при необходимости)

sequenceDiagram
    participant User as Пользователь
    participant IDE as PlatformIO IDE
    participant ESP as ESP32
    
    Note over User,ESP: Если процесс загрузки останавливается на "Connecting..."
    
    User->>IDE: Нажимает "Upload"
    IDE->>ESP: Попытка подключения (не удаётся)
    Note over IDE: Ждёт соединения...
    
    User->>ESP: Нажимает и удерживает кнопку BOOT
    User->>ESP: Нажимает кнопку EN (Reset), не отпуская BOOT
    User->>ESP: Отпускает кнопку EN
    User->>ESP: Отпускает кнопку BOOT
    
    ESP->>IDE: Режим загрузки активирован
    IDE->>ESP: Передача прошивки
    IDE->>User: Сообщение об успехе [SUCCESS]
  
  1. Когда в консоли PlatformIO появится сообщение "Connecting...", выполните следующие действия:
  2. Нажмите и удерживайте кнопку "BOOT" (или "FLASH") на плате ESP32.
  3. Не отпуская "BOOT", коротко нажмите кнопку "EN" (или "RST") и отпустите её.
  4. Отпустите кнопку "BOOT".
  5. PlatformIO должен продолжить процесс загрузки.
После первой загрузки прошивки, при наличии схемы автоматического сброса на вашей плате, последующие загрузки могут происходить автоматически, без ручного режима.

4.5. Проверка работы скетча

  1. После успешной загрузки прошивки (увидите сообщение "[SUCCESS]" в терминале) встроенный светодиод на плате ESP32 (обычно подключён к GPIO2) начнёт мигать с интервалом в 1 секунду.
  2. Дополнительно можно открыть монитор последовательного порта для просмотра сообщений от ESP32:
    • В PlatformIO: нажмите на "Monitor" в разделе "Project Tasks"
    • Или нажмите на иконку розетки в нижней панели VS Code
  3. В мониторе должны отображаться сообщения "LED ON" и "LED OFF" при каждом переключении светодиода.
Если светодиод мигает и вы видите сообщения в мониторе порта, это означает, что ваша плата ESP-WROOM-32 правильно подключена и настроена!

5. Работа с Wi-Fi

5.1. Пример сканирования Wi-Fi сетей

Следующий скетч демонстрирует, как использовать модуль Wi-Fi ESP32 для сканирования доступных сетей:

#include #include void setup() { Serial.begin(115200); // Устанавливаем режим Wi-Fi как станция (клиент) WiFi.mode(WIFI_STA); WiFi.disconnect(); // Отключаемся от любых предыдущих подключений delay(100); Serial.println("Настройка ESP32 Wi-Fi завершена"); } void loop() { Serial.println("Начало сканирования Wi-Fi сетей..."); // Сканируем доступные сети int networksFound = WiFi.scanNetworks(); if (networksFound == 0) { Serial.println("Не найдено ни одной Wi-Fi сети"); } else { Serial.print("Найдено "); Serial.print(networksFound); Serial.println(" сет(и):"); for (int i = 0; i < networksFound; ++i) { // Выводим SSID, RSSI и тип шифрования для каждой сети Serial.print(i + 1); Serial.print(": "); Serial.print(WiFi.SSID(i)); Serial.print(" ("); Serial.print(WiFi.RSSI(i)); Serial.print(" дБм) "); // Отмечаем зашифрованные сети Serial.println((WiFi.encryptionType(i) == WIFI_AUTH_OPEN) ? "открытая" : "зашифрованная"); delay(10); // Небольшая пауза между выводом сетей } } Serial.println(""); // Ждём 5 секунд перед следующим сканированием delay(5000); }

5.2. Подключение к Wi-Fi сети

Этот пример демонстрирует, как подключить ESP32 к Wi-Fi сети:

#include #include // Настройки Wi-Fi const char* ssid = "Ваша_WiFi_Сеть"; // Замените на имя вашей сети const char* password = "Ваш_WiFi_Пароль"; // Замените на пароль вашей сети void setup() { Serial.begin(115200); delay(1000); Serial.println("\nНачало подключения к Wi-Fi"); Serial.printf("Подключение к сети: %s\n", ssid); // Подключение к Wi-Fi сети WiFi.begin(ssid, password); // Ожидание подключения while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } // Отображение информации о подключении Serial.println("\nWi-Fi подключён!"); Serial.print("IP-адрес: "); Serial.println(WiFi.localIP()); Serial.print("Шлюз: "); Serial.println(WiFi.gatewayIP()); Serial.print("Маска подсети: "); Serial.println(WiFi.subnetMask()); Serial.print("DNS: "); Serial.println(WiFi.dnsIP()); Serial.print("Сила сигнала: "); Serial.print(WiFi.RSSI()); Serial.println(" дБм"); } void loop() { // Проверка состояния подключения if (WiFi.status() != WL_CONNECTED) { Serial.println("Соединение с Wi-Fi потеряно! Повторное подключение..."); WiFi.begin(ssid, password); // Ожидание повторного подключения while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println("\nWi-Fi подключён повторно!"); } // Ваш код для работы с сетью... delay(10000); // Проверка подключения каждые 10 секунд }
Замените "Ваша_WiFi_Сеть" и "Ваш_WiFi_Пароль" на реальные данные вашей Wi-Fi сети перед загрузкой скетча.

6. Использование Bluetooth

6.1. Пример простого Bluetooth-сервера

#include #include // Проверка, поддерживается ли Bluetooth #if !defined(CONFIG_BT_ENABLED) || !defined(CONFIG_BLUEDROID_ENABLED) #error Bluetooth не включён! Пожалуйста, включите его в menuconfig. #endif BluetoothSerial SerialBT; const int ledPin = 2; // Встроенный светодиод на GPIO2 void setup() { Serial.begin(115200); pinMode(ledPin, OUTPUT); // Инициализируем Bluetooth с именем "ESP32BT" SerialBT.begin("ESP32BT"); Serial.println("Bluetooth запущен! Подключитесь к 'ESP32BT' со своего телефона"); Serial.println("Доступные команды:"); Serial.println("1: Включить светодиод"); Serial.println("0: Выключить светодиод"); Serial.println("s: Получить статус"); } void loop() { // Проверка наличия данных с Bluetooth if (SerialBT.available()) { char incomingChar = SerialBT.read(); Serial.printf("Получено: %c\n", incomingChar); // Обработка команд switch (incomingChar) { case '1': digitalWrite(ledPin, HIGH); SerialBT.println("Светодиод включён"); break; case '0': digitalWrite(ledPin, LOW); SerialBT.println("Светодиод выключен"); break; case 's': case 'S': SerialBT.printf("Состояние светодиода: %s\n", digitalRead(ledPin) ? "включён" : "выключен"); break; default: SerialBT.println("Неизвестная команда. Используйте: 1, 0 или s"); break; } } // Проверка наличия данных с последовательного порта (для отладки) if (Serial.available()) { char incomingChar = Serial.read(); SerialBT.write(incomingChar); } delay(20); // Небольшая задержка для стабильности }

Для подключения к ESP32 через Bluetooth:

  1. Скачайте на свой смартфон приложение Bluetooth-терминала (например, "Serial Bluetooth Terminal" для Android или "Bluetooth Terminal" для iOS).
  2. Включите Bluetooth на смартфоне и выполните поиск устройств.
  3. Найдите и подключитесь к устройству "ESP32BT".
  4. Используйте терминал для отправки команд: "1" для включения светодиода, "0" для выключения и "s" для проверки статуса.

7. Использование датчиков и периферии

7.1. Аналоговый ввод (ADC)

ESP32 имеет несколько каналов аналого-цифрового преобразования. Вот пример считывания напряжения с аналогового входа:

#include // Определяем пин для аналогового считывания const int analogPin = 34; // GPIO34 (также VP) на ESP32 // Настройка ADC const int adcResolution = 12; // ESP32 имеет 12-битный АЦП (0-4095) const float adcMaxValue = 4095.0; // Максимальное значение для 12-битного АЦП const float adcReferenceVoltage = 3.3; // Опорное напряжение ESP32 void setup() { Serial.begin(115200); // Настраиваем разрешение ADC (от 9 до 12 бит) analogReadResolution(adcResolution); // Опционально можно настроить сглаживание analogSetWidth(adcResolution); analogSetAttenuation(ADC_11db); // Полный диапазон: 0-3.3В Serial.println("ESP32 ADC Тест"); } void loop() { // Считываем сырое значение ADC int adcRaw = analogRead(analogPin); // Преобразуем сырое значение в напряжение float voltage = (adcRaw / adcMaxValue) * adcReferenceVoltage; // Выводим результаты Serial.print("Сырое значение ADC: "); Serial.print(adcRaw); Serial.print(" | Напряжение: "); Serial.print(voltage, 2); // Два знака после запятой Serial.println("В"); delay(1000); // Считывание каждую секунду }
На ESP32 аналоговые входы GPIO32-GPIO39 являются лучшим выбором для ADC. Пины GPIO0, GPIO2, GPIO4, GPIO12-GPIO15 также поддерживают аналоговый ввод, но их использование может влиять на Wi-Fi/Bluetooth и взаимодействовать с другими функциями.

7.2. ШИМ (PWM) выводы

ESP32 имеет 16 каналов ШИМ, которые можно настроить на разные частоты и разрешение:

#include // Настройка ШИМ const int pwmPin = 16; // GPIO-пин для ШИМ const int pwmChannel = 0; // ШИМ-канал (0-15) const int pwmFreq = 5000; // Частота ШИМ в Гц const int pwmResolution = 8; // Разрешение (1-16 бит) const int maxDutyCycle = (1 << pwmResolution) - 1; // 255 для 8-бит void setup() { Serial.begin(115200); // Настраиваем ШИМ ledcSetup(pwmChannel, pwmFreq, pwmResolution); // Подключаем GPIO-пин к ШИМ-каналу ledcAttachPin(pwmPin, pwmChannel); Serial.println("ESP32 PWM Тест"); } void loop() { // Плавное увеличение яркости (эффект "дыхания") Serial.println("Увеличение яркости..."); for (int dutyCycle = 0; dutyCycle <= maxDutyCycle; dutyCycle++) { ledcWrite(pwmChannel, dutyCycle); delay(5); } // Плавное уменьшение яркости Serial.println("Уменьшение яркости..."); for (int dutyCycle = maxDutyCycle; dutyCycle >= 0; dutyCycle--) { ledcWrite(pwmChannel, dutyCycle); delay(5); } }

7.3. Использование цифро-аналогового преобразователя (DAC)

ESP32 имеет два 8-битных канала DAC на пинах GPIO25 (DAC1) и GPIO26 (DAC2):

#include #include // Настройка DAC const int sineWaveFreq = 1; // Частота волны в Гц void setup() { Serial.begin(115200); // Инициализируем оба канала DAC dac_output_enable(DAC_CHANNEL_1); // GPIO25 dac_output_enable(DAC_CHANNEL_2); // GPIO26 Serial.println("ESP32 DAC Тест - генерация синусоиды"); } void loop() { // Генерируем синусоиду на DAC1 и косинусоиду на DAC2 for (int degree = 0; degree < 360; degree++) { // Расчёт значений для синуса и косинуса // от 0 до 255 (8-бит DAC) int sinValue = 127 + 127 * sin(degree * PI / 180); int cosValue = 127 + 127 * cos(degree * PI / 180); // Вывод на DAC dac_output_voltage(DAC_CHANNEL_1, sinValue); // GPIO25 dac_output_voltage(DAC_CHANNEL_2, cosValue); // GPIO26 // Задержка для контроля частоты delayMicroseconds(1000000 / 360 / sineWaveFreq); } }

8. Использование многозадачности на ESP32

8.1. Многозадачность с FreeRTOS

ESP32 имеет двухъядерный процессор и поддерживает реальную многозадачность с помощью FreeRTOS:

#include // Настройка задач RTOS TaskHandle_t Task1; TaskHandle_t Task2; // Пин для светодиода const int led1 = 2; // Встроенный светодиод на GPIO2 const int led2 = 4; // Дополнительный светодиод на GPIO4 (если подключён) // Коды задач void Task1code(void *pvParameters) { Serial.print("Задача 1 работает на ядре "); Serial.println(xPortGetCoreID()); while(true) { digitalWrite(led1, HIGH); delay(1000); digitalWrite(led1, LOW); delay(1000); } } void Task2code(void *pvParameters) { Serial.print("Задача 2 работает на ядре "); Serial.println(xPortGetCoreID()); while(true) { digitalWrite(led2, HIGH); delay(500); digitalWrite(led2, LOW); delay(500); } } void setup() { Serial.begin(115200); // Настраиваем пины pinMode(led1, OUTPUT); pinMode(led2, OUTPUT); // Создаём задачи на разных ядрах ESP32 // Параметры: (имя задачи, размер стека, указатель на параметры, приоритет, &идентификатор, ядро) // Запуск задачи 1 на ядре 0 xTaskCreatePinnedToCore( Task1code, // Функция задачи "Task1", // Имя задачи 10000, // Размер стека (в словах) NULL, // Параметры 1, // Приоритет (большее число = выше приоритет) &Task1, // Идентификатор задачи 0); // Ядро 0 delay(500); // Задержка для стабильности // Запуск задачи 2 на ядре 1 xTaskCreatePinnedToCore( Task2code, // Функция задачи "Task2", // Имя задачи 10000, // Размер стека NULL, // Параметры 1, // Приоритет &Task2, // Идентификатор задачи 1); // Ядро 1 Serial.println("Обе задачи запущены"); } void loop() { // Никакого кода не нужно в loop(), так как всё выполняют задачи // Можно использовать loop() для мониторинга, если нужно delay(1000); }
Использование многозадачности позволяет ESP32 одновременно выполнять несколько сложных операций, таких как обработка датчиков, управление выводами и поддержка сетевых соединений, без блокировки основного цикла программы.

9. Режимы энергосбережения

9.1. Использование режима глубокого сна (Deep Sleep)

#include // Определение пинов #define WAKE_PIN GPIO_NUM_33 // Пин для пробуждения (RTC GPIO) // Время сна (в микросекундах) #define uS_TO_S_FACTOR 1000000 // Коэффициент перевода микросекунд в секунды #define TIME_TO_SLEEP 10 // Время сна в секундах // Счётчик пробуждений RTC_DATA_ATTR int bootCount = 0; void setup() { Serial.begin(115200); delay(1000); // Время для открытия последовательного монитора // Увеличиваем счётчик пробуждений (сохраняется в RTC памяти) ++bootCount; // Выводим информацию о пробуждении Serial.println("ESP32 проснулся!"); Serial.print("Количество пробуждений: "); Serial.println(bootCount); // Вывод причины пробуждения esp_sleep_wakeup_cause_t wakeup_reason; wakeup_reason = esp_sleep_get_wakeup_cause(); switch(wakeup_reason) { case ESP_SLEEP_WAKEUP_EXT0 : Serial.println("Пробуждение через внешний сигнал на пин RTC_IO"); break; case ESP_SLEEP_WAKEUP_EXT1 : Serial.println("Пробуждение через внешний сигнал на пин RTC_CNTL"); break; case ESP_SLEEP_WAKEUP_TIMER : Serial.println("Пробуждение через таймер"); break; case ESP_SLEEP_WAKEUP_TOUCHPAD : Serial.println("Пробуждение через сенсорную кнопку"); break; default : Serial.printf("Пробуждение не через Deep Sleep: %d\n", wakeup_reason); break; } // Выполнить полезную работу перед сном // Например, считать датчики, отправить данные и т.д. Serial.println("Выполнение задач перед сном..."); delay(1000); // Настройка пробуждения // 1. Настройка таймера пробуждения esp_sleep_enable_timer_wakeup(TIME_TO_SLEEP * uS_TO_S_FACTOR); Serial.printf("Настроено пробуждение через %d секунд\n", TIME_TO_SLEEP); // 2. Настройка пробуждения от внешнего сигнала (опционально) esp_sleep_enable_ext0_wakeup(WAKE_PIN, 1); // 1 = HIGH для пробуждения // Переход в глубокий сон Serial.println("Переход в режим глубокого сна"); Serial.flush(); // Ждём завершения передачи данных через UART esp_deep_sleep_start(); // Этот код не выполнится после вызова esp_deep_sleep_start() Serial.println("Этот текст никогда не будет выведен"); } void loop() { // Не используется при использовании deep sleep }
При использовании режима глубокого сна все данные в памяти и состояние GPIO теряются. Только RTC-память (помеченная атрибутом RTC_DATA_ATTR) сохраняет данные между циклами сна. Также помните, что не все GPIO-пины могут быть использованы для пробуждения (только пины RTC GPIO, такие как GPIO32, GPIO33, GPIO34 и т.д.).

10.1. Ограничения ESP32

  • ADC2 во время Wi-Fi: Аналоговые входы ADC2 (связанные с GPIO0, 2, 4, 12-15, 25-27) невозможно использовать во время активности Wi-Fi.
  • Пины во время загрузки: GPIO0, GPIO2 и GPIO12 имеют специальные функции во время загрузки и должны иметь определённые уровни сигнала для нормального запуска.
  • Ограничения входных пинов: GPIO34-GPIO39 могут использоваться только как входы и не имеют внутренних подтягивающих резисторов.
  • Ограничения Flash: Пины GPIO6-GPIO11 используются для подключения Flash-памяти и не доступны для использования.

11. Полезные советы и рекомендации

11.1. Оптимизация энергопотребления

  • Отключение неиспользуемых модулей: Если не используете Wi-Fi или Bluetooth, отключите их для уменьшения энергопотребления.
  • Уменьшение частоты процессора: Используйте setCpuFrequencyMhz(80) для снижения тактовой частоты, когда не нужна полная мощность.
  • Лёгкий сон: Используйте esp_light_sleep_start() вместо глубокого сна, когда нужно быстро "проснуться" без перезагрузки.
  • Оптимизация циклов: Избегайте busy waiting и используйте события и таймеры вместо регулярных проверок.

11.2. Стабильность и надёжность

  • Предотвращение перезагрузок: Используйте конденсатор большой ёмкости (100-220 мкФ) между 3.3В и GND для стабилизации питания.
  • Watchdog Timer: Настройте сторожевой таймер для автоматического восстановления в случае зависания.
  • Сохранение данных: Регулярно сохраняйте критические данные в NVS (Non-Volatile Storage) или SPIFFS.
  • Контроль буферов: Проверяйте наличие свободной памяти перед операциями с большими буферами с помощью ESP.getFreeHeap().
  • Избежание долгих блокировок: Выбирайте неблокирующие алгоритмы для сохранения отзывчивости системы.

11.3. Работа с Wi-Fi и Bluetooth

  • Проверка соединения: Регулярно проверяйте состояние Wi-Fi соединения и выполняйте повторное подключение при необходимости.
  • Обработка событий: Используйте обработчики событий Wi-Fi (WiFi.onEvent()) вместо постоянных проверок состояния.
  • Энергосбережение: Используйте Wi-Fi в автоматическом режиме энергосбережения (WIFI_PS_MODEM).
  • Поддержка одного интерфейса: Если возможно, используйте либо Wi-Fi, либо Bluetooth одновременно, что улучшает стабильность и снижает потребление.
При разработке IoT-устройств с ESP32 всегда планируйте механизмы удалённого обновления прошивки (OTA) и восстановления при сбоях. Это значительно упростит поддержку устройств в полевых условиях.

12. Практические применения ESP32

12.1. Умный дом

  • Контроллеры умного дома: Управление освещением, отоплением, кондиционированием с помощью реле и датчиков.
  • Мониторинг энергопотребления: Подключение к счётчикам электроэнергии через оптические или импульсные входы.
  • Системы безопасности: Управление сенсорами движения, дверными/оконными датчиками, камерами наблюдения.
  • Системы автоматического полива: Управление клапанами с учётом влажности почвы и прогноза погоды.

12.2. Промышленная автоматизация

  • Мониторинг оборудования: Сбор данных с промышленных датчиков и передача их на сервер или в облако.
  • Локальные шлюзы: Преобразование данных между различными протоколами (Modbus, I2C, SPI, RS-485) и сетями Ethernet/Wi-Fi.
  • Прогнозируемое обслуживание: Анализ данных с датчиков вибрации, температуры для предсказания сбоев.

12.3. Системы мониторинга

  • Метеостанции: Подключение датчиков температуры, влажности, давления и ветра с отправкой данных в интернет.
  • Мониторинг качества воздуха: Сбор данных о концентрации CO2, PM2.5, PM10 и других загрязнителей.
  • Интернет-логгеры: Запись показаний датчиков с поддержкой точного времени через NTP.
flowchart TD
    ESP32[ESP-WROOM-32] --> Sensors["Сенсоры
(DHT22, BMP280, etc.)"] ESP32 --> Actuators["Исполнительные устройства
(Реле, Моторы)"] ESP32 --> Display["Дисплеи
(OLED, TFT)"] ESP32 --> |"Wi-Fi
Bluetooth"| Connectivity{"Подключение"} Connectivity --> |"Local"| LocalDevices["Локальные устройства
(Смартфон, ПК)"] Connectivity --> |"Internet"| Cloud["Облачные сервисы
(AWS IoT, ThingSpeak)"] Cloud --> Dashboard["Веб-дашборды
Мобильные приложения"] classDef esp32 fill:#f96,stroke:#333,stroke-width:2px classDef devices fill:#9cf,stroke:#333,stroke-width:2px classDef cloud fill:#f9f,stroke:#333,stroke-width:2px class ESP32 esp32 class Sensors,Actuators,Display,LocalDevices devices class Cloud,Dashboard cloud

13. Устранение типичных проблем

13.1. Проблемы при загрузке

Проблема Возможные причины Решение
Ошибка "Connecting..." Плата не в режиме загрузки Удерживайте кнопку BOOT, нажмите и отпустите EN, затем отпустите BOOT
Ошибка "A fatal error occurred: Failed to connect to ESP32" Проблемы с драйвером или подключением Проверьте кабель, установите/переустановите драйверы CP2102
Ошибка компиляции с Arduino.h Неправильно выбрана плата Убедитесь, что выбрана ESP32 в настройках проекта
Ошибка "Brownout detector" Недостаточное питание Используйте качественный кабель, другой USB-порт или внешнее питание через VIN

13.2. Проблемы с Wi-Fi

Проблема Возможные причины Решение
Непостоянное подключение Слабый сигнал или нестабильное питание Переместите ближе к точке доступа, проверьте питание
Wi-Fi не подключается Неправильные данные или несовместимость Проверьте SSID и пароль, попробуйте подключиться к другой сети
Медленное подключение Конфликт с Bluetooth или перегрузка Отключите Bluetooth, если он не используется
Проблемы с подключением к некоторым сетям Ограничения корпоративного Wi-Fi Используйте WPA2 Personal или создайте собственную точку доступа

13.3. Проблемы со стабильностью

  • Случайные перезагрузки: Уменьшите частоту процессора, проверьте питание, избегайте доступа к неинициализированной памяти.
  • Утечки памяти: Избегайте динамического выделения памяти в основном цикле, проверяйте доступную память с ESP.getFreeHeap().
  • Несоответствие с датчиками и периферией: Убедитесь, что используете правильный уровень напряжения (ESP32 работает с 3.3В).
  • Паттерны сбросов: Используйте сторожевой таймер ESP32 для восстановления при сбоях.

14. Полезные библиотеки и инструменты

14.1. Библиотеки ESP32 для PlatformIO

  • AsyncTCP и ESPAsyncWebServer: Для создания асинхронных веб-серверов с эффективным использованием ресурсов.
  • ArduinoJson: Для обработки JSON-данных при взаимодействии с API и веб-сервисами.
  • WiFiManager: Упрощает настройку Wi-Fi через веб-интерфейс.
  • PubSubClient: Для работы с MQTT-протоколом для IoT-программ.
  • ESP32 BLE Arduino: Расширенные возможности для работы с Bluetooth Low Energy.
  • SPIFFS/LittleFS: Файловые системы для хранения конфигураций, веб-страниц и данных.

14.2. Инструменты для диагностики

  • Serial Monitor: Базовый инструмент для отладки через консоль.
  • ESP Exception Decoder: Декодирует адреса сбоев в исходный код.
  • EspExceptionDecoder: Плагин PlatformIO для анализа выгрузок стека.
  • ESP32 Memory Analyzer: Отслеживает использование памяти и выявляет утечки.
Используйте "PlatformIO: Project Tasks" для быстрого доступа к командам "Monitor", "Upload" и "Upload Filesystem Image". Эта панель предоставляет удобный доступ ко всем основным действиям для работы с ESP32.
Важное замечание: Мы приложили усилия, чтобы эта инструкция была точной и полез

FAQ (частые вопросы)

Рекомендуемые статьи
Подключение биполярного светодиода к ESP32 WROOM
Подключение биполярного светодиода к ESP32 WROOM
Блог, Инструкции Подключения и Обзоры
04.10.2024

Продовжимо солов'їною?

Оберіть мову