INICIO /  APRENDE /  BLOG /  GUÍA
Guía9 min·

Conector jack 3,5 mm: TRS, TRRS y cómo usarlo con Arduino y ESP32

El conector jack de 3,5 mm es el enchufe de los audífonos. Según el número de contactos se llama TS (2), TRS (3) o TRRS (4), y en un proyecto con Arduino o ESP32 sirve para sacar audio, para conectar un sensor con un cable delgado o para detectar que alguien insertó un enchufe. Con el mismo nombre, jack, también se vende el conector de alimentación de 2,1 x 5,5 mm. Este artículo cubre los dos, el pinout, la diferencia entre CTIA y OMTP y el código para leer la inserción de un plug.

Jack de audio y jack de alimentación: dos conectores con el mismo nombre

En el catálogo de Zamper, jack nombra dos familias. El conector de audio de 3,5 mm acepta un plug de 3,5 mm de diámetro, el de los audífonos, y la ficha de Zamper lo describe como estéreo, soldable, para placa o panel. El conector de alimentación, también llamado barrel jack o DC jack, acepta un plug cilíndrico. El Conector Jack Hembra de Zamper es de este segundo tipo: su ficha indica 2,1 mm x 5,5 mm, 3 A y 12 V, para panel con tuerca de fijación. Es el mismo formato del conector de alimentación del Arduino Uno, que según su datasheet es de 2,1 x 5,5 mm. Un plug de audio y uno de alimentación no son intercambiables, así que antes de comprar mide el diámetro del plug que vas a usar.

Conector jack 3.5 mm: TS, TRS y TRRS

Las letras nombran las partes metálicas del plug, de la punta hacia el cable. T es tip (punta), R es ring (anillo) y S es sleeve (manga). Un plug TS tiene dos contactos y lleva una señal mono más tierra. Un TRS tiene tres y sirve para audio estéreo o para una señal balanceada. Un TRRS tiene cuatro y es el de los audífonos con micrófono. En los tres, la manga suele ser la tierra común, y por eso las señales que puedes transmitir son menos que los contactos. El diámetro de la manga es de unos 3,5 mm en el formato mini, 6,35 mm en el formato grande y 2,5 mm en el submini.

Pinout de un TRS y de un TRRS

En un TRS estéreo, la punta lleva el canal izquierdo, el anillo lleva el derecho y la manga es la tierra. En un TRRS, la punta y el primer anillo siguen siendo izquierdo y derecho. Los dos últimos contactos, el segundo anillo y la manga, llevan el micrófono y la tierra, y el orden depende del estándar. En el estándar OMTP el segundo anillo es el micrófono y la manga es la tierra. En CTIA, también llamado AHJ, el segundo anillo es la tierra y la manga es el micrófono. Si conectas un audífono CTIA a un equipo OMTP o al revés, el audio sigue sonando, pero el micrófono no funciona, y puede faltar la voz central porque los parlantes quedan en contrafase. Cuando una placa o un cable con micrófono no responde, prueba intercambiar esos dos contactos.

Jack de panel y jack para placa: qué trae la ficha del fabricante

Los fabricantes publican el detalle de cada terminal. Como ejemplo, la serie SJ1-352xN de Same Sky (antes CUI Devices) es un jack de audio para placa que acepta un plug de 3,5 mm. En su datasheet, el último dígito del código indica el contacto de conmutación: 3 es sin interruptor, 4 tiene interruptor de punta y 5 tiene interruptor de punta y de anillo. Los terminales 1, 2 y 3 son la manga, la punta y el anillo, el terminal 10 es el interruptor de punta y el 11 el de anillo. Sus valores nominales son 12 Vdc, 1 A, 5.000 ciclos de vida y una temperatura de operación de -25 a 85 °C. Los jacks genéricos pueden tener otra asignación, así que la ficha de tu modelo y el multímetro mandan sobre este ejemplo.

Para qué sirve el contacto de conmutación

Un jack con contacto de conmutación (switch) tiene un terminal extra que cambia de estado cuando entra el plug. En un jack mono típico, el contacto normalmente cerrado está unido a la punta mientras no hay plug y se separa al insertar uno. Los equipos de audio lo usan para silenciar los parlantes cuando conectas audífonos, y otros circuitos lo usan para desconectar una batería interna cuando entra una fuente externa. Con un microcontrolador sirve para saber que alguien conectó algo, por ejemplo un sensor externo o un cable de programación.

