Skip to main content

Active Buzzer

Introduction​

In daily life, many electronic devices sound an alarm when a fault occurs, and sound often draws more attention than indicator lights. In this section, let's learn how to drive an active buzzer with the WalnutPi.

Objective​

Program the buzzer to produce beeping sounds.

Explanation​

Buzzers are mainly divided into active buzzers and passive buzzers. An active buzzer produces sound (with a fixed frequency) when controlled by HIGH/LOW levels, while a passive buzzer is controlled by PWM waves (capable of producing sounds of different frequencies). In this section, we'll explain the use of an active buzzer.

The usage of an active buzzer is similar to an LED — simply apply a HIGH level to the buzzer to make it sound.

Connection of the active buzzer to the WalnutPi: GND → GND, VCC → 3.3V, IO → PI15 (you can also change to any GPIO you want to use)

active_buzzer1

The WalnutPi PI15's name in the Python library is board.PI15:

active_buzzer2

The digitalio Object​

In CircuitPython, you can directly use the digitalio (Digital IO) module to program IO input/output for HIGH/LOW level output. Details are as follows:

Constructor​

active_buzzer=digitalio.DigitalInOut(pin)

Parameter description:

  • pin Board pin number. Example: board.PI15

Methods​

active_buzzer.direction = value

Define pin as input/output. Possible value values:

  • digitalio.Direction.INPUT : Input.
  • digitalio.Direction.OUTPUT : Output.

The time Object​

time can be used for delays.

Constructor​

import time

The time module, imported directly:

Methods​

time.sleep(value)

Delay.

  • value refers to the delay time in seconds. A value of 1 means 1 second; a value of 0.1 means 0.1 seconds, i.e., 100ms.

The active buzzer, like the LED, uses the digitalio object in output mode. We can implement code that changes between HIGH and LOW levels every 0.5 seconds to produce a beeping sound from the buzzer.

Reference Code​

'''
Experiment Name: Active Buzzer
Experiment Platform: WalnutPi
'''

# Import related modules
import board, time
from digitalio import DigitalInOut, Direction, Pull

# Construct and initialize buzzer object
active_buzzer = DigitalInOut(board.PI15) # Define pin number
active_buzzer.direction = Direction.OUTPUT # IO as output

for i in range(5):

active_buzzer.value = False # Turn on buzzer
time.sleep(0.5) # Delay 0.5s
active_buzzer.value = True # Turn off buzzer
time.sleep(0.5) # Delay 0.5s

Result​

Use Thonny to remotely run the above Python code on the WalnutPi. For instructions on running Python code on the WalnutPi, please refer to: Running Python Code

active_buzzer3

When running the code, you can hear the active buzzer periodically producing "beep beep" sounds.

active_buzzer4