Componentes · 14 min de lectura

Sensor táctil TTP223 con Arduino: modos, conexión y lámpara

Cómo usar el sensor táctil capacitivo TTP223: puentes A/B para modo momentáneo o biestable, lámpara táctil con Arduino, detección tras plástico, ESP32 y Pico.

El sensor táctil TTP223 es un módulo táctil capacitivo de una sola tecla, muy barato, que sustituye a un pulsador mecánico y detecta tu dedo por el cambio de capacidad. Solo tiene tres pines (VCC, GND e I/O): al tocarlo, la salida pasa a HIGH y, al retirar el dedo, vuelve a LOW. Gracias a esa sencillez se lee en Arduino con digitalRead() igual que un pulsador y, como funciona entre 2 y 5,5 V, también se conecta directamente a un ESP32 o a una Raspberry Pi Pico. Al no tener piezas móviles no se desgasta ni hace clic, y puede esconderse detrás de una capa fina de plástico, vidrio o madera.

En esta guía aprenderás paso a paso qué ocurre dentro del TTP223, cómo usar los puentes de soldadura A y B de la placa para elegir entre modo momentáneo o biestable (toggle) y salida activa en alto o en bajo, cómo construir con Arduino una lámpara táctil que se enciende con un toque corto y se regula con uno largo, cómo hacer que el sensor funcione detrás de un panel, cómo usar varias teclas, en qué se diferencia de los pines táctiles integrados del ESP32 y cómo usarlo en la Pico con MicroPython.

Módulo sensor táctil capacitivo TTP223
Módulo sensor táctil TTP223: sensor capacitivo de una tecla, tres pines (VCC, I/O, GND) y los puentes de soldadura A y B para elegir el modo.

¿Qué es el sensor táctil TTP223 y cómo funciona?

El pad de cobre del módulo y la zona de masa (GND) de la placa forman un pequeño condensador de unos pocos picofaradios. Cuando tu dedo se acerca al pad, tu cuerpo se suma a ese condensador y la capacidad total aumenta unos pocos picofaradios. El oscilador de medida del TTP223, de aproximadamente 1 MHz, detecta ese aumento como un cambio de frecuencia, compara el resultado con un valor de referencia que guarda y cambia la salida si la diferencia es suficiente. La fórmula del condensador de placas paralelas C = ε·A/d también se aplica aquí: cuanto mayor sea el área del pad (A) y más fino el material entre el dedo y el pad (d), mejor será la detección.

El chip fija su valor de referencia por sí mismo. En cuanto le das alimentación, mide su entorno durante unos 0,5 segundos e ignora los toques durante ese tiempo. Después, mientras nadie lo toque, se recalibra aproximadamente cada 4 segundos, de modo que los cambios lentos como la temperatura y la humedad se compensan con el tiempo. Por eso el sensor considera "sin tocar" todo lo que rodea al pad al encenderse: si tu dedo está sobre el pad en el arranque, no te detectará en absoluto.

CaracterísticaValor
ChipTTP223-BA6 (encapsulado SOT-23 de 6 pines)
Tensión de alimentación2,0–5,5 V
Consumo del chip (3 V, sin LED)Típico 1,5 µA, máximo 3 µA
Tiempo de respuestaHasta ~220 ms en modo de bajo consumo, ~60 ms en modo rápido
Tipo de salidaCMOS (push-pull); el nivel HIGH es igual a VCC
Corriente de salida (a 3 V)Entrega unos 4 mA y absorbe 8 mA
Calibración al encenderUnos 0,5 s (no lo toques durante ese tiempo)
Ajuste de sensibilidadCondensador de 0–50 pF (Cs) entre el pad y GND
Temperatura de funcionamientoDe -20 a +70 °C
Pines del móduloVCC, I/O (SIG u OUT), GND

En la versión TTP223-BA6 que usan estos módulos, algunas opciones vienen fijadas dentro del encapsulado: el chip funciona siempre en modo de bajo consumo y el límite de 100 segundos de "tiempo máximo activado" que tienen otros encapsulados está desactivado. En modo de bajo consumo el chip gasta solo unos pocos microamperios, pero puede tardar hasta unos 220 ms en responder al primer toque. Tras detectar un toque, permanece unos 12 segundos en modo rápido y responde mucho antes a los siguientes. En una lámpara o un timbre no notarás este retardo, pero tenlo en cuenta si construyes un mando de juego que necesite reacciones rápidas.

Pines y conexión del TTP223

