Grove - PIR Motion Sensor

Contents

Introduction

This is a simple to use PIR motion sensor with Grove compatible interface. This sensor allows you to sense motion, usually human movement in its range. Simply connect it to Grove - Base shield and program it, when anyone moves in its detecting range, the sensor will output HIGH on its SIG pin.

Usage

The following sketch demonstrates a simple application of sensing motion. When someone moves in its detecting range, it will output High through its SIG pin and the LED will light. Otherwise, it will output LOW. Then you can use it to detect the motion of people.

Note: The detecting distance and holding time can be adjusted by adding two extra potentiometers on board. For the details please refer to the V1.2 Eagle below. The module can also be set as retriggerable or un- retriggerable by changing the jumper hat.

The following sketch demonstrates a simple application of sensing motion. When someone moves in its detecting range, the output of the application will be high through its SIG0 pin and the LED will turn on. Otherwise, the output will be LOW. Note that the PIR motion sensor is very sensitive to motion!

/*
Grove-PIR-Motion-Sensor
The following sketch demonstrates a simple application of sensing motion.
When someone moves in its detecting range, it will output High through its
SIG pin and the LED will light. Otherwise, it will output LOW. Then you can
use it to detect the motion of people.
The circuit:
* sig pin of the Grove-PIR-Motion-Sensor to pin39 (J14 plug on Grove Base BoosterPack)
* one side pin (either one) to ground
* the other side pin to +VCC
* LED anode (long leg) attached to RED_LED
* LED cathode (short leg) attached to ground
* Note: Position the trig jumper on N_Retrig to ensure
This example code is in the public domain.
http://www.seeedstudio.com/wiki/index.php?title=Twig_-_PIR_Motion_Sensor
*/
/* Macro Define */
#define PIR_MOTION_SENSOR 39 /* sig pin of the PIR sensor */
#define LED RED_LED /* led */
#define ON HIGH /* led on */
#define OFF LOW /* led off */
#define _handle_led(x) digitalWrite(LED, x) /* handle led */
/* the setup() method runs once, when the sketch starts */
void setup() {
pinMode(PIR_MOTION_SENSOR, INPUT); /* declare the sig pin as an INPUT */
pinMode(RED_LED, OUTPUT); /* declare the red_led pin as an OUTPUT */
_handle_led(OFF);
}
/* the loop() method runs over and over again */
void loop() {
if(isPeopleDetected()) {
_handle_led(ON); /* if we detect a people, turn on the led */
} else {
_handle_led(OFF); /* found nobody, turn off the light */
}
}
/* judge if there is a people around */
boolean isPeopleDetected() {
int sensor_val = digitalRead(PIR_MOTION_SENSOR); /* read sig pin */
if(HIGH == sensor_val) {
return true; /* people detected */
} else {
return false; /* people un-detected */
}
}