Ёмкостный сенсор касания ESP32 (touch sensor)
Кнопку можно сделать без кнопки — медной площадкой на плате под пластиком корпуса. Касание пальца немного увеличивает ёмкость площадки, и у ESP32 есть встроенный блок, который это измеряет и даже будит чип из глубокого сна.
Обновлено Редакция GAW
Сенсор касания (capacitive touch sensor) — встроенный блок ESP32, ESP32-S2 и ESP32-S3, который измеряет ёмкость площадки, подключённой к выводу, и определяет касание. Палец рядом с площадкой увеличивает её ёмкость; блок периодически заряжает и разряжает площадку и считает, сколько циклов поместилось в заданный интервал (ESP32 TRM, разд. 31.2.4). По изменению счёта программа или аппаратный порог решают, было ли касание.
Входы ESP32
| Канал | Вывод | Канал | Вывод |
|---|---|---|---|
| T0 | GPIO4 | T5 | MTDI (GPIO12) |
| T1 | GPIO0 | T6 | MTMS (GPIO14) |
| T2 | GPIO2 | T7 | GPIO27 |
| T3 | MTDO (GPIO15) | T8 | 32K_XN (GPIO33) |
| T4 | MTCK (GPIO13) | T9 | 32K_XP (GPIO32) |
Данные — ESP32 TRM, табл. 31.2-1; номера GPIO для выводов MTDO, MTCK, MTDI, MTMS и 32K — по даташиту ESP32 (версия 5.3); распиновка — на странице ESP32. Входы T1, T2, T3 и T5 совпадают с выводами обвязки загрузки, и площадка на них не должна мешать уровням при старте. У ESP32-S2 и S3 каналов больше — до номера 14, а у ESP32-C3, C6 и H2 сенсора нет (soc_caps.h ESP-IDF v6.1).
Поколения сенсора
| Версия | Чипы | При касании | Особенности |
|---|---|---|---|
| V1 | ESP32 | значение уменьшается | — |
| V2 | ESP32-S2, S3 | значение растёт | фильтр, базовая линия, защита от воды, приближение |
| V3 | ESP32-P4 и новые | — | скачки частоты |
По ESP-IDF (Capacitive Touch Sensor). Срабатывание в драйвере — выход данных канала за базовую линию плюс порог.
Сон и ограничения
Касание может будить чип из глубокого сна, а проверку порога может вести ULP-сопроцессор. Измерения во сне добавляют потребление; ESP-IDF советует реже измерять, сокращать измерение и уменьшать размах и ток заряда. Espressif отдельно предупреждает, что сенсор ESP32 не прошёл испытание на устойчивость к кондуктивным помехам (CS), и поэтому область применения ограничена.
Частые вопросы
Почему при касании значение touchRead уменьшается, а на ESP32-S3 — растёт?
Разные поколения сенсора. У ESP32 (версия 1) блок считает циклы заряда-разряда за фиксированное время, и касание, увеличивая ёмкость, уменьшает их число. У ESP32-S2 и S3 (версия 2) значение при касании, наоборот, растёт (ESP-IDF, Capacitive Touch Sensor). Поэтому порог срабатывания у этих чипов задают с разным знаком.
Какие выводы ESP32 работают как сенсорные?
Десять: T0 — GPIO4, T1 — GPIO0, T2 — GPIO2, T3 — MTDO (GPIO15), T4 — MTCK (GPIO13), T5 — MTDI (GPIO12), T6 — MTMS (GPIO14), T7 — GPIO27, T8 и T9 — выводы 32K_XN и 32K_XP (GPIO33 и GPIO32) (ESP32 TRM, табл. 31.2-1). Часть из них — выводы обвязки загрузки, например GPIO0, GPIO2, GPIO12 и GPIO15, это учитывают при разводке.
Можно ли будить ESP32 касанием из глубокого сна?
Да, это одна из функций сенсора: в глубоком сне продолжается измерение, и касание будит процессор; проверкой порога может заниматься и ULP-сопроцессор (ESP32 TRM, разд. 31.2.2). ESP-IDF предупреждает, что измерения во сне добавляют потребление, и его уменьшают реже проводимыми и более короткими измерениями.
Источники
- Espressif. ESP32 Technical Reference Manual, Version 5.8 — разд. 31.2 — касание поверхности меняет ёмкость электрода; до 10 ёмкостных входов, их можно объединять; измерением управляет аппаратный автомат по команде программы или таймера; результат — регистры, прерывание, пробуждение из глубокого сна, работа с ULP; примечание: сенсор не прошёл испытание на кондуктивные помехи (CS); табл. 31.2-1 — T0 GPIO4, T1 GPIO0, T2 GPIO2, T3 MTDO, T4 MTCK, T5 MTDI, T6 MTMS, T7 GPIO27, T8 32K_XN, T9 32K_XP; 31.2.4 — площадка циклически заряжается и разряжается между DREFH и DREFL, число импульсов за интервал зависит от ёмкости
- Espressif. ESP-IDF Programming Guide v6.1: Capacitive Touch Sensor (ESP32) — версии сенсора: V1 (ESP32) — значение канала при касании уменьшается; V2 (ESP32-S2, S3) — увеличивается, аппаратный фильтр, базовая линия, защита от воды, приближение, пробуждение; V3 (ESP32-P4 и др.) — скачки частоты; принцип: касание увеличивает ёмкость, заряд и разряд идут медленнее, за фиксированное время считается число циклов; срабатывание — когда данные выходят за базовую линию плюс порог; меньше потребление во сне — реже измерять, короче измерение, меньше размах и ток заряда
- Espressif. ESP-IDF v6.1 soc_caps.h (esp32, esp32s2, esp32s3, esp32c3, esp32c6, esp32h2) — SOC_TOUCH_SENSOR_SUPPORTED у ESP32, S2, S3; SOC_TOUCH_MAX_CHAN_ID 9 у ESP32, 14 у S2 и S3; у C3, C6, H2 сенсора касания нет
- Espressif. ESP32 Series Datasheet, Version 5.3 — табл. выводов: TOUCH3…TOUCH6 на MTDO (GPIO15), MTCK (GPIO13), MTDI (GPIO12), MTMS (GPIO14), TOUCH8 и TOUCH9 на 32K_XN (GPIO33) и 32K_XP (GPIO32); разд. 3 — выводы обвязки GPIO0, GPIO2, MTDI, MTDO и GPIO5
Нашли ошибку?
Смотрите также
- ESP32: выводы и GPIO34 GPIO: функции, свободные выводы, только входы, флеш-память, strapping, JTAG, токи
- Глубокий сон ESP32Режимы сна, токи, пробуждение по таймеру и выводам, RTC-память, расчёт батареи
- ULP-сопроцессорМаломощный сопроцессор ESP32 для работы в глубоком сне
- Электрическая ёмкостьC = Q/U: сколько заряда конденсатор держит на вольт
- Вывод обвязки загрузкиGPIO, уровень которого при сбросе задаёт режим загрузки