Датчик касания TTP223 и Arduino: режимы, подключение и сенсорная лампа
Как пользоваться ёмкостным датчиком касания TTP223: перемычки A/B для режима без фиксации или с фиксацией, сенсорная лампа на Arduino, работа через пластик, код для ESP32 и Pico.
Датчик касания TTP223 — дешёвый одноклавишный ёмкостный сенсорный модуль, который заменяет механическую кнопку: он замечает палец по изменению ёмкости. У него всего три пина (VCC, GND и I/O): при касании выход переходит в HIGH, а когда палец убран, возвращается в LOW. Благодаря такой простоте на Arduino он читается через digitalRead() точно так же, как кнопка, а поскольку работает от 2–5,5 V, подключается напрямую и к ESP32 или Raspberry Pi Pico. Подвижных частей нет, поэтому он не изнашивается и не щёлкает, а ещё его можно спрятать за тонким слоем пластика, стекла или дерева.
В этом руководстве ты пошагово узнаешь, что происходит внутри TTP223, как с помощью паяных перемычек A и B на плате выбрать режим без фиксации или с фиксацией и выход с активным HIGH или активным LOW, как собрать сенсорную лампу на Arduino, которая включается коротким касанием и приглушается длинным, как заставить датчик работать за панелью, как использовать несколько клавиш, чем он отличается от встроенных сенсорных пинов ESP32 и как работать с ним на Pico в MicroPython.

