Arduino Clap Sensitive Light Control (The Clapper)

147,345

111

30

Introduction: Arduino Clap Sensitive Light Control (The Clapper)

About: I am a young electronics hobbyist, interested in computers, rapid prototyping and electronics.

In a spree of ordering little extras for my arduino, i picked up a sound sensor board similar to this one and i had the idea of controlling the lights in my room. During the long delivery period i started work on the code for such a project, using a button to simulate a clap. This i did fairly soon after scanning the arduino reference page to learn some new functions and i could succesfully switch an led. In the final project i linked the output to a relay capable of driving my lights and the microphone board in place of the button.

The requirements are on the next page.

Also Please vote for me in the contests ive entered if you like this project.

Step 1: Requirements

Requirements:
Arduino, needs two digital I/O
Jumpers (M-M)
Relay(necessary for the mains voltage)
Breadboard
Resistor*
LED*
Computer (I just happened to use my Pi for this one)
Arduino IDE
Attiny (not essential but for compact-ness)
*For testing.

Step 2: Breadboard Setup. (No Relay)

To set up your breadboard, copy the fritzing file. The resistor value will depend on your LED, i just happened to know what mine required. Also check your microphone board as the pinouts may be different, mine had one output pin which could be changed from analogue to digital using a potentiometer on board. If your board has analog and digital outputs make sure you wire the digital output.

Step 3: The Code

Some very simple code just copy and paste into the Arduino IDE which can be found here.

const int buttonPin = 2;
const int ledPin = 0;


int buttonstate = 0;
int ledstate = 0;

void setup() {

pinMode(ledPin, OUTPUT);

pinMode(buttonPin, INPUT);
}

void loop(){

buttonstate = digitalRead(buttonPin);
ledstate = digitalRead(ledPin);

if (ledstate == HIGH && buttonstate == LOW) {
delay(250);
digitalWrite(ledPin, LOW);
}
if (ledstate == LOW && buttonstate == LOW) {
delay(250);
digitalWrite(ledPin, HIGH);
}
}

Step 4: Troubleshooting

As a point of reference when i clap a little LED on the microphone board lights up, if you have a constant flashing LED adjust the onboard potentiometer till it stops, from this point on the sensitivity can be adjusted to your preference.

If nothing happens at all when you clap check all your connections and check that your LED is wired Correctly.

Step 5: Relay Setup

IF YOU ARE WIRING THIS TO MAINS VOLTAGE BE EXTREMELY CAREFUL, MAINS CAN KILL INSTANTLY, I AM IN NO WAY RESPONSIBLE OR LIABLE FOR ANY INJURY OR FATAL HARM THAT MAY BEFALL YOU AS A CONSEQUENCE OF FOLLOWING THIS TUTORIAL.

PURSUE AT YOUR OWN RISK

The relay version varies very little but to begin with, check your relay is for 5V.

Then check if your landlord or home owner is accepting of this project.

Switch the outlet/light switch off in the switchbox for your home, to reduce risk of electrocution.

Test your relay board before hooking it up to mains, a circuit like the one below should work.

Step 6: Condensed Version (Attiny85)

Steps on how to bootload and program your Attiny will be uploaded at a later date, in the mean time there are many tutorials out there on how to do it.

One fairly simple method that requires no extra hardware is using your arduino as an isp.

The Attiny pinout is below.

Step 7: Watch This Space

Videos and pictures of the project will be uploaded but in the mean time dont hesitate to ask questions, give opinions and feedback.
Inbox me if you have any questions.

Step 8: Gallery

Supercharged Contest

Participated in the
Supercharged Contest

123D Circuits Contest

Participated in the
123D Circuits Contest

