ESP 32

ESP32 — это многофункциональный, недорогой и энергоэффективный микроконтроллер на базе системы-на-кристалле (SoC), разработанный компанией Espressif Systems. Он широко используется в проектах IoT (Интернета вещей) благодаря встроенным модулям Wi-Fi и Bluetooth/BLE, двухъядерному процессору и поддержке множества периферийных устройств. Ниже приведено подробное описание его характеристик, применения и экосистемы:

Основные особенности
Двухъядерный процессор: Два 32-битных ядра Xtensa LX6 (до 240 МГц), поддерживающие многозадачность (например, работу под управлением FreeRTOS).

Беспроводные интерфейсы: Wi-Fi (802.11 b/g/n): Режимы станции, точки доступа (AP) и их комбинация.

Bluetooth (Classic и BLE 4.2+): Идеален для IoT-устройств с коротким радиусом действия.

Память: 520 КБ SRAM, 448 КБ ROM (зависит от модуля).

Поддержка внешней flash/SRAM через SPI.

Периферия: GPIO (до 34 выводов), 12-битный АЦП, ЦАП, сенсоры касания, ШИМ, I2C, SPI, UART, CAN и др.

Встроенный датчик Холла, температурный сенсор (в некоторых версиях), емкостные сенсоры.

Низкое энергопотребление: Режимы сна (например, глубокий сон с потреблением ~5 мкА) для работы от батарей.

Ультранизкопотребляющий сопроцессор (ULP) для простых задач в режиме сна.

Безопасность: Защищенная загрузка, шифрование флеш-памяти, аппаратное ускорение криптографии (AES, SHA-2, RSA).

Варианты чипов: ESP32-S2 (одноядерный, USB OTG), ESP32-C3 (ядро RISC-V), ESP32-S3 (двухъядерный + векторные инструкции).

Популярные платы на базе ESP32: ESP32-DevKitC: Официальная плата от Espressif с минимальной периферией.

NodeMCU-32S: Включает USB-to-UART и поддержку Lua.

TTGO T-Display: С интегрированным OLED-экраном.

Adafruit Feather ESP32: Компактный дизайн с поддержкой батарей.

M5Stack: Модульная система с дисплеями и датчиками.

Языки/Фреймворки: Arduino IDE: Упрощает разработку с библиотеками для Wi-Fi, BLE и датчиков.

ESP-IDF (IoT Development Framework): Официальный SDK для продвинутой разработки (C/C++).

MicroPython: Среда для скриптов на Python.

PlatformIO: Кроссплатформенная IDE с поддержкой ESP32.

Библиотеки: Готовые решения для AWS IoT, MQTT, HTTP, OTA-обновлений и драйверов периферии.

Отладка: Поддержка JTAG (через ESP-Prog или сторонние инструменты).

IoT-устройства: Умные датчики (температуры, движения), носимые устройства, умные розетки.

Беспроводная связь: BLE-маяки, Wi-Fi-сети с топологией mesh, шлюзы.

Промышленная автоматизация: Удаленный мониторинг, ПЛК (программируемые логические контроллеры), связь через CAN.

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

Прототипирование: Быстрое создание прототипов для проверки концепций.

Преимущества перед ESP8266
Двухъядерный процессор для многозадачности.

Больше GPIO и периферии (сенсоры касания, CAN).

Встроенный Bluetooth/BLE.

Улучшенные функции безопасности.

Меньшее энергопотребление в режиме сна.

Сложность: Работа с RTOS или беспроводными стеками может быть сложной для новичков.

Оптимизация энергопотребления: Требует тщательной настройки для работы от батарей.

Различия в железе: Распиновка и функции отличаются у разных модулей (сверяйтесь с даташитами!).

Подготовка железа:

Подключите плату через USB и установите драйверы (CP210x или CH340).

* Если в Диспетчере оборудования на компьютере у вас не определяется устройство, то ставим драйвера!

Программная настройка:

Установите Arduino IDE или VS Code с PlatformIO. Ставим плату esp 32 и выбираем Wrover Module

