Arduino - Sound Sensor - Relay

In this tutorial, we'll explore how to utilize the sound sensor to control relay. Specifically, we'll delve into two exciting applications:

By connecting relay to light bulb, led strip, motor or actuator... We can use the sound sensor to control light bulb, led strip, motor or actuator...

Hardware Required

1×Arduino UNO or Genuino UNO
1×USB 2.0 cable type A/B (for USB-A PC)
1×USB 2.0 cable type C/B (for USB-C PC)
1×Sound Sensor
1×Relay
1×Jumper Wires
1×(Optional) Solenoid Lock
1×(Optional) 12V Power Adapter
1×(Optional) DC Power Jack
1×(Recommended) Screw Terminal Block Shield for Arduino Uno
1×(Recommended) Breadboard Shield For Arduino Uno
1×(Recommended) Enclosure For Arduino Uno

Or you can buy the following sensor kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)
Disclosure: Some links in this section are Amazon affiliate links. If you make a purchase through these links, we may earn a commission at no extra cost to you.
Additionally, some links direct to products from our own brand, DIYables.

About Relay and Sound Sensor

If you do not know about relay and sound sensor (pinout, how it works, how to program ...), learn about them in the following tutorials:

Wiring Diagram

Arduino Sound Sensor Relay Wiring Diagram

This image is created using Fritzing. Click to enlarge image

Arduino Code - Sound Switch toggles Relay

The below code toggles the state of relay each time the sound is detected.

/* * Created by ArduinoGetStarted.com * * This example code is in the public domain * * Tutorial page: https://arduinogetstarted.com/tutorials/arduino-sound-sensor-relay */ #define SENSOR_PIN A0 // Arduino pin connected to sound sensor's pin #define RELAY_PIN A2 // Arduino pin connected to LED's pin int lastSoundState; // the previous state of sound sensor int currentSoundState; // the current state of sound sensor int relayState = LOW; // the current state of relay void setup() { Serial.begin(9600); // initialize serial pinMode(SENSOR_PIN, INPUT); // set arduino pin to input mode pinMode(RELAY_PIN, OUTPUT); // set arduino pin to output mode currentSoundState = digitalRead(SENSOR_PIN); } void loop() { lastSoundState = currentSoundState; // save the last state currentSoundState = digitalRead(SENSOR_PIN); // read new state if (lastSoundState == HIGH && currentSoundState == LOW) { // state change: HIGH -> LOW Serial.println("The sound has been detected"); // toggle state of relay relayState = !relayState; // control relay arccoding to the toggrelay state digitalWrite(RELAY_PIN, relayState); } }

Quick Steps

  • Connect Arduino to PC via USB cable
  • Open Arduino IDE, select the right board and port
  • Copy the above code and open with Arduino IDE
  • Click Upload button on Arduino IDE to upload code to Arduino
Arduino IDE Upload Code
  • Clap your hand in front of the sound sensor
  • See the change of the relay's state

Code Explanation

Read the line-by-line explanation in comment lines of source code!

Arduino Code - Sound-activated Relay for a period of time

The below code turns on the relay for a period of time when the sound is detected. After the period of time, the relay is turned off.

/* * Created by ArduinoGetStarted.com * * This example code is in the public domain * * Tutorial page: https://arduinogetstarted.com/tutorials/arduino-sound-sensor-relay */ #define SENSOR_PIN A0 // Arduino pin connected to sound sensor's pin #define RELAY_PIN A2 // Arduino pin connected to the relay's pin #define TIME_PERIOD 5000 // in milliseconds int lastSoundState; // the previous state of sound sensor int currentSoundState; // the current state of sound sensor void setup() { Serial.begin(9600); // initialize serial pinMode(SENSOR_PIN, INPUT); // set arduino pin to input mode pinMode(RELAY_PIN, OUTPUT); // set arduino pin to output mode currentSoundState = digitalRead(SENSOR_PIN); } void loop() { lastSoundState = currentSoundState; // save the last state currentSoundState = digitalRead(SENSOR_PIN); // read new state if (lastSoundState == HIGH && currentSoundState == LOW) { // state change: HIGH -> LOW Serial.println("The sound has been detected"); // turn on relay digitalWrite(RELAY_PIN, HIGH); delay(TIME_PERIOD); // turn off relay digitalWrite(RELAY_PIN, LOW); } }

Please take note that the code mentioned above utilizes the delay() function for simplicity. However, if you incorporate additional code, it may get blocked during the delay time. To address this, the following code implements a non-blocking approach using the ezLED library. Behind the scenes, the ezLED library employs the millis() function instead of delay to prevent blocking.

/* * Created by ArduinoGetStarted.com * * This example code is in the public domain * * Tutorial page: https://arduinogetstarted.com/tutorials/arduino-sound-sensor-relay */ #include <ezLED.h> // ezLED library #define SENSOR_PIN A0 // Arduino pin connected to sound sensor's pin #define RELAY_PIN A2 // Arduino pin connected to the relay's pin #define TIME_PERIOD 5000 // in milliseconds ezLED relay(RELAY_PIN); // create a relay object that attach to pin RELAY_PIN int lastSoundState; // the previous state of sound sensor int currentSoundState; // the current state of sound sensor void setup() { Serial.begin(9600); // initialize serial pinMode(SENSOR_PIN, INPUT); // set arduino pin to input mode currentSoundState = digitalRead(SENSOR_PIN); } void loop() { relay.loop(); // MUST call the relay.loop() function in loop() lastSoundState = currentSoundState; // save the last state currentSoundState = digitalRead(SENSOR_PIN); // read new state if (lastSoundState == HIGH && currentSoundState == LOW) { // state change: HIGH -> LOW Serial.println("The sound has been detected"); relay.turnON(); // turn on relay immediately relay.turnOFF(TIME_PERIOD); // turn off relay after TIME_PERIOD } }

Quick Steps

  • Connect Arduino to PC via USB cable
  • Open Arduino IDE, select the right board and port
  • Navigate to the Libraries icon on the left bar of the Arduino IDE.
  • Search “ezLED”, then find the led library by ArduinoGetStarted
  • Click Install button to install ezLED library.
Arduino led library
  • Copy the above code and open with Arduino IDE
  • Click Upload button on Arduino IDE to upload code to Arduino
Arduino IDE Upload Code
  • Clap your hand in front of the sound sensor
  • See the change of the relay's state

Video Tutorial

We are considering to make the video tutorials. If you think the video tutorials are essential, please subscribe to our YouTube channel to give us motivation for making the videos.

The Best Arduino Starter Kit

※ OUR MESSAGES