Cómo identificar los terminales con un multímetro

Antes de soldar, mide continuidad con el multímetro. Sin plug, anota qué pares de terminales conducen. Inserta un plug de prueba y vuelve a medir. El par que conducía y deja de conducir al insertar es el contacto de conmutación. Con el plug dentro, toca la punta, el anillo y la manga del plug para saber qué terminal del jack corresponde a cada uno. Funciona con cualquier modelo, incluso sin ficha. El jack de alimentación de 3 pines de Zamper tiene un tercer pin para detección de conexión, y su ficha indica que, si no se usa, se deja a GND.

Detectar que se insertó un plug con INPUT_PULLUP

Une el contacto de conmutación a un pin del microcontrolador y el otro extremo de ese contacto a GND, y activa la resistencia pull-up interna con INPUT_PULLUP. Según la documentación de Arduino, el pin queda en HIGH cuando el circuito está abierto y en LOW cuando conduce a GND. Si tu jack se cierra a GND sin plug, el pin lee LOW sin plug y HIGH con el plug dentro. Si tu medición muestra lo contrario, invierte la condición del código. En el SJ1-3524N, el contacto de conmutación (terminal 10) forma par con el terminal de la punta (terminal 2). Con ese cableado, la punta del plug insertado queda a GND y ese jack no puede llevar audio. Si el jack también debe pasar audio, usa el interruptor de anillo de la variante SJ1-3525N (terminal 11) o el pin de detección del jack de alimentación de 3 pines (Conector Jack Hembra 2-3 pin). En el ESP32, la pull-up interna es de 45 kΩ según la documentación de Arduino-ESP32, y los GPIO 34 a 39 no la tienen, así que con ellos necesitas una resistencia externa. Evita también los GPIO 0, 2, 5, 12 y 15, que son pines de arranque. Los contactos mecánicos rebotan, así que filtra el rebote en el programa antes de actuar.

const int PIN_DETECTOR = 4;   // contacto de conmutación del jack, el otro extremo a GND
const unsigned long TIEMPO_REBOTE = 50;

int estadoEstable;
int ultimaLectura;
unsigned long ultimoCambio = 0;

void setup() {
  Serial.begin(115200);
  pinMode(PIN_DETECTOR, INPUT_PULLUP);
  estadoEstable = digitalRead(PIN_DETECTOR);
  ultimaLectura = estadoEstable;
  // este ejemplo asume contacto cerrado a GND sin plug
  Serial.println(estadoEstable == HIGH ? "Inicio: plug insertado" : "Inicio: sin plug");
}

void loop() {
  int lectura = digitalRead(PIN_DETECTOR);

  if (lectura != ultimaLectura) {
    ultimoCambio = millis();
  }

  if ((millis() - ultimoCambio) > TIEMPO_REBOTE && lectura != estadoEstable) {
    estadoEstable = lectura;
    // este ejemplo asume contacto cerrado a GND sin plug
    Serial.println(estadoEstable == HIGH ? "Plug insertado" : "Sin plug");
  }

  ultimaLectura = lectura;
}

El jack como conector de sensor

Un jack de 3,5 mm también sirve como conector desmontable para un sensor con tres cables. Un TRS tiene tres contactos, justo los de un sensor con alimentación, señal y tierra. Es el uso que menciona la ficha del conector jack 3,5 mm de Zamper, que indica que puede servir como conector de sensores o motores. Si lo haces, define qué contacto lleva cada función, rotula el panel y el cable, y no lo conectes a una salida de audio, porque un plug de audífonos entraría sin dificultad en un puerto que no es de audio.

Sacar audio desde un ESP32 a un jack

El ESP32 original tiene dos canales DAC de 8 bits, en los GPIO 25 y 26 según la documentación de Espressif. El ESP32-S2 también tiene dos, en los GPIO 17 y 18. Las listas de periféricos de ESP-IDF para el ESP32-S3 y el ESP32-C3 no incluyen DAC, así que con esas variantes necesitas un DAC externo. Cada canal convierte un valor de 0 a 255 en un voltaje de 0 a Vref, que en la documentación de Arduino-ESP32 equivale a 0 V a 3,3 V. Esa salida es unipolar y lleva componente continua, y una entrada de línea o unos audífonos esperan una señal que oscile alrededor de 0 V. Pon un condensador de acoplamiento en serie con cada canal (por ejemplo 10 µF, con el positivo hacia el DAC) y baja el nivel con un divisor resistivo antes de la entrada de línea o de los audífonos. Con un jack TRS, el GPIO 25 va a la punta (canal izquierdo) a través de su condensador, el GPIO 26 al anillo (canal derecho) igual y la manga a GND. La salida del DAC es de baja potencia y no reemplaza a un amplificador de audífonos, así que revisa en la ficha del equipo receptor el nivel de entrada que admite. El ejemplo, para el ESP32 original, genera una onda triangular de prueba en los dos canales.

