SMS - Sensor Jarak - RTC - Arduino

#include
"Wire_h"
"LiquidCrystal_I2C_h"
"RTClib_h"
"SoftwareSerial_h"

LiquidCrystal_I2C lcd(0x3F, 16, 2);
RTC_DS1307 rtc;

int lastminute=0;
char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};

#define trigPin 2
#define echoPin 3
const int buzzer = 7; //buzzer to arduino pin 7
long duration, distance, distanceOld, TinggiAir;
long distanceA, distanceB,distanceC,distanceD,distanceE,distanceF;

int  dataMenitOld = 0;
int  MarkdataMenit = 0;
int  MarkdataJam = 0;
int errorloop = 0;

SoftwareSerial SIM800L(8, 9); // RX | TX
// Connect the SIM800L TX to Arduino pin 8 RX.
// Connect the SIM800L RX to Arduino pin 9 TX.

void setup() {
  // put your setup code here, to run once:
  pinMode(buzzer, OUTPUT); // Set buzzer - pin 7 as an output
 
  tone(buzzer, 2000); // Send 1KHz sound signal...
  delay(50);        // ...for 1 sec
  noTone(buzzer);     // Stop sound...
  delay(1000);
    lcd.begin();
    Serial.begin(57600);

  if (! rtc.begin()) {
    lcd.print("Couldn't find RTC");
    while (1);
  }

  if (! rtc.isrunning()) {
    lcd.print("RTC is NOT running!");
    // following line sets the RTC to the date & time this sketch was compiled
    // rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
    // This line sets the RTC with an explicit date & time, for example to set
    // January 21, 2014 at 3am you would call:
    // rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
  }

 delay(1000);
    SIM800L.begin(57600); 

    lcd.print("SIM800L started at 57600");
    delay(1000);
    lcd.print("Setup Complete!");
     lcd.setCursor(0,1); 
    lcd.print("SIM800L is Ready!");
 delay(1000);

lcd.clear();
lcd.print("www.wahyucf.com");
lcd.setCursor(0,1); 
lcd.print(" 087770-187770 ");
 delay(1000);

  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);

  
 //   lcd.print(distance);
 //   lcd.print(" cm");
 
 
 
 delay(5000);

     DateTime now = rtc.now();

    String thn=String(now.year(), DEC);
    Serial.print(thn);
    Serial.print('/');
    String bln=String(now.month(), DEC);
    Serial.print(bln);
    Serial.print('/');
    String hr=String(now.day(), DEC);
    Serial.print(hr);
    Serial.print(" (");
    Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
    Serial.print(") ");
    String dataJam=String(now.hour(), DEC);
    Serial.print(':');
    String dataMenit=String(now.minute(), DEC);
    Serial.print(':');
    String dataDetik=String(now.second(), DEC);
    Serial.println();

  digitalWrite(trigPin, LOW);  // Added this line
  delayMicroseconds(2); // Added this line
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10); // Added this line
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH);
  distance = (duration/2) / 29.1; 
 
 distance = ukur(); 
  TinggiAir =100 - distance;

//String Tanggal = "\n"+ thn + '/'+ bln + '/'+ hr + " - "+ dataJam + ":" + dataMenit + ":" + dataDetik + "\n"+  "Level air: "  + String(TinggiAir) + " cm"+ "\n";
String Tanggal = "\n"+ thn + '/'+ bln + '/'+ hr + " - "+ dataJam + ":" + dataMenit + "\n"+  "Level air: "  + String(TinggiAir) + " cm"+ "\n";

    Serial.print(Tanggal);

 // String message = Tanggal + " - " + dataJam + ":" + dataMenit + ":" + dataDetik + " -" + " Jarak saat ini: ";  + String(distance) + " cm"+ "\n"; 

