Go Down

Topic: Sensor PIR + Arduino + SIM800 (Read 2973 times) previous topic - next topic

abelmaulana

I have problems at the PIR sensor and SIM800.

PIR sensor can not detect motion and SIM800 not connect.

if you can help me to solve this problem?








// Uses a PIR sensor to detect movement, buzzes a buzzer
// more info here: http://blog.makezine.com/projects/pir-sensor-arduino-alarm/
// email me, John Park, at jp@jpixl.net
// based upon:
// PIR sensor tester by Limor Fried of Adafruit
// tone code by michael@thegrebs.com
//#include <SoftwareSerial.h>
#include <GSM.h>
//#define PINNUMBER "3"
#define PINNUMBER "2"
//SoftwareSerial gsm(3,2); //RX, TX

// initialize the library instance
// include a 'true' parameter for debug enabled
GSM gsmAccess;
GSM_SMS sms;

// char array of the telephone number to send SMS
// change the number 1-212-555-1212 to a number
// you have access to
char remoteNumber[20]= "+6285862017590";
// char array of the message
char txtMsg[200]="Alarm! Alarm! You Have An Intruder";

int ledPin = 13;                // choose the pin for the LED
int pir = 7;               // 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
int pinSpeaker = 4;           //Set up a speaker on a PWM pin (digital 9, 10, or 11)
int state = 0; // 0 = LED off dan 1 = LED on
int stat = 0;

void setup() {
  pinMode(ledPin, OUTPUT);      // declare LED as output
  pinMode(pir, INPUT);     // declare sensor as input
  pinMode(pinSpeaker, OUTPUT);
  Serial.begin(9600);
  Serial.println("SMS Messages Sender");
// connection state
  boolean notConnected = false;
// Start GSM shield
// If your SIM has PIN, pass it as a parameter of begin() in quotes
  while(notConnected)
  {
    if(gsmAccess.begin(PINNUMBER)==GSM_READY)
      notConnected = true;
    else
    {
      Serial.println("Not connected");
      delay(1000);
    }
  }
  Serial.println("GSM initialized");
 
 }

void loop(){

  val = digitalRead(pir);  // read input value
  if (val == HIGH) {            // check if the input is HIGH
    if (stat == 0){
   
    digitalWrite(ledPin, HIGH);  // turn LED ON
    playTone(300, 160);
    delay(150);

   
    if (pirState == HIGH);{
      // we have just turned on
     
      Serial.println("Ada Orang Terdeteksi Bro...");
      // We only want to print on the output change, not state
      pirState = LOW;
      sendSMS();
     
      }
    }
    stat = 1;
  } else {
      digitalWrite(ledPin, LOW) ; // turn LED OFF
      playTone(0, 0);
      delay(300);   
      if (pirState == LOW){
      // we have just turned off
      Serial.println("Deteksi Berakhir");
      // We only want to print on the output change, not state
      pirState = HIGH;
      stat = 0;
    }
  }
}
// duration in mSecs, frequency in hertz
void playTone(long duration, int freq) {
    duration *= 1000; //frequecy
    int period = (1.0 / freq) * 100000;
    long elapsed_time = 0;
    while (elapsed_time < duration) {
        digitalWrite(pinSpeaker,HIGH);
        delayMicroseconds(period / 2);
        digitalWrite(pinSpeaker, LOW);
        delayMicroseconds(period / 2);
        elapsed_time += (period);
    }
}
// SMS Code
  void sendSMS(){


  Serial.print("Message to mobile number:");
  Serial.println(remoteNumber);

// sms text
  Serial.println("SENDING");
  Serial.println();
  Serial.println("Message:");
  Serial.println(txtMsg);

// send the message
  sms.beginSMS(remoteNumber);
  sms.print(txtMsg);
  sms.endSMS();
  Serial.println("\nCOMPLETE!\n");
}

Go Up