Friday, 30 August 2013

Arduino PIR sensor

In this simple project, we’ll build a motion-sensing alarm using a PIR (passive infrared) sensor and an Arduino microcontroller. This is a great way to learn the basics of using digital input (from the sensor) and output (in this case, to a noisy buzzer) on your Arduino.

This project requires just a few parts, and because you're using a solderless breadboard and pre-cut jumper wires, you won't need any tools at all — except your computer and USB cable to connect the Arduino.
Connect digital input/output (I/O) pin 2 on the Arduino to row 1 on the breadboard.Connect the 5V pin on the Arduino to row 2 on the breadboard, and connect a nearby ground (Gnd) pin to row 3.Find the Gnd (–), Vcc (+), and Out pins on the PIR sensor.Plug the PIR sensor into the breadboard so that its (–) pin connects to the Gnd row, its (+) pin connects to 5V, and its Out pin connects to digital pin 2. connect a 10k resistor between PIR output pin and vcc.



Plug the LED's anode (the longer leg) into digital pin 13 on the Arduino.Plug the LED's cathode (the shorter leg, and/or the leg on the flattened side of the LED base) into the adjacent ground (Gnd) pin on the Arduino.Connect the buzzer's red wire to the Arduino's digital pin 10.Connect the buzzer's black wire to the Arduino's Gnd pin (there's a spare one on the Power block of pins).NOTE: These two wires can be reversed, as the polarity of the buzzer doesn't matter.

Code

int ledPin = 13;                // choose the pin for the LED
int inputPin = 2;               // choose the input pin (for PIR sensor)
int pirState = LOW;             // we start, assuming no motion detected
int val = 0;                    // variable for reading the pin status
int pinSpeaker = 10;           //Set up a speaker on a PWM pin (digital 9, 10, or 11)

void setup() {
  pinMode(ledPin, OUTPUT);      // declare LED as output
  pinMode(inputPin, INPUT);     // declare sensor as input
  pinMode(pinSpeaker, OUTPUT);
  Serial.begin(9600);
}

void loop(){
  val = digitalRead(inputPin);  // read input value
  if (val == HIGH) {            // check if the input is HIGH
    digitalWrite(ledPin, HIGH);  // turn LED ON
    playTone(300, 160);
    delay(150);

    
    if (pirState == LOW) {
      // we have just turned on
      Serial.println("Motion detected!");
      // We only want to print on the output change, not state
      pirState = HIGH;
    }
  } else {
      digitalWrite(ledPin, LOW); // turn LED OFF
      playTone(0, 0);
      delay(300);    
      if (pirState == HIGH){
      // we have just turned of
      Serial.println("Motion ended!");
      // We only want to print on the output change, not state
      pirState = LOW;
    }
  }
}
// duration in mSecs, frequency in hertz
void playTone(long duration, int freq) {
    duration *= 1000;
    int period = (1.0 / freq) * 1000000;
    long elapsed_time = 0;
    while (elapsed_time < duration) {
        digitalWrite(pinSpeaker,HIGH);
        delayMicroseconds(period / 2);
        digitalWrite(pinSpeaker, LOW);
        delayMicroseconds(period / 2);
        elapsed_time += (period);
    }
}

Upload the code to the arduino and test it.
Enjoy!!!!!!

iPhone Arduino Push Notification

This project will help you to hack your doorbell to send Push notification and an email with an attached picture when somebody’s at the door. It use the free PushingBox service to delegate all the programming part and make things easy.

How does it work

  • 1. When the doorbell is pushed, the Arduino sends an HTTP request to the PushingBox API.
  • 2. PushingBox launches the user's scenario and gets a picture from the web camera.
  • 3. PushingBox sends a Push notification to the user's phone and a mail message with the picture attached.

Notifying Doorbell with PushingBox



Notifying Doorbell with PushingBox
  • Open your doorbell.
  • Solder wires to the button's terminals.
  • Close the doorbell.

Notifying Doorbell with PushingBox
  • Plug the wires into the Arduino.
  • One wire on the 5v pin;
  • One wire on the 3rd input pin;
  • The 10K resistor between GND and the 3rd pin.

Notifying Doorbell with PushingBox
  • Test the connectivity with a simple Arduino program.

Notifying Doorbell with PushingBox
  • The hardware part is finished. Let's define the way you will be notified.
  • Go to http://www.pushingbox.com.
  • Login with your Google account.
  • Go to the My Services page.
  • Click on Add a service.

Notifying Doorbell with PushingBox
  • Click on the service by which you want be notified.
  • Use Prowl or Pushme.to for iPhone Push notification;
  • Notifry for Android Push notification;
  • Toasty for Windows Phone Push notification.
  • Enter the name of your new service and fill in the API that this application gave you when you installed it.
  • Click Submit.

Notifying Doorbell with PushingBox
  • Now, go to the My Scenarios page.
  • Create a scenario called "Somebody's at the door".
  • Click on Create scenario.
  • Click on Add an Action.

Notifying Doorbell with PushingBox          First, add an action using the Email Service.
  • Fill in the mail Subject and the Body.
  • The third field is optional and is for attaching a shot from your IP camera to the email. Fill in the URL (publicly reachable) of your web camera. The camera's output must be a picture less than 100KB in size.
  • Do the same with your Push notification service and click the Back button.

Notifying Doorbell with PushingBox
  • Your scenario is now created.
  • Click on "Test" to test the scenario.
  • You should receive a Push notification on your phone and an email.
  • Make a note of the "DeviceID" value of this scenario. You will paste it into the Arduino code.

Notifying Doorbell with PushingBox
  • Download the Arduino source code from the PushingBox API page and open it.
  • In the #define DEVID1 line, paste the DeviceID of your scenario. Make sure you enclose it in quotes as shown.
  • Compile the code and program your Arduino.
  • You're done! Test it