Pin del TTP223Arduino UnoESP32Raspberry Pi Pico
VCC5V3V33V3(OUT) (pin 36)
GNDGNDGNDGND (pin 38)
I/O (SIG)D2GPIO 26GP15 (pin 20)
Como la salida del TTP223 es push-pull, su nivel HIGH es igual a la tensión de alimentación. Si alimentas el módulo con 5 V y conectas su salida a un ESP32 o a una Pico, estarás aplicando 5 V a un pin de 3,3 V y el pin se dañará. En placas de 3,3 V alimenta siempre el módulo desde el pin 3V3. Además, no toques el pad durante el primer medio segundo tras el encendido; si no, el sensor tomará tu dedo como parte del entorno.

Como el pin de salida lleva la señal a HIGH y LOW por sí mismo, en Arduino no necesitas INPUT_PULLUP ni una resistencia externa; basta con declarar el pin como INPUT. Aquí no hay rebotes como en los pulsadores mecánicos, porque el chip solo cambia la salida cuando el toque es estable. Aun así, si quieres que tu código cuente un toque como un único evento, usa la detección de flancos que explicamos en cómo conectar un pulsador.

Elegir el modo con los puentes de soldadura A y B

Junto al chip, el módulo tiene dos pequeñas parejas de pads de soldadura marcadas como A y B. Están conectadas a dos pines de configuración del chip: en la mayoría de los módulos, A elige si la salida es activa en alto o en bajo (AHLB) y B, si el sensor funciona en modo momentáneo o biestable (TOG). Dentro del chip estos pines están llevados a GND mediante una resistencia, así que con los pads abiertos la opción vale "0"; si unes los dos pads con una gota de estaño, pasa a "1". Después de cambiar un puente, lo más seguro es desconectar y volver a conectar la alimentación. Si las marcas de tu placa son distintas, puedes comprobar el modo fácilmente con el LED del primer programa de prueba.

ABModo de funcionamientoAl tocarSalida al encender
AbiertoAbiertoMomentáneo, activo en alto (de fábrica)HIGH mientras lo tocasLOW
PuenteadoAbiertoMomentáneo, activo en bajoLOW mientras lo tocasHIGH
AbiertoPuenteadoBiestable (toggle), activo en altoEl estado cambia con cada toqueLOW
PuenteadoPuenteadoBiestable (toggle), activo en bajoEl estado cambia con cada toqueHIGH
Si trabajas con un microcontrolador, deja la configuración de fábrica (los dos pads abiertos) y crea la lógica de encendido y apagado por software; así también podrás añadir comportamientos como el toque largo o el doble toque. El modo biestable es útil en circuitos donde el módulo conmuta directamente un transistor o un LED sin ningún código de por medio. El modo activo en bajo es práctico cuando cambias por el sensor un pulsador conectado con INPUT_PULLUP: el código ya espera LOW al pulsar, así que no tienes que cambiar ni una línea. Para abrir un puente cerrado por error, usa malla desoldadora; encontrarás consejos en cómo soldar.

Primera prueba con Arduino: leer un toque

  1. Conecta el pin VCC del módulo al pin 5V del Arduino, GND a GND y el pin I/O a D2.
  2. Sube el programa de abajo y abre el Monitor Serie a 9600 baudios.
  3. Cuando la placa arranque, espera alrededor de un segundo sin tocar el pad; durante ese tiempo el chip se calibra.
  4. Toca el pad con el dedo: el LED integrado del Arduino en el pin 13 (y, en la mayoría de los módulos, también el LED de la propia placa) debería encenderse y el número de toques en el Monitor Serie debería subir en uno.
  5. Mientras mantengas el dedo sobre el pad, el LED seguirá encendido; el contador, en cambio, solo sube una vez por cada toque nuevo.
C++ (Arduino IDE)
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}

La parte más importante del código es la detección de flancos. La lectura anterior se guarda en la variable lastState; si la nueva lectura es HIGH y la anterior era LOW, se trata de un toque nuevo. Sin esta comprobación, el contador subiría en cada vuelta del bucle mientras el dedo siga en el pad, es decir, miles de veces por segundo. La espera de 600 ms en setup() garantiza que el chip haya terminado de calibrarse cuando el Arduino y el módulo se alimentan a la vez. Elegimos D2 porque es uno de los pines de interrupción del Uno; si quieres, también puedes capturar el toque con una interrupción usando attachInterrupt(digitalPinToInterrupt(2), funcion, RISING).

Proyecto: lámpara táctil con Arduino

