Базовый стартер ESP32
Набор
Товарная накладная

Введение в ESP32
Впервые знакомитесь с ESP32? Начните здесь! ESP32 — это серия недорогих и маломощных микроконтроллеров System on a Chip (SoC), разработанных Espressif, которые включают беспроводные возможности Wi-Fi и Bluetooth и двухъядерный процессор. Если вы знакомы с ESP8266, ESP32 — его преемник, оснащенный множеством новых функций.
Технические характеристики ESP32
Если вы хотите получить более техническую и конкретную информацию, вы можете взглянуть на следующие подробные характеристики ESP32 (источник: http://esp32.net/) — для более подробной информации, проверьте технический паспорт):
- Беспроводное подключение WiFi: скорость передачи данных 150.0 Мбит/с с HT40
- Bluetooth: BLE (Bluetooth с низким энергопотреблением) и Bluetooth Classic
- Процессор: микропроцессор Tensilica Xtensa Dual-Core 32-бит LX6, работающий на частоте 160 или 240 МГц
- Память:
- ПЗУ: 448 КБ (для загрузки и основных функций)
- SRAM: 520 КБ (для данных и инструкций)
- RTC fas SRAM: 8 КБ (для хранения данных и основного ЦП во время загрузки RTC из режима глубокого сна)
- RTC slow SRAM: 8 КБ (для доступа сопроцессора в режиме глубокого сна) eFuse: 1 Кбит (из которых 256 бит используются для системы (MAC-адрес и конфигурация чипа), а оставшиеся 768 бит зарезервированы для пользовательских приложений, включая Flash-шифрование и Chip-ID)
Встроенная флэш-память: флэш-память, подключенная внутренне через 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)
Низкое энергопотребление: гарантирует, что вы по-прежнему сможете использовать преобразования АЦП, напримерampле, во время глубокого сна.
Периферийный ввод/вывод:
- периферийный интерфейс с DMA, включающий емкостный сенсорный экран
- АЦП (аналого-цифровой преобразователь)
- ЦАП (цифро-аналоговый преобразователь)
- I²C (межинтегральная схема)
- UART (универсальный асинхронный приемник/передатчик)
- SPI (последовательный периферийный интерфейс)
- I²S (интегрированный межчиповый звук)
- RMII (уменьшенный медиа-независимый интерфейс)
- ШИМ (широтно-импульсная модуляция)
Безопасность: аппаратные ускорители для AES и SSL/TLS
Платы разработки ESP32
ESP32 относится к чистому чипу ESP32. Однако термин «ESP32» также используется для обозначения плат разработки ESP32. Использование чистых чипов ESP32 нелегко и непрактично, особенно при обучении, тестировании и создании прототипов. В большинстве случаев вам понадобится плата разработки ESP32.
В качестве образца мы будем использовать плату ESP32 DEVKIT V1. На рисунке ниже показана плата ESP32 DEVKIT V1, версия с 30 контактами GPIO.
Технические характеристики – ESP32 DEVKIT V1
В следующей таблице приведены сводные характеристики и характеристики платы ESP32 DEVKIT V1 DOIT:
| Количество ядер | 2 (двухъядерный) |
| Wi-Fi | 2.4 ГГц до 150 Мбит/с |
| Bluetooth | BLE (Bluetooth с низким энергопотреблением) и устаревший Bluetooth |
| Архитектура | 32 бит |
| Тактовая частота | До 240 МГц |
| БАРАН | 512 КБ |
| Булавки | 30(в зависимости от модели) |
| Периферийные устройства | Емкостный сенсор, АЦП (аналого-цифровой преобразователь), ЦАП (цифро-аналоговый преобразователь), 12C (межинтегральная интегральная схема), UART (универсальный асинхронный приемник/передатчик), CAN 2.0 (сеть контроллера), SPI (последовательный периферийный интерфейс), 12S (интегрированная межинтегральная схема) Звук), RMII (уменьшенный медиа-независимый интерфейс), ШИМ (широтно-импульсная модуляция) и многое другое. |
| Встроенные кнопки | Кнопки RESET и BOOT |
| Встроенные светодиоды | встроенный синий светодиод, подключенный к GPIO2; встроенный красный светодиод, показывающий, что плата получает питание |
| USB к UART мост |
CP2102 |
Плата оснащена интерфейсом microUSB, который можно использовать для подключения платы к компьютеру для загрузки кода или подачи питания.
Он использует чип CP2102 (USB в UART) для связи с вашим компьютером через COM-порт с использованием последовательного интерфейса. Другой популярный чип — CH340. Проверьте, какой преобразователь USB в UART установлен на вашей плате, поскольку вам нужно будет установить необходимые драйверы, чтобы ваш компьютер мог взаимодействовать с платой (подробнее об этом далее в этом руководстве).
Эта плата также оснащена кнопкой RESET (может быть обозначена как EN) для перезапуска платы и кнопкой BOOT для перевода платы в режим прошивки (доступен для получения кода). Обратите внимание, что на некоторых платах может отсутствовать кнопка BOOT.
Он также оснащен встроенным синим светодиодом, который внутренне подключен к GPIO 2. Этот светодиод полезен для отладки, чтобы обеспечить некий визуальный физический вывод. Также есть красный светодиод, который загорается, когда вы подаете питание на плату.
Распиновка ESP32
Периферийные устройства ESP32 включают в себя:
- 18 каналов аналого-цифрового преобразователя (АЦП)
- 3 интерфейса SPI
- 3 интерфейса UART
- 2 интерфейса I2C
- 16 выходных канала ШИМ
- 2 цифро-аналоговых преобразователя (ЦАП)
- 2 интерфейса I2S
- 10 емкостных сенсорных GPIO
Функции АЦП (аналого-цифровой преобразователь) и ЦАП (цифро-аналоговый преобразователь) назначены на определенные статические контакты. Однако вы можете решить, какие контакты будут UART, I2C, SPI, PWM и т. д. — вам просто нужно назначить их в коде. Это возможно благодаря функции мультиплексирования чипа ESP32.
Хотя вы можете определить свойства выводов в программном обеспечении, существуют выводы, назначенные по умолчанию, как показано на следующем рисунке.
Кроме того, существуют пины с определенными характеристиками, которые делают их подходящими или неподходящими для конкретного проекта. В следующей таблице показано, какие пины лучше всего использовать в качестве входов, выходов, а с какими нужно быть осторожными.
Выводы, выделенные зеленым, можно использовать. Выводы, выделенные желтым, можно использовать, но нужно быть внимательным, поскольку они могут вести себя непредсказуемо, в основном при загрузке. Выводы, выделенные красным, не рекомендуется использовать в качестве входов или выходов.
| ГП ИО | Вход | Выход | Примечания |
| 0 | подтянулся | OK | выводит сигнал ШИМ при загрузке, должен быть НИЗКИМ для входа в режим прошивки |
| 1 | контакт TX | OK | отладочный вывод при загрузке |
| 2 | OK | OK | подключен к встроенному светодиоду, должен быть оставлен плавающим или находиться в состоянии LOW для перехода в режим мигания |
| 3 | OK | Контакт RX | ВЫСОКИЙ при загрузке |
| 4 | OK | OK | |
| 5 | OK | OK | выводит ШИМ-сигнал при загрузке, обвязочный штифт |
| 12 | OK | OK | ботинок выходит из строя, если его высоко потянуть, фиксирующий штифт |
| 13 | OK | OK | |
| 14 | OK | OK | выводит ШИМ-сигнал при загрузке |
| 15 | OK | OK | выводит ШИМ-сигнал при загрузке, обвязочный штифт |
| 16 | OK | OK | |
| 17 | OK | OK | |
| 18 | OK | OK | |
| 19 | OK | OK | |
| 21 | OK | OK | |
| 22 | OK | OK | |
| 23 | OK | OK | |
| 25 | OK | OK | |
| 26 | OK | OK | |
| 27 | OK | OK | |
| 32 | OK | OK | |
| 33 | OK | OK | |
| 34 | OK | только ввод | |
| 35 | OK | только ввод | |
| 36 | OK | только ввод | |
| 39 | OK | только ввод |
Продолжайте читать для более подробного и глубокого анализа GPIO ESP32 и его функций.
Только входные контакты
GPIO 34–39 — это GPI — только входные контакты. Эти контакты не имеют внутренних подтягивающих или подтягивающих резисторов. Их нельзя использовать как выходы, поэтому используйте эти контакты только как входы:
- ГПИО 34
- ГПИО 35
- ГПИО 36
- ГПИО 39
SPI flash интегрирован в ESP-WROOM-32
GPIO 6 - GPIO 11 доступны на некоторых платах разработки ESP32. Однако эти контакты подключены к интегрированной флэш-памяти SPI на чипе ESP-WROOM-32 и не рекомендуются для других целей. Поэтому не используйте эти контакты в своих проектах:
- GPIO 6 (SCK/CLK)
- GPIO 7 (SDO/SD0)
- GPIO 8 (SDI/SD1)
- GPIO 9 (SHD/SD2)
- GPIO 10 (SWP/SD3)
- GPIO 11 (CSC/CMD)
Емкостные сенсорные GPIO
ESP32 имеет 10 внутренних емкостных сенсорных датчиков. Они могут определять изменения во всем, что несет электрический заряд, например, в коже человека. Поэтому они могут определять изменения, возникающие при прикосновении пальцем к GPIO. Эти контакты можно легко интегрировать в емкостные площадки и заменить механические кнопки. Емкостные сенсорные контакты также можно использовать для пробуждения ESP32 из глубокого сна. Эти внутренние сенсорные датчики подключены к этим GPIO:
- T0 (GPIO 4)
- T1 (GPIO 0)
- T2 (GPIO 2)
- T3 (GPIO 15)
- T4 (GPIO 13)
- T5 (GPIO 12)
- T6 (GPIO 14)
- T7 (GPIO 27)
- T8 (GPIO 33)
- T9 (GPIO 32)
Аналого-цифровой преобразователь (АЦП)
ESP32 имеет 18 x 12-битных входных каналов АЦП (тогда как ESP8266 имеет только 1x 10-битный АЦП). Это GPIO, которые можно использовать в качестве АЦП, и соответствующие каналы:
- ADC1_CH0 (GPIO 36)
- ADC1_CH1 (GPIO 37)
- ADC1_CH2 (GPIO 38)
- ADC1_CH3 (GPIO 39)
- ADC1_CH4 (GPIO 32)
- ADC1_CH5 (GPIO 33)
- ADC1_CH6 (GPIO 34)
- ADC1_CH7 (GPIO 35)
- ADC2_CH0 (GPIO 4)
- ADC2_CH1 (GPIO 0)
- ADC2_CH2 (GPIO 2)
- ADC2_CH3 (GPIO 15)
- ADC2_CH4 (GPIO 13)
- ADC2_CH5 (GPIO 12)
- ADC2_CH6 (GPIO 14)
- ADC2_CH7 (GPIO 27)
- ADC2_CH8 (GPIO 25)
- ADC2_CH9 (GPIO 26)
Примечание: Контакты ADC2 не могут использоваться при использовании Wi-Fi. Поэтому, если вы используете Wi-Fi и у вас возникают проблемы с получением значения от ADC2 GPIO, вы можете рассмотреть возможность использования вместо этого ADC1 GPIO. Это должно решить вашу проблему.
Входные каналы АЦП имеют 12-битное разрешение. Это означает, что вы можете получить аналоговые показания в диапазоне от 0 до 4095, где 0 соответствует 0 В, а 4095 — 3.3 В. Вы также можете установить разрешение ваших каналов по коду и диапазону АЦП.
Контакты АЦП ESP32 не имеют линейного поведения. Вы, вероятно, не сможете отличить 0 от 0.1 В или от 3.2 до 3.3 В. Вам нужно помнить об этом при использовании контактов АЦП. Вы получите поведение, похожее на то, что показано на следующем рисунке.
Цифро-аналоговый преобразователь (ЦАП)
На ESP2 имеется 8 канала ЦАП по 32 бит для преобразования цифровых сигналов в аналоговые.tagВыходы сигнала e. Это каналы ЦАП:
- ЦАП1 (GPIO25)
- ЦАП2 (GPIO26)
RTC GPIO
Поддержка RTC GPIO на ESP32. GPIO, направленные на подсистему RTC с низким энергопотреблением, могут использоваться, когда ESP32 находится в состоянии глубокого сна. Эти RTC GPIO могут использоваться для пробуждения ESP32 из глубокого сна, когда Ultra Low
Сопроцессор питания (ULP) работает. Следующие GPIO могут использоваться в качестве внешнего источника пробуждения.
- RTC_GPIO0 (GPIO36)
- RTC_GPIO3 (GPIO39)
- RTC_GPIO4 (GPIO34)
- RTC_GPIO5 (GPIO35)
- RTC_GPIO6 (GPIO25)
- RTC_GPIO7 (GPIO26)
- RTC_GPIO8 (GPIO33)
- RTC_GPIO9 (GPIO32)
- RTC_GPIO10 (GPIO4)
- RTC_GPIO11 (GPIO0)
- RTC_GPIO12 (GPIO2)
- RTC_GPIO13 (GPIO15)
- RTC_GPIO14 (GPIO13)
- RTC_GPIO15 (GPIO12)
- RTC_GPIO16 (GPIO14)
- RTC_GPIO17 (GPIO27)
ШИМ
Контроллер ESP32 LED PWM имеет 16 независимых каналов, которые можно настроить для генерации сигналов PWM с различными свойствами. Все контакты, которые могут действовать как выходы, можно использовать как контакты PWM (GPIO 34–39 не могут генерировать PWM).
Для установки ШИМ-сигнала необходимо определить следующие параметры в коде:
- Частота сигнала;
- Рабочий цикл;
- ШИМ-канал;
- GPIO, куда вы хотите вывести сигнал.
I2C
ESP32 имеет два канала I2C, и любой вывод может быть установлен как SDA или SCL. При использовании ESP32 с Arduino IDE выводы I2C по умолчанию следующие:
- GPIO 21 (ПДД)
- GPIO 22 (СКЛ)
Если вы хотите использовать другие контакты при использовании библиотеки проводов, вам просто нужно вызвать:
Провод.begin(SDA, SCL);
СПИ
По умолчанию назначение выводов для SPI следующее:
| СПИ | MOSI | МИСО | КЛК | CS |
| ВСПИ | ГПИО 23 | ГПИО 19 | ГПИО 18 | ГПИО 5 |
| HSPI | ГПИО 13 | ГПИО 12 | ГПИО 14 | ГПИО 15 |
Прерывания
Все GPIO можно настроить как прерывания.
Обвязочные булавки
Чип ESP32 имеет следующие контакты для подключения:
- GPIO 0 (должен быть НИЗКИМ для входа в режим загрузки)
- GPIO 2 (должен быть плавающим или иметь НИЗКИЙ уровень во время загрузки)
- ГПИО 4
- GPIO 5 (должен быть HIGH во время загрузки)
- GPIO 12 (должен быть НИЗКИМ во время загрузки)
- GPIO 15 (должен быть HIGH во время загрузки)
Они используются для перевода ESP32 в режим загрузчика или прошивки. На большинстве плат разработки со встроенным USB/Serial вам не нужно беспокоиться о состоянии этих контактов. Плата переводит контакты в правильное состояние для прошивки или режима загрузки. Более подробную информацию о выборе режима загрузки ESP32 можно найти здесь.
Однако если к этим контактам подключены периферийные устройства, у вас могут возникнуть проблемы с загрузкой нового кода, прошивкой ESP32 новой прошивкой или сбросом платы. Если к обвязочным контактам подключены периферийные устройства и у вас возникают проблемы с загрузкой кода или прошивкой ESP32, это может быть связано с тем, что эти периферийные устройства не позволяют ESP32 войти в нужный режим. Прочтите документацию по выбору режима загрузки, чтобы узнать, как действовать в правильном направлении. После сброса, прошивки или загрузки эти контакты работают так, как и ожидалось.
Контакты HIGH при загрузке
Некоторые GPIO изменяют свое состояние на HIGH или выводят сигналы ШИМ при загрузке или сбросе.
Это означает, что если у вас есть выходы, подключенные к этим GPIO, вы можете получить неожиданные результаты при сбросе или загрузке ESP32.
- ГПИО 1
- ГПИО 3
- ГПИО 5
- GPIO 6 - GPIO 11 (подключены к интегрированной флэш-памяти SPI ESP32 — не рекомендуется использовать).
- ГПИО 14
- ГПИО 15
Включить (EN)
Enable (EN) — это штырь включения регулятора 3.3 В. Он подтянут, поэтому подключите его к земле, чтобы отключить регулятор 3.3 В. Это означает, что вы можете использовать этот штырь, подключенный к кнопке, для перезапуска ESP32, напримерampле.
Потребляемый ток GPIO
Абсолютный максимальный ток, потребляемый каждым GPIO, составляет 40 мА в соответствии с разделом «Рекомендуемые условия эксплуатации» в техническом описании ESP32.
Встроенный датчик Холла ESP32
ESP32 также оснащен встроенным датчиком Холла, который обнаруживает изменения магнитного поля в окружающей среде.
ESP32 Arduino IDE
Существует дополнение для Arduino IDE, которое позволяет вам программировать ESP32 с помощью Arduino IDE и его языка программирования. В этом руководстве мы покажем вам, как установить плату ESP32 в Arduino IDE, независимо от того, используете ли вы Windows, Mac OS X или Linux.
Предварительные условия: установленная среда Arduino IDE
Перед началом этой процедуры установки вам необходимо установить Arduino IDE на вашем компьютере. Существует две версии Arduino IDE, которые вы можете установить: версия 1 и версия 2.
Вы можете загрузить и установить Arduino IDE, перейдя по следующей ссылке: arduino.cc/en/Главная/Программное обеспечение
Какую версию Arduino IDE мы рекомендуем? На данный момент есть несколько plugins для ESP32 (например, SPIFFS Filesystem Uploader Plugin), которые пока не поддерживаются в Arduino 2. Поэтому, если вы собираетесь использовать плагин SPIFFS в будущем, мы рекомендуем установить устаревшую версию 1.8.X. Вам просто нужно прокрутить страницу программного обеспечения Arduino вниз, чтобы найти ее.
Установка дополнения ESP32 в Arduino IDE
Чтобы установить плату ESP32 в Arduino IDE, следуйте следующим инструкциям:
- В Arduino IDE перейдите в File> Предпочтения

