Каталог товарів
Клієнту
Тема сайту:
+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:00. Увага!
-Вхідна напруга-:5 В
-Максимальний струм-:800 мА
-Робоча частота-:2.4 ГГц
-Тип роз'єму-:Micro-USB
-Розміри-:52 х 28 мм (30 Pin), 48 х 25 мм (38 Pin)
-Тип мікросхеми-:CP2102
-Підтримка стандартів-: Wi-Fi, Bluetooth
-Стандарт Wi-Fi-:Wi-Fi 802.11 b / g / n
-Стандарт Bluetooth-:Bluetooth v4.2 BR/EDR и BLE specification
Доставка
Новою Поштою у відділення та поштомати
Новою Поштою у відділення та поштомати
від 80 ₴
ROZETKA Delivery
ROZETKA Delivery
Фіксована 49грн
Укрпоштою у відділення по Україні
Укрпоштою у відділення по Україні
від 45 ₴
Meest Express
Meest Express
від 60 ₴
Оплата
Оплата карткою Оплата карткою
Переказ на картку Переказ на картку
Оплата на IBAN Оплата на IBAN
Безготівковий розрахунок Безготівковий розрахунок
Післяплата Післяплата
Гарантійні положення
Гарантійні зобов'язання на товари, які були паяні, не поширюються
Плата розробника ESP-WROOM-32 (ESP-32S) CP2102
Код товару: 1322
265.00 грн
Опис

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

Двоядерний мікроконтролер 240 МГц з вбудованим WiFi та Bluetooth для IoT-проєктів

Загальний опис

ESP-WROOM-32 (ESP-32S) CP2102 – це потужна плата розробника на базі модуля ESP-WROOM-32 з мікроконтролером ESP32, що поєднує високу продуктивність із вбудованими модулями WiFi та Bluetooth. Наявність USB-UART конвертера CP2102 забезпечує просте програмування через звичайний USB-кабель. Двоядерний процесор Tensilica LX6 з частотою до 240 МГц, 4 МБ флеш-пам'яті та 520 КБ SRAM надають неперевершені можливості для розробки складних IoT-рішень, систем домашньої автоматизації, носимих гаджетів та багатозадачних проєктів. Унікальне поєднання високої обчислювальної потужності, багатої периферії та енергоефективності робить цю плату незамінним інструментом як для початківців, так і для досвідчених розробників.

✅ Технічні переваги:

  • Двоядерний процесор з частотою 240 МГц – забезпечує справжню багатозадачність, дозволяючи одночасно виконувати складні обчислення та підтримувати бездротовий зв'язок
  • Інтегровані WiFi та Bluetooth – підтримка WiFi 802.11 b/g/n та Bluetooth 4.2 (включаючи BLE) для створення мережевих проєктів без додаткових модулів
  • Багата периферія – 34 програмованих GPIO, 18 сенсорних входів, 2 АЦП (12-біт), 2 ЦАП, інтерфейси I2C, SPI, UART для підключення будь-яких сенсорів та актуаторів
  • Ультранизьке споживання енергії – режими глибокого сну дозволяють створювати автономні пристрої, що працюють від батареї місяцями
  • Вбудований конвертер CP2102 – забезпечує зручне програмування через USB без додаткових адаптерів та перетворювачів

🔧 Ідеальне рішення для:

Систем розумного дому

Моніторингу довкілля

Керування робототехнікою

Носимих гаджетів

Промислової автоматизації

Мережевих веб-серверів