const int DAC_IZQUIERDO = 25;  // punta del jack
const int DAC_DERECHO = 26;    // anillo del jack

void setup() {}

void loop() {
  // rampa de subida y de bajada: onda triangular, valores de 0 a 255
  for (int v = 0; v < 255; v += 5) {
    dacWrite(DAC_IZQUIERDO, v);
    dacWrite(DAC_DERECHO, v);
    delayMicroseconds(100);
  }
  for (int v = 255; v > 0; v -= 5) {
    dacWrite(DAC_IZQUIERDO, v);
    dacWrite(DAC_DERECHO, v);
    delayMicroseconds(100);
  }
}

El jack de alimentación con Arduino y ESP32

El Conector Jack Hembra de 2,1 x 5,5 mm de Zamper permite alimentar un proyecto desde un adaptador de pared. La ficha indica 3 A y 12 V, con orificio de montaje de 7,8 mm y tuerca de fijación, y se vende en pack de 5 unidades. También hay una versión de 3 pines con el pin de detección que se mencionó antes, y un cable de extensión DC con conector jack de 40 cm y calibre 22 AWG. El Arduino Uno recibe esa alimentación por su propio jack, y su datasheet da 6 a 20 V como rango límite en el pad VIN. El rango recomendado es de 7 a 12 V según la documentación de Arduino. Una placa ESP32 de desarrollo suele alimentarse por USB, así que para usar el jack con ella necesitas un regulador. La guía de reguladores de este blog explica cuándo conviene un lineal y cuándo un step-down. Revisa la polaridad del adaptador antes de conectarlo.

Errores comunes con los jacks

Los errores más repetidos son comprar un jack de alimentación cuando buscabas uno de audio, o al revés; asumir que todos los TRRS siguen el mismo estándar y descubrir que el micrófono no responde; soldar sin medir antes qué terminal es el contacto de conmutación; no filtrar el rebote del contacto en el código; usar los GPIO 34 a 39 del ESP32 con INPUT_PULLUP, que no tienen pull-up interna; y conectar la salida de un DAC directo a un parlante sin amplificador.

¿Qué diferencia hay entre un jack TRS y uno TRRS?

El TRS tiene tres contactos (punta, anillo y manga) y lleva audio estéreo. El TRRS suma un segundo anillo, con lo que llega a cuatro contactos, y es el de los audífonos con micrófono.

¿Cuál es la diferencia entre CTIA y OMTP?

Es el orden de los dos últimos contactos de un TRRS. En OMTP el segundo anillo es el micrófono y la manga es la tierra. En CTIA es al revés. Ambos estándares ponen el canal izquierdo en la punta y el derecho en el primer anillo.

¿Puedo usar un jack de 3,5 mm para alimentar una placa?

Para una placa Arduino Uno, el conector es el de 2,1 x 5,5 mm. Un jack de audio de 3,5 mm tiene sus propios valores nominales, que cambian según el modelo. El SJ1-352xN de Same Sky, por ejemplo, indica 12 Vdc y 1 A, así que revisa la ficha del tuyo antes de pasar corriente por él.

¿Cómo sé si mi jack tiene contacto de conmutación?

Mide continuidad con un multímetro sin plug y con un plug insertado. Si un par de terminales conduce en un caso y no en el otro, ese par es el contacto de conmutación. También lo puedes ver en la ficha, donde suele aparecer como switch.

Fuentes técnicas

PRODUCTOS RELACIONADOS
Conector Jack 3.5mm - 10 UnidadesConector Jack Hembra - 5 UnidadesConector Jack Hembra 2-3 pin - Pack 10 UnidadesCable de extensión DC con conector jackConectoresSonidoRegulador de voltaje: lineal o step-downBotón pulsador: tipos y cómo conectarlo a ArduinoBuzzer: activo vs pasivo y cómo usarlo con ArduinoCotiza o consulta disponibilidad
¿NECESITAS AYUDA?

Habla con un especialista IoT.

Contactar