- Введите следующее в поле «Дополнительный менеджер платы» URLполе «с»:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
Затем нажмите кнопку «ОК»:
Примечание: если у вас уже есть платы ESP8266 URL, вы можете отделить URLs с запятой следующим образом:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json,
http://arduino.esp8266.com/stable/package_esp8266com_index.json
Откройте Boards Manager. Перейдите в Tools > Board > Boards Manager…
Искать ESP32 и нажмите кнопку установки для «ESP32 by Espressif Systems»:
Вот и все. Он должен установиться через несколько секунд.
Загрузить тестовый код
Подключите плату ESP32 к компьютеру. Открыв Arduino IDE, выполните следующие действия:
- Выберите свою плату в меню «Инструменты» > «Плата» (в моем случае это модуль ESP32 DEV)

- Выберите порт (если вы не видите COM-порт в Arduino IDE, вам необходимо установить драйверы VCP моста USB-UART CP210x):

- Откройте следующий примерampле под File > Бывшийampле > WiFi
(ESP32) > WiFiScan

- В среде Arduino IDE откроется новый скетч:

- Нажмите кнопку Upload в Arduino IDE. Подождите несколько секунд, пока код скомпилируется и загрузится на вашу плату.

- Если все прошло так, как ожидалось, вы должны увидеть сообщение «Загрузка завершена».