💡 Широкі можливості застосування:

  • Розумний дім – створюйте системи керування освітленням, термостатами, камерами спостереження та іншими пристроями з інтеграцією у платформи Home Assistant, Alexa або Google Home. Завдяки WiFi модулю можна керувати пристроями з будь-якої точки світу через інтернет.
  • Моніторинг довкілля – розробляйте метеостанції та системи моніторингу якості повітря, температури, вологості, тиску з передачею даних у хмарні сервіси, такі як ThingSpeak, Blynk або власні сервери. Режим глибокого сну дозволяє створювати автономні пристрої, що працюють від батарейок місяцями.
  • Робототехніка – використовуйте високу обчислювальну потужність для керування моторами, сервоприводами та зчитування даних з численних сенсорів. Bluetooth дозволяє керувати роботами з мобільних пристроїв, створюючи зручний інтерфейс користувача.
  • Носимі гаджети – створюйте розумні годинники, фітнес-трекери та інші компактні пристрої з функціями моніторингу активності, сну та здоров'я. Вбудований Bluetooth Low Energy (BLE) забезпечує ефективний зв'язок зі смартфонами при мінімальному енергоспоживанні.
  • Промислова автоматизація – розробляйте системи віддаленого моніторингу обладнання, збору даних та керування процесами з надійним бездротовим зв'язком. Двоядерна архітектура дозволяє одночасно обробляти дані та забезпечувати комунікацію з центральними системами керування.
  • Веб-сервери – ESP32 може функціонувати як самостійний веб-сервер для надання API, керування пристроями через веб-інтерфейс або створення локальних інформаційних панелей. Можливість роботи в режимі точки доступу дозволяє створювати автономні мережеві пристрої без підключення до існуючих мереж.

📶 Особливості WiFi та Bluetooth функціональності:

WiFi можливості

  • Підтримка стандартів 802.11 b/g/n (2.4 ГГц)
  • Швидкість передачі даних до 150 Мбіт/с
  • Підтримка режимів: Станція, Точка доступу, Станція+Точка доступу
  • Вбудовані протоколи TCP/IP
  • Підтримка WPA/WPA2/WPA3 шифрування
  • Власна антена на платі
  • Підтримка OTA (оновлення через повітря)

Bluetooth можливості

  • Bluetooth 4.2 з підтримкою BR/EDR та BLE
  • Класична підтримка профілів: SPP, HFP, A2DP, AVRCP
  • BLE функціональність: GAP, GATT, L2CAP, SMP
  • Потужність сигналу +3 дБм
  • Радіус дії до 10 м на відкритому просторі
  • Проста інтеграція з мобільними додатками
  • Можливість працювати паралельно з WiFi

📦 Детальні технічні характеристики:

  • Мікроконтролер: ESP32 (Tensilica LX6 двоядерний)
  • Тактова частота: До 240 МГц
  • Пам'ять:
    • Флеш-пам'ять: 4 МБ
    • SRAM: 520 КБ (включно з 16 КБ RTC SRAM)
  • Бездротовий зв'язок:
    • WiFi: 802.11 b/g/n (2.4 ГГц)
    • Bluetooth: 4.2 з підтримкою BR/EDR та BLE
  • Входи/виходи:
    • 34 програмовані GPIO піни
    • 18 сенсорних входів (ємнісні)
    • 2 АЦП (12-бітні)
    • 2 ЦАП (8-бітні)
    • 10 інтерфейсів ємнісного сенсорного вводу
    • 3 інтерфейси SPI
    • 3 інтерфейси UART
    • 2 інтерфейси I2C
    • 2 інтерфейси I2S
    • Інтерфейс SDIO для microSD карт
    • 16 каналів PWM
  • Програмний стек:
    • Сумісність з Arduino IDE
    • Espressif IoT Development Framework (ESP-IDF)
    • MicroPython
    • Підтримка FreeRTOS
  • Живлення:
    • Micro USB (5В)
    • Зовнішнє: 7-12В (через Vin)
    • 3.3В логічний рівень
    • Захист від перевантаження
    • Регулятор напруги на платі
  • Фізичні характеристики:
    • Розміри модуля ESP32-WROOM-32: 30,2 × 17,6 × 3,2 мм
    • Розміри плати: приблизно 55 × 28 мм (залежить від виробника)
    • Вага: ~10 г
    • Робоча температура: -40°C до +85°C
  • Компоненти плати:
    • Конвертер USB-UART CP2102
    • Кнопка RESET
    • Кнопка BOOT (для переведення в режим програмування)
    • Світлодіоди індикації живлення та зв'язку
    • Антена на платі
    • Штиркові колодки для доступу до пінів

📊 Порівняння з іншими популярними платами:

