Общие сведения
Сенсорная кнопка TTP223 — маленькая плата с ёмкостным датчиком касания. Коснулись пальцем площадки — на выходе I/O сменился сигнал. Механики в ней нет, заедать и изнашиваться нечему. Датчик чувствует не нажатие, а близость пальца, поэтому срабатывает и сквозь тонкую стенку корпуса из пластика или стекла.
Всю работу делает микросхема TTP223-BA6 (на корпусе маркировка «223B»). Она сама следит за ёмкостью площадки, сама подстраивается под окружение и выдаёт наружу готовый логический сигнал «0» или «1». Библиотеки не нужны: модуль читается как обычная кнопка, через digitalRead(). Питание — от 2 до 5,5 В, так что модуль подходит и к Arduino Uno на 5 В, и к ESP32 или Raspberry Pi Pico на 3,3 В.
Режим задают две пары площадок на плате: капля припоя на A переворачивает выход, на B превращает кнопку в выключатель с фиксацией. С завода обе разомкнуты: пока палец на площадке, на I/O «1», убрали — «0». Светодиод на плате при этом загорается от касания, так что проверить модуль можно, просто подав на него питание.
Паяльник понадобится: выводы модуля — три отверстия, провода к ним припаивают. Без пайки подключается Trema-версия сенсорной кнопки, о ней ниже.
Сенсор — медная площадка на обратной стороне платы, под белым кругом с надписью TOUCH. Касайтесь этой стороны и ею же прижимайте модуль к стенке корпуса. И второе: около 0,5 с после подачи питания модуль калибруется. В это время не трогайте площадку и ничего на ней не держите — всё, что лежит на ней в момент включения, модуль примет за «ничего нет».
Характеристики
- Микросхема: TTP223-BA6 (Tontek), корпус SOT-23-6, маркировка «223B».
- Напряжение питания: 2,0–5,5 В. 5,5 В — это и предельно допустимое значение, запаса сверху нет.
- Выход I/O (несмотря на название, только выход): двухтактный КМОП, сам выдаёт и «0», и «1», подтягивающий резистор не нужен. Уровень «1» не выше напряжения питания модуля.
- Ток выхода при питании 3 В, типовые значения: в «0» выход принимает 8 мА (при 0,6 В на выходе), в «1» отдаёт 4 мА (при 2,4 В). Для питания 5 В производитель цифр не даёт.
- Ток потребления микросхемы при 3 В, без нагрузки: 1,5 мкА, не больше 3 мкА.
- Время отклика при 3 В: до 220 мс в экономичном режиме, до 60 мс в быстром.
- Калибровка после подачи питания: около 0,5 с.
- Режимы: перемычка A переворачивает уровень выхода, перемычка B включает фиксацию. С завода: без фиксации, при касании «1».
- Чувствительность: с завода максимальная, снижается конденсатором 0–50 пФ.
- Индикация: светодиод на плате.
- Выводы: GND, I/O, VCC — три отверстия под пайку.
- Рабочая температура микросхемы: −40…+85 °C; защита от статического разряда — 4 кВ.
- Вес: 1 г.
Токи, время и температура — из даташита на микросхему, редакция 2.1 (ссылка внизу). Для модуля целиком производитель их не даёт.
Перемычки A и B: четыре режима
Рядом с подписями выводов две пары квадратных площадок: A и B. Это не штырьки под джампер, а места под каплю припоя. По разводке платы A подключает к питанию вывод микросхемы, который выбирает уровень выхода, а B — вывод, который включает фиксацию. Внутри микросхемы оба вывода подтянуты к земле, поэтому разомкнутая пара значит «выключено» — это и есть заводской режим.
| A | B | Что делает выход I/O | Сразу после включения питания |
|---|---|---|---|
| не запаяна | не запаяна | «1», пока палец на площадке (так с завода) | «0» |
| запаяна | не запаяна | «0», пока палец на площадке | «1» |
| не запаяна | запаяна | каждое касание переключает: «0» → «1» → «0»… | «0» |
| запаяна | запаяна | каждое касание переключает: «1» → «0» → «1»… | «1» |

- Чтобы замкнуть пару, коснитесь жалом с каплей припоя сразу обеих площадок. Разомкнуть — снять припой оплёткой. Паяйте при отключённом питании.
- Из скетча режим не переключить: A и B наружу не выведены. Если режим нужно менять на ходу, делайте выключатель программно (пример ниже).
- Режим с фиксацией не запоминает состояние: после отключения питания выход снова такой, как в последнем столбце таблицы. Если свет должен помнить, горел ли он, делайте выключатель в скетче и храните состояние в EEPROM платы.
- В инструкциях в интернете A и B иногда путают местами. На этой плате A — уровень выхода, B — фиксация: так идут дорожки к выводам микросхемы. Проверка: запаяйте B и залейте первый скетч из «Примеров» — «касание» появится на одно касание, «отпустили» — только на следующее.
Подключение

