A Raspberry Pi Pico and KY-006 Passive Buzzer

In this article, we connect a KY-006 Passive Buzzer to a Raspberry Pi Pico, any Rp2040 type board will be suitable. We actually tested this with a Cytron Maker Pi Pico

We will use Micropython for these examples but of course you can use the Arduino IDE as well if you have Raspberry Pi Pico support enabled

The KY-006 passive buzzer is a 3-pin module that creates an audible sound of varying frequencies using pulse width modulation .  It can produce a range of tones and sounds depending on the input.  This means you can create sound effects or simple musical notes.

  • Min/Max Operating Voltage 1.5V to 15V DC
  • Current: <25mA
  • Frequency: <20Hz to >2.5kHz
  • Dimensions: 0.728in x 0.591in (18.5mm x 15mm)

The sensor looks like this

Parts Required

You can connect to the module using dupont style jumper wire.

Name   Link
Raspberry Pi Pico
37 in one sensor kit
Connecting cables

 

Schematic/Connection

Pico SENSOR
GPIO28 S
3v3 +
GND

 

Code Examples

Basic example

from machine import Pin, PWM
from utime import sleep

# Initialization of GPIO15 as PWM pin
buzzer = PWM(Pin(28))

# Defining the different pitches
tones = {
"B0": 31,
"C1": 33,
"CS1": 35,
"D1": 37,
"DS1": 39,
"E1": 41,
"F1": 44,
"FS1": 46,
"G1": 49,
"GS1": 52,
"A1": 55,
"AS1": 58,
"B1": 62,
"C2": 65,
"CS2": 69,
"D2": 73,
"DS2": 78,
"E2": 82,
"F2": 87,
"FS2": 93,
"G2": 98,
"GS2": 104,
"A2": 110,
"AS2": 117,
"B2": 123,
"C3": 131,
"CS3": 139,
"D3": 147,
"DS3": 156,
"E3": 165,
"F3": 175,
"FS3": 185,
"G3": 196,
"GS3": 208,
"A3": 220,
"AS3": 233,
"B3": 247,
"C4": 262,
"CS4": 277,
"D4": 294,
"DS4": 311,
"E4": 330,
"F4": 349,
"FS4": 370,
"G4": 392,
"GS4": 415,
"A4": 440,
"AS4": 466,
"B4": 494,
"C5": 523,
"CS5": 554,
"D5": 587,
"DS5": 622,
"E5": 659,
"F5": 698,
"FS5": 740,
"G5": 784,
"GS5": 831,
"A5": 880,
"AS5": 932,
"B5": 988,
"C6": 1047,
"CS6": 1109,
"D6": 1175,
"DS6": 1245,
"E6": 1319,
"F6": 1397,
"FS6": 1480,
"G6": 1568,
"GS6": 1661,
"A6": 1760,
"AS6": 1865,
"B6": 1976,
"C7": 2093,
"CS7": 2217,
"D7": 2349,
"DS7": 2489,
"E7": 2637,
"F7": 2794,
"FS7": 2960,
"G7": 3136,
"GS7": 3322,
"A7": 3520,
"AS7": 3729,
"B7": 3951,
"C8": 4186,
"CS8": 4435,
"D8": 4699,
"DS8": 4978
}

# Defining the song to be played
mytune = ["A5","C5","D8","P","G7","G5","E6","A5","P"]

def playTone(frequency):
    buzzer.duty_u16(1000)
    buzzer.freq(frequency)

# Switch off the buzzer
def buzzerOff():
    buzzer.duty_u16(0)

def playSong(mytune):
    for i in range(len(mytune)):
        if (mytune[i] == "P"):
            buzzerOff()
        else:
            playTone(tones[mytune[i]])
        sleep(0.3)
    buzzerOff()

# play song
playSong(mytune)

 

REPL Output

n/a

Links

https://github.com/getelectronics/rp2040learning/tree/main/Sensor%20Kit/KY-006%20Passive%20Buzzer

 

Related posts

A Raspberry Pi Pico and KY-012 Active Buzzer

A Raspberry Pi Pico and KY-032 Obstacle Detector

A Raspberry Pi Pico and KY-033 Line Detector module

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Read More