I am currently working on a project where the"radar" xyc-wb-dc is used as the intruder sensor. Since this sensor is extremely sensitive, I decided to use a"button counter"program (StatChangeDetection(edge detection))and only trigger the SMS alert after a certain number of disturbances to the sensor. However, I face a problem with the GSM 900 to pick up the correct signal for posting a SMS.Anybody capable to give som comments to my sketch?
#include <SoftwareSerial.h>
SoftwareSerial SIM900(7,8);
const int buttonPin = 2; // the pin that the pushbutton(read XYC-WB-DC) is attached to
const int ledPin = 10; // the pin that the LED is attached to
;
// Variables will change:
int buttonPushCounter = 0; // counter for the number of button presses
int buttonState = 0; // current state of the button
int lastButtonState = 0; // previous state of the button
int Intruder = 0;
//int sms_count=0;
void setup() {
// initialize the button pin as a input:
pinMode(buttonPin, INPUT);
// initialize the LED as an output:
pinMode(ledPin, OUTPUT);
// initialize serial communication:
Serial.begin(9600);//Communication between pc and Arduino
{
sendSMS();
}
}
void loop() {
check_Counter();
check_Intruder();
}
void check_Counter() {
// read the pushbutton input pin:
buttonState = digitalRead(buttonPin);
// compare the buttonState to its previous state
if (buttonState != lastButtonState) {
// if the state has changed, increment the counter
if (buttonState == HIGH) {
// if the current state is HIGH then the button went from off to on:
buttonPushCounter++;
Serial.println("on");
Serial.print("number of button pushes: ");
Serial.println(buttonPushCounter);
} else {
// if the current state is LOW then the button went from on to off:
Serial.println("off");
}
// Delay a little bit to avoid bouncing
delay(50);
}
// save the current state as the last state, for next time through the loop
lastButtonState = buttonState;
if (buttonPushCounter % 4 == 0) {
digitalWrite(ledPin, HIGH);
}
else {
digitalWrite(ledPin, LOW);
}
}
void check_Intruder()
{ Intruder=digitalRead(ledPin);
if(Intruder==HIGH){
// Arduino communicates with SIM900 GSM shield at a baud rate of 19200
// Make sure that corresponds to the baud rate of your module
SIM900.begin(19200);
// Give time to your GSM shield log on to network
delay(2000);
}
{
//Send the SMS
sendSMS();
}
}
void sendSMS() {
// AT command to set SIM900 to SMS mode
SIM900.print("AT+CMGF=1\r");
delay(100);
// REPLACE THE X's WITH THE RECIPIENT'S MOBILE NUMBER
// USE INTERNATIONAL FORMAT CODE FOR MOBILE NUMBERS
SIM900.println("AT + CMGS = "+4790098921"");
delay(100);
// REPLACE WITH YOUR OWN SMS MESSAGE CONTENT
SIM900.println("Intruder_4");
delay(100);
// End AT command with a ^Z, ASCII code 26
delay(100);
// Give module time to send SMS
SIM900.println((char)26);
delay(2000);
SIM900.println();
}