Motion Sensing Micro-Processor Controled Night Light

by WWC in Circuits > LEDs

13699 Views, 41 Favorites, 0 Comments

Motion Sensing Micro-Processor Controled Night Light

DSC01852.JPG
DSC01850.JPG
DSC01847.JPG
DSC01845.JPG
DSC01844.JPG
DSC01842.JPG
Getting up at night to go to the bathroom or whatever has just gotten a whole lot better on the account of my motion sensing nightlight
I place this under the bed and as soon as you get up the sensor will detect motion and on comes the light.  

This night light uses the popular PIR sensor to detect movement.
Then the ATtiny 2313 processes the signal and turns on the LED's for the set 2 minute, then off and waiting for another signal. 
Repeat and repeat.

ATtiny2313 Vs ATtiny85

Screenshot_4.png
So why use a ATtiny2313 and not an ATtiny85, when a ATtiny85 seams to be the more logical one to use?


The ATtiny2313 has many more pins than this project could ever use. Over kill on the pin count.
That also makes it psychically bigger that say a ATtiny85. 20 pins instead of just 8.
It doesn't have the byte capacity of a ATtiny85. ATtiny2313 has 2K bytes verses the ATtiny85 8K bytes.

Like most everything it comes down to cost. The ATtiny2313 is the cheapest micro-processor i can get in my area, when shipping ect is factored in.
ATtiny2313 is $1.75 USD. Where as an ATtiny85 is $4.50 each if i buy 2. 

ATtiny2313 PDF


Code

01.bmp
02.bmp
 
 The ATtiny2313 only has 2000 bytes of flash memory available, but this sketch has 2572 bytes.
So how do we get all that is there?

We comment out all the serial communication in the sketch. 
Those 3 lines of code took up a whopping 1438 bytes of flash that aren't used in the completed project anyway.
Use the serial communication when you are testing with your Arduino board.
Later when the sketch is transferred to the ATtiny2313, comment the serial out.

With the serial commented out and the code we will add for this project the sketch size will only be 1324 bytes total.
Great we are defiantly under the 2000 byte max limit.

This sketch is from ladyada, but has a 2 min delay add by me.

/* PIR sensor tester*/

int ledPin = 9; // Chip Pin Number is 12. choose the pin for the LED

int inputPin = 11; //Chip Pin Numbre is 14. 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

void setup() {
pinMode(ledPin, OUTPUT); // declare LED as output
pinMode(inputPin, INPUT); // declare sensor as input

//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
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;
delay(120000);           // <<<<<<<<<<< This delay was added giving us the 2 minute LED on time - Change as needed
}
} else {
digitalWrite(ledPin, LOW); // turn LED OFF
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;
}
}
}

Programming

download.jpg
For programming i used the methods found in this Instructable and this one as well. 

Power Supply

02.bmp
01.bmp
I really like these cellphone charger type power supplies. Al-tho this one happens to be from a D-Link router.
I have found they always output more than the rated amount. This is rated at 5v. Actual output is 7v.
After running it through the LM7805 voltage regulator i measure 5.01v output. Just write.

Diagram

Screenshot_5.png
This is about as simple as i could make it.

Board and LEDs

DSC01819.JPG
DSC01821.JPG
DSC01832.JPG
DSC01830.JPG
DSC01829.JPG
DSC01828.JPG
Screenshot_3.png
The board is fairly simple with only 8 components.
For the LM7805 voltage regulator i used 2 #104 capacitors. That is not what the book calls for but i have found it works well enough i can not measure the difference with a DMM. 
There is a 20 pin socket for the ATtiny2313 to sit in, then a 4K7 ohm resistor from pin 12 ( set as an output ) to the base of a 2N2222 transistor that is used to switch the ground on and off of the LED's. The positive side of the LED's are always connected to VCC.
Pin 14 is an input for the PIR sensor.. Pin 10 is ground and pin 20 is VCC.
The voltage regulation is set up like in the picture.

            That's it, 4 connections.
  1. Pin 10 GND
  2. Pin 12 out to Transistor
  3. Pin 14 in from PIR
  4. Pin 20 VCC 

 


                      Parts:
  1. Attiny2313
  2. 20 Pin socket
  3. 4K7 resistor
  4. 2N2222 Transistor
  5. LM7805 Voltage Regulator
  6. #104 cap
  7. #104 cap
  8. Power Jack
  9. 9 components if you count the perf board


Prepare the Case

DSC01825.JPG
DSC01834.JPG
DSC01827.JPG
DSC01824.JPG
DSC01816.JPG
DSC01818.JPG
DSC01817.JPG
DSC01815.JPG
These are some containers i bought, 83 cents for 5 with lids. Affordable! 
They are about 7x5x2 inch measurements.

Luckily this container had a ring all the way around it at the middle that i used a a guide line.
Just measured out 1 inch spacing and got the hot soldering iron out and started making holes.
7 holes 5 mm in diameter so the LED's had a snug fit.