Skip to content
Buzzer / Piezo

Passive Piezo Buzzer

Piezo buzzer that requires PWM — play melodies and variable-pitch tones, not just fixed beeps.

A piezo buzzer that requires a driven PWM signal, allowing variable-pitch tones and simple melody playback rather than a fixed beep.

Specifications

Operating voltage3V - 5V DC
ControlRequires a driven square wave (PWM or the Arduino tone() function) — pitch equals drive frequency
Usable frequency range~2kHz - 5kHz for clearly audible tones (piezo response falls off outside this band)
Silent when idleNo internal oscillator — a constant HIGH or LOW produces no sound, unlike an active buzzer

Pinout

PinNameDescription
1VCC / I/OSignal input on breakout modules with 3 pins — a raw 2-lead piezo just has + and -
2GNDGround
3I/OOn 3-pin modules: the driven PWM/tone signal; on bare 2-lead piezos, drive across the two leads directly

tone() on Arduino drives this directly from a digital pin with no extra hardware; on ESP32 use the ledc PWM API instead since tone() isn't implemented the same way there.

Variants

Use a passive buzzer whenever a project needs more than a single fixed tone — melodies, alarms with a rising pitch, simple sound effects — since it's driven with tone() at whatever frequency the code chooses. If a project only ever needs a plain fixed beep, an active buzzer needs no tone-generation code at all; for real audio playback beyond simple tones, neither buzzer type is a substitute for a speaker and amplifier.

VariantPrice
Passive buzzer (this listing)~$0.30-1
Active buzzer~$0.30-1
Small speaker + amplifier~$3-10