delay(5000);

 lcd.clear(); 
   lcd.print("Setup Complete!");
 lcd.setCursor(0,1);  
  lcd.print("Sending SMS...");
   
  //Set SMS format to ASCII
  SIM800L.write("AT+CSCS?\r\n");
  delay(1000);

  SIM800L.write("AT+CSCS=\"GSM\"\r\n");
  delay(1000);
  SIM800L.write((char)26);
  delay(1000);  
  SIM800L.write("AT+CMGF=1\r\n");
  delay(1000);
  //Send new SMS command and message number
  SIM800L.write("AT+CMGS=\"+6287770187770\"\r\n");
  delay(1000);   
  //Send SMS content
  SIM800L.write("Piranti Start: ");
  delay(1000);
  SIM800L.write(Tanggal.c_str());
  //Send Ctrl+Z / ESC to denote SMS message is complete
  SIM800L.write((char)26);
  delay(20000);
 
  SIM800L.write("AT+CSCS=\"GSM\"\r\n");
  delay(1000);
  SIM800L.write((char)26);
  delay(1000);  
  SIM800L.write("AT+CMGF=1\r\n");
  delay(1000);
  //Send new SMS command and message number
  SIM800L.write("AT+CMGS=\"+628977143153\"\r\n");
  delay(1000);   
  //Send SMS content
  SIM800L.write("Piranti Start: ");
  delay(1000);
  SIM800L.write(Tanggal.c_str());
  //Send Ctrl+Z / ESC to denote SMS message is complete
  SIM800L.write((char)26);
  delay(1000);
 
 
 
 
 
  
  lcd.clear();   
  lcd.print("Piranti Start");
 
    tone(buzzer, 2000); // Send 1KHz sound signal...
  delay(50);        // ...for 1 sec
  noTone(buzzer);     // Stop sound...
  delay(100);
    tone(buzzer, 2000); // Send 1KHz sound signal...
  delay(50);        // ...for 1 sec
  noTone(buzzer);     // Stop sound...
  delay(1000);
   
 delay(5000);
 
 
 
}

void loop() {
  // put your main code here, to run repeatedly:
    DateTime now = rtc.now();
    

    String thn=String(now.year(), DEC);
    Serial.print(thn);
    Serial.print('/');
    String bln=String(now.month(), DEC);
    Serial.print(bln);
    Serial.print('/');
    String hr=String(now.day(), DEC);
    Serial.print(hr);
    Serial.print(" (");
    Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
    Serial.print(") ");
    String dataJam=String(now.hour(), DEC);
    Serial.print(dataJam);
    int dataJamInt=dataJam.toInt();
    Serial.print(':');
    String dataMenit=String(now.minute(), DEC);
    Serial.print(dataMenit);
    int dataMenitInt=dataMenit.toInt();
   Serial.print(':');
   String dataDetik=String(now.second(), DEC);
    Serial.print(dataDetik);
    Serial.println();
 
 
    Serial.println(dataMenitInt);
    Serial.println(dataMenitOld);   
    

 distance = ukur(); 
  TinggiAir =100 - distance;

if ((distance >25)&&(errorloop!=0))
{
  errorloop=0;
}

if ((distance <=25)&&(errorloop<5)){

    lcd.setCursor(0,1); 
    lcd.print("Object To Close");
    errorloop=errorloop+1;

if ((distance ==25)){    
String Tanggal = thn + '/'+ bln + '/'+ hr ;     
     kirimsms("CekSensor","Jarak Obj", Tanggal, dataJam, dataMenit, dataDetik, distance, "- www.wahyucf.com -"); 
}

  } 

if (((dataJamInt == 17)||(dataJamInt==7))&&(dataMenitOld==0)){

  if(  MarkdataJam != dataJamInt)
{
  
String Tanggal = thn + '/'+ bln + '/'+ hr ;     
     kirimsms("Data", "Level air", Tanggal, dataJam, dataMenit, dataDetik, TinggiAir, "================"); 
    dataMenitOld = dataMenitInt;
    MarkdataJam = dataJamInt;

}

  } 
  
if ((dataMenitInt == (dataMenitOld + 30)) || (dataMenitInt == 0) || (dataMenitOld == 0)){
    dataMenitOld = dataMenitInt;

    

  if(  MarkdataMenit != dataMenitInt)
{
String Tanggal = thn + '/'+ bln + '/'+ hr ;     
     kirimsms("CekSMS", "Level air", Tanggal, dataJam, dataMenit, dataDetik, TinggiAir, "- www.wahyucf.com -"); 
    MarkdataMenit= dataMenitInt;
}

  } 

    
 if ((distanceOld!=distance) || (lastminute!=now.minute()))
 // if (now.second()!= lastminute) 
 {    
    lcd.clear();
    lcd.setCursor(0,0); 
    lcd.print(now.year(), DEC);
    lcd.print('/');
    lcd.print(now.month(), DEC);
    lcd.print('/');
    lcd.print(now.day(), DEC);
    

//    lcd.print(" (");
//    lcd.print(daysOfTheWeek[now.dayOfTheWeek()]);
//    lcd.print(") ");
    
    lcd.setCursor(11,0);
    lcd.print(now.hour(), DEC);
    lcd.print(':');
    lcd.print(now.minute(), DEC);
//    lcd.print(':');
//    lcd.print(now.second(), DEC);
//    lcd.setCursor(8,1);

    lcd.setCursor(0,1); 
    lcd.print("Level Air:");
    lcd.print(" ");
    lcd.print(TinggiAir);
    lcd.print("cm");

//    lcd.println();
    lastminute=now.minute();

    distanceOld=distance;

  }
}