- Откройте последовательный монитор Arduino IDE со скоростью передачи данных 115200 бод:

- Нажмите кнопку включения ESP32 на плате, и вы увидите сети, доступные рядом с вашим ESP32:

Поиск неисправностей
Если вы пытаетесь загрузить новый скетч на свой ESP32 и получаете сообщение об ошибке «Произошла фатальная ошибка: Не удалось подключиться к ESP32: Превышено время ожидания… Подключение…». Это означает, что ваш ESP32 не находится в режиме прошивки/загрузки.
Выбрав правильное имя платы и COM-порт, выполните следующие действия:
Нажмите и удерживайте кнопку «BOOT» на плате ESP32.
- Нажмите кнопку «Загрузить» в Arduino IDE, чтобы загрузить свой скетч:

- После того, как вы увидите сообщение «Подключение…» в Arduino IDE, уберите палец с кнопки «BOOT»:

- После этого вы должны увидеть сообщение «Загрузка завершена».
Вот и все. Ваш ESP32 должен запустить новый скетч. Нажмите кнопку «ENABLE», чтобы перезапустить ESP32 и запустить новый загруженный скетч.
Вам также придется повторять эту последовательность кнопок каждый раз, когда вы захотите загрузить новый эскиз.
Проект 1 ESP32 Входы Выходы
В этом руководстве по началу работы вы узнаете, как считывать цифровые входы, например кнопочный переключатель, и управлять цифровыми выходами, например светодиодом, с помощью ESP32 и Arduino IDE.
Предпосылки
Мы будем программировать ESP32 с помощью Arduino IDE. Поэтому убедитесь, что у вас установлены надстройки ESP32 boards, прежде чем продолжить:
- Установка дополнения ESP32 в Arduino IDE
Управление цифровыми выходами ESP32
Сначала вам нужно установить GPIO, которым вы хотите управлять, как ВЫХОД. Используйте функцию pinMode() следующим образом:
pinMode(GPIO, ВЫХОД);
Для управления цифровым выходом вам просто нужно использовать функцию digitalWrite(), которая принимает в качестве аргументов GPIO (целое число), на которое вы ссылаетесь, и состояние: HIGH (ВЫСОКИЙ) или LOW (НИЗКИЙ).
digitalWrite(GPIO, СОСТОЯНИЕ);
Все GPIO могут использоваться как выходы, за исключением GPIO 6–11 (подключенных к интегрированной флэш-памяти SPI) и GPIO 34, 35, 36 и 39 (GPIO только для входа);
Узнайте больше о ESP32 GPIO: Справочное руководство по ESP32 GPIO
ESP32 Чтение цифровых входов
Сначала установите GPIO, который вы хотите считать как ВХОД, используя функцию pinMode() следующим образом:
pinMode(GPIO, ВХОД);
Чтобы прочитать цифровой вход, например кнопку, вы используете функцию digitalRead(), которая принимает в качестве аргумента GPIO (целое число), на которое вы ссылаетесь.
цифровое чтение (GPIO);
Все GPIO ESP32 могут использоваться в качестве входов, за исключением GPIO 6–11 (подключенных к интегрированной флэш-памяти SPI).
Узнайте больше о ESP32 GPIO: Справочное руководство по ESP32 GPIO
Проект Эксample
Чтобы показать вам, как использовать цифровые входы и цифровые выходы, мы создадим простой проект example с кнопкой и светодиодом. Мы будем считывать состояние кнопки и зажигать светодиод соответственно, как показано на следующем рисунке.
Требуемые детали
Вот список деталей, которые вам понадобятся для сборки схемы:
- ESP32 DEVKIT V1
- 5 мм светодиод
- Резистор 220 Ом
- Нажать кнопку
- Резистор 10кОм
- Макетная плата
- Провода-перемычки
Принципиальная схема
Прежде чем продолжить, вам необходимо собрать схему со светодиодом и кнопкой.
Подключим светодиод к GPIO 5, а кнопку — к GPIO. 4.
Код
Откройте код Project_1_ESP32_Inputs_Outputs.ino в arduino IDE
Как работает код
В следующих двух строках вы создаете переменные для назначения контактов:
Кнопка подключена к GPIO 4, а светодиод — к GPIO 5. При использовании Arduino IDE с ESP32 4 соответствует GPIO 4, а 5 — GPIO 5.
Далее вы создаете переменную для хранения состояния кнопки. По умолчанию это 0 (не нажата).
int buttonState = 0;
В setup() вы инициализируете кнопку как ВХОД, а светодиод как ВЫХОД.
Для этого используется функция pinMode(), которая принимает указанный пин и режим: INPUT или OUTPUT.
pinMode(buttonPin, INPUT);
pinMode(ledPin, OUTPUT);
В цикле loop() вы считываете состояние кнопки и соответствующим образом настраиваете светодиод.
В следующей строке вы считываете состояние кнопки и сохраняете его в переменной buttonState.
Как мы уже видели ранее, вы используете функцию digitalRead().
buttonState = digitalRead(buttonPin);
Следующий оператор if проверяет, является ли состояние кнопки HIGH. Если это так, он включает светодиод с помощью функции digitalWrite(), которая принимает в качестве аргумента ledPin и состояние HIGH.
если (buttonState == HIGH)
Если состояние кнопки не HIGH, вы отключаете светодиод. Просто установите LOW в качестве второго аргумента в функции digitalWrite().
Загрузка кода
Прежде чем нажать кнопку загрузки, перейдите в Инструменты > Плата и выберите плату: DOIT ESP32 DEVKIT V1.
Перейдите в Tools > Port и выберите COM-порт, к которому подключен ESP32. Затем нажмите кнопку загрузки и дождитесь сообщения «Done uploading».
Примечание: Если вы видите много точек (подключение…__…__) в окне отладки и сообщение «Не удалось подключиться к ESP32: истекло время ожидания заголовка пакета», это означает, что вам нужно нажать кнопку BOOT на плате ESP32 после точек.
начинают появляться.Устранение неполадок
Демонстрация
После загрузки кода проверьте вашу схему. Ваш светодиод должен загореться при нажатии кнопки:
И выключите, когда отпустите его:
Проект 2 ESP32 Аналоговые входы
В этом проекте показано, как считывать аналоговые входы с помощью ESP32, используя Arduino IDE.
Аналоговое считывание полезно для считывания значений с переменных резисторов, таких как потенциометры или аналоговые датчики.
Аналоговые входы (АЦП)
Считывание аналогового значения с помощью ESP32 означает, что вы можете измерять изменяющийся объемtagуровни от 0 В до 3.3 В.
ОбъемtagЗатем измеренному значению присваивается значение от 0 до 4095, где 0 В соответствует 0, а 3.3 В соответствует 4095. Любой объемtagе между 0 В и 3.3 В будет присвоено соответствующее промежуточное значение.
АЦП нелинейный
В идеале можно ожидать линейного поведения при использовании выводов АЦП ESP32.
Однако этого не происходит. Вы получите поведение, показанное в следующей таблице:
Такое поведение означает, что ваш ESP32 не способен отличить 3.3 В от 3.2 В.
Вы получите одинаковое значение для обоих объемов.tagэс: 4095.
То же самое происходит при очень низком уровне громкости.tagзначения e: для 0 В и 0.1 В вы получите одно и то же значение: 0. Это необходимо учитывать при использовании выводов АЦП ESP32.
Функция analogRead()
Чтение аналогового входа с помощью ESP32 с использованием Arduino IDE так же просто, как использование функции analogRead(). Она принимает в качестве аргумента GPIO, который вы хотите прочитать:
аналоговое чтение (GPIO);
В плате DEVKIT V15 (версия с 1 GPIO) доступно только 30 из них.
Возьмите распиновку платы ESP32 и найдите контакты АЦП. Они выделены красной рамкой на рисунке ниже.
Эти аналоговые входные пины имеют 12-битное разрешение. Это означает, что при считывании аналогового входа его диапазон может варьироваться от 0 до 4095.
Примечание: контакты ADC2 не могут использоваться при использовании Wi-Fi. Поэтому, если вы используете Wi-Fi и у вас возникают проблемы с получением значения от ADC2 GPIO, вы можете рассмотреть возможность использования вместо этого ADC1 GPIO, это должно решить вашу проблему.
Чтобы увидеть, как все связано, мы сделаем простой пример.ample для считывания аналогового значения с потенциометра.
Требуемые детали
Для этого бывшегоample, вам понадобятся следующие детали:
- Плата ESP32 DEVKIT V1
- Потенциометр
- Макетная плата
- Провода-перемычки
Схема
Подключите потенциометр к ESP32. Средний контакт потенциометра должен быть подключен к GPIO 4. Вы можете использовать следующую принципиальную схему в качестве справочного материала.
Код
Мы будем программировать ESP32 с помощью Arduino IDE, поэтому перед продолжением убедитесь, что у вас установлено дополнение ESP32: (Если вы уже выполнили этот шаг, вы можете перейти к следующему шагу.)
Установка дополнения ESP32 в Arduino IDE
Откройте код Project_2_ESP32_Inputs_Outputs.ino в arduino IDE
Этот код просто считывает значения с потенциометра и выводит эти значения в последовательный монитор.
В коде вы начинаете с определения GPIO, к которому подключен потенциометр. В этом примереampле, GPIO 4.
В setup() инициализируйте последовательную связь со скоростью передачи данных 115200 бод.
В цикле loop() используйте функцию analogRead() для считывания аналогового входа с potPin.
Наконец, распечатайте значения, считанные с потенциометра, на последовательном мониторе.
Загрузите предоставленный код в ваш ESP32. Убедитесь, что в меню «Инструменты» выбраны правильная плата и COM-порт.
Тестирование Example
После загрузки кода и нажатия кнопки сброса ESP32 откройте последовательный монитор на скорости передачи данных 115200 бод. Вращайте потенциометр и наблюдайте за изменением значений.
Максимальное значение, которое вы получите, — 4095, а минимальное — 0.
Подведение итогов
В этой статье вы узнали, как считывать аналоговые входы с помощью ESP32 с Arduino IDE. Вкратце:
- Плата ESP32 DEVKIT V1 DOIT (версия с 30 контактами) имеет 15 контактов АЦП, которые можно использовать для считывания аналоговых входов.
- Эти выводы имеют разрешение 12 бит, что означает, что вы можете получить значения от 0 до 4095.
- Чтобы прочитать значение в Arduino IDE, просто используйте функцию analogRead().
- Контакты АЦП ESP32 не имеют линейного поведения. Вы, вероятно, не сможете отличить 0 от 0.1 В или 3.2 от 3.3 В. Вам нужно помнить об этом при использовании контактов АЦП.
Проект 3 ESP32 PWM (аналоговый выход)
В этом уроке мы покажем вам, как генерировать сигналы ШИМ с помощью ESP32, используя Arduino IDE. В качестве примераampТеперь мы построим простую схему, которая будет регулировать яркость светодиода с помощью ШИМ-контроллера светодиода ESP32.
Контроллер светодиодной ШИМ ESP32
ESP32 имеет светодиодный ШИМ-контроллер с 16 независимыми каналами, которые можно настроить для генерации ШИМ-сигналов с различными свойствами.
Вот шаги, которые вам нужно будет выполнить, чтобы регулировать яркость светодиода с помощью ШИМ с помощью Arduino IDE:
- Сначала вам нужно выбрать канал ШИМ. Всего есть 16 каналов от 0 до 15.
- Затем вам нужно установить частоту сигнала ШИМ. Для светодиода подойдет частота 5000 Гц.
- Вам также необходимо установить разрешение рабочего цикла сигнала: у вас есть разрешения от 1 до 16 бит. Мы будем использовать 8-битное разрешение, что означает, что вы можете управлять яркостью светодиода, используя значение от 0 до 255.
- Далее вам нужно указать, на каком GPIO или GPIO будет появляться сигнал. Для этого вы будете использовать следующую функцию:
ledcAttachPin(GPIO, канал)
Эта функция принимает два аргумента. Первый — GPIO, который будет выводить сигнал, а второй — канал, который будет генерировать сигнал. - Наконец, для управления яркостью светодиода с помощью ШИМ используется следующая функция:
ledcWrite(канал, рабочий цикл)
Эта функция принимает в качестве аргументов канал, генерирующий ШИМ-сигнал, и рабочий цикл.
Требуемые детали
Для выполнения этого руководства вам понадобятся следующие детали:
- Плата ESP32 DEVKIT V1
- Светодиод 5mm
- Резистор 220 Ом
- Макетная плата
- Провода-перемычки
Схема
Подключите светодиод к ESP32, как показано на следующей схеме. Светодиод должен быть подключен к GPIO 4.
Примечание: вы можете использовать любой пин, который хотите, пока он может работать как выход. Все пины, которые могут работать как выходы, могут использоваться как контакты ШИМ. Для получения дополнительной информации о ESP32 GPIO, прочитайте: Справочник по распиновке ESP32: Какие пины GPIO следует использовать?
Код
Мы будем программировать ESP32 с помощью Arduino IDE, поэтому перед продолжением убедитесь, что у вас установлено дополнение ESP32: (Если вы уже выполнили этот шаг, вы можете перейти к следующему шагу.)
Установка дополнения ESP32 в Arduino IDE
Откройте код Project_3_ESP32_PWM.ino в arduino IDE
Вы начинаете с определения пина, к которому подключен светодиод. В этом случае светодиод подключен к GPIO 4.
Затем вы устанавливаете свойства сигнала ШИМ. Вы определяете частоту 5000 Гц, выбираете канал 0 для генерации сигнала и устанавливаете разрешение 8 бит. Вы можете выбрать другие свойства, отличные от этих, для генерации других сигналов ШИМ.
В setup() вам необходимо настроить светодиодный ШИМ со свойствами, которые вы определили ранее, используя функцию ledcSetup(), которая принимает в качестве аргументов ledChannel, частоту и разрешение, как показано ниже:
Далее вам нужно выбрать GPIO, с которого вы будете получать сигнал. Для этого используйте функцию ledcAttachPin(), которая принимает в качестве аргументов GPIO, с которого вы хотите получить сигнал, и канал, который генерирует сигнал. В этом примереampИтак, мы получим сигнал в ledPin GPIO, который соответствует GPIO 4. Канал, который генерирует сигнал, — это ledChannel, который соответствует каналу 0.
В цикле вы будете изменять коэффициент заполнения от 0 до 255, чтобы увеличить яркость светодиода.
А затем — от 255 до 0, чтобы уменьшить яркость.
Чтобы установить яркость светодиода, вам просто нужно использовать функцию ledcWrite(), которая принимает в качестве аргументов канал, генерирующий сигнал, и коэффициент заполнения.
Поскольку мы используем 8-битное разрешение, рабочий цикл будет контролироваться с использованием значения от 0 до 255. Обратите внимание, что в функции ledcWrite() мы используем канал, генерирующий сигнал, а не GPIO.
Тестирование Example
Загрузите код в ваш ESP32. Убедитесь, что вы выбрали правильную плату и COM-порт. Посмотрите на свою схему. У вас должен быть светодиод-диммер, который увеличивает и уменьшает яркость.
Проект 4 ESP32 PIR датчик движения
В этом проекте показано, как обнаружить движение с помощью ESP32, используя датчик движения PIR. Зуммер подаст звуковой сигнал при обнаружении движения и отключит сигнал тревоги, если в течение заданного времени (например, 4 секунды) движение не будет обнаружено.
Как работает датчик движения HC-SR501
.
Принцип работы датчика HC-SR501 основан на изменении инфракрасного излучения на движущемся объекте. Чтобы датчик HC-SR501 обнаружил объект, он должен соответствовать двум требованиям:
- Объект излучает инфракрасное излучение.
- Объект движется или трясется
Так:
Если объект излучает инфракрасный луч, но не движется (например, человек стоит на месте, не двигаясь), то датчик его не обнаруживает.
Если объект движется, но НЕ излучает инфракрасный луч (например, робот или транспортное средство), он НЕ обнаруживается датчиком.
Представляем таймеры
В этом бывшемample мы также представим таймеры. Мы хотим, чтобы светодиод оставался включенным в течение предопределенного количества секунд после обнаружения движения. Вместо использования функции delay(), которая блокирует ваш код и не позволяет вам делать что-либо еще в течение определенного количества секунд, мы должны использовать таймер.
Функция delay()
Вы должны быть знакомы с функцией delay(), поскольку она широко используется. Эта функция довольно проста в использовании. Она принимает одно целое число в качестве аргумента.
Это число представляет собой время в миллисекундах, которое программе приходится ждать, прежде чем перейти к следующей строке кода.
Когда вы делаете delay(1000), ваша программа останавливается на этой строке на 1 секунду.
delay() — это блокирующая функция. Блокирующие функции не позволяют программе делать что-либо еще, пока не будет завершена данная конкретная задача. Если вам нужно, чтобы несколько задач выполнялись одновременно, вы не можете использовать delay().
Для большинства проектов следует избегать использования задержек и вместо этого использовать таймеры.
Функция millis()
Используя функцию millis(), вы можете вернуть количество миллисекунд, прошедших с момента первого запуска программы.
Почему эта функция полезна? Потому что, используя немного математики, вы можете легко проверить, сколько времени прошло, не блокируя свой код.
Требуемые детали
Для выполнения этого руководства вам понадобятся следующие детали:
- Плата ESP32 DEVKIT V1
- Датчик движения PIR (HC-SR501)
- Активный зуммер
- Провода-перемычки
- Макетная плата
Схема
Примечание: Рабочий томtage HC-SR501 составляет 5 В. Для питания используйте вывод Vin.
Код
Прежде чем продолжить этот урок, вам следует установить дополнение ESP32 в Arduino IDE. Следуйте одному из следующих уроков, чтобы установить ESP32 в Arduino IDE, если вы еще этого не сделали. (Если вы уже сделали этот шаг, вы можете перейти к следующему шагу.)
Установка дополнения ESP32 в Arduino IDE
Откройте код Project_4_ESP32_PIR_Motion_Sensor.ino в среде разработки Arduino.
Демонстрация
Загрузите код на плату ESP32. Убедитесь, что выбраны правильная плата и COM-порт.Справочные шаги по загрузке кода.
Откройте последовательный монитор со скоростью передачи данных 115200 бод.
Проведите рукой перед датчиком PIR. Зуммер должен включиться, а на последовательном мониторе должно появиться сообщение «Обнаружено движение! Сигнализация зуммера».
Через 4 секунды зуммер должен выключиться.
Проект 5 коммутатор ESP32 Web Сервер
В этом проекте вы создадите автономный web сервер с ESP32, который управляет выходами (два светодиода) с помощью среды программирования Arduino IDE. web сервер мобилен и доступен с любого устройства, как браузер в локальной сети. Мы покажем вам, как создать web сервер и как работает код шаг за шагом.
Проект оконченview
Прежде чем перейти непосредственно к проекту, важно обрисовать в общих чертах, что мы web сервер подойдет, чтобы было легче выполнять дальнейшие шаги.
- The web Сервер, который вы создадите, управляет двумя светодиодами, подключенными к ESP32 GPIO 26 и GPIO 27;
- Вы можете получить доступ к ESP32 web серверу, введя IP-адрес ESP32 в браузере в локальной сети;
- Нажимая кнопки на вашем web сервер вы можете мгновенно изменить состояние каждого светодиода.
Требуемые детали
Для этого урока вам понадобятся следующие детали:
- Плата ESP32 DEVKIT V1
- 2x 5 мм светодиода
- 2x резистор 200 Ом
- Макетная плата
- Провода-перемычки
Схема
Начните со сборки схемы. Подключите два светодиода к ESP32, как показано на следующей принципиальной схеме – один светодиод подключен к GPIO 26, а другой к GPIO 27.
Примечание: Мы используем плату ESP32 DEVKIT DOIT с 36 контактами. Перед сборкой схемы обязательно проверьте распиновку используемой платы.
Код
Здесь мы приводим код, который создает ESP32 web сервер. Откройте код Project_5_ESP32_Switch _Web_Server.ino в arduino IDE, но пока не загружайте его. Вам нужно внести некоторые изменения, чтобы он заработал у вас.
Мы будем программировать ESP32 с помощью Arduino IDE, поэтому перед продолжением убедитесь, что у вас установлено дополнение ESP32: (Если вы уже выполнили этот шаг, вы можете перейти к следующему шагу.)
Установка дополнения ESP32 в Arduino IDE
Настройка сетевых учетных данных
Вам необходимо изменить следующие строки с вашими сетевыми учетными данными: SSID и пароль. Код хорошо прокомментирован, где вы должны внести изменения.
Загрузка кода
Теперь вы можете загрузить код и web сервер заработает сразу же.
Чтобы загрузить код в ESP32, выполните следующие действия:
- Подключите плату ESP32 к компьютеру;
- В Arduino IDE выберите свою плату в меню Инструменты > Плата (в нашем случае мы используем плату ESP32 DEVKIT DOIT);