Ahora vamos a construir una lámpara táctil de verdad: un toque corto la enciende y la apaga, si mantienes el dedo en el pad con la lámpara encendida la luz baja poco a poco, y con el siguiente toque largo vuelve a subir. Como el brillo se ajusta con PWM, conectamos la lámpara a D9, uno de los pines PWM del Uno. Para hacer pruebas basta con un LED y una resistencia de 220 Ω en D9 (calcula el valor correcto con la calculadora de resistencia para LED). Si vas a usar una tira LED de 12 V, intercala un MOSFET de nivel lógico como el IRLZ44N; tienes los detalles en cómo usar un MOSFET con Arduino.

C++ (Arduino IDE)
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}
Parte del códigoFunción
touchStartGuarda con millis() el momento en que empezó el toque
LONG_PRESS = 600Los toques de más de 600 ms cuentan como orden de regulación
dimmingSe marca si en este toque se reguló el brillo, para que la lámpara no se apague al levantar el dedo
stepCambia de signo en cada toque largo; la luz baja una vez y sube la siguiente
constrain(brightness, 10, 255)Mantiene el brillo en un rango en el que la lámpara nunca se apaga del todo
Conmutar al soltarLa decisión se toma al levantar el dedo para poder distinguir toques cortos y largos

Fíjate en que el código no tiene ningún delay(): toda la temporización se hace con millis(), así que el bucle sigue girando y no se pierde ningún toque. Tienes más detalles sobre esta técnica en millis() frente a delay(). Como el último brillo queda guardado en la variable brightness, al apagar y encender la lámpara la luz vuelve al nivel que ajustaste por última vez, igual que las lámparas táctiles de escritorio de las tiendas.

Con el mismo sensor también puedes controlar una lámpara de red (110–230 V), pero solo encenderla y apagarla: un módulo de relé no puede regular con PWM, así que usa digitalWrite en lugar de analogWrite. Mantén el cableado de red dentro de una caja cerrada y nunca pegues el pad del TTP223 sobre una superficie metálica conectada a la red; entre el pad y la red siempre debe haber un panel aislante. Si no tienes experiencia con la tensión de red, haz esta parte junto a un adulto.

Detección a través de materiales finos

La característica más apreciada del TTP223 es que puede funcionar desde dentro de una caja sin agujeros. El plástico, el acrílico, el vidrio, la madera, el papel y la tela dejan pasar el campo eléctrico; el material entre el pad y el dedo actúa como el dieléctrico de un condensador. Cuanto más grueso es el material, mayor es d en la fórmula y menor la capacidad entre el dedo y el pad; duplicar el grosor reduce esa capacidad aproximadamente a la mitad. El vidrio tiene una constante dieléctrica mayor que la mayoría de los plásticos, por lo que un vidrio del mismo grosor suele dar mejores resultados. En la práctica, el módulo suele funcionar sin problemas detrás de un panel de plástico, acrílico o vidrio de 1–3 mm; con paneles más gruesos necesitarás un pad más grande y conviene probar siempre con tu propio material.

  • No dejes una cámara de aire: El aire tiene una constante dieléctrica de 1, e incluso un hueco de 1 mm reduce mucho la sensibilidad. Pega el módulo firmemente al panel, con el lado del pad hacia él, usando cinta de doble cara fina o adhesivo.
  • Agranda el pad: Para tener una zona táctil más grande, recorta un electrodo de cinta de cobre o papel de aluminio, rasca con cuidado el barniz protector en una esquina del pad y suelda el electrodo con un cable muy corto. Cuanto más largo sea el cable, más capacidad propia añade y más inestable se vuelve el sensor.
  • Evita el metal: Los paneles metálicos, los materiales con carga metálica y las pinturas metalizadas concentran el campo eléctrico sobre sí mismos; el sensor o no detecta nada o se dispara solo.
  • Reduce el exceso de sensibilidad: Si el sensor se dispara antes de que se acerque el dedo, añade un pequeño condensador cerámico de 5–20 pF (Cs) entre el pad y GND; cuanto mayor sea el valor, menor será la sensibilidad, con 50 pF como límite. Puedes descifrar el código impreso en el condensador (p. ej., 100 = 10 pF, 220 = 22 pF) con la herramienta código de condensadores.
  • Primero monta y luego alimenta: Como el chip toma su entorno como referencia al encenderse, conecta la alimentación cuando el panel y la tapa ya estén colocados. Si colocas el panel con el módulo encendido, el chip puede tomarlo como un toque permanente; en ese caso basta con desconectar y volver a conectar la alimentación.