void kirimsms(String dataTipe,String dataNote,String Tanggal, String dataJam, String dataMenit, String dataDetik, long distance,String Closer) 
{

    tone(buzzer, 2000); // Send 1KHz sound signal...
  delay(50);        // ...for 1 sec
  noTone(buzzer);     // Stop sound...
  delay(100);
    tone(buzzer, 2000); // Send 1KHz sound signal...
  delay(50);        // ...for 1 sec
  noTone(buzzer);     // Stop sound...

  
  
//String message = "\n"+dataTipe + "\n"+Tanggal + " - "+ dataJam + ":" + dataMenit + ":" + dataDetik + "\n"+ dataNote + ": "  + distance + " cm"+ "\n"+"\n"+Closer;

String message = "\n"+dataTipe + "\n"+Tanggal + " - "+ dataJam + ":" + dataMenit + "\n"+ dataNote + ": "  + String(TinggiAir) + " cm"+ "\n"+"\n"+Closer;
    Serial.print(message);

  lcd.clear(); 
  lcd.print("Tinggi air:");
  lcd.print(TinggiAir);
  lcd.print("cm");
  lcd.setCursor(0,1);  
  lcd.print("Sending SMS...");
   
  //Set SMS format to ASCII
  SIM800L.write("AT+CSCS?\r\n");
  delay(1000);
  SIM800L.write("AT+CSCS=\"GSM\"\r\n");
  delay(1000);
  SIM800L.write((char)26);
  delay(1000);  
  SIM800L.write("AT+CMGF=1\r\n");
  delay(1000);
  //Send new SMS command and message number
  SIM800L.write("AT+CMGS=\"+6287770187770\"\r\n");
  delay(1000);
  //Send SMS content
  SIM800L.write("Irigasi-ID ");
  delay(1000);
  SIM800L.write(message.c_str());
  //Send Ctrl+Z / ESC to denote SMS message is complete
  SIM800L.write((char)26);
  delay(20000);

  //Set SMS format to ASCII
  SIM800L.write("AT+CSCS?\r\n");
  delay(1000);
  SIM800L.write("AT+CSCS=\"GSM\"\r\n");
  delay(1000);
  SIM800L.write((char)26);
  delay(1000);  
  SIM800L.write("AT+CMGF=1\r\n");
  delay(1000);
  //Send new SMS command and message number
  SIM800L.write("AT+CMGS=\"+628977143153\"\r\n");
  delay(1000);
  //Send SMS content
  SIM800L.write("Irigasi-ID ");
  delay(1000);
  SIM800L.write(message.c_str());
  //Send Ctrl+Z / ESC to denote SMS message is complete
  SIM800L.write((char)26);
 delay(2000);

if(dataTipe == "Data") {

  delay(18000);
 
   //Set SMS format to ASCII
  SIM800L.write("AT+CSCS?\r\n");
  delay(1000);
  SIM800L.write("AT+CSCS=\"GSM\"\r\n");
  delay(1000);
  SIM800L.write((char)26);
  delay(1000);  
  SIM800L.write("AT+CMGF=1\r\n");
  delay(1000);
  //Send new SMS command and message number
  SIM800L.write("AT+CMGS=\"+628977143153\"\r\n");
  delay(1000);
  //Send SMS content
  SIM800L.write("Irigasi-ID ");
  delay(1000);
  SIM800L.write(message.c_str());
  //Send Ctrl+Z / ESC to denote SMS message is complete
  SIM800L.write((char)26);
  delay(2000);
 
  
}

}
long ukur () {
  

  distanceA = dist ();    
  delay(100);
  distanceB = dist ();  
  delay(100);
  distanceC = dist ();  
  delay(100);  
  distanceD = dist ();  
  delay(100); 
  distanceE = dist ();  
  delay(100); 
  distanceF = dist ();  
 
 
 if (distanceA == distanceF) {
   return distanceA;
 }  
    
 if (distanceA == distanceE) {
   return distanceA;
 }  
  
 if (distanceA == distanceD) {
   return distanceA;
 }

 if (distanceA == distanceC) {
   return distanceA;
 } 

 if (distanceA == distanceB) {
   return distanceA;
 } 

 if (distanceB == distanceF) {
   return distanceB;
 } 

 if (distanceB == distanceE) {
   return distanceB;
 } 
 
 if (distanceB == distanceD) {
   return distanceB;
 } 

 if (distanceB == distanceC) {
   return distanceB;
 } 

 if (distanceC == distanceF) {
   return distanceC;
 } 

 if (distanceC == distanceE) {
   return distanceC;
 }  

 if (distanceC == distanceD) {
   return distanceC;
 } 

 if (distanceD == distanceE) {
   return distanceD;
 }  

 if (distanceD == distanceE) {
   return distanceD;
 } 

 if (distanceE == distanceF) {
   return distanceE;
 } 

}