- Выберите COM-порт в меню Инструменты > Порт.

- Нажмите кнопку «Загрузить» в среде Arduino IDE и подождите несколько секунд, пока код скомпилируется и загрузится на вашу плату.

- Дождитесь сообщения «Загрузка завершена».

Поиск IP-адреса ESP
После загрузки кода откройте последовательный монитор на скорости передачи данных 115200 бод.
Нажмите кнопку ESP32 EN (сброс). ESP32 подключается к Wi-Fi и выводит IP-адрес ESP на Serial Monitor. Скопируйте этот IP-адрес, так как он вам понадобится для доступа к ESP32 web сервер.
Доступ к Web Сервер
Чтобы получить доступ к web сервер, откройте браузер, вставьте IP-адрес ESP32, и вы увидите следующую страницу.
Примечание: Ваш браузер и ESP32 должны быть подключены к одной и той же локальной сети.
Если вы посмотрите на Serial Monitor, вы увидите, что происходит на заднем плане. ESP получает HTTP-запрос от нового клиента (в данном случае, вашего браузера).
Вы также можете увидеть другую информацию о HTTP-запросе.
Демонстрация
Теперь вы можете проверить, если ваш web Сервер работает нормально. Нажмите кнопки для управления светодиодами.
В то же время вы можете взглянуть на Serial Monitor, чтобы увидеть, что происходит в фоновом режиме. Напримерample, когда вы нажимаете кнопку, чтобы включить GPIO 26, ESP32 получает запрос на /26/on URL.
Когда ESP32 получает этот запрос, он включает светодиод, подключенный к GPIO 26, и обновляет свое состояние на web страница.
Аналогичным образом работает кнопка для GPIO 27. Проверьте, что она работает правильно.
Как работает код
В этом разделе мы более подробно рассмотрим код и увидим, как он работает.
Первое, что вам нужно сделать, это включить библиотеку WiFi.
Как упоминалось ранее, вам необходимо вставить свой ssid и пароль в следующие строки внутри двойных кавычек.
Затем вы устанавливаете свой web сервер к порту 80.
Следующая строка создает переменную для хранения заголовка HTTP-запроса:
Далее вы создаете вспомогательные переменные для хранения текущего состояния ваших выходов. Если вы хотите добавить больше выходов и сохранить их состояние, вам нужно создать больше переменных.
Вам также необходимо назначить GPIO каждому из ваших выходов. Здесь мы используем GPIO 26 и GPIO 27. Вы можете использовать любые другие подходящие GPIO.
настраивать()
Теперь перейдем к настройке(). Сначала мы запускаем последовательную связь со скоростью 115200 бод для целей отладки.
Вы также определяете свои GPIO как ВЫХОДЫ и устанавливаете их на НИЗКИЙ уровень.
Следующие строки начинают соединение Wi-Fi с помощью WiFi.begin(ssid, password), ждут успешного соединения и выводят IP-адрес ESP в Serial Monitor.
петля()
В цикле loop() мы программируем, что происходит, когда новый клиент устанавливает соединение с web сервер.
ESP32 всегда прослушивает входящие клиенты с помощью следующей строки:
При получении запроса от клиента мы сохраним входящие данные. Следующий цикл while будет работать до тех пор, пока клиент остается подключенным. Мы не рекомендуем изменять следующую часть кода, если вы точно не знаете, что делаете.

