Design a site like this with
Get started

Build a Night Security Light with Arduino

In this project you’re going to build a night security light with a relay module, a photoresistor and an Arduino.

A night security light only turns on when it’s dark and when movement is detected.

Here’s the main features of this project:

  • the lamp turns on when it’s dark AND movement is detected;
  • when movement is detected the lamp stays on for 10 seconds;
  • when the lamp is ON and detects movement, it starts counting 10 seconds again;
  • when there’s light, the lamp is turned off, even when motion is detected.

Recommended resources

The following resources include guides on how to use the relay module and the PIR motion sensor with the Arduino, which might be useful for this project.

Parts required

Here’s a complete list of the parts required for this project:

  • Arduino UNO – read Best Arduino Starter Kits
  • PIR Motion Sensor 
  • Photoresistor 
  • 10kOhm resistor
  • Relay module 
  • Lamp cord set (view on eBay)
  • Breadboard 
  • Jumper wires 

Besides these electronics components, you also need an AC male socket, an AC wire and a lamp bulb holder (a lamp cord set). My lamp cord set is the one in the figure below.


Download or copy the following code to your Arduino IDE, and upload it to your Arduino board.

Warning: do not upload a new code to your Arduino board while your lamp is connected to the mains voltage. You should unplug the lamp from mains voltage, before upload a new sketch to your Arduino.

 * Gnd_To_Vcc 
// Relay pin is controlled with D8. The active wire is connected to Normally Closed and common
int relay = 8;
volatile byte relayState = LOW;

// PIR Motion Sensor is connected to D2.
int PIRInterrupt = 2;

// LDR pin is connected to Analog 0
int LDRPin = A0;
// LDR value is stored on LDR reading
int LDRReading;
// LDR Threshold value
int LDRThreshold = 300;

// Timer Variables
long lastDebounceTime = 0;  
long debounceDelay = 10000;

void setup() {
  // Pin for relay module set as output
  pinMode(relay, OUTPUT);
  digitalWrite(relay, HIGH);
  // PIR motion sensor set as an input
  pinMode(PIRInterrupt, INPUT);
  // Triggers detectMotion function on rising mode to turn the relay on, if the condition is met
  attachInterrupt(digitalPinToInterrupt(PIRInterrupt), detectMotion, RISING);
  // Serial communication for debugging purposes

void loop() {
  // If 10 seconds have passed, the relay is turned off
  if((millis() - lastDebounceTime) > debounceDelay && relayState == HIGH){
    digitalWrite(relay, HIGH);
    relayState = LOW;

void detectMotion() {
  LDRReading = analogRead(LDRPin);
  // LDR Reading value is printed on serial monitor, useful to get your LDRThreshold
  // Only turns the Relay on if the LDR reading is higher than the LDRThreshold
  if(LDRReading > LDRThreshold){
    if(relayState == LOW){
      digitalWrite(relay, LOW);
    relayState = HIGH;  
    lastDebounceTime = millis();


Here’s the schematics for this project.

Note: if you have an earth (GND) connection in the mains voltage cable – a yellow and green cable – it should go outside the relay module, like the blue wire (neutral).


Here’s your circuit in action:

Wrapping up

In this project you’ve built a night security light with a photoresistor and a PIR motion sensor.

This is a great project to practice with relays and with the PIR motion sensor.

Thanks for reading,


Published by Gnd_To_Vcc

Here to spread my knowledge . Knowledge should always be spread not stored.

2 thoughts on “Build a Night Security Light with Arduino

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: