PIR and relay problem

I have a 5v relay set up in this configuration http://arduino.sundh.com/wp-content/uploads/2011/10/transistor_TIP120_12V_g5LE-1.png The PIR sensor is working fine until the ground is joined (AR to relay breadboard). Then, the LED remains on and does not trip the relay. Oddly enough, this isn’t always the case. Infrequently, it will work fine for a few minutes, then fail, regardless of the board (Uno, Pro Mini). Here is the sketch.

int calibrationTime = 30;        

//the time when the sensor outputs a low impulse
long unsigned int lowIn;         

//the amount of milliseconds the sensor has to be low 
//before we assume all motion has stopped
long unsigned int pause = 5000;  

boolean lockLow = true;
boolean takeLowTime;  

int pirPin =8;    //the digital pin connected to the PIR sensor's output
int ledPin = 13;
int relayPin = 9;

void setup(){
  pinMode(pirPin, INPUT);
  pinMode(ledPin, OUTPUT);
  digitalWrite(pirPin, HIGH);

  //give the sensor some time to calibrate
  Serial.print("calibrating sensor ");
  for(int i = 0; i < calibrationTime; i++){
  Serial.println(" done");
  Serial.println("SENSOR ACTIVE");

void loop(){

  if(digitalRead(pirPin) == HIGH){
    digitalWrite(ledPin, HIGH);
    //the led visualizes the sensors output pin state
      //makes sure we wait for a transition to LOW before any further output is made:
      lockLow = false;            
      Serial.print("motion detected at ");
      Serial.println(" sec"); 
    takeLowTime = true;

  if(digitalRead(pirPin) == LOW){       
    digitalWrite(ledPin, LOW);  //the led visualizes the sensors output pin state
      lowIn = millis();          //save the time of the transition from high to LOW
      takeLowTime = false;       //make sure this is only done at the start of a LOW phase
    //if the sensor is low for more than the given pause, 
    //we assume that no more motion is going to happen
    if(!lockLow && millis() - lowIn > pause){  
      //makes sure this block of code is only executed again after 
      //a new motion sequence has been detected
      lockLow = true;                        
      Serial.print("motion ended at ");      //output
      Serial.print((millis() - pause)/1000);
      Serial.println(" sec");

The 12V should only go to the relay, not to the mosfet (is it a mosfet ?). A breadboard could have bad contacts.

Sorry, I don't quite understand. Is the wire pictured from the middle pin of the tip120 joining the relay coil incorrect?

A TIP120 should not be connected that way.
I noticed this website, but it is wrong.
So please forget that.
I suggest to remove all wires and start again.

This is an example, you will need that resistor to the base.

This is the ABC guide. Card3 is with a transistor.

Thank you so much! I have been beating this monkey for days. The inexperienced can find great web resources most of the time but can't often distinguish good from bad. Also, the ABC link will be very helpful.

Should have added another question: How can I supply both Arduino and relay with the same wall wart? I burned a Seeeduino experimenting with the same 8v source.

Do you have a 5V relay or a 12V relay ?

Which Arduino board to you have ?

Do you use the wall wart of 8V already for the Arduino ?

If you have a 5V relay it depends how much current it needs.
A small relay (say 5V 100mA) could perhaps be powered by the 5V pin of the Arduino.
Using a darlington transistor at 5V is not so good, because of the voltage drop. But I think it will work.

Hi, do not trigger the relay from an arduino pin directly: you will almost surely destroy the pin and probably the arduino. The easiest way is: use a "logic level mosfet" like the 2N2007. You can drive it directly from a digital pin (no resistor needed): that is the gate is connected to the digital pin, the source to ground and the drain to the load. Do no forget to put a "kickback" diode (google that I dont remember the details) to protect the mosfet from the high voltage around the relay coil when switching it off. Check the power requirement as the 2N2007 is not really powerful. HTH