Используйте примеры: WiFiScan, BLE_Server, DeepSleep.

 Давайте рассмотрим полностью рабочую систему с раздельными файлами. Суть системы кратко сводится к следующему. У нас есть устройство ESP32. В него заливается скетч, о нем далее. В итоге устройство через заданную в коде и пароль сеть WiFi обращается к URL файлы json.
 Для того чтобы изменить логику на пинах ESP, мы переходим на организованную HTML страничку, меняем и сохраняем конфигурацию, это осуществляется посредством AJAX и отработки PHP. Записывается конфигурационный файл json.
 В итоге ESP каждый установленный период времени прописанный в коде обращается к конфигурации, "забирает ее к себе", считывает и тем самым меняет логику на пинах. 

Проект работает по ссылке https://smartmatter.ru/ESP32/index.html. То есть вы можете залить код в вашу ESP и используя страницу поуправлять устройством! Не забудьте в коде ESP поставить вашу Wifi сеть и пароль.

const char* ssid = "YOUR_WIFI_SSID";
const char* password = "YOUR_WIFI_PASS";

...по факту все серверные траблы здесь уже реализованы, за счет нашего сайта!

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

 Это руководство содержит исчерпывающую информацию для аппаратного и программного подключения E-Paper дисплеев WeAct Studio разрешением 296x128 и 296x160 пикселей к микроконтроллерам семейства ESP32 с использованием высокоскоростного последовательного интерфейса SPI.

Часть 1: Аппаратное подключение (SPI)

В отличие от I²C, для работы по протоколу SPI требуется больше сигнальных линий, но обеспечивается значительно более высокая скорость передачи данных, что критически важно для обновления всего изображения на E-Paper экране.

 Как работает встроенный датчик температуры в ESP32. ESP32 имеет встроенный датчик температуры, который измеряет температуру кремниевого кристалла процессора, а не окружающей среды. Это важное различие! В первую очередь он предназначен для контроля состояния самого процессора, но не среды вокруг него. Хотя субъективно само собой можно сделать заключение и о температуре вокруг. Особенно близкие показания будут сразу после запуска или после выхода из сна, когда температура кристалла действительно близка к температуре окружающей среды.

Технические особенности:

  1. Расположение: Датчик находится внутри самого чипа ESP32

  2. Точность: Примерно ±5°C - это оценочное значение для мониторинга перегрева

  3. Диапазон: Обычно от -40°C до 125°C (теоретически)

  4. Назначение: Предназначен для контроля теплового состояния процессора, а не для точных измерений температуры воздуха

 Микроконтроллер ESP32 — это мощный инструмент для создания умных устройств. В этой статье мы разберем практический проект на его основе: регулятор мощности с визуальным интерфейсом. Устройство позволяет плавно управлять напряжением на нагрузке (например, яркостью светодиодной ленты, скоростью двигателя, температурой паяльника) с помощью двух кнопок и отображать текущую мощность на OLED-экране.

Для чего это нужно?

  • Образовательная цель: Изучение основ ШИМ, работы с периферией ESP32 (кнопки, дисплей) и создания простого пользовательского интерфейса.

  • Практическое применение: Создание диммера для светодиодов, регулятора оборотов вентилятора, управление нагревательными элементами с обратной связью.

SPI (Serial Peripheral Interface) SPI (Serial Peripheral Interface) — это синхронный последовательный интерфейс передачи данных, разработанный компанией Motorola для связи между микросхемами на короткие расстояния.

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

Основные принципы работы

SPI работает по принципу "Ведущий-Ведомый" (Master-Slave). Ведущее устройство (чаще всего это микроконтроллер) управляет обменом данными и тактирует передачу.

 Что такое SPIFFS?

SPIFFS - это файловая система для микроконтроллеров, предназначенная для работы с NOR flash памятью через SPI интерфейс. В ESP32 она используется для хранения файлов во флеш-памяти.

 Объем flash-памяти зависит от конкретной модели и производителя модуля.

