Overview
This pre-soldered 3.5mm stereo audio jack breakout board exposes all four contacts of a TRRS (Tip-Ring-Ring-Sleeve) headphone-and-mic jack on standard breadboard pins, so you can wire it into any Arduino, Pi, or microcontroller project that needs to play sound, capture mic input, or use button-equipped headphones for input.
The four labelled pads are TIP (left audio), RING1 (right audio), RING2 (mic or video on TRRS jacks, ground on TRS jacks), and SLEEVE (ground or mic depending on standard). You also get a switch contact pair that detects when a plug is inserted — useful for auto-muting speakers when headphones are connected.
Use it as the audio output for a Pico W playing WAV files, the mic input for a voice-activated project, or just an easy way to add a 3.5mm jack to a custom enclosure without wiring loose connectors. Compatible with all standard 3.5mm plugs (TS, TRS, TRRS).
At a Glance
Specifications
| Parameter | Value |
| Connector | 3.5mm female (1/8") TRRS jack |
| Compatible Plugs | TS (mono), TRS (stereo), TRRS (stereo + mic) |
| Tip (T) | Left audio channel |
| Ring 1 (R1) | Right audio channel |
| Ring 2 (R2) | Microphone (CTIA standard) or GND (OMTP) |
| Sleeve (S) | GND (CTIA standard) or microphone (OMTP) |
| Switch Contact | Closes when plug inserted |
| Pin Header Pitch | 2.54 mm (0.1") breadboard standard |
| PCB Color | Red |
| Operating Voltage | Passive — handles whatever signal you drive |
| Dimensions | ~22 × 18 mm |
Pinout Diagram
Wiring Guide
Audio Output (Stereo)
Drive TIP and RING1 from your audio source (DAC, PWM-with-RC-filter, or amplifier output). SLEEVE goes to GND. RING2 stays disconnected for stereo headphone use.
| Jack Pad | Audio Source |
|---|---|
| TIP | Left audio out |
| RING1 | Right audio out |
| RING2 | Not connected |
| SLEEVE | GND |
Microphone Input (TRRS Headset)
Most modern headsets follow the CTIA standard. The mic signal sits on RING2; SLEEVE is ground. Add a bias resistor (~2.2k from VCC to RING2) so the electret mic gets DC bias to operate.
| Jack Pad | Connection |
|---|---|
| TIP | Headphone left (drive with audio out) |
| RING1 | Headphone right (drive with audio out) |
| RING2 | Mic in (with 2.2k pull-up to 3.3V/5V) |
| SLEEVE | GND |
Plug Detection Switch
The bottom three pads are a mechanical switch that closes when a plug is fully inserted. Wire it as a digital input with internal pull-up — when no plug is in, the input reads HIGH; insert a plug, the switch shorts to GND, and the input goes LOW.
| Switch Pad | Connection |
|---|---|
| Common | GND |
| NO (Normally Open) | GPIO with INPUT_PULLUP |
| NC (Normally Closed) | Optional — opposite polarity |
Code Examples
Arduino — Plug Detection
// 3.5mm Audio Jack Breakout - Detect when a plug is inserted
const int detectPin = 2;
void setup() {
Serial.begin(9600);
pinMode(detectPin, INPUT_PULLUP);
}
void loop() {
bool plugged = (digitalRead(detectPin) == LOW);
Serial.println(plugged ? "Plug INSERTED" : "Plug REMOVED");
delay(200);
}
Pico (MicroPython) — Play a Tone via PWM
# Play a 440 Hz tone out the audio jack via PWM (with RC low-pass filter)
# Wire: GP15 -> 1k resistor -> TIP, then 10nF capacitor TIP -> SLEEVE (GND)
from machine import Pin, PWM
import time
audio = PWM(Pin(15))
audio.freq(440) # A4 tone
audio.duty_u16(32768) # 50% duty -> square wave at 440 Hz
time.sleep(2)
audio.deinit()
Arduino — Read Mic Input
// Read electret mic from a TRRS headset
// Wire: RING2 -> 2.2k pull-up to 5V, then RING2 -> 0.1uF cap -> A0
// SLEEVE -> GND. The capacitor blocks the DC bias; A0 reads the AC audio.
const int micPin = A0;
const int samples = 64;
void setup() {
Serial.begin(115200);
}
void loop() {
long sum = 0;
long sumSq = 0;
for (int i = 0; i < samples; i++) {
int v = analogRead(micPin);
sum += v;
sumSq += (long)v * v;
}
long mean = sum / samples;
long rms = sqrt((sumSq / samples) - (mean * mean));
Serial.println(rms);
delay(20);
}