Следующий раздел операторов if и else проверяет, какая кнопка была нажата в вашем web странице, и управляет выходами соответственно. Как мы видели ранее, мы делаем запрос на разных URLв зависимости от нажатой кнопки.
Напримерample, если вы нажали кнопку GPIO 26 ON, ESP32 получает запрос на /26/ON URL (мы можем видеть эту информацию в заголовке HTTP на Serial Monitor). Итак, мы можем проверить, содержит ли заголовок выражение GET /26/on. Если он содержит, мы меняем переменную output26state на ON, и ESP32 включает светодиод.
Это работает аналогично для других кнопок. Так что, если вы хотите добавить больше выходов, вам следует изменить эту часть кода, чтобы включить их.
Отображение HTML web страница
Следующее, что вам нужно сделать, это создать web страница. ESP32 отправит ответ вашему браузеру с некоторым HTML-кодом для построения web страница.
The web страница отправляется клиенту с помощью этого выражения client.println(). Вам следует ввести то, что вы хотите отправить клиенту, в качестве аргумента.
Первое, что мы должны отправить, — это всегда следующая строка, которая указывает, что мы отправляем HTML.
Затем следующая строка делает web страница адаптивна в любом web браузер.
А следующее используется для предотвращения запросов на фавикон. – Вам не нужно беспокоиться об этой строке.![]()
Укладка Web Страница
Далее у нас есть текст CSS для оформления кнопок и web внешний вид страницы.
Мы выбираем шрифт Helvetica, определяем, какой контент будет отображаться в виде блока и выравниваться по центру.
Мы стилизуем наши кнопки цветом #4CAF50, без рамки, текстом белого цвета и с этим отступом: 16px 40px. Мы также устанавливаем text-decoration на none, определяем размер шрифта, поле и курсор на указатель.
Мы также определяем стиль для второй кнопки, со всеми свойствами кнопки, которую мы определили ранее, но с другим цветом. Это будет стиль для кнопки выключения.
Установка Web Заголовок первой страницы
В следующей строке вы можете задать первый заголовок вашего web страница. Здесь у нас есть «ESP32 Web Сервер», но вы можете изменить этот текст на любой другой по вашему желанию.
Отображение кнопок и соответствующего состояния
Затем вы пишете абзац для отображения текущего состояния GPIO 26. Как видите, мы используем переменную output26State, чтобы состояние обновлялось мгновенно при изменении этой переменной.
Затем мы отображаем кнопку включения или выключения в зависимости от текущего состояния GPIO. Если текущее состояние GPIO выключено, мы отображаем кнопку ВКЛ, если нет, мы отображаем кнопку ВЫКЛ.
Мы используем ту же процедуру для GPIO 27.
Закрытие соединения
Наконец, когда ответ заканчивается, мы очищаем переменную заголовка и останавливаем соединение с клиентом с помощью client.stop().
Подведение итогов
В этом уроке мы показали вам, как построить web сервер с ESP32. Мы показали вам простой примерampфайл, который управляет двумя светодиодами, но идея состоит в том, чтобы заменить эти светодиоды реле или любым другим выходом, которым вы хотите управлять.
Проект 6 RGB светодиодов Web Сервер
В этом проекте мы покажем вам, как удаленно управлять RGB-светодиодом с помощью платы ESP32, используя web сервер с палитрой цветов.
Проект оконченview
Прежде чем начать, давайте посмотрим, как работает этот проект:
- ESP32 web сервер отображает палитру цветов.
- Когда вы выбираете цвет, ваш браузер делает запрос на URL содержащий параметры R, G и B выбранного цвета.
- Ваш ESP32 получает запрос и разделяет значение для каждого параметра цвета.
- Затем он отправляет ШИМ-сигнал с соответствующим значением на GPIO, которые управляют RGB-светодиодом.
Как работают RGB-светодиоды?
В светодиоде RGB с общим катодом все три светодиода имеют общее отрицательное соединение (катод). Все светодиоды, входящие в комплект, являются светодиодами RGB с общим катодом.
Как создать разные цвета?
С помощью RGB-светодиода вы, конечно, можете создавать красный, зеленый и синий свет, а настраивая интенсивность каждого светодиода, вы можете создавать и другие цвета.
Напримерample, чтобы получить чисто синий свет, вы бы установили синий светодиод на максимальную интенсивность, а зеленый и красный светодиоды на минимальную интенсивность. Для белого света вы бы установили все три светодиода на максимальную интенсивность.
Смешивание цветов
Для получения других цветов можно комбинировать три цвета с разной интенсивностью. Для регулировки интенсивности каждого светодиода можно использовать сигнал ШИМ.
Поскольку светодиоды расположены очень близко друг к другу, наши глаза видят результат сочетания цветов, а не три цвета по отдельности.
Чтобы получить представление о том, как комбинировать цвета, взгляните на следующую таблицу.
Это самая простая таблица смешивания цветов, но она дает вам представление о том, как она работает и как получать разные цвета.
Требуемые детали
Для этого проекта вам понадобятся следующие детали:
- Плата ESP32 DEVKIT V1
- RGB-светодиод
- 3x резистора по 220 Ом
- Провода-перемычки
- Макетная плата
Схема
Код
Мы будем программировать ESP32 с помощью Arduino IDE, поэтому перед продолжением убедитесь, что у вас установлено дополнение ESP32: (Если вы уже выполнили этот шаг, вы можете перейти к следующему шагу.)
- Установка дополнения ESP32 в Arduino IDE
После сборки схемы откройте код
Проект_6_RGB_LED_Web_Server.ino в среде разработки Arduino.
Перед загрузкой кода не забудьте указать свои сетевые учетные данные, чтобы ESP мог подключиться к вашей локальной сети.
Как работает код
Эскиз ESP32 использует библиотеку WiFi.h.
В следующих строках определяются строковые переменные для хранения параметров R, G и B из запроса.
Следующие четыре переменные впоследствии используются для декодирования HTTP-запроса.
Создайте три переменные для GPIO, которые будут управлять параметрами полосы R, G и B. В этом случае мы используем GPIO 13, GPIO 12 и GPIO 14.
Эти GPIO должны выводить сигналы PWM, поэтому нам нужно сначала настроить свойства PWM. Установите частоту сигнала PWM на 5000 Гц. Затем свяжите канал PWM для каждого цвета
И наконец, установите разрешение каналов ШИМ на 8 бит.
В setup() назначьте свойства ШИМ каналам ШИМ
Подключите каналы ШИМ к соответствующим GPIO
Следующий фрагмент кода отображает палитру цветов в вашем web страницу и делает запрос на основе выбранного вами цвета.![]()

