kireiorganic.info

Photo sensor lighting control

Закрыть ... [X]

From the minds at

We wanted to save energy, and create convenience, by adding motion sensors to our lighting circuits. Maybe you want some notification of an intruder. Both can be done with a PIR Motion sensor.  When I walk into a room, the lights come on automatically, and when I leave, shut off after a short period of time. You can choose how long that time delay is in the code. No more fumbling for a light switch in the dark with my arms full of groceries!

I also wanted a override switch for times I want the light to stay on, or off.

So, I took an Arduino, added a PIR sensor, a SSR, a SPDT switch,  two and whipped up a small sketch to glue it all together. Enjoy!

Original article, and more at 

Multiple motion sensors, and multiple SSR's can be serviced by a single Arduino. A can be built into the project instead of dedicating a complete Arduino board.

A CdS light sensor can be added to prevent the lights from activating if light level's are considered sufficient (user programmable). 

Step 1: The PIR Sensor

The first step was connecting a PIR sensor. A PIR detects "motion" by recognizing an increase in Infra Red emission in the focus area, put out by the human body.

For background info on PIR, see 

We obtained our  from Amazon.

Connect the 3 pins of the PIR to +5vdc, Arduino Pin 2 (data out), and Ground.

Step 2: SSR

A SSR is a solid state relay. It consists of a photo transistor and a triac, along with supporting circuitry. This isolates the 120vac load from the Arduino, so no damage from the high voltage AC can happen.

For background info on SSR's see 

We obtained our from Amazon.

Connect Screw Terminal 4 to Ground, Screw Terminal 3 to Arduino Pin 13, and Screw terminals 1 & 2 insert in Series (this is important) with the HOT wire going to your appliance (make sure your cord is unplugged or breaker is off if hardwiring).

Step 3: Manual Control Switch

We wanted a way to override the PIR, and offer a Automatic (PIR), Manual ON, and Manual OFF mode. We added a SPDT Switch, with center off, and connected the center pin to +5vdc, and the two outer pins to Arduino pins 11 & 12. The two outer pins also have a 10k ohm resistor (each) to Ground.

Radio Shack carries a  for .20 or so.

We obtained the SPDT w/ Center Off switch from Amazon.

For more info on SPDT and other types of switches, see 

Step 4: The Arduino Code

The code that makes this all happen is as follows:

int inPin1 = 11;   // switch connected to digital pin 11
int inPin2 = 12;   // switch connected to digital pin 12

int ssrPin = 13;
int pirPin = 2;
int motionDetect= 0;
int manualSwitch = 0;
int motionSwitch = 0;

void setup() {
pinMode(ssrPin, OUTPUT);
pinMode(pirPin, INPUT);
pinMode(inPin1, INPUT);
pinMode(inPin2, INPUT);
digitalWrite(ssrPin, LOW);
}

void loop() {

motionSwitch = digitalRead (inPin1);
manualSwitch = digitalRead (inPin2);

if (motionSwitch == HIGH) // Motion Mode
{
  motionDetect = digitalRead(pirPin);
  if (motionDetect == HIGH)
     {
     digitalWrite(ssrPin, HIGH);
     delay (180000); //Optional 3 minute delayed off
     digitalWrite(ssrPin, LOW);
     }
}
else if (manualSwitch == HIGH) // Manual On
{
  digitalWrite(ssrPin, HIGH);
}
else // Manual Off

{
  digitalWrite(ssrPin, LOW);
}
}

Step 5: The Schematic

Here is the schematic that shows all the wiring:

Step 6: Using a Light Sensor (LDR/CdS)

One option is to prevent the lights from coming on if the ambient light levels are over a certain amount. This is the typical operation of an outdoor motion sensor. If the sun is up, the lights do not come on. This CdS tutorial will get you started on adding that option. If the reading is over a certain amount, inhibit the light on function.

Share

Recommendations

  • Audio Contest 2018

    Audio Contest 2018
  • Electronics Tips & Tricks Challenge

    Electronics Tips & Tricks Challenge
  • Optics Contest

    Optics Contest

89 Discussions

Hi, I'm looking for someone to make me a few small bright red sensor flickering lights, I am a children's magician, I put the light in a opaque cup, you see the light flicker, when I tap the lid on cup, the light goes out, is this possible, at the moment I'm using red sensor blow on/ blow off T- light,

Hello, I get "stray '2' in program" error :/ help

Compiles fine for me. Please recheck your sketch.

Would this work with outdoor lighting?

Yes It will. It will work with any 120v load that matches the specs of the SSR used.

can I replace SSR with following one

That's a relay, not a SSR, but yes, it would work.

is there any change if i use relay instead of SSR?

if the relay module can triger with 5v and 20ma, no changes necessary. If it has a higher coil voltage or current needs, then you will need a transistor to trigger the relay.

please send me its video

what video?

anyone here know if you can get/make a real time (ie. no time delay) PIR? I'm trying to make a robotic hexapod that tracks movement. the code and body are already working, but the 2 second delay makes it move erraticaly- spining round and round and charging forwards into walls. thanks for any suggestions!

Don't use delay statements, use a millis timer.

sorry if this was badly worded, but my problem is that the PIR itself, not the arduino's code, goes to +5v for 2 seconds when it senses movement- are there models available that don't do this? all of the ones I have seen on ebay/amazon do this

Remove the Delaytime (tx) pot and figure out if it needs more or less resistance to have virtually no length to the high time.

I gave you hints, and expected you to put some work into it yourself. I was too busy to rewrite the code or explain it all.

Still no 2nd (need 4th and 5th) pir

Are you expecting me to write your code for you? I can do that if you wish. Donations can be made at http://arduinotronics.blogspot.com

code for 2 pirs??????? see comment

(

(author)

2 years ago)

Will not upload why? I am able to have 1 pir working. But the code for the 2nd will not upload Something about

"motionDetect2 = digitalRead(pirPin2);"

-------------------------------------------------------------------------------------------------------------
int inPin1 = 11; // switch connected to digital pin 11
int inPin2 = 12; // switch connected to digital pin 12

int ssrPin = 13;
int pirPin = 2;

int pirPin2 = 3;


int motionDetect= 0;
int manualSwitch = 0;
int motionSwitch = 0;

void setup() {
pinMode(ssrPin, OUTPUT);
pinMode(pirPin, INPUT);
pinMode(inPin1, INPUT);
pinMode(inPin2, INPUT);
digitalWrite(ssrPin, LOW);
}

void loop() {

motionSwitch = digitalRead (inPin1);
manualSwitch = digitalRead (inPin2);

if (motionDetect == HIGH || motionDetect2 == HIGH)


{
motionDetect = digitalRead(pirPin);

motionDetect2 = digitalRead(pirPin2);


if (motionDetect == HIGH)
{
digitalWrite(ssrPin, HIGH);
delay (180000); //Optional 3 minute delayed off
digitalWrite(ssrPin, LOW);
}
}
else if (manualSwitch == HIGH) // Manual On
{
digitalWrite(ssrPin, HIGH);
}
else // Manual Off

{
digitalWrite(ssrPin, LOW);
}
}


looks like you are missing a
int motionDetect2= 0;

right after

int motionDetect= 0;





ШОКИРУЮЩИЕ НОВОСТИ



Related News


La fotografia en mexico
Interior photos of log cabins
Melannco photo storage box
What size is standard photo paper
Wedding photography brochure templates free
Hawa mahal jaipur photo
Diwali graphics greetings photos
Creare foto album online gratis