Usar varias teclas táctiles

Cada TTP223 vigila su propio pad de forma independiente; si quieres cuatro teclas, conectas cuatro módulos a cuatro pines digitales distintos, y los módulos comparten VCC y GND. Si las teclas están muy juntas, tu dedo puede afectar también al pad vecino; deja al menos 1–2 cm entre los pads y mantén los módulos lejos de los cables de motores o relés. El programa de abajo usa cuatro TTP223 y un zumbador pasivo para crear un pequeño piano táctil: cada tecla que tocas suena con su nota y el sonido se detiene al levantar el dedo.

C++ (Arduino IDE)
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}

Como tone() solo puede tocar una nota a la vez, el código elige la primera tecla tocada y solo actualiza la nota cuando cambia, para que el sonido no chisporrotee. En el Uno, tone() usa el Timer2, así que analogWrite no funciona en los pines 3 y 11 mientras suena el zumbador; aquí no es un problema porque el piano solo usa D3 como entrada. Si necesitas muchas teclas, es más ordenado pasar a chips multicanal en lugar de un módulo por tecla: el TTP224 ofrece cuatro teclas con cuatro salidas independientes, el TTP229 lee 8 o 16 teclas mediante una interfaz serie de dos hilos y el MPR121 vigila 12 electrodos por I2C.

ESP32: ¿TTP223 o los pines táctiles integrados?

El ESP32 clásico lleva integrado un sensor táctil capacitivo, y 10 pines (T0–T9) se pueden usar como teclas táctiles sin ningún módulo: GPIO 4, 0, 2, 15, 13, 12, 14, 27, 33 y 32, en ese orden. La función touchRead() devuelve un número en bruto; en el ESP32 clásico ese número baja al tocar, mientras que en el ESP32-S2 y el S3 sube. El ESP32-C3 no tiene sensor táctil. Para ver a fondo los pines integrados, consulta los pines táctiles del ESP32; la tabla de abajo compara las dos opciones.

CaracterísticaMódulo TTP223Táctil integrado del ESP32
Pieza adicionalNecesaria (1 tecla por módulo)No necesaria; basta un cable o un pad de cobre en el pin
SalidaHIGH/LOW digital ya listoNúmero en bruto; tú eliges el umbral
CalibraciónLa hace el propio chipTienes que medir y fijar un umbral en el código
¿Qué placas?Todas (Uno, Nano, ESP, Pico)Solo ESP32, ESP32-S2 y ESP32-S3
Número de teclasTantas como módulos10 en el ESP32, 14 en el S2 y el S3
Despertar del deep sleepMediante ext0/ext1 en un GPIO RTCCon touchSleepWakeUpEnable()
Cables largos y humedadEstable, porque el pad está en el móduloLos valores derivan al alargar el cable y el umbral deja de servir
C++ (Arduino IDE)
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}

Al arrancar, este programa mide el valor de T0 sin tocar y usa el 70 % como umbral; observa el valor en bruto en el Monitor Serie (115200 baudios) para ajustar la proporción a tu cableado. Si usas un ESP32-S3, el valor sube al tocar, así que invierte la comparación (por ejemplo, umbral = valor medido × 1,3 y raw > umbral). Otra razón para conectar el TTP223 a GPIO 26 es que es un GPIO RTC: con esp_sleep_enable_ext0_wakeup(GPIO_NUM_26, 1) puedes poner el ESP32 en deep sleep y despertarlo con un toque. Como el TTP223 solo consume unos pocos microamperios, forman una pareja ideal para proyectos con batería; tienes los detalles en deep sleep en el ESP32.

TTP223 con la Raspberry Pi Pico (MicroPython)

El chip RP2040 de la Pico no tiene sensor táctil, así que el TTP223 es la forma más sencilla de añadirle una tecla táctil. Alimenta el módulo desde el pin 3V3(OUT) (pin físico 36) y conecta el pin I/O a GP15 (pin físico 20). El código MicroPython de abajo conmuta el LED integrado de la placa con cada toque. Como captura el toque con una interrupción (IRQ), no se pierde ninguno aunque el bucle principal esté ocupado con otras tareas. Si aún no sabes cómo instalar MicroPython en la Pico, empieza por ¿Qué es la Raspberry Pi Pico?.

MicroPython
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)