Характеристика ESP32 ESP8266 Arduino UNO Raspberry Pi Zero W
Процесор Dual Core 240 МГц Single Core 80 МГц Single Core 16 МГц Single Core 1 ГГц
ОЗП 520 КБ 80 КБ 2 КБ 512 МБ
Флеш-пам'ять 4 МБ 1-4 МБ 32 КБ microSD карта
WiFi Вбудований Вбудований Потрібен модуль Вбудований
Bluetooth Вбудований Відсутній Потрібен модуль Вбудований
GPIO піни 34 17 14 40
АЦП 2 × 12-біт 1 × 10-біт 6 × 10-біт Відсутній
Енергоспоживання Низьке Низьке Низьке Високе
Переваги Багатозадачність, WiFi+BT Компактність, ціна Простота, екосистема Повноцінна ОС

🔋 Особливості низького енергоспоживання:

ESP32 пропонує унікальні можливості економії енергії, що робить його ідеальним для проєктів, які працюють від батареї. Керуючи різними режимами живлення, можна досягти оптимального балансу між продуктивністю та часом автономної роботи.

Активний режим

Споживання: ~160-260 мА

Обидва ядра активні, WiFi/BT увімкнені, повна функціональність для максимальної продуктивності.

Режим легкого сну

Споживання: ~3-20 мА

CPU вимкнене, але RTC активне, пам'ять зберігається, можливість пробудження за таймером або GPIO.

Режим глибокого сну

Споживання: ~10-50 μA

Тільки RTC активне, можливість пробудження за таймером, сенсорами або зовнішнім сигналом.

За допомогою правильного налаштування та програмування, ESP32 може працювати від звичайної батареї 18650 протягом кількох місяців, періодично прокидаючись для зчитування даних з сенсорів та їх відправлення через WiFi.

⚠️ Важливі аспекти використання:

  • Рівні напруги – плата працює на логічному рівні 3.3В! Підключення до 5В логіки (наприклад, деяких Arduino) потребує конвертерів рівня напруги для захисту від пошкодження.
  • Режим програмування – для завантаження коду потрібно натиснути і утримувати кнопку BOOT, потім натиснути RESET і відпустити обидві. Цю операцію автоматично виконує USB-UART конвертер CP2102 на платі.
  • Вибір середовища розробки – плата сумісна з Arduino IDE (через ESP32 Board Manager), ESP-IDF (офіційне середовище від Espressif), MicroPython та іншими. Кожне має свої переваги залежно від складності проєкту.
  • Стабільність WiFi – для надійного з'єднання використовуйте якісне джерело живлення. Нестабільне або недостатнє живлення може призвести до переривання з'єднання або перезавантаження плати.
  • Використання GPIO – деякі піни мають спеціальні функції та обмеження. Наприклад, піни 6-11 використовуються для підключення вбудованої SPI флеш-пам'яті і не повинні використовуватися в проєктах. Перевіряйте документацію перед підключенням.
  • Теплові характеристики – при інтенсивному використовані WiFi та процесора мікросхема може значно нагріватися. Для тривалої роботи на максимальній продуктивності рекомендується додаткове охолодження.

ESP-WROOM-32 (ESP-32S) CP2102 – це потужна, універсальна та доступна платформа для розробки IoT-проєктів будь-якої складності. Поєднання надійного бездротового зв'язку, високої обчислювальної потужності та енергоефективності робить цю плату незамінним інструментом для інноваційних рішень. Почніть розробку власних інтелектуальних пристроїв вже сьогодні!

ЗАМОВТЕ ЗАРАЗ
#ESP32 #WiFiМодуль #Bluetooth #IoT #РозумнийДім #МікроконтролерESP

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

Характеристики
-Основні-
-Вхідна напруга-
5 В
-Максимальний струм-
800 мА
-Робоча частота-
2.4 ГГц
-Тип роз'єму-
Micro-USB
-Додаткові-
-Розміри-
52 х 28 мм (30 Pin), 48 х 25 мм (38 Pin)
-Тип мікросхеми-
CP2102
-Підтримка стандартів-
Wi-Fi, Bluetooth
-Стандарт Wi-Fi-
Wi-Fi 802.11 b / g / n
-Стандарт Bluetooth-
Bluetooth v4.2 BR/EDR и BLE specification
Відгуки
Рейтинг товару:
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-протоколом для I

FAQ (часті запитання)

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