#include <SoftwareSerial.h>
//Alarm reciever's phone number with country code
const String PHONE = "94+++++++++";
//GSM Module RX pin to Arduino 3
//GSM Module TX pin to Arduino 2
#define rxPin 2
#define txPin 3
SoftwareSerial sim800(rxPin, txPin);
//the pin that the Arduino Board is atteched to
#define trigPin 8 // Ultrasonic Sensor
#define echoPin 9 // Ultrasonic Sensor
#define greenLight 13 //(Relay 1)
#define redLight 12 //(Relay 2)
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(greenLight, OUTPUT);
pinMode(redLight, OUTPUT);
pinMode(warnLight, OUTPUT);
Serial.begin(115200); // initialize serial
sim800.begin(9600);
Serial.println("SIM800L software serial initialize");
sim800.println("AT");
delay(1000);
}
void loop() {
//////////////////////////////////////////////////
while (sim800.available()) {
Serial.println(sim800.readString());
}
//////////////////////////////////////////////////
while (Serial.available()) {
sim800.println(Serial.readString());
}
//////////////////////////////////////////////////
long time_duration, distance_in_cm;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
time_duration = pulseIn(echoPin, HIGH);
distance_in_cm = time_duration / 29 / 2;
Serial.print(distance_in_cm);
Serial.println(" cm");
//Ranging Distance − 2cm – 400 cm
if (distance_in_cm <= 55) {
Serial.println("Red Light");
Serial.println("Transmitting Message");
sim800.println("AT+CMGF=1"); //Sets the GSM Module in Text Mode
delay(1000);
sim800.println("AT+CMGS="" + PHONE + ""\r"); //Mobile phone number to send message
delay(1000);
String SMS = "Red Light";
sim800.println(SMS);
delay(100);
sim800.println((char)26);// ASCII code of CTRL+Z
delay(1000);
digitalWrite(12, HIGH);
digitalWrite(13, LOW);
delay(500);
}
else {
digitalWrite(12, LOW);
digitalWrite(13, HIGH);
delay(500);
Serial.println("Green Light");
Serial.println("Transmitting Message");
sim800.println("AT+CMGF=1"); //Sets the GSM Module in Text Mode
delay(1000);
sim800.println("AT+CMGS="" + PHONE + ""\r"); //Mobile phone number to send message
delay(1000);
String SMS = "Green Light";
sim800.println(SMS);
delay(100);
sim800.println((char)26);// ASCII code of CTRL+Z
delay(1000);
}
}