Что такое датчик касания TTP223 и как он работает?
Медная площадка на модуле и полигон земли (GND) на плате образуют крошечный конденсатор ёмкостью в несколько пикофарад. Когда палец приближается к площадке, к этому конденсатору добавляется твоё тело, и общая ёмкость растёт на несколько пикофарад. Сенсорный генератор внутри TTP223 с частотой примерно 1 MHz видит этот рост как изменение частоты, сравнивает результат с хранимым опорным значением и переключает выход, если разница достаточно велика. Здесь тоже работает формула плоского конденсатора C = ε·A/d: чем больше площадь площадки (A) и чем тоньше материал между пальцем и площадкой (d), тем увереннее срабатывание.
Опорное значение микросхема задаёт сама. Сразу после подачи питания она примерно 0,5 секунды измеряет окружение и в это время не реагирует на касания. Дальше, пока никто не касается площадки, она примерно каждые 4 секунды заново калибруется, так что медленные изменения вроде температуры и влажности со временем компенсируются. Поэтому датчик считает «нетронутым» всё, что было рядом с площадкой при включении: если при подаче питания палец лежит на площадке, касания он просто не увидит.
| Параметр | Значение |
|---|---|
| Микросхема | TTP223-BA6 (корпус SOT-23 с 6 выводами) |
| Напряжение питания | 2,0–5,5 V |
| Ток микросхемы (3 V, без светодиода) | Обычно 1,5 µA, максимум 3 µA |
| Время отклика | До ~220 мс в режиме низкого энергопотребления, ~60 мс в быстром режиме |
| Тип выхода | КМОП (push-pull); уровень HIGH равен VCC |
| Выходной ток (при 3 V) | Отдаёт около 4 mA, принимает 8 mA |
| Калибровка при включении | Около 0,5 с (в это время не касаться) |
| Настройка чувствительности | Конденсатор 0–50 pF (Cs) между площадкой и GND |
| Рабочая температура | От -20 до +70 °C |
| Пины модуля | VCC, I/O (SIG или OUT), GND |
В версии TTP223-BA6, которая стоит на этих модулях, часть настроек зафиксирована внутри корпуса: микросхема всегда работает в режиме низкого энергопотребления, а ограничение «максимального времени удержания» в 100 секунд, которое есть в других корпусах, отключено. В режиме низкого энергопотребления микросхема потребляет всего несколько микроампер, но на первое касание может реагировать до 220 мс. После обнаружения касания она примерно 12 секунд остаётся в быстром режиме и на следующие касания отвечает гораздо быстрее. В лампе или дверном звонке такую задержку не заметить, но держи её в голове, если делаешь игровой контроллер, которому нужна быстрая реакция.
Распиновка и подключение TTP223
| Пин TTP223 | Arduino Uno | ESP32 | Raspberry Pi Pico |
|---|---|---|---|
| VCC | 5V | 3V3 | 3V3(OUT) (вывод 36) |
| GND | GND | GND | GND (вывод 38) |
| I/O (SIG) | D2 | GPIO 26 | GP15 (вывод 20) |
Выходной пин сам активно выставляет сигнал в HIGH и LOW, поэтому на Arduino не нужны ни INPUT_PULLUP, ни внешний резистор: достаточно настроить пин как обычный INPUT. Дребезга контактов, как у механических кнопок, здесь нет: микросхема меняет выход только тогда, когда касание стабильно. И всё же, если нужно, чтобы код считал одно касание одним событием, используй логику обнаружения фронта, о которой рассказано в статье «Как подключить кнопку».
Выбор режима паяными перемычками A и B
Рядом с микросхемой на модуле есть две маленькие пары контактных площадок с надписями A и B. Они соединены с двумя выводами настройки микросхемы: на большинстве модулей A выбирает, будет выход с активным HIGH или с активным LOW (AHLB), а B — будет датчик работать без фиксации или с фиксацией (TOG). Внутри микросхемы эти выводы подтянуты к GND через резистор, поэтому при разомкнутых площадках настройка равна «0»; стоит соединить две площадки каплей припоя, и настройка становится «1». После изменения перемычки надёжнее всего отключить и снова подать питание. Если надписи на твоей плате другие, режим легко проверить по светодиоду в первом тестовом скетче.
| A | B | Режим | При касании | Выход при включении |
|---|---|---|---|---|
| Разомкнута | Разомкнута | Без фиксации, активный HIGH (заводская настройка) | HIGH, пока длится касание | LOW |
| Замкнута | Разомкнута | Без фиксации, активный LOW | LOW, пока длится касание | HIGH |
| Разомкнута | Замкнута | С фиксацией (toggle), активный HIGH | Состояние меняется при каждом касании | LOW |
| Замкнута | Замкнута | С фиксацией (toggle), активный LOW | Состояние меняется при каждом касании | HIGH |
Первый тест с Arduino: читаем касание
- Подключи пин VCC модуля к пину 5V на Arduino, GND к GND, а пин I/O к D2.
- Загрузи скетч ниже в плату и открой монитор порта на скорости 9600 бод.
- После запуска платы подожди около секунды, не касаясь площадки: в это время микросхема калибруется.
- Коснись площадки пальцем: встроенный светодиод Arduino на пине 13 (а на большинстве модулей и собственный светодиод платы) должен загореться, а счётчик касаний в мониторе порта — увеличиться на единицу.
- Пока палец лежит на площадке, светодиод горит, а счётчик увеличивается только один раз на каждое новое касание.
1const int TOUCH_PIN = 2; // TTP223 I/O (SIG) pini / TTP223 I/O (SIG) pin
2const int LED_PIN = 13; // Uno'nun dahili LED'i / Uno onboard LED
3
4bool lastState = false;
5unsigned long touchCount = 0;
6
7void setup() {
8 Serial.begin(9600);
9 pinMode(TOUCH_PIN, INPUT); // çıkış push-pull, pull-up gerekmez / push-pull output, no pull-up needed
10 pinMode(LED_PIN, OUTPUT);
11 delay(600); // açılış kalibrasyonu bitsin (~0,5 s) / let power-on calibration finish (~0.5 s)
12}
13
14void loop() {
15 bool state = digitalRead(TOUCH_PIN) == HIGH; // dokunurken true / true while touched
16 digitalWrite(LED_PIN, state ? HIGH : LOW);
17
18 if (state && !lastState) { // LOW -> HIGH: yeni dokunuş / new touch
19 touchCount++;
20 Serial.print("Dokunus / Touch: ");
21 Serial.println(touchCount);
22 }
23 lastState = state;
24}Самая важная часть кода — обнаружение фронта. Предыдущее показание хранится в переменной lastState; если новое показание HIGH, а предыдущее было LOW, значит, это новое касание. Без такой проверки счётчик рос бы на каждом проходе цикла, пока палец остаётся на площадке, то есть тысячи раз в секунду. Ожидание 600 мс в setup() гарантирует, что микросхема закончит калибровку, когда Arduino и модуль получают питание одновременно. D2 выбран потому, что это один из пинов прерываний Uno; при желании касание можно ловить и прерыванием через attachInterrupt(digitalPinToInterrupt(2), функция, RISING).
Проект: сенсорная лампа на Arduino
Теперь соберём настоящую сенсорную лампу: короткое касание включает и выключает её, если удерживать палец на площадке при включённой лампе, свет плавно приглушается, а следующее длинное касание снова делает его ярче. Яркость задаётся через ШИМ, поэтому лампу подключаем к D9, одному из ШИМ-пинов Uno. Для проверки хватит светодиода и резистора 220 Ω на D9 (нужный номинал подскажет калькулятор резистора для светодиода). Для светодиодной ленты на 12 V поставь между ними MOSFET с логическим уровнем управления, например IRLZ44N; подробности в статье «MOSFET и Arduino».
1const int TOUCH_PIN = 2; // TTP223 I/O (fabrika ayarı: anlık, aktif yüksek) / factory default: momentary, active high
2const int LAMP_PIN = 9; // PWM pini: LED ya da MOSFET kapısı / PWM pin: LED or MOSFET gate
3const unsigned long LONG_PRESS = 600; // uzun dokunuş eşiği (ms) / long-touch threshold (ms)
4
5bool lampOn = false;
6bool lastTouch = false;
7bool dimming = false;
8int brightness = 255; // son parlaklık (10-255) / last brightness (10-255)
9int step = 5; // kısma yönü ve adımı / dimming direction and step
10unsigned long touchStart = 0;
11unsigned long lastStep = 0;
12
13void setup() {
14 pinMode(TOUCH_PIN, INPUT);
15 pinMode(LAMP_PIN, OUTPUT);
16 delay(600); // TTP223 kalibrasyonu bitsin / let the TTP223 finish calibrating
17}
18
19void loop() {
20 bool touch = digitalRead(TOUCH_PIN) == HIGH;
21 unsigned long now = millis();
22
23 if (touch && !lastTouch) { // dokunuş başladı / touch started
24 touchStart = now;
25 dimming = false;
26 }
27
28 if (touch && lampOn && now - touchStart > LONG_PRESS) { // lamba açıkken uzun dokunuş / long touch while the lamp is on
29 if (!dimming) {
30 dimming = true;
31 step = -step; // her uzun dokunuşta yön değişir / direction flips on every long touch
32 }
33 if (now - lastStep >= 20) { // 20 ms'de bir adım / one step every 20 ms
34 lastStep = now;
35 brightness += step;
36 if (brightness <= 10 || brightness >= 255) {
37 brightness = constrain(brightness, 10, 255);
38 step = -step; // uca gelince geri dön / bounce back at the ends
39 }
40 analogWrite(LAMP_PIN, brightness);
41 }
42 }
43
44 if (!touch && lastTouch && !dimming) { // kısa dokunuş bitti: aç/kapa / short touch ended: toggle
45 lampOn = !lampOn;
46 analogWrite(LAMP_PIN, lampOn ? brightness : 0);
47 }
48
49 lastTouch = touch;
50}| Часть кода | Что делает |
|---|---|
| touchStart | Запоминает момент начала касания с помощью millis() |
| LONG_PRESS = 600 | Касания длиннее 600 мс считаются командой приглушения |
| dimming | Выставляется, если во время этого касания яркость менялась, чтобы лампа не выключилась, когда палец убран |
| step | Меняет знак при каждом длинном касании: свет то приглушается, то становится ярче |
| constrain(brightness, 10, 255) | Держит яркость в диапазоне, где лампа никогда не гаснет полностью |
| Переключение при отпускании | Решение принимается, когда палец убран, чтобы отличать короткое касание от длинного |
Обрати внимание: в коде нигде нет delay(). Все интервалы отсчитываются через millis(), поэтому цикл крутится без остановки и не пропускает ни одного касания. Подробнее об этом приёме читай в статье «millis() или delay()». Последняя яркость остаётся в переменной brightness, поэтому после выключения и повторного включения лампа загорается на последнем выставленном уровне, как сенсорные настольные лампы из магазина.
Срабатывание через тонкие материалы
Самая любимая особенность TTP223 — он работает изнутри корпуса без единого отверстия. Пластик, акрил, стекло, дерево, бумага и ткань пропускают электрическое поле; материал между площадкой и пальцем ведёт себя как диэлектрик конденсатора. Чем толще материал, тем больше d в формуле и тем меньше ёмкость между пальцем и площадкой: при удвоении толщины эта ёмкость падает примерно вдвое. У стекла диэлектрическая проницаемость выше, чем у большинства пластиков, поэтому стекло той же толщины обычно даёт лучший результат. На практике модуль, как правило, без проблем работает за панелью из пластика, акрила или стекла толщиной 1–3 мм; для более толстых панелей понадобится площадка побольше, и результат всегда стоит проверить на своём материале.
- Не оставляй воздушный зазор: диэлектрическая проницаемость воздуха равна 1, и даже зазор в 1 мм сильно снижает чувствительность. Плотно приклей модуль к панели площадкой к ней, тонким двусторонним скотчем или клеем.
- Увеличь площадку: для большей зоны касания вырежи электрод из медной ленты или алюминиевой фольги, аккуратно соскреби защитное покрытие с одного угла площадки и припаяй электрод к ней очень коротким проводом. Чем длиннее провод, тем больше ёмкости он добавляет и тем менее стабильным становится датчик.
- Избегай металла: металлические панели, материалы с металлическими добавками и металлизированные краски стягивают электрическое поле на себя: датчик либо вообще ничего не замечает, либо срабатывает сам по себе.
- Снизь избыточную чувствительность: если датчик срабатывает ещё до приближения пальца, добавь между площадкой и GND маленький керамический конденсатор (Cs) на 5–20 pF; чем больше номинал, тем ниже чувствительность, верхний предел — 50 pF. Маркировку на конденсаторе (например, 100 = 10 pF, 220 = 22 pF) можно расшифровать с помощью утилиты кодов конденсаторов.
- Сначала монтаж, потом питание: при включении микросхема берёт окружение за опорное значение, поэтому подавай питание только после того, как панель и крышка на месте. Если установить панель при включённом питании, микросхема может принять её за постоянное касание; тогда достаточно отключить и снова подать питание.
Несколько сенсорных клавиш
Каждый TTP223 следит за своей площадкой независимо; для четырёх клавиш нужно подключить четыре модуля к четырём отдельным цифровым пинам, а VCC и GND у модулей общие. Если клавиши расположены очень близко, палец может влиять и на соседнюю площадку: оставляй между площадками не меньше 1–2 см и держи модули подальше от проводов моторов и реле. Скетч ниже делает из четырёх TTP223 и пассивного зуммера маленькое сенсорное пианино: какой клавиши ни коснёшься, звучит её нота, а когда палец убран, звук прекращается.
1const int TOUCH_PINS[] = {2, 3, 4, 5}; // dört TTP223 I/O pini / four TTP223 I/O pins
2const int NOTES[] = {262, 294, 330, 349}; // Do, Re, Mi, Fa (Hz) / C4, D4, E4, F4 (Hz)
3const int KEY_COUNT = 4;
4const int BUZZER_PIN = 8; // pasif buzzer / passive buzzer
5
6int currentNote = 0;
7
8void setup() {
9 for (int i = 0; i < KEY_COUNT; i++) {
10 pinMode(TOUCH_PINS[i], INPUT);
11 }
12 pinMode(BUZZER_PIN, OUTPUT);
13 delay(600); // sensörlerin kalibrasyonu / sensor calibration
14}
15
16void loop() {
17 int note = 0;
18 for (int i = 0; i < KEY_COUNT; i++) {
19 if (digitalRead(TOUCH_PINS[i]) == HIGH) { // ilk dokunulan tuş çalar / the first touched key plays
20 note = NOTES[i];
21 break;
22 }
23 }
24 if (note != currentNote) { // yalnızca nota değişince güncelle / update only when the note changes
25 currentNote = note;
26 if (note > 0) tone(BUZZER_PIN, note);
27 else noTone(BUZZER_PIN);
28 }
29}tone() может играть только одну ноту за раз, поэтому код выбирает первую клавишу, которой касаются, и обновляет ноту только при её смене, чтобы звук не трещал. На Uno tone() использует Timer2, поэтому, пока звучит зуммер, analogWrite не работает на пинах 3 и 11; здесь это не мешает, ведь в пианино D3 используется только как вход. Когда клавиш становится больше, аккуратнее перейти с отдельного модуля на каждую клавишу на многоканальные микросхемы: TTP224 даёт четыре клавиши с четырьмя отдельными выходами, TTP229 читает 8 или 16 клавиш по двухпроводному последовательному интерфейсу, а MPR121 следит за 12 электродами по I2C.
ESP32: TTP223 или встроенные сенсорные пины?
В классическую ESP32 встроен ёмкостный сенсорный датчик, и 10 пинов (T0–T9) можно использовать как сенсорные клавиши без всякого модуля: по порядку это GPIO 4, 0, 2, 15, 13, 12, 14, 27, 33 и 32. Функция touchRead() возвращает «сырое» число; на классической ESP32 при касании пина это число падает, а на ESP32-S2 и S3 — растёт. У ESP32-C3 сенсорного датчика нет совсем. Подробно о встроенных пинах читай в статье «Сенсорные пины ESP32»; в таблице ниже сравниваются оба подхода.
| Параметр | Модуль TTP223 | Встроенный сенсор ESP32 |
|---|---|---|
| Дополнительная деталь | Нужна (1 клавиша на модуль) | Не нужна; достаточно провода или медной площадки на пине |
| Выход | Готовый цифровой HIGH/LOW | «Сырое» число; порог выбираешь ты |
| Калибровка | Выполняет сама микросхема | Нужно измерить и задать порог в коде |
| На каких платах? | На всех (Uno, Nano, ESP, Pico) | Только ESP32, ESP32-S2 и ESP32-S3 |
| Число клавиш | Сколько модулей, столько и клавиш | 10 на ESP32, 14 на S2 и S3 |
| Пробуждение из глубокого сна | Через ext0/ext1 на пине RTC GPIO | С помощью touchSleepWakeUpEnable() |
| Длинные провода и влажность | Стабильно, ведь площадка находится на самом модуле | С удлинением проводов показания уплывают, и порог перестаёт работать |
1const int TTP223_PIN = 26; // TTP223 I/O, modül 3,3 V ile beslenir / module powered from 3.3 V
2const int TOUCH_GPIO = 4; // dahili dokunmatik T0 / built-in touch pad T0
3const int LED_PIN = 2; // çoğu DevKit'te dahili LED / onboard LED on most DevKits
4int threshold = 0;
5
6void setup() {
7 Serial.begin(115200);
8 pinMode(TTP223_PIN, INPUT);
9 pinMode(LED_PIN, OUTPUT);
10 delay(600); // dokunmadan bekle / wait without touching
11 threshold = touchRead(TOUCH_GPIO) * 0.7; // dokunulmamış değerin %70'i / 70% of the untouched value
12}
13
14void loop() {
15 int raw = touchRead(TOUCH_GPIO); // klasik ESP32'de dokununca düşer / drops when touched on the classic ESP32
16 bool builtIn = raw < threshold;
17 bool module = digitalRead(TTP223_PIN) == HIGH;
18 digitalWrite(LED_PIN, (builtIn || module) ? HIGH : LOW);
19 Serial.printf("ham/raw: %d esik/threshold: %d T0: %d TTP223: %d\n", raw, threshold, builtIn, module);
20 delay(100);
21}При запуске этот скетч измеряет значение T0 без касания и берёт 70% от него как порог; следи за «сырым» значением в мониторе порта (115200 бод), чтобы подобрать коэффициент под своё подключение. На ESP32-S3 значение при касании растёт, поэтому сравнение нужно перевернуть (например, порог = измеренное значение × 1.3 и raw > порог). Ещё одна причина подключить TTP223 к GPIO 26 в том, что это RTC GPIO: с esp_sleep_enable_ext0_wakeup(GPIO_NUM_26, 1) ESP32 можно отправить в глубокий сон и будить касанием. TTP223 потребляет всего несколько микроампер, поэтому вместе они отлично подходят для проектов на батарейках; подробности в статье «Глубокий сон ESP32».
TTP223 и Raspberry Pi Pico (MicroPython)
В микросхеме RP2040 у Pico нет сенсорного датчика, поэтому TTP223 — самый простой способ добавить к Pico сенсорную клавишу. Питай модуль от пина 3V3(OUT) (физический вывод 36), а пин I/O подключи к GP15 (физический вывод 20). Код на MicroPython ниже переключает встроенный светодиод платы при каждом касании. Касание ловится прерыванием (IRQ), поэтому ни одно касание не теряется, даже пока основной цикл занят другой работой. Если установка MicroPython на Pico пока незнакома, начни со статьи «Что такое Raspberry Pi Pico?».
1from machine import Pin
2import time
3
4touch = Pin(15, Pin.IN) # TTP223 I/O -> GP15 (fiziksel pin 20) / physical pin 20
5led = Pin("LED", Pin.OUT) # dahili LED (Pico ve Pico W) / onboard LED (Pico and Pico W)
6last = 0
7
8def on_touch(pin):
9 global last
10 now = time.ticks_ms()
11 if time.ticks_diff(now, last) > 250: # bir dokunuşu bir kez say / count each touch once
12 led.toggle()
13 last = now
14
15time.sleep_ms(600) # TTP223 açılış kalibrasyonu / TTP223 power-on calibration
16touch.irq(trigger=Pin.IRQ_RISING, handler=on_touch)
17
18while True:
19 print("Dokunma / Touch:", touch.value(), " LED:", led.value())
20 time.sleep(1)В актуальных версиях MicroPython имя Pin("LED") выбирает встроенный светодиод и на Pico, и на Pico W. Если перемычка B запаяна и модуль переведён в режим с фиксацией, прерывание даже не нужно: достаточно написать в цикле led.value(touch.value()), ведь состояние «вкл/выкл» теперь хранит сама микросхема. Хотя выход микросхемы не дребезжит, блокировка на 250 мс в коде не даёт коротким импульсам помех на длинных проводах переключить светодиод дважды.
Идеи проектов с TTP223
- Сенсорный ночник: добавь фоторезистор (LDR), чтобы лампа реагировала на касание только в темноте.
- Лампа, меняющая цвет: меняй цвет кольца WS2812B NeoPixel при каждом касании, а яркость регулируй длинным касанием.
- Скрытый кодовый замок: размести четыре TTP223 за акриловой панелью; если коснуться клавиш в правильном порядке, сервопривод открывает замок.
- Дверной звонок без отверстий: приклей датчик внутри пластиковой коробки; от касания DFPlayer Mini проигрывает мелодию звонка.
- Сенсорный выключатель розетки: включай и выключай настольную лампу или вентилятор через модуль реле.
- Пульт на батарейках: держи ESP32 в глубоком сне; при касании TTP223 она просыпается и отправляет команду по ESP-NOW.
Частые ошибки и как их исправить
| Симптом | Вероятная причина | Решение |
|---|---|---|
| Нет реакции на касание | При включении на площадке лежал палец, или панель слишком толстая | Убери руку и перезапусти питание; возьми панель потоньше или площадку побольше |
| Срабатывает сам по себе | Слишком высокая чувствительность, металл рядом с площадкой, шумный блок питания | Добавь 5–20 pF между площадкой и GND, убери металл подальше, поставь 100 nF между VCC и GND |
| Всё время ведёт себя так, будто его касаются | Панель или крышку установили при включённом питании | Сначала монтаж, потом питание |
| Счётчик растёт несколько раз за одно касание | Код читает уровень, а не фронт | Храни предыдущее состояние и считай только на переходе LOW→HIGH |
| Первое касание определяется с задержкой | Микросхема в режиме низкого энергопотребления (~220 мс) | Это нормально; следующие касания определяются быстрее |
| Пин ESP32 или Pico повреждён | Модуль питался от 5 V | Всегда питай модуль от пина 3V3 |
| В режиме с фиксацией лампа при включении сразу горит | Перемычка A выбирает активный LOW | Выбери состояние при включении перемычкой A или инвертируй логику в коде |
TTP223 — самый простой способ добавить в проекты современный сенсорный интерфейс с помощью очень дешёвого модуля: он заменяет механическую кнопку, работает за панелями без отверстий и ладит с любым микроконтроллером. Сначала попробуй прочитать его с заводскими настройками, потом отработай обнаружение фронта и логику длинного касания на примерах с лампой и пианино. В приложении BlueGrays есть пошаговые схемы и код для светодиода с кнопкой, светодиода с переключением вкл/выкл, проектов с кнопкой на ESP32 и Pico и управления сетевой лампой, и все их можно сделать сенсорными, поставив TTP223 вместо кнопки.
Частые вопросы
От какого напряжения работает TTP223?
Микросхема TTP223 работает от 2,0 до 5,5 V; на Arduino Uno её питают от 5 V, а на ESP32 или Raspberry Pi Pico — от 3,3 V. Уровень HIGH на выходе равен напряжению питания, поэтому всегда питай модуль напряжением логики той платы, к которой он подключён.
Зачем на TTP223 площадки A и B?
A и B — перемычки настройки, которые замыкаются припоем. На большинстве модулей перемычка A делает выход активным LOW (LOW при касании), а перемычка B переводит датчик в режим с фиксацией, где выход меняется при каждом касании и остаётся в новом состоянии. Когда обе разомкнуты, модуль работает без фиксации и выдаёт HIGH, пока длится касание.
Работает ли TTP223 через стекло или пластик?
Да, он работает через пластик, акрил, стекло, дерево и бумагу, если в них нет металла. На практике панели толщиной 1–3 мм обычно не создают проблем; для более толстых нужна площадка, увеличенная медной лентой. Не забудь приклеить модуль к панели без воздушного зазора.
Почему мой TTP223 срабатывает сам по себе?
Чаще всего причина в слишком высокой чувствительности, металлических деталях рядом с площадкой, длинных проводах к электроду и шумном источнике питания. Конденсатор на 5–20 pF между площадкой и GND снижает чувствительность. Конденсатор на 100 nF между VCC и GND и качественный блок питания тоже обычно решают проблему.
Как включать сетевую лампу с помощью TTP223?
Выход TTP223 отдаёт всего несколько миллиампер, поэтому напрямую управлять лампой или катушкой реле он не может. Подключи датчик к Arduino, а Arduino пусть управляет модулем реле; реле умеет только включать и выключать, но не приглушать. Сетевую проводку держи в закрытом корпусе и никогда не клей площадку на поверхность, связанную с сетевым напряжением.
Нужен ли TTP223 для сенсорного ввода на ESP32?
Нет: 10 сенсорных пинов классической ESP32 можно использовать напрямую через touchRead(). Но порог тогда приходится задавать программно, а на длинных проводах показания уплывают. Если нужен готовый стабильный цифровой выход или используется плата без сенсорных пинов, например ESP32-C3, TTP223 практичнее.
Что собрать после прочтения
Все проекты
Включение и выключение светодиода кнопкой (вкл/выкл)
Нажми кнопку один раз — свет загорится, нажми ещё раз — погаснет, совсем как выключатель в твоей комнате. Arduino замечает каждое нажатие и переводит светодиод в противоположное состояние, выжидая кор

