Previous Entry Share Next Entry
Tutorial: Motion Sensor Alarm
don't die
warraven wrote in arduino_related

My first post in this community! I'm very excited :)

So in this tutorial we're going to make a basic Motion Sensor alarm. What we're going to need is

  • 1x Arduino (i'm using the Duemilanove, got mine from Sparkfun.com for about 60 bucks (for the starter kit))
  • 1x PIR (can be found at Radio Shack for about 10 bucks)
  • 1x Piezo Siren (Radio Shack, fairly cheap (max 10 bucks))
  • 1x Voltage Regulator (12V, model number 7812)
  • 1x Resistor (I have no idea what it is, but the colors go brown, black, red, gold, and it works) -- *NOTE: I'm horrible with resistors, i never really understood them
  • 1x PNP Transistor (max amperage 800mA)
  • 1x switch
  • 2x breadboards (just for neatness)
  • at least one 9volt battery with clip
  • Wires, lots of wires

 

First lets take a look at the basic diagram for the circuit, I'm no electrical engineer so I'm sure there are errors in my diagram, but I hope it conveys the general idea of what we're going to make.

siren_circuit.jpg

As you can see i've had to make some edits to this image to add in the things i learned along the way.

Lets build the lower circuit first

Step1.jpg

Hook the 9volt clip up to the breadboard positive and negative strips, then take a while and run it from the positive strip to a row.

7812_explained.jpg

Here is where we're going to hook up to the Voltage Regulator, we're going this incase you want to add more 9volts and supply the siren with it's full 12volts of power (currently only giving it 9volts). If you were to use 2x 9volts in a series you'd get 18volts which is too much for the siren, the regulator would limit it back to 12volts.

Step2.jpg

Make sure the regulator is positioned so the collector pin and the wire from the power strip are on the same row

Step3.jpg

Connect the ground wire from the Base pin to the negative(ground) strip.

Step4.jpg

take another wire and run it from the emitter pin, to another open row, we're going to hook up the physical switch here. plug on wire from the switch into the same row as the pin from the emitter, and then the other wire into an open row.

Step5.jpg

Here is where we add the transistor (digital switch), it follows the same pin scheme as the regulator. Make sure you pay attention to which way the flat side is pointed!

Step6.jpg

now we're going to hook up the piezo siren itself! take the positive wire and hook it up to the row where the emitter pin on the transistor is plugged in, and the other wire goes to the negative(ground) strip.

Step7.jpg

Now we move to the other breadboard. I plugged the PIR directly into the breadboard because it was easier this way, no soldering required :) Make sure you remember which pins the output, positive, and negative are.

Step8.jpg

Sorry for the blurry picture :( We're going to plug in a wire from the 5volt pin on the Arduino to the row where the positive pin is plugged in at, and then another wire from the row where the negative pin is plugged in at to the ground on the Arduino.

Step9.jpg

Here we take a wire from where the Output pin is plugged in and run it to digital pin 12 (which will be the digital input pin in the program)

Step10.jpg

We're going to use Digital Pin 13 for our output. I did this because on the Duemilanove the onboard LED is also connected on pin 13. This let me test my program without having to listen to loud noises all the time.

Step11.jpg

Plug the wire from the output pin to the row where the base pin on the transistor is plugged in at. Basically what this will do is allow you to send a digital signal to the transistor (HIGH or LOW), which will then open or close the circuit

Step12.jpg

The final step is to take a resistor from the Emitter row and run it to an open row, then take a wire and run it from that row, to a ground pin on the Arduino (this closes the loop for the digital signal from the Arduino)

Finished.jpg

All finished! Now lets take a look at the program for it!

//PIR test
//constants
const int light = 13; //output and light
const int pirOut = 12; //read info from the PIR

//vars
int output = LOW;
int readState = LOW;

void setup()
{
  //set digital pin 12 as input
  pinMode(pirOut,INPUT);
  //set digital pin 13 as output
  pinMode(light,OUTPUT);
  Serial.begin(9600); //for debugging
}

void loop()
{
  readState = digitalRead(pirOut);
 
  //for debugging
  Serial.print("readState: ");
  Serial.println(readState);
  //end debugging
 
  if(readState)
  {
    digitalWrite(light,LOW);
  }
  else
  {
    digitalWrite(light,HIGH);    
  }
 
  delay(100); //delay a bit
}

Now go and test it! Also leave any feedback if you have any!

Technorati : , , , ,
Del.icio.us : , , , ,
Zooomr : , , , ,
Flickr : , , , ,

Tags:

  • 1

Can't debug

(Anonymous)
I rebuilt this several times according to your directions, but could not get the siren to work.

Also, there were several typos and weird word choices that made this hard to read and follow. This looks like a great project, and a fine first attempt, but you would do well to rewrite and double check your work.

  • 1
?

Log in