En las versiones actuales de MicroPython, el nombre Pin("LED") selecciona el LED integrado tanto en la Pico como en la Pico W. Si has soldado el puente B y el módulo está en modo biestable, ni siquiera necesitas la interrupción: basta con escribir led.value(touch.value()) en el bucle, porque ahora es el propio chip quien guarda el estado de encendido y apagado. Aunque la salida del chip no rebota, el bloqueo de 250 ms del código evita que impulsos de ruido cortos en cables largos cambien el LED dos veces.

Ideas de proyectos con el TTP223

  • Luz nocturna táctil: Añade un LDR para que la lámpara solo responda al toque cuando esté oscuro.
  • Lámpara que cambia de color: Cambia el color de un anillo WS2812B NeoPixel con cada toque y ajusta el brillo con un toque largo.
  • Cerradura con clave oculta: Coloca cuatro TTP223 detrás de un panel de acrílico; al tocar las teclas en el orden correcto, un servomotor abre la cerradura.
  • Timbre sin agujeros: Pega el sensor dentro de una caja de plástico; al tocarlo, un DFPlayer Mini reproduce el sonido del timbre.
  • Interruptor táctil para enchufe: Enciende y apaga una lámpara de escritorio o un ventilador con un módulo de relé.
  • Mando a pilas: Mantén un ESP32 en deep sleep; al tocar el TTP223 se despierta y envía una orden por ESP-NOW.

Errores frecuentes y cómo solucionarlos

SíntomaCausa probableSolución
No responde al toqueHabía un dedo en el pad al encender o el panel es demasiado gruesoRetira la mano y reinicia la alimentación; usa un panel más fino o un pad más grande
Se dispara soloDemasiada sensibilidad, metal cerca del pad, fuente ruidosaAñade 5–20 pF entre el pad y GND, aleja el metal y pon 100 nF entre VCC y GND
Se queda como si lo tocaran siempreEl panel o la tapa se colocó con el módulo encendidoPrimero monta y luego alimenta
El contador sube varias veces por toqueEl código lee el nivel, no el flancoGuarda el estado anterior y cuenta solo en el paso de LOW a HIGH
El primer toque se detecta con retrasoEl chip está en modo de bajo consumo (~220 ms)Es normal; los toques siguientes se detectan más rápido
Pin del ESP32 o de la Pico dañadoEl módulo se alimentó con 5 VAlimenta siempre el módulo desde el pin 3V3
En modo biestable la lámpara arranca encendidaEl puente A selecciona activo en bajoElige el estado inicial con el puente A o invierte la lógica en el código
Los sensores táctiles son sensibles a las variaciones de la alimentación, y el propio fabricante del chip insiste en que la alimentación debe ser estable. Los cargadores de móvil baratos, los motores y los relés generan ruido. Soldar un condensador cerámico de 100 nF entre VCC y GND del módulo, alejar los cables de los motores del sensor y mantener corto el cable hacia el pad elimina la mayoría de los disparos falsos.

El TTP223 es la forma más sencilla de añadir una interfaz táctil moderna a tus proyectos con un módulo muy barato: sustituye al pulsador mecánico, funciona detrás de paneles sin agujeros y se entiende con cualquier microcontrolador. Prueba primero a leerlo con la configuración de fábrica y luego afianza la detección de flancos y la lógica del toque largo con los ejemplos de la lámpara y el piano. En la aplicación BlueGrays encontrarás, paso a paso y con esquemas y código, proyectos para encender un LED con un pulsador, un LED de encendido y apagado, proyectos de pulsadores con ESP32 y Pico y el control de una bombilla de red, y podrás convertirlos todos en proyectos táctiles poniendo un TTP223 en lugar del pulsador.

Preguntas frecuentes

¿Con qué tensión funciona el TTP223?

El chip TTP223 funciona entre 2,0 y 5,5 V; en un Arduino Uno se alimenta con 5 V y en un ESP32 o una Raspberry Pi Pico con 3,3 V. Como el nivel HIGH de la salida es igual a la tensión de alimentación, alimenta siempre el módulo con la tensión lógica de la placa a la que va conectado.

¿Para qué sirven A y B en el TTP223?

A y B son puentes de configuración que se cierran con estaño. En la mayoría de los módulos, el puente A hace que la salida sea activa en bajo (LOW al tocar) y el puente B pone el sensor en modo biestable, en el que la salida cambia con cada toque y se queda así. Con los dos abiertos, el módulo está en modo momentáneo y da HIGH mientras lo tocas.

¿El TTP223 funciona a través de vidrio o plástico?