При выборе цвета вы получаете запрос следующего формата.![]()
Итак, нам нужно разделить эту строку, чтобы получить параметры R, G и B. Параметры сохраняются в переменных redString, greenString и blueString и могут иметь значения от 0 до 255.
Для управления полосой с помощью ESP32 используйте функцию ledcWrite() для генерации сигналов ШИМ со значениями, декодированными из HTTP запрос.
Примечание: узнайте больше о ШИМ с ESP32: Проект 3 ESP32 ШИМ (аналоговый выход)
Для управления полосой с помощью ESP8266 нам просто нужно использовать
функция analogWrite() для генерации ШИМ-сигналов со значениями, декодированными из запроса HTPP.
analogWrite(redPin, redString.toInt());
analogWrite(greenPin, greenString.toInt());
analogWrite(bluePin, blueString.toInt())
Поскольку мы получаем значения в строковой переменной, нам необходимо преобразовать их в целые числа с помощью метода toInt().
Демонстрация
После ввода сетевых учетных данных выберите правильную плату и COM-порт и загрузите код на ESP32. Шаги по загрузке кода.
После загрузки откройте Serial Monitor на скорости 115200 бод и нажмите кнопку ESP Enable/Reset. Вы должны получить IP-адрес платы.
Откройте браузер и введите IP-адрес ESP. Теперь используйте палитру цветов, чтобы выбрать цвет для RGB-светодиода.
Затем вам нужно нажать кнопку «Изменить цвет», чтобы цвет вступил в силу.
Чтобы выключить RGB-светодиод, выберите черный цвет.
Самые яркие цвета (в верхней части палитры цветов) дадут наилучшие результаты.
Проект 7 Реле ESP32 Web Сервер
Использование реле с ESP32 — отличный способ удаленного управления бытовыми приборами переменного тока. В этом руководстве объясняется, как управлять релейным модулем с помощью ESP32.
Мы рассмотрим, как работает релейный модуль, как подключить реле к ESP32 и построить web сервер для удаленного управления реле.
Знакомство с реле
Реле — это электрически управляемый переключатель, и как любой другой переключатель, его можно включать и выключать, пропуская ток или нет. Им можно управлять с помощью низкого уровня громкости.tages, как 3.3 В, обеспечиваемые ESP32 GPIO, и позволяет нам контролировать высокую громкостьtagнапример 12 В, 24 В или напряжение сетиtage (230 В в Европе и 120 В в США).
С левой стороны расположены два комплекта по три розетки для подключения высоковольтныхtages, а штырьки на правой стороне (низкий уровень громкости)tagд) подключиться к GPIO ESP32.
Объем сетиtage Подключения
Релейный модуль, показанный на предыдущей фотографии, имеет два разъема, каждый с тремя гнездами: общий (COM), нормально замкнутый (NC) и нормально разомкнутый (NO).
- COM: подключите ток, которым вы хотите управлять (громкость сети)tagд).
- NC (нормально замкнутый): нормально замкнутая конфигурация используется, когда вы хотите, чтобы реле было замкнуто по умолчанию. NC — это контакты COM, которые подключены, что означает, что ток течет, пока вы не отправите сигнал с ESP32 на модуль реле, чтобы разомкнуть цепь и остановить ток.
- NO (нормально разомкнутый): нормально разомкнутая конфигурация работает наоборот: между контактами NO и COM нет соединения, поэтому цепь разорвана, если вы не отправите сигнал с ESP32 на замыкание цепи.
Контрольные контакты
Низкий уровень громкостиtagСторона e имеет набор из четырех контактов и набор из трех контактов. Первый набор состоит из VCC и GND для питания модуля, а также входа 1 (IN1) и входа 2 (IN2) для управления нижним и верхним реле соответственно.
Если у вашего релейного модуля только один канал, у вас будет только один входной контакт. Если у вас четыре канала, у вас будет четыре входных контакта и т. д.
Сигнал, который вы посылаете на контакты IN, определяет, активно реле или нет. Реле срабатывает, когда входной сигнал опускается ниже примерно 2 В. Это означает, что у вас будут следующие сценарии:
- Нормально закрытая конфигурация (NC):
- ВЫСОКИЙ сигнал – ток течет
- НИЗКИЙ сигнал – ток не течет
- Нормально открытая конфигурация (НО):
- ВЫСОКИЙ сигнал – ток не течет
- НИЗКИЙ сигнал – ток течет
Нормально замкнутую конфигурацию следует использовать, когда ток должен течь большую часть времени, и вы хотите останавливать его только изредка.
Используйте нормально открытую конфигурацию, когда вы хотите, чтобы ток протекал время от времени (например,ampле, включи всеamp изредка).
Выбор источника питания
Второй набор контактов состоит из контактов GND, VCC и JD-VCC.
Вывод JD-VCC питает электромагнит реле. Обратите внимание, что модуль имеет перемычку, соединяющую выводы VCC и JD-VCC; показанный здесь желтый, но ваш может быть другого цвета.
При установленном колпачке перемычки контакты VCC и JD-VCC соединены. Это означает, что электромагнит реле напрямую питается от контакта питания ESP32, поэтому модуль реле и цепи ESP32 физически не изолированы друг от друга.
Без перемычки вам необходимо обеспечить независимый источник питания для питания электромагнита реле через контакт JD-VCC. Такая конфигурация физически изолирует реле от ESP32 с помощью встроенной оптопары модуля, что предотвращает повреждение ESP32 в случае электрических скачков.
Схема
Предупреждение: Использование большого объемаtagЭлектропитание может привести к серьезным травмам.
Поэтому вместо светодиодов с высоким напряжением питания используются светодиоды диаметром 5 мм.tage лампочки в эксперименте. Если вы не знакомы с сетевым voltage попросите кого-нибудь помочь вам. При программировании ESP или подключении вашей схемы убедитесь, что все отключено от сети voltage.
Установка библиотеки для ESP32
Чтобы построить это web сервер, мы используем ESPAsyncWebСерверная библиотека и библиотека AsyncTCP.
Установка ESPAsyncWebБиблиотека сервера
Выполните следующие шаги для установки ESPAsyncWebСервер библиотека:
- Нажмите здесь, чтобы загрузить ESPAsyncWebБиблиотека сервера. У вас должно быть
.zip-папка в папке «Загрузки» - Распакуйте папку .zip и вы должны получить ESPAsync.WebПапка Server-master
- Переименуйте вашу папку из ESPAsyncWebСервер-мастер для ESPAsyncWebСервер
- Переместить ESPAsyncWebПапку Server в папку с библиотеками установки Arduino IDE.
Кроме того, в среде разработки Arduino вы можете перейти в меню Sketch > Include.
Библиотека > Добавить библиотеку .ZIP… и выберите библиотеку, которую вы только что скачали.
Установка библиотеки AsyncTCP для ESP32
The ESPAsyncWebСервер библиотека требует АсинхронныйTCP библиотека для работы. Следуйте
следующие шаги по установке этой библиотеки:
- Нажмите здесь, чтобы загрузить библиотеку AsyncTCP. У вас должна быть папка .zip в папке Downloads
- Распакуйте папку .zip и вы должны получить папку AsyncTCP-master.
1. Переименуйте папку из AsyncTCP-master в AsyncTCP
3. Переместите папку AsyncTCP в папку с библиотеками установки Arduino IDE.
4. Наконец, снова откройте Arduino IDE.
Кроме того, в среде разработки Arduino вы можете перейти в меню Sketch > Include.
Библиотека > Добавить библиотеку .ZIP… и выберите библиотеку, которую вы только что скачали.
Код
Мы будем программировать ESP32 с помощью Arduino IDE, поэтому перед продолжением убедитесь, что у вас установлено дополнение ESP32: (Если вы уже выполнили этот шаг, вы можете перейти к следующему шагу.)
Установка дополнения ESP32 в Arduino IDE
После установки необходимых библиотек, открываем код Project_7_ESP32_Relay_Web_Server.ino в среде разработки Arduino.
Перед загрузкой кода не забудьте указать свои сетевые учетные данные, чтобы ESP мог подключиться к вашей локальной сети.
Демонстрация
После внесения необходимых изменений загрузите код в ESP32. Шаги по загрузке кода.
Откройте последовательный монитор на скорости передачи данных 115200 бод и нажмите кнопку ESP32 EN, чтобы получить его IP-адрес. Затем откройте браузер в локальной сети и введите IP-адрес ESP32, чтобы получить доступ к web сервер.
Откройте последовательный монитор на скорости передачи данных 115200 бод и нажмите кнопку ESP32 EN, чтобы получить его IP-адрес. Затем откройте браузер в локальной сети и введите IP-адрес ESP32, чтобы получить доступ к web сервер.
Примечание: Ваш браузер и ESP32 должны быть подключены к одной и той же локальной сети.
У вас должно получиться что-то вроде этого, имея столько же кнопок, сколько реле вы определили в своем коде.
Теперь вы можете использовать кнопки для управления реле с помощью смартфона.
Project_8_Output_State_Synchronization_ Web_Сервер
В этом проекте показано, как управлять выходами ESP32 или ESP8266 с помощью web сервер и физическая кнопка одновременно. Состояние выхода обновляется на web страница, изменяется ли она с помощью физической кнопки или web сервер.
Проект оконченview
Давайте кратко рассмотрим, как работает проект.
ESP32 или ESP8266 размещает web сервер, позволяющий контролировать состояние вывода;
- Текущее состояние выхода отображается на web сервер;
- ESP также подключен к физической кнопке, которая управляет тем же выходом;
- Если вы измените состояние выхода с помощью физической кнопки, его текущее состояние также обновится на web сервер.
Подводя итог, можно сказать, что этот проект позволяет вам управлять тем же самым выходом с помощью web сервер и кнопка одновременно. Всякий раз, когда выходное состояние изменяется, web сервер обновлен.
Требуемые детали
Вот список деталей, которые вам понадобятся для сборки схемы:
- Плата ESP32 DEVKIT V1
- 5 мм светодиод
- Резистор 220 Ом
- Нажать кнопку
- Резистор 10кОм
- Макетная плата
- Провода-перемычки
Схема
Установка библиотеки для ESP32
Чтобы построить это web сервер, мы используем ESPAsyncWebБиблиотека сервера и библиотека AsyncTCP. (Если вы уже выполнили этот шаг, вы можете перейти к следующему шагу.)
Установка ESPAsyncWebБиблиотека сервера
Выполните следующие шаги для установки ESPAsync.WebБиблиотека сервера:
- Нажмите здесь, чтобы загрузить ESPAsyncWebБиблиотека сервера. У вас должно быть
.zip-папка в папке «Загрузки» - Распакуйте папку .zip и вы должны получить ESPAsync.WebПапка Server-master
- Переименуйте вашу папку из ESPAsyncWebСервер-мастер для ESPAsyncWebСервер
- Переместить ESPAsyncWebПапку Server в папку с библиотеками установки Arduino IDE.
Кроме того, в среде разработки Arduino вы можете перейти в меню Sketch > Include.
Библиотека > Добавить библиотеку .ZIP… и выберите библиотеку, которую вы только что скачали.
Установка библиотеки AsyncTCP для ESP32
ESPAsyncWebБиблиотека сервера требует для работы библиотеки AsyncTCP. Выполните следующие шаги для установки этой библиотеки:
- Нажмите здесь, чтобы загрузить библиотеку AsyncTCP. У вас должна быть папка .zip в папке Downloads
- Распакуйте папку .zip и вы должны получить папку AsyncTCP-master.
- Переименуйте папку из AsyncTCP-master в AsyncTCP.
- Переместите папку AsyncTCP в папку с библиотеками установки Arduino IDE.
- Наконец, снова откройте Arduino IDE.
Кроме того, в среде разработки Arduino вы можете перейти в меню Sketch > Include.
Библиотека > Добавить библиотеку .ZIP… и выберите библиотеку, которую вы только что скачали.
Код
Мы будем программировать ESP32 с помощью Arduino IDE, поэтому перед продолжением убедитесь, что у вас установлено дополнение ESP32: (Если вы уже выполнили этот шаг, вы можете перейти к следующему шагу.)
Установка дополнения ESP32 в Arduino IDE
После установки необходимых библиотек, откройте код
Project_8_Output_State_Synchronization_Web_Server.ino в среде разработки Arduino.
Перед загрузкой кода не забудьте указать свои сетевые учетные данные, чтобы ESP мог подключиться к вашей локальной сети.
Как работает код
Состояние кнопки и состояние выхода
Переменная ledState хранит состояние выходного светодиода. По умолчанию, когда web сервер запускается, он НИЗКИЙ.![]()
Параметры buttonState и lastButtonState используются для определения того, была ли нажата кнопка или нет.
Кнопка (web сервер)
Мы не включили HTML для создания кнопки в переменную index_html.
Это потому, что мы хотим иметь возможность изменять его в зависимости от текущего состояния светодиода, которое также можно изменить с помощью кнопки.
Итак, мы создали заполнитель для кнопки %BUTTONPLACEHOLDER%, который будет заменен HTML-текстом для создания кнопки позже в коде (это делается в функции processor()).
процессор()
Функция процессора() заменяет любые заполнители в тексте HTML фактическими значениями. Сначала она проверяет, содержит ли текст HTML какие-либо
заполнители %BUTTONPLACEHOLDER%.
Затем вызываем функцию outputState(), которая возвращает текущее состояние вывода. Сохраняем его в переменной outputStateValue.
После этого используйте это значение для создания HTML-текста для отображения кнопки с правильным состоянием:
HTTP GET-запрос на изменение состояния вывода (JavaScript)
При нажатии кнопки вызывается функция toggleCheckbox(). Эта функция сделает запрос на разные URLs для включения или выключения светодиода.
Чтобы включить светодиод, он делает запрос на /update?state=1 URL:
В противном случае он делает запрос на /update?state=0 URL.
HTTP GET-запрос на обновление состояния (JavaScript)
Чтобы поддерживать состояние выходных данных в актуальном состоянии web сервер, мы вызываем следующую функцию, которая делает новый запрос на /state URL каждую секунду.
Обработка запросов
Затем нам нужно обработать то, что происходит, когда ESP32 или ESP8266 получает запросы на эти URLs.
При получении запроса на корневом сервере /URL, мы отправляем HTML-страницу, а также процессор.![]()
Следующие строки проверяют, получили ли вы запрос на /update?state=1 или /update?state=0 URL и соответствующим образом изменяет ledState.
При получении запроса на /state URL, мы отправляем текущее состояние выхода:
петля()
В цикле loop() мы устраняем дребезг кнопки и включаем или выключаем светодиод в зависимости от значения ledState. переменная.
Демонстрация
Загрузите код на плату ESP32. Шаги по загрузке кода.
Затем откройте последовательный монитор со скоростью передачи данных 115200 бод. Нажмите кнопку EN/RST на плате, чтобы получить его IP-адрес.
Откройте браузер в локальной сети и введите IP-адрес ESP. У вас должен быть доступ к web сервер, как показано ниже.
Примечание: Ваш браузер и ESP32 должны быть подключены к одной и той же локальной сети.
Вы можете переключить кнопку на web сервер для включения светодиода.
Вы также можете управлять этим же светодиодом с помощью физической кнопки. Его состояние всегда будет автоматически обновляться на web сервер.
Проект 9 ESP32 DHT11 Web Сервер
В этом проекте вы узнаете, как создать асинхронный ESP32 web сервер с DHT11, отображающий температуру и влажность с помощью Arduino IDE.
Предпосылки
The web Сервер, который мы построим, автоматически обновляет показания без необходимости обновления web страница.
В этом проекте вы узнаете:
- Как считывать показания температуры и влажности с датчиков DHT;
- Построить асинхронный web сервер с использованием ESPAsyncWebБиблиотека сервера;
- Автоматическое обновление показаний датчика без необходимости обновления web страница.
Асинхронный Web Сервер
Чтобы построить web сервер мы будем использовать ESPAsyncWebБиблиотека сервера который обеспечивает простой способ создания асинхронного web Сервер. Создание асинхронного web сервер имеет несколько преимуществtagкак указано на странице библиотеки GitHub, например:
- «Обрабатывать более одного соединения одновременно»;
- «Когда вы отправляете ответ, вы немедленно готовы обрабатывать другие соединения, в то время как сервер занимается отправкой ответа в фоновом режиме»;
- «Простой механизм обработки шаблонов для работы с шаблонами»;
Требуемые детали
Для выполнения этого урока вам понадобятся следующие детали:
- Плата разработки ESP32
- Модуль DHT11
- Макетная плата
- Провода-перемычки
Схема
Установка библиотек
Для этого проекта вам необходимо установить несколько библиотек:
- The ДГТ и Унифицированный датчик Adafruit Библиотеки драйверов для считывания с датчика DHT.
- ESPAsyncWebСервер и Асинхронный TCP библиотеки для построения асинхронных web сервер.
Для установки этих библиотек следуйте следующим инструкциям:
Установка библиотеки датчиков DHT
Для считывания данных с датчика DHT с помощью Arduino IDE необходимо установить Библиотека датчиков DHT. Для установки библиотеки выполните следующие шаги.
- Нажмите здесь, чтобы загрузить библиотеку DHT Sensor. У вас должна быть папка .zip в папке Downloads
- Распакуйте папку .zip, и вы должны получить папку DHT-sensor-library-master.
- Переименуйте папку из DHT-sensor-library-master в DHT_sensor
- Переместите папку DHT_sensor в папку с библиотеками установки Arduino IDE.
- Наконец, снова откройте Arduino IDE.
Установка унифицированного драйвера датчика Adafruit
Вам также необходимо установить Библиотека драйверов унифицированных датчиков Adafruit для работы с датчиком DHT. Выполните следующие шаги для установки библиотеки.
- Нажмите здесь, чтобы загрузить библиотеку Adafruit Unified Sensor. У вас должна быть папка .zip в папке Downloads
- Распакуйте папку .zip, и вы должны получить папку Adafruit_sensor-master.
- Переименуйте вашу папку из Adafruit_sensor-master в Adafruit_sensor
- Переместите папку Adafruit_sensor в папку с библиотеками установки Arduino IDE.
- Наконец, снова откройте Arduino IDE.
Установка ESPAsyncWebБиблиотека сервера
Выполните следующие шаги для установки ESPAsyncWebСервер библиотека:
- Нажмите здесь, чтобы загрузить ESPAsyncWebБиблиотека сервера. У вас должно быть
.zip-папка в папке «Загрузки» - Распакуйте .zip-папку, и вы должны
получить ESPAsyncWebПапка Server-master - Переименуйте вашу папку из ESPAsyncWebСервер-мастер для ESPAsyncWebСервер
- Переместить ESPAsyncWebПапку Server в папку с библиотеками установки Arduino IDE.
Установка библиотеки Async TCP для ESP32
The ESPAsyncWebСервер библиотека требует АсинхронныйTCP Библиотека для работы. Выполните следующие шаги для установки этой библиотеки:
- Нажмите здесь, чтобы загрузить библиотеку AsyncTCP. У вас должна быть папка .zip в папке Downloads
- Распакуйте папку .zip и вы должны получить папку AsyncTCP-master.
- Переименуйте папку из AsyncTCP-master в AsyncTCP.
- Переместите папку AsyncTCP в папку с библиотеками установки Arduino IDE.
- Наконец, снова откройте Arduino IDE.
Код
Мы будем программировать ESP32 с помощью Arduino IDE, поэтому перед продолжением убедитесь, что у вас установлено дополнение ESP32: (Если вы уже выполнили этот шаг, вы можете перейти к следующему шагу.)
Установка дополнения ESP32 в Arduino IDE
После установки необходимых библиотек, откройте код
Проект_9_ESP32_DHT11_Web_Server.ino в среде разработки Arduino.
Перед загрузкой кода не забудьте указать свои сетевые учетные данные, чтобы ESP мог подключиться к вашей локальной сети.
Как работает код
В следующих параграфах мы объясним, как работает код. Продолжайте читать, если хотите узнать больше, или перейдите в раздел Демонстрация, чтобы увидеть конечный результат.
Импорт библиотек
Сначала импортируйте необходимые библиотеки. WiFi, ESPAsyncWebДля построения необходимы сервер и ESPAsyncTCP. web сервер. Библиотеки Adafruit_Sensor и DHT необходимы для чтения с датчиков DHT11 или DHT22.![]()
Определение переменных
Определите GPIO, к которому подключен вывод данных DHT. В этом случае он подключен к GPIO 4.
Затем выберите тип датчика DHT, который вы используете. В нашем example, мы используем DHT22. Если вы используете другой тип, вам просто нужно раскомментировать ваш датчик и закомментировать все остальные.![]()
Создайте объект DHT с типом и контактом, которые мы определили ранее.
Создать асинхронныйWebОбъект сервера на порту 80.
Функции считывания температуры и влажности
Мы создали две функции: одну для считывания температуры Мы создали две функции: одну для считывания температуры (readDHTTemperature()) и другую для считывания влажности (readDHTHumidity()).
Получить показания датчика так же просто, как использовать методы readTemperature() и readHumidity() для объекта dht.
У нас также есть условие, которое возвращает два тире (–) в случае, если датчик не получает показания.
Показания возвращаются как строковый тип. Чтобы преобразовать float в строку, используйте функцию String()
По умолчанию мы считываем температуру в градусах Цельсия. Чтобы получить температуру в градусах Фаренгейта, закомментируйте температуру в градусах Цельсия и раскомментируйте температуру в градусах Фаренгейта, чтобы получить следующее:![]()
Загрузить код
Теперь загрузите код в ваш ESP32. Убедитесь, что вы выбрали правильную плату и COM-порт.Справочные шаги по загрузке кода.
После загрузки откройте Serial Monitor на скорости 115200 бод. Нажмите кнопку сброса ESP32. IP-адрес ESP32 должен быть напечатан в последовательном порту. монитор.
Демонстрация
Откройте браузер и введите IP-адрес ESP32. Ваш web сервер должен отображать последние показания датчиков.
Примечание: Ваш браузер и ESP32 должны быть подключены к одной и той же локальной сети.
Обратите внимание, что показания температуры и влажности обновляются автоматически без необходимости обновления web страница.
Project_10_ESP32_OLED_дисплей
В этом проекте показано, как использовать 0.96-дюймовый OLED-дисплей SSD1306 с ESP32 с помощью Arduino IDE.
Представляем 0.96-дюймовый OLED-дисплей
The OLED-дисплей В этом руководстве мы будем использовать модель SSD1306: одноцветный дисплей размером 0.96 дюйма и разрешением 128×64 пикселя, как показано на следующем рисунке.
Дисплей OLED не требует подсветки, что обеспечивает очень хорошую контрастность в темных условиях. Кроме того, его пиксели потребляют энергию только тогда, когда они включены, поэтому дисплей OLED потребляет меньше энергии по сравнению с другими дисплеями.
Поскольку OLED-дисплей использует протокол связи I2C, подключение очень простое. Вы можете использовать следующую таблицу в качестве справки.
| OLED-контакт | ESP32 |
| Вин | 3.3В |
| Земля | Земля |
| СКЛ | ГПИО 22 |
| ПДД | ГПИО 21 |
Схема
Установка библиотеки SSD1306 OLED – ESP32
Для управления OLED-дисплеем с помощью ESP32 доступно несколько библиотек.
В этом уроке мы будем использовать две библиотеки Adafruit: Библиотека Adafruit_SSD1306 и Библиотека Adafruit_GFX.
Для установки этих библиотек выполните следующие шаги.
- Откройте Arduino IDE и перейдите в Sketch > Include Library > Manage Libraries. Должен открыться менеджер библиотек.
- Введите «SSD1306» в поле поиска и установите библиотеку SSD1306 от Adafruit.