Be the First to Share

    Recommendations

    • Toys & Games Contest

      Toys & Games Contest
    • Big vs Small Challenge

      Big vs Small Challenge
    • Fix It Challenge

      Fix It Challenge

    30 Comments

    0
    alexander.norrby
    alexander.norrby

    15 days ago

    Hello I have a question! I have a little problem. I just got to the stage where my light turns on. But when I clap the light only turns off for a split second before turning on again. I just wonder how to make the light turn off permanently until I clap again.

    0
    o161165
    o161165

    Question 8 weeks ago on Step 7

    sound sensor detecting not only the clap sound and also the normal sound what i have to do to overcome this problem

    0
    acutair
    acutair

    1 year ago

    For the first part, without the relay, I found it only worked if I tied the positive lead from the LED to the hot rail on my breadboard, not the ground rail, as shown in the diagram.

    I'm really new to all this, so I can't 100% say why that works, but I thought I'd point it out.

    Thanks for sharing this instructable!

    0
    gabrielmelano19
    gabrielmelano19

    1 year ago

    ¿Que sucede si el led de la placa del micrófono queda siempre encendida?

    0
    SESHUK2
    SESHUK2

    Question 3 years ago on Step 8

    What is the sound sensor used
    ??

    1
    DevinB29
    DevinB29

    4 years ago

    Is there a video of this whole project in action?

    0
    JoergO
    JoergO

    4 years ago

    Meh - Since I'm just shopping on DX I came here only to find out what kind of microphone board I could best use. Unfortunately you don't say anything about that, its not in the requirements, it just suddenly pops up from nowhere. Is this like a 'sound detector' module?

    0
    batmanRulz
    batmanRulz

    4 years ago

    with the help of @rclymer in the comments, can you provide the final code? im not very good with this. thanks for the project.

    0
    adanon
    adanon

    5 years ago

    Is that a 5a/220v relay?

    0
    AlistairM
    AlistairM

    Reply 5 years ago

    I believe so.

    0
    adanon
    adanon

    Reply 5 years ago

    Another question... How did you power the arduino?

    0
    SrivishnuT
    SrivishnuT

    Reply 4 years ago

    well, if you look at the Arduino and see the ports, then maybe you could notice that you can power it using the usb port or just hook up a 9-volt battery adapter to that circle connecter in

    0
    DwainB1
    DwainB1

    4 years ago

    What microphone did you use and did you have to use a special library for it?

    0
    AlistairM
    AlistairM

    Reply 4 years ago

    I used a cheap 99p module I got off eBay. It has a digital out pin, you tweak the threshold by way of a pot on the module and it'll go high if the volume of the sound exceeds the threshold. From that I just used a digital read, no library required. Hope that helps

    0
    rclymer
    rclymer

    7 years ago on Introduction

    Cool project, I built something very similar but with a motion sensor. If you're looking for some improvements, you could add a timer to automatically shut off the lights or listen for the next clap. For future reference, a digitalRead from an output pin, isn't necessary. The ledState variable should always contain the led status. Also, removing delays is always a step toward stronger code.

    unsigned long currentMillis = millis();

    buttonState = digitalRead(buttonPin);

    if((currentMills - buttonMillis > 100) && buttonState == LOW) //assuming a pull-up resistor inverts the values.

    {

    ledState == !ledState;

    digitalWrite(ledPin, ledState);

    buttonMillis = currentMillis;

    }

    This loop will only run once the button is pushed(or sound is triggered) and it has been 100ms since the last time the button was pressed.

    0
    adanon
    adanon

    Reply 5 years ago

    Where should it be placed in the code?

    0
    AlistairM
    AlistairM

    Reply 7 years ago on Introduction

    Thank you very much, i was trying to think of a simple way to incorporate two claps. that way it wont get set off by me coughing. My knowledge of code is quite basic, but i would greatly appreciate it if you could send a commented version of the code above to my inbox. that way i can further my knowledge. and build better code

    0
    robertzegwaard
    robertzegwaard

    5 years ago

    Like your setup, but how does it "know" the difference between a hand-clap and other sounds?

    0
    AlistairM
    AlistairM

    Reply 5 years ago

    Thats a slight issue with it, I could cough and the lights would go off. There was an implementation of a double clap system. The code is somewhere in the comments.

    0
    EdwardU
    EdwardU

    6 years ago on Introduction

    Fantastic! Finally got this to work after ages of trying. Great tutorial. I'd love to know how to get it turn on a series of different coloured LEDs in succession, and to make it respond to double claps. I know i need a delay in the code somewhere to make it listen for a second clap after it 'hears' the first, but I don't know how to do it!