Sí, funciona a través de plástico, acrílico, vidrio, madera y papel siempre que no contengan metal. En la práctica, los paneles de 1–3 mm suelen funcionar sin problemas; con paneles más gruesos hay que agrandar el pad con cinta de cobre. Recuerda pegar el módulo al panel sin dejar aire entre ambos.

¿Por qué mi TTP223 se activa solo?

Las causas más frecuentes son el exceso de sensibilidad, piezas metálicas cerca del pad, cables de electrodo largos y una fuente de alimentación ruidosa. Añadir un condensador de 5–20 pF entre el pad y GND reduce la sensibilidad. Poner un condensador de 100 nF entre VCC y GND y usar un buen adaptador también suele resolver el problema.

¿Cómo enciendo una lámpara de red con un TTP223?

La salida del TTP223 solo entrega unos pocos miliamperios, así que no puede mover directamente una lámpara ni la bobina de un relé. Conecta el sensor a un Arduino y deja que el Arduino active un módulo de relé; el relé solo enciende y apaga, no regula. Mantén el cableado de red en una caja cerrada y nunca pegues el pad sobre una superficie conectada a la red.

¿Necesito un TTP223 para usar táctil en el ESP32?

No; los 10 pines táctiles del ESP32 clásico se pueden usar directamente con touchRead(). Eso sí, tienes que fijar el umbral por software y los valores derivan con cables largos. Si quieres una salida digital estable y lista para usar, o usas una placa sin pines táctiles como el ESP32-C3, el TTP223 es más práctico.

Ver todos los proyectos
Encender y apagar un LED con un botón
#10Principiante

Encender y apagar un LED con un botón

Pulsas el botón una vez y la luz se enciende, lo pulsas otra vez y se apaga, igual que el interruptor de tu habitación. El Arduino nota cada pulsación y cambia el LED al estado contrario, esperando un

4.8(100)
167
Encender un LED con pulsador (Push)
#9Principiante

Encender un LED con pulsador (Push)

Como un timbre: la luz se enciende mientras pulsas y se apaga cuando sueltas. El Arduino escucha el botón todo el rato; mientras está pulsado enciende el LED, y en cuanto levantas el dedo lo apaga. Co

4.8(113)
229
Control de LED con botón en ESP32 (Toggle)
#105Principiante

Control de LED con botón en ESP32 (Toggle)

Cada vez que se pulsa el botón, cambia el estado del LED: si está encendido se apaga, si está apagado se enciende. Patrón de conmutación clásico. Con debounce limpiamos el ruido mecánico del pulsador para garantizar una sola conmutación con una sola pulsación.

4.6(39)
57
Raspberry Pi Pico Botón Toggle LED
#156Principiante

Raspberry Pi Pico Botón Toggle LED

¡Botón + LED — siguiente nivel! A diferencia del proyecto básico de botón, no necesitas mantener el botón presionado. Presiona y suelta → LED encendido. Presiona de nuevo → LED apagado (toggle). Mismo circuito, gran diferencia de código. Aprende edge detection, state tracking y debounce.

0.0(0)
9
Encender y apagar una bombilla de 220 V con un botón
#20Avanzado
Premium

Encender y apagar una bombilla de 220 V con un botón

¿Quieres encender y apagar una bombilla de verdad de casa con un pequeño botón? Cada vez que lo pulsas, el Arduino acciona un relé y la bombilla se enciende; si vuelves a pulsar, se apaga. El relé es

4.5(33)
44
Piano sencillo con zumbador y botón
#26Avanzado
Premium

Piano sencillo con zumbador y botón

Monta tu propio pequeño piano con ocho botones. Cada botón es una nota, de grave a agudo: do, re, mi, fa, sol, la, si y el do agudo. La nota suena en el zumbador mientras mantienes el botón pulsado y

4.9(66)
88
ESP32 LED Fade con PWM
#110Principiante

ESP32 LED Fade con PWM

Cambiar el brillo del LED suavemente de 0 a max, de max a 0. Controlamos PWM con analogWrite() como en Arduino - la misma sintaxis con ESP32 Arduino Core 3.0+ funciona sin problemas. Pin definición + pinMode + analogWrite es suficiente.

4.8(36)
54
Iluminación inteligente de escaleras y pasillos
#82Intermedio
Premium

Iluminación inteligente de escaleras y pasillos

Pisas la escalera o entras en el pasillo y las luces se encienden escalón a escalón en la dirección en la que caminas. Hay un sensor de distancia en cada extremo; pases por el que pases, los ocho LED

5.0(35)
51