long dist () {
  digitalWrite(trigPin, LOW);  // Added this line
  delayMicroseconds(2); // Added this line
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10); // Added this line
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH);
  distance = ((duration) / 58.138)+4;  
  return distance;
}

Arduino Sketch kirim SMS dengan Modul GSM SIM800L

#include <SoftwareSerial.h>
SoftwareSerial SIM800L(10, 11); // RX | TX
// Connect the SIM800L TX to Arduino pin 10 RX.
// Connect the SIM800L RX to Arduino pin 11 TX.
char c = ' ';
void setup()
{
    // start th serial communication with the host computer
    Serial.begin(9600);
    while(!Serial);
    Serial.println("Arduino with SIM800L is ready");

    // start communication with the SIM800L in 9600
    SIM800L.begin(9600); 
    Serial.println("SIM800L started at 9600");
    delay(1000);
    Serial.println("Setup Complete! SIM800L is Ready!");
   
  
  Serial.println("Set format SMS ke ASCII");
  SIM800L.write("AT+CMGF=1\r\n");
  delay(1000);

  Serial.println("SIM800L Set SMS ke Nomor Tujuan");
  SIM800L.write("AT+CMGS=\"08977143153\"\r\n");
  delay(1000);
  
  Serial.println("SIM800L Send SMS content");
  SIM800L.write("Testing Kirim SMS via SIM800L");
  delay(1000);
  
  Serial.println("Mengirim Char Ctrl+Z / ESC untuk keluar dari menu SMS");
  SIM800L.write((char)26);
  delay(1000);
    
  Serial.println("SMS Selesai Dikirim!");
}

void loop()
{

     // Keep reading from SIM800 and send to Arduino Serial Monitor
    if (SIM800L.available())
    { c = SIM800L.read();
      Serial.write(c);}

    // Keep reading from Arduino Serial Monitor and send to SIM800L
    if (Serial.available())
    { c = Serial.read();
      SIM800L.write(c); 
       }

}

Hari Libur Tahun 2017

Tahun Baru Masehi
Minggu
1 Januari 2017

Cuti Bersama
Senin
2 Januari 2017

Tahun Baru Imlek
Sabtu
28 Januari 2017

Hari Raya Nyepi
Selasa
28 Maret 2017

Jumat Agung
Jumat
14 April 2017

Isra Miraj
Senin
24 April 2017

Hari Buruh
Senin
1 Mei 2017

Hari Raya Waisak
Kamis
11 Mei 2017

Kenaikan Isa Almasih
Kamis
25 Mei 2017

Hari Lahir Pancasila
Kamis
1 Juni 2017

Idul Fitri
Minggu - Senin
25 - 26 Juni 2017

Cuti Bersama
Selasa - Jumat
27 - 30 Juni 2017

Hari Kemerdekaan
Kamis
17 Agustus 2017

Idul Adha
Jumat
1 September 2017

Tahun Baru Hijriyah
Kamis
21 September 2017

Maulid Nabi
Jumat
1 Desember 2017

Hari Natal
Senin
25 Desember 2017

Cuti Bersama
Selasa
26 Desember 2017

Lapis Aspal Beton (laston)

Lapis Aspal beton adalah beton aspal yang  bergradasi menerus, lapis aspal beton (laston) juga sering disebutl dengan AC (Asphal Concrete), ...