Introduction: Motion Sensing Micro-Processor Controled Night Light

About: Why would i buy something ready made when i can make it myself with half the features for twice the money? DIY!

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.

Step 1: ATtiny2313 Vs ATtiny85

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


Step 2: Code


 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;
}
}
}

Step 3: Programming

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

Step 4: Power Supply

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.

Step 5: Diagram

This is about as simple as i could make it.

Step 6: Board and LEDs

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


Step 7: Prepare the Case

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.

Furniture Contest

Participated in the
Furniture Contest

UP! Contest

Participated in the
UP! Contest