Blog
Arduino: Use a Motion Sensor to Sound a Piezo Buzzer

In this Arduino tutorial we’re going to learn how to use a motion sensor to sound a piezo buzzer. This is great for an intrusion detection circuit or burglar alarm circuit! Any time the motion sensor senses movement the piezo buzzer will make an audible sound. In this tutorial we will use an active piezo buzzer that does not need a PWM signal to operate.
RELATED: Piezo Buzzers: Active vs Passive
Parts List for this Project
Here’s a handy parts list for this project. Some of these links may be affiliate links. If you use them, they cost you nothing, but we may get a small commission that helps us keep building awesome content like this.
QTY | PART/LINK | ||
---|---|---|---|
1X | [icon name=”microchip” prefix=”fas”] | Arduino Uno | [icon name=”cart-plus” prefix=”fas”] |
1X | [icon name=”usb” prefix=”fab”] | USB Type B Cable | [icon name=”cart-plus” prefix=”fas”] |
1X | [icon name=”th” prefix=”fas”] | Solderless Breadboard | [icon name=”cart-plus” prefix=”fas”] |
1X | [icon name=”grip-lines” prefix=”fas”] | Jumper Wire Kit | [icon name=”cart-plus” prefix=”fas”] |
1X | [icon name=”walking” prefix=”fas”] | Motion Sensor | [icon name=”cart-plus” prefix=”fas”] |
1X | [icon name=”volume-up” prefix=”fas”] | Piezo Buzzer | [icon name=”cart-plus” prefix=”fas”] |
Wiring Diagram: Use a Motion Sensor to Sound a Piezo Buzzer
This wiring diagram will teach you how to wire your breadboard for using a motion sensor to sound a piezo buzzer! Since there are no resistors or capacitors needed, this is one of those projects where you could completely skip the breadboard and wire it direct to the Arduino should you choose. However, the breadboard definitely makes it easier to visualize. The choice is yours!

Arduino Code for Motion Sensor
This Arduino sketch will control your piezo buzzer based on the motion sensor’s status. Any time the motion sensor detects movement or a change in the environment, this will trigger the piezo buzzer to sound.
This code could be adapted to perform many other functions and is a great basis for a burglar alarm circuit! You could expand this with other sensors such as door/window sensors and have a complete Arduino alarm system!
const int MOTION_SENSOR_PIN = 7; // Arduino pin connected to the OUTPUT pin of motion sensor const int BUZZER_PIN = 3; // Arduino pin connected to Buzzer's pin int motionStateCurrent = LOW; // current state of motion sensor's pin int motionStatePrevious = LOW; // previous state of motion sensor's pin void setup() { Serial.begin(9600); // initialize serial pinMode(MOTION_SENSOR_PIN, INPUT); // set arduino pin to input mode pinMode(BUZZER_PIN, OUTPUT); // set arduino pin to output mode } void loop() { motionStatePrevious = motionStateCurrent; // store old state motionStateCurrent = digitalRead(MOTION_SENSOR_PIN); // read new state if (motionStatePrevious == LOW && motionStateCurrent == HIGH) { // pin state change: LOW -> HIGH Serial.println("Motion detected!"); digitalWrite(BUZZER_PIN, HIGH); // turn on } else if (motionStatePrevious == HIGH && motionStateCurrent == LOW) { // pin state change: HIGH -> LOW Serial.println("Motion stopped!"); digitalWrite(BUZZER_PIN, LOW); // turn off } }
Next Steps
Now you can move on to the next tutorial or return to the Arduino Tutorial Index.