Automated light control module

The purpose of this project is to control a light switch based on the IR and light readings using the mbed.

Parts Needed

  • 1 x Solid State Relay SSR-25DA
  • 1 x Photoresistor
  • 1 x PIR HC-SR501
  • 1 x Amplifier 2N3904
  • 1 x 10k Ohm resistor
  • 1 x 20k Ohm resistor

Design Layout

Please Read!

The relay was connected to a detached light socket for the ability to demo the project anywhere. This is not needed, as this design would traditionally be installed inline with a light switch.

Picture 1
Picture 2

Code

main.cpp

#include "mbed.h"
#include "rtos.h"

DigitalOut relayPin(p29);
DigitalOut relayPin2(LED1); // for debugging purposes
DigitalIn pirPin(p30);
AnalogIn photoPin(A0);

// initialize relay to off
float photoThreshold = 0.87;

// initialize light to off
int lightStatus = 0;

// thread to turn off and on light
void lightStatus_thread(void const *args) 
{
    while (true) 
    {
         // photoPin.read() > photoThreshold implies light is off
         if((photoPin.read() > photoThreshold) && (pirPin.read() == 1))
        {
         lightStatus = 1;
        }
        else
        {
         lightStatus = 0;
        }
                
        Thread::wait(2000); 
    }
}

int main() {
    relayPin = 0; // initialize light to off
    Thread thread1(lightStatus_thread);
    
    while(1) 
    {
    relayPin = lightStatus;
    relayPin2 = lightStatus;
    }
}

Pinout

mbed pinsRelay pinsPIR pinsBJT pins
p29----Base
p30--OUT--
VOUTp3----
VU--VCC--
GND--GNDEmitter

Circuit

Picture 3

Video Demonstration


Please log in to post comments.