Провода три: GND — на землю, VCC — на питание, I/O — на любой цифровой вывод. В примерах ниже это вывод 2 платы Piranha Uno или Arduino Uno. Внутреннюю подтяжку на входе включать не нужно: выход модуля сам тянет линию и вверх, и вниз. Кнопок можно поставить столько, сколько свободных выводов: GND и VCC у всех общие, а каждый I/O — на свой вывод.
- Проводами к Arduino. Провода припаивают прямо в отверстия модуля, заводя их со стороны деталей. Удобно взять провода «папа-мама» и откусить у каждого ненужный наконечник. Для гнёзд Arduino Uno и макетной платы оставляют штырёк, для штырьков Trema Shield — гнездо. Другой конец зачищают и припаивают к модулю.
- В корпус. Провода тоже заводите со стороны деталей. На стороне TOUCH откусите их вплотную к пайке, а бугорки припоя сточите надфилем: эта сторона должна лечь на стенку корпуса без щели.
- К Trema Shield. У его колодок порядок G–V–S (земля, 5 В, сигнал), а у модуля — GND–I/O–VCC, сигнал посередине. Трёхпроводный шлейф «как есть» подаст 5 В на выход модуля, а питание модуля посадит на цифровой вывод. Соединяйте каждый провод отдельно: GND → G, VCC → V, I/O → S.
- К платам на 3,3 В (ESP32, ESP8266, Raspberry Pi Pico). VCC подключайте к 3,3 В, а не к 5 В. «1» на выходе не бывает выше напряжения питания модуля: с питанием 3,3 В на вход платы не придёт больше 3,3 В, а с питанием 5 В придёт до 5 В.
Выше 5,5 В модуль не питают: «Крона» на 9 В, 12 В от светодиодной ленты или вывод Vin, когда Arduino питается от адаптера, — за пределом микросхемы. Если так уже включали и модуль греется или молчит, его, скорее всего, не спасти.
Примеры
Проверить кнопку
Светодиод на плате Arduino (вывод 13) повторяет касание, а в мониторе порта (9600 бод) появляются слова «касание» и «отпустили». Перемычки A и B не запаяны.
// Сенсорная кнопка TTP223, перемычки A и B не запаяны (как с завода):
// пока палец на площадке — на выводе I/O «1», убрали палец — «0».
// Подключение: GND → GND, VCC → 5V, I/O → вывод 2.
const uint8_t PIN_TOUCH = 2; // вывод I/O модуля
const uint8_t PIN_LED = 13; // светодиод на плате Arduino
bool lastTouch = false;
void setup() {
pinMode(PIN_TOUCH, INPUT); // подтяжка не нужна: выход модуля сам выдаёт и «0», и «1»
pinMode(PIN_LED, OUTPUT);
Serial.begin(9600);
delay(600); // модулю нужно около 0,5 с после подачи питания
Serial.println("Готово, можно касаться");
}
void loop() {
bool touch = digitalRead(PIN_TOUCH); // HIGH — палец на площадке
digitalWrite(PIN_LED, touch); // светодиод платы повторяет касание
if (touch != lastTouch) { // в монитор порта пишем только перемены
Serial.println(touch ? "касание" : "отпустили");
lastTouch = touch;
}
}
Сенсорный выключатель
Классическое применение: коснулись — свет включился, коснулись ещё раз — выключился. Так умеет и сам модуль с запаянной B, но в программе удобнее: модуль остаётся в заводском режиме, перемычки паять не надо, а состояние живёт в скетче — его можно переключить ещё и по таймеру или по датчику.
// Сенсорный выключатель: коснулись — включили, коснулись ещё раз — выключили.
// Перемычки A и B не запаяны. Скетч ловит момент касания (переход «0» → «1»),
// поэтому палец, задержавшийся на площадке, не щёлкает нагрузкой много раз.
const uint8_t PIN_TOUCH = 2; // вывод I/O модуля
const uint8_t PIN_LOAD = 13; // светодиод платы; для реле — вывод, к которому подключён вход реле
const bool LOAD_ON = HIGH; // каким уровнем включается нагрузка: HIGH для Trema-реле,
// LOW для реле, которое срабатывает от «0»
bool loadOn = false;
bool lastTouch = false;
void setup() {
digitalWrite(PIN_LOAD, !LOAD_ON); // сначала уровень «выключено», чтобы реле не щёлкнуло при старте
pinMode(PIN_LOAD, OUTPUT);
pinMode(PIN_TOUCH, INPUT);
Serial.begin(9600);
delay(600); // модулю нужно около 0,5 с после подачи питания
lastTouch = digitalRead(PIN_TOUCH);
}
void loop() {
bool touch = digitalRead(PIN_TOUCH);
if (touch && !lastTouch) { // палец только что коснулся
loadOn = !loadOn;
digitalWrite(PIN_LOAD, loadOn ? LOAD_ON : !LOAD_ON);
Serial.println(loadOn ? "включено" : "выключено");
}
lastTouch = touch;
delay(10);
}
Лампу или прибор включают через реле. Trema-реле срабатывает от «1» — оставьте LOAD_ON = HIGH; реле с входом IN (1 канал, 5 В) срабатывает от «0» — поставьте LOW. В PIN_LOAD впишите вывод, к которому подключён вход реле, например 7. Вывод 13 для реле не берите: при сбросе Uno (кнопкой RESET, при загрузке скетча, при открытии монитора порта) загрузчик мигает светодиодом на этом выводе, и реле защёлкает вместе с ним. Всё, что под напряжением 220 В, собирайте при отключённой сети и прячьте в закрытый корпус.
А без Arduino, прямо на модуль реле? Мы так не проверяли. Ток выхода при питании 5 В производитель не указывает, а часть тока забирает светодиод модуля, поэтому надёжный путь — через Arduino, как в скетче выше. Лампу, мотор или голую обмотку реле к выводу I/O не подключают совсем: выход рассчитан на миллиамперы.
Как встроить в корпус
Модуль прижимают к стенке корпуса изнутри стороной TOUCH, и палец касается уже панели снаружи. Крепёжных отверстий у платы нет, держится она на клею или на тонком двустороннем скотче без вспененной основы: вспененный скотч оставит между платой и панелью прослойку с воздухом. От чего зависит, сработает ли кнопка сквозь панель:
- Толщина панели. Тоньше — чувствительнее. Предел у микросхемы есть, но цифрой производитель его не даёт, а цифры «до N миллиметров» в интернете сильно расходятся.
- Материал. Лучше всего касание проходит сквозь материал с высокой диэлектрической проницаемостью; у стекла она выше, чем у большинства пластиков. Металла в панели быть не должно, металлической и металлизированной краски на ней тоже. По той же причине модуль не ставят за зеркало: на обороте зеркала металлический слой.
- Зазор. У воздуха проницаемость самая низкая, и любая щель между платой и панелью работает как лишняя толщина. Плату клеят вплотную.
Проверяйте на своём материале до того, как сверлить и клеить: приложите модуль стороной TOUCH к панели, подайте питание и потрогайте снаружи — светодиод на плате покажет, чувствует ли модуль палец. И проверяйте с тем питанием, которое будет в готовом устройстве: прибор на батарейках, никак не связанный с землёй, чувствует палец хуже, чем плата на USB от компьютера (в расчёте Microchip — примерно на треть).
После сборки светодиод модуля смотрит внутрь корпуса и снаружи не виден. Нужна подсветка кнопки — ставьте отдельный светодиод от Arduino.
Несколько модулей под одной панелью ставьте с промежутком, чтобы палец над одной кнопкой не задевал соседнюю. Microchip советует между краями сенсоров 4 мм плюс толщину панели.
Сенсор побольше и чувствительность
Площадку можно продлить проводом к фольге или металлической пластине: чем больше электрод, тем выше чувствительность, но в меру. Провод делайте как можно короче и ведите в стороне от других проводов — ни рядом, ни поперёк, так советует даташит. Огромные электроды модуль «ослепляют»: на форуме Arduino к нему подключали фольгу 30 × 30 см, провод длиной 10 м и металлическую сетку — и он переставал замечать касание. После каждой переделки выключите и снова включите питание, ничего не касаясь.
Электрод — отдельная пластина или фольга. Палец касается его напрямую, поэтому он не должен быть связан ни с сетью 220 В, ни с металлическим корпусом сетевого прибора.
Куда припаять провод: у того же края платы, что и коричневый конденсатор, есть пустое посадочное место — две площадки без детали. По разводке это место под конденсатор чувствительности: одна площадка соединена со входом сенсора, другая — с землёй. Провод паяйте на ту, что не звонится мультиметром с выводом GND.
Если после этого кнопка срабатывает сама, на это же место впаивают керамический конденсатор ёмкостью до 50 пФ, начиная с меньших номиналов: чем больше ёмкость, тем ниже чувствительность. Даташит советует конденсатор с малым температурным дрейфом, лучше всего NPO (C0G). Подойдёт SMD-конденсатор по размеру площадок или обычный выводной, его выводы просто припаивают к площадкам. Если нужны и провод, и конденсатор, конденсатор ставят на обе площадки, а провод паяют к той, что не звонится с GND.
Если что-то не так
- Не реагирует на палец. Панель слишком толстая, или между платой и панелью зазор. Во время включения палец лежал на площадке — отключите питание и включите снова, не касаясь. Выносной электрод слишком велик (см. выше).
- Срабатывает сам. Скачет питание: в даташите на это прямое предупреждение. На форуме описан модуль, который сам переключался рядом с понижающим преобразователем, а в стороне от него работал лучше. Металл рядом с сенсором. Вода: капли и мокрая панель для датчика выглядят как касание. Длинный провод к выносному электроду — укоротите его или поставьте конденсатор чувствительности; он же поможет, если кнопка отзывается на руку, которая только проходит рядом.
- Держу палец, а через несколько секунд «отпускает». По опыту пользователей форума Arduino, через 7–10 с удержания выход сам возвращается в исходное состояние, программой это не лечится. Таймера удержания у этого варианта микросхемы по даташиту нет, похоже, неподвижный палец со временем уходит в автокалибровку. Удержание в секунду-две скетч различит, а функции вида «держите 10 секунд для сброса» на этом модуле не делают.
- Первое касание срабатывает с задержкой, следующие быстро. Так задумано ради экономии. В покое микросхема опрашивает сенсор редко, и отклик при 3 В — до 220 мс. После касания она переходит в быстрый режим (до 60 мс) и держит его ещё около 12 с после того, как палец убрали.
- На батарейках ток больше, чем ждали. 1,5 мкА — это ток одной микросхемы при 3 В. Светодиод на плате, пока горит, и плата Arduino, к которой подключён модуль, потребляют несравнимо больше. Считайте ток всей схемы.
Эта кнопка или Trema-модуль?
Есть и сенсорная кнопка в формате Trema на той же микросхеме TTP223. Разница в обвязке:
- Режим. Здесь — пайкой перемычек A и B. У Trema-модуля — отдельным выводом T: LOW — обычная кнопка, HIGH — с фиксацией. Режим можно менять прямо из скетча, без паяльника.
- Подключение. Здесь — пайка проводов и внимание к порядку выводов. У Trema-модуля в комплекте шлейф для подключения к Trema Shield.
- Размер. Здесь — плата весом 1 г, её легко спрятать за тонкую панель. Trema-модуль — 30 × 30 мм.
Берите эту, если кнопку нужно встроить в корпус или кнопок нужно много, а паяльник вас не пугает. Trema-модуль — для учебных проектов и макетов, где паять не хочется, а режим удобно задавать программой.
А если кнопку будут нажимать в перчатках, если на панель попадает вода или кнопку нужно держать дольше нескольких секунд, лучше механическая: Кнопка (Trema-модуль) или корпусная кнопка PBS-33B.
Что пригодится вместе
- Piranha Uno или Arduino Uno — плата для скетчей из описания;
- провода «папа-мама» — из них получаются выводы модуля: к Arduino, к макетной плате и к Trema Shield;
- Trema Shield — подключить модуль к колодке G–V–S, каждый провод отдельно;
- Реле (Trema-модуль) или реле с входом IN — для сенсорного выключателя света через Arduino;
- Концевик (Trema-модуль) — если нажимать будет не палец, а дверца или каретка.
Ссылки
- Даташит TTP223-BA6, редакция 2.1 на сайте производителя Tontek (PDF на английском). Цифры в этом описании — по нему.
- Даташит TTP223, редакция 1.0 (PDF на английском) — общий на всё семейство, про TTP223-BA6 — стр. 9. Таймер удержания на 100 с, выбор режима питания и выводы OPDO и RST у этого варианта недоступны, а рабочая температура там ещё −20…+70 °C (в редакции 2.1 — −40…+85 °C).
- Руководство Microchip по сенсорным кнопкам (AN2934, PDF на английском) — как размер сенсора и панель влияют на чувствительность.
Комплектация
- 1 × сенсорная кнопка TTP223.

















