#include <SoftwareSerial.h>
#include <LiquidCrystal_I2C.h>
//Create software serial object to communicate with SIM800L
SoftwareSerial mySerial(2, 3); //SIM800L Tx & Rx is connected to Arduino #3 & #2
LiquidCrystal_I2C lcd(0x27, 16, 2); // set the LCD address to 0x3F for a 16 chars and 2 line display
void setup() {
//Begin serial communication with Arduino and Arduino IDE (Serial Monitor)
Serial.begin(115200);
//Begin serial communication with Arduino and SIM800L
mySerial.begin(9600);
pinMode(4, INPUT); // Fire sensor input
pinMode(5, INPUT); // Smoke sensor inpput
pinMode(6, OUTPUT);
delay(1000);
Serial.println("Initializing...");
lcd.init();
lcd.clear();
lcd.backlight(); // Make sure backlight is on
// Print a message on both lines of the LCD.
lcd.setCursor(0, 0); //Set cursor to character 2 on line 0
lcd.print("System Starting");
lcd.setCursor(0, 1); //Move cursor to character 2 on line 1
lcd.print(" Please Wait");
delay(3000);
mySerial.println("AT"); //Once the handshake test is successful, it will back to OK
updateSerial();
delay(1000);
mySerial.println("AT+CMGDA=\"DEL ALL\"");
delay(2000);
mySerial.println("AT+CMGD=1,4");
//Serial.println("All sms deleted");
delay(4000);
mySerial.println("AT+CMGF=1"); // Configuring TEXT mode
updateSerial();
delay(1000);
mySerial.println("AT+CMGS=\"+918770487887\"");
updateSerial();
delay(1000);
mySerial.println("Forest Fire safety System"); //text content
mySerial.println("System Ready for use"); //text content
updateSerial();
delay(1000);
mySerial.write(26);
lcd.clear();
lcd.setCursor(0, 0); //Move cursor to character 2 on line 1
lcd.print(" SMS Send ");
lcd.setCursor(0, 1); //Move cursor to character 2 on line 1
lcd.print(" Please Check ");
delay(3000);
digitalWrite(6, LOW);
}
void loop() {
int fire = digitalRead(4);
int smoke = digitalRead(5);
Serial.println(fire);
Serial.println(smoke);
Serial.println("--------------------------");
if (fire == 0) {
Serial.println("Fire detection");
digitalWrite(6, HIGH);
lcd.clear();
lcd.setCursor(0, 0); //Move cursor to character 2 on line 1
lcd.print(" Alert.... ");
lcd.setCursor(0, 1); //Move cursor to character 2 on line 1
lcd.print(" Fire Detected");
delay(2000);
mySerial.println("AT+CMGF=1"); // Configuring TEXT mode
updateSerial();
delay(1000);
mySerial.println("AT+CMGS=\"+918770487887\"");
updateSerial();
delay(1000);
mySerial.println("Forest Fire safety System"); //text content
mySerial.println("Alert..."); //text content
mySerial.println("Fire Detected"); //text content
updateSerial();
delay(1000);
mySerial.write(26);
delay(1000);
digitalWrite(6, LOW);
}
if (smoke == 0) {
Serial.println("smoke detection");
digitalWrite(6, HIGH);
lcd.clear();
lcd.setCursor(0, 0); //Move cursor to character 2 on line 1
lcd.print(" Alert.... ");
lcd.setCursor(0, 1); //Move cursor to character 2 on line 1
lcd.print(" Smoke Detected");
delay(2000);
mySerial.println("AT+CMGF=1"); // Configuring TEXT mode
updateSerial();
delay(1000);
mySerial.println("AT+CMGS=\"+918770487887\""); //change ZZ with country code and xxxxxxxxxxx with phone number to sms
//mySerial.println("AT+CMGS=\"+918770487887\"");//change ZZ with country code and xxxxxxxxxxx with phone number to sms
updateSerial();
delay(1000);
mySerial.println("Forest Fire safety System"); //text content
mySerial.println("Alert..."); //text content
mySerial.println("Smoke Detected"); //text content
updateSerial();
delay(1000);
mySerial.write(26);
delay(1000);
digitalWrite(6, LOW);
}
else {
Serial.println(" Nothing .......");
lcd.clear();
lcd.setCursor(0, 0); //Move cursor to character 2 on line 1
lcd.print(" No Fire and ");
lcd.setCursor(0, 1); //Move cursor to character 2 on line 1
lcd.print(" Smoke Detected");
delay(2000);
}
}
void updateSerial() {
delay(500);
while (Serial.available()) {
mySerial.write(Serial.read()); //Forward what Serial received to Software Serial Port
}
while (mySerial.available()) {
Serial.write(mySerial.read()); //Forward what Software Serial received to Serial Port
}
}