- После установки библиотеки SSD1306 от Adafruit введите «GFX» в поле поиска и установите библиотеку.

- После установки библиотек перезапустите Arduino IDE.
Код
После установки необходимых библиотек откройте Project_10_ESP32_OLED_Display.ino в arduino IDE. код
Мы будем программировать ESP32 с помощью Arduino IDE, поэтому перед продолжением убедитесь, что у вас установлено дополнение ESP32: (Если вы уже выполнили этот шаг, вы можете перейти к следующему шагу.)
Установка дополнения ESP32 в Arduino IDE

Как работает код
Импорт библиотек
Сначала вам нужно импортировать необходимые библиотеки. Библиотеку Wire для использования I2C и библиотеки Adafruit для записи на дисплей: Adafruit_GFX и Adafruit_SSD1306.
Инициализируйте OLED-дисплей
Затем вы определяете ширину и высоту OLED. В этом примереample, мы используем OLED-дисплей 128×64. Если вы используете другие размеры, вы можете изменить это в переменных SCREEN_WIDTH и SCREEN_HEIGHT.
Затем инициализируйте объект отображения с шириной и высотой, определенными ранее с помощью протокола связи I2C (&Wire).
Параметр (-1) означает, что у вашего OLED-дисплея нет контакта RESET. Если у вашего OLED-дисплея есть контакт RESET, его следует подключить к GPIO. В этом случае следует передать номер GPIO в качестве параметра.
В setup() инициализируйте последовательный монитор на скорости 115200 бод для целей отладки.
Инициализируйте OLED-дисплей с помощью метода begin() следующим образом:![]()
Этот фрагмент также выводит сообщение на последовательный монитор на случай, если мы не сможем подключиться к дисплею.
Если вы используете другой OLED-дисплей, вам может потребоваться изменить адрес OLED. В нашем случае адрес — 0x3C.
После инициализации дисплея добавьте двухсекундную задержку, чтобы у OLED было достаточно времени для инициализации перед выводом текста:
Очистить дисплей, установить размер шрифта, цвет и написать текст
После инициализации дисплея очистите буфер дисплея с помощью метода clearDisplay():![]()
Перед вводом текста необходимо задать размер текста, цвет и место его отображения на OLED-дисплее.
Установите размер шрифта с помощью метода setTextSize():
Установите цвет шрифта с помощью метода setTextColor():
WHITE устанавливает белый шрифт и черный фон.
Определите позицию, где начинается текст, используя метод setCursor(x,y). В этом случае мы устанавливаем текст так, чтобы он начинался с координат (0,0) – в верхнем левом углу.
Наконец, вы можете отправить текст на дисплей с помощью метода println(), как показано ниже:
Затем вам необходимо вызвать метод display(), чтобы отобразить текст на экране.![]()
Библиотека Adafruit OLED предоставляет полезные методы для легкой прокрутки текста.
- startscrollright(0x00, 0x0F): прокрутка текста слева направо
- startscrollleft(0x00, 0x0F): прокрутка текста справа налево
- startscrolldiagright(0x00, 0x07): прокрутка текста из левого нижнего угла в правый верхний угол startscrolldiagleft(0x00, 0x07): прокрутка текста из правого нижнего угла в левый верхний угол
Загрузить код
Теперь загрузите код в ESP32. Шаги по загрузке кода.
После загрузки кода на OLED-дисплее отобразится бегущая строка.

Документы/Ресурсы
![]() |
Базовый стартовый комплект LAFVIN ESP32 [pdf] Руководство по эксплуатации ESP32 Базовый стартовый комплект, ESP32, Базовый стартовый комплект, Стартовый комплект |