Управление светодиодом кнопкой (удержание)
Как дверной звонок: свет горит, пока ты нажимаешь, и гаснет, когда отпускаешь. Arduino всё время слушает кнопку; пока она нажата, светодиод горит, а как только ты убираешь палец, он гаснет. Эта просте

Управление светодиодом кнопкой на ESP32 (переключение)
При каждом нажатии кнопки состояние светодиода меняется: если горел — гаснет, если не горел — загорается. Классический шаблон переключения. Антидребезг убирает механический шум кнопки, чтобы одно нажатие давало одно переключение.

Переключение светодиода кнопкой на Pico
Кнопка + светодиод — следующий уровень! В отличие от базового проекта с кнопкой, держать кнопку не нужно. Нажми и отпусти → светодиод горит. Нажми и отпусти ещё раз → гаснет (переключение). Схема та же (светодиод GP14, кнопка GP2), но код сильно отличается. Изучи определение фронта (ловлю момента спада 1→0), отслеживание состояния и антидребезг (фильтр механического дребезга). Метод led.toggle() в MicroPython меняет состояние одной строкой.

Включение лампы 220V кнопкой (вкл/выкл)
Хочешь включать и выключать настоящую бытовую лампу крошечной кнопкой? При каждом нажатии кнопки Arduino переключает реле, и лампа загорается; нажмёшь снова — гаснет. Реле — посредник, который позволя

Простое пианино на зуммере и кнопках
Собери своё маленькое пианино из восьми кнопок. Каждая кнопка — одна нота, от низкой к высокой: до, ре, ми, фа, соль, ля, си и верхнее до. Нота звучит через зуммер, пока ты держишь кнопку, и замолкает

Плавное затухание светодиода с PWM на ESP32
Плавное изменение яркости светодиода от 0 до максимума и от максимума до 0. PWM управляется через analogWrite(), как в Arduino, — тот же синтаксис без проблем работает в ESP32 Arduino Core 3.0+. Достаточно определения пина, pinMode и analogWrite.

Умное освещение лестницы и коридора
Ступи на лестницу или в коридор, и свет загорается ступенька за ступенькой в ту сторону, куда ты идёшь. На каждом конце стоит датчик расстояния; мимо какого ни пройдёшь, восемь светодиодов загораются
Другие статьи
Приложение BlueGrays
Собери эту схему шаг за шагом в телефоне
Схема подключения, код и список деталей на одном экране. 200+ проектов на Arduino, ESP32 и Pico готовы к сборке.
Наведи камеру телефона
Наведи камеру на код — откроется магазин приложений на телефоне.
или открыть магазин