Если кратко: чаще всего встречаются модули с 4 МБ или 8 МБ flash-памяти, но бывают и от 2 МБ до 16 МБ и даже больше.

Давайте разберем подробнее.

1. Встроенная (в чип) vs. Внешняя flash-память

  • ESP32 (чип, например, ESP32-D0WDQ6): Сам по себе чип ESP32 не имеет встроенной flash-памяти. Ему обязательно нужна внешняя память для хранения прошивки и данных.

  • ESP32-PICO-D4: Это исключение. Этот чип имеет встроенную flash-память объемом 4 МБ.

  • Модули ESP32 (например, ESP-WROOM-32, ESP32-DevKitC): Это готовые платы, куда чип ESP32 уже запаян вместе с необходимой внешней flash-памятью. Именно поэтому объем памяти зависит от модуля.

Итак, статья о подключении тача к esp 32. Из базового что стоит сказать, подключения можно делать так как вам условно удобно/возможно, а вот в последствии они прописываются в файле User_Setup библиотеки "TFT_eSPI.h"

Вот полная таблица подключений для ILI9341 + XPT2046 на ESP32, основанная на конфигурационном файле в моем конкретном случае:

 GPIO 0 (нулевой пин) в ESP32 играет ключевую роль при загрузке:

  • Низкий уровень (LOW, 0V) на GPIO 0 при включении переводит микроконтроллер в режим загрузки (Bootloader Mode), позволяя прошивать скетч через UART.

  • Высокий уровень (HIGH, 3.3V) — нормальный режим выполнения программы.

 AO3400 — это мощный N-канальный MOSFET с низким сопротивлением в открытом состоянии (Rds(on) = 28 мОм) и малым током утечки, идеально подходящий для отключения делителя во время сна, когда батарея подключена, а вот ESP не выполняет свои основные задачи.
 Так скажем 

Вот таблица с рекомендациями по подключению интерфейсов к ESP32, учитывая ваши требования:

Интерфейс/Устройство Рекомендуемые пины ESP32 Особенности подключения
I2C (дисплей, датчики) GPIO 21 (SDA), GPIO 22 (SCL) Подтяжка 4.7 кОм к 3.3V. Лучше использовать стандартные пины.
1-Wire (датчики температуры) GPIO 4, 5, 18 Подтяжка 4.7 кОм к 3.3V. Можно использовать несколько датчиков на одной линии.
Кнопки (4 шт.) GPIO 13, 14, 15, 34-39 (RTC) Подтяжка к GND через 10 кОм. GPIO 34-39 – только входы, без подтяжки.
LoRa E32    
→ RX GPIO 16 (RX2) UART2 (прием данных от LoRa).
→ TX GPIO 17 (TX2) UART2 (передача данных в LoRa).
→ M0 GPIO 12 Режим работы (в паре с M1). Не использовать GPIO 0, 2, 15 (проблемы при загрузке!).
→ M1 GPIO 27 Режим работы. Лучше избегать пинов с подтяжкой при старте.
→ AUX GPIO 35 (Input Only) Индикатор готовности модуля. Подтянуть к 3.3V через 10 кОм.
→ VCC 3.3V (или 5V, если модуль 5V) Проверить спецификацию модуля! Если 5V – использовать level shifter для сигнальных линий.
→ GND GND Общая земля.
Deep Sleep (TRC) GPIO 36 (VP), GPIO 39 (VN) Пробуждение по RTC-пинам (34-39) или таймеру.
SPI (резерв) GPIO 18 (SCK), 19 (MISO), 23 (MOSI), 5 (CS) Для SD-карты или других SPI-устройств.
Светодиод (индикация) GPIO 25, 26 Подключить через резистор 220 Ом.
DIP-переключатели GPIO 32, 33 Выбор режима работы (подтяжка к 3.3V через 10 кОм).
JTAG (отладка) GPIO 12-15 Если не используется – освободить.
Индикация GPIO 25 светодиод