Introduction: Remote Simple Relay Activation Without a GSM Module

About: Animation and CG enthusiast. Computer engineer in the free time.

Hi all! 
First, I want to advice all that I'm italian so I'm sorry for my bad english.

I wanted to activate a relay by calling a phone number: the easiest way to make it, was buying an GSM module, but it is very expensive! So I thought  to resolve this problem by exploiting  the fact that every mobile phone screen blink when a call is incoming.

For make this project i've used:
- Very old mobile phone
- Arduino Uno Rev. 3
- BC547B transistor
- LDR04 photoresistor
- 10Kohm resistor
- Recirculation diode
- Relay with 5V coil nominal voltage
- Small box that will keep the mobile phone
- Breadboard
- Wires

Step 1: Make the Base Circuit

I've taken all, except the phone, the box and the photoresistor.  I' ve put them togheter like the images

Step 2:

At this point I' ve prepared the box. 
First I've checked if the box could keep the mobile inside itself, but in my case it wasn't able because of the antenna of the mobile.
So, I've done two holes in the box: the first for the antenna and the second for the recharge cable on the other side. I've also put some pieces of scotch for keeping the mobile fixed in a position and making stronger the holes.
Then, I've made two other very small holes on the lid of the box exactly in front of where the mobile screen is. (The paper scotch in the 2nd photo is useless)
So, I've put the pins of the photoresistor in the two small holes so that the component is facing the mobile screen.
At this point, I've put the pins of the photoresistor in the breadbord as the fritzing project image shows.

Step 3: Conclusions and Sketch Code

I have connected to the relay the power on button pins of my computer so that it will turn on when I call the number of the mobile phone. This is the sketch for turning on a computer.:

#define LDRPIN A0
#define BC547BPIN 8
#define LEDPIN 13

void setup() {
   pinMode(BC547BPIN, OUTPUT);
   pinMode(LEDPIN,OUTPUT);
}

void loop() {
  int LDRValue = analogRead(LDRPIN);

  if(LDRValue > 50){
    digitalWrite(LEDPIN, HIGH);

    digitalWrite(BC547BPIN, HIGH);
    delay(2000);

    digitalWrite(BC547BPIN,LOW);
    delay(10000);

  } else {
    digitalWrite(LEDPIN, LOW);
  }

}

If someone doesn't understand the guide please put a comment below

Remote Control Challenge

Participated in the
Remote Control Challenge