Selasa, 28 Mei 2019

sensor hujan dan ldr motor siepper

//smart dying
const int pinLDR = A0;
const int pinRS = A1;
int LEDa = 7;                      //variabel LED
int LEDb = 6;
int LEDc = 5;
int LEDd = 4;
int x=0;
int C1=8;                         //variabel motor stepper
int C2=9;
int C3=10;
int C4=11;

int step = 25;                    //Kecepatan putaran Motor Stepper
int delaytime = 2;

void setup() {
  Serial.begin(9600);
  pinMode(pinLDR,INPUT);          //masukan Led
  pinMode(pinRS,INPUT);           //masukan RS
  pinMode(LEDa,OUTPUT);           // keluaran lampu Merah (1) tanda Gelap
  pinMode(LEDb,OUTPUT);           // keluaran lampu Hijau (1) tanda Cerah
  pinMode(LEDc,OUTPUT);           // keluaran lampu Merah (2) tanda Hujan
  pinMode(LEDd,OUTPUT);           // keluaran lampu Hijau (2) tanda Tidak Hujan
  pinMode(C1,OUTPUT);
  pinMode(C2,OUTPUT);
  pinMode(C3,OUTPUT);
  pinMode(C4,OUTPUT);
}

float total;
int dataLDR=0;                    // data LDR dimulai dari 0
int dataRS=0;                     // data RS dimulai dari 0

void loop (){
  dataLDR = analogRead(pinLDR);               // data LDR dibaca dari pin analog LDR
  if(dataLDR>400) {digitalWrite(LEDa,HIGH);}  // lampu merah (1) menyala apabila nilai LDR >400 (Gelap)
  else            {digitalWrite(LEDa,LOW);}   // lampu hijau (1) mati apabila nilai LDR <400 (Cerah)
 Serial.print("Data LDR = ");                 // tampilan data LDR di monitor
 Serial.println(dataLDR);                     // Nilai dari data LDR yang akan ditampilkan
  if(dataLDR<400) {digitalWrite(LEDb,HIGH);}  // lampu hijau (1) menyala apabila nilai LDR <400 (Cerah)
  else            {digitalWrite(LEDb,LOW);}   // lampu hijau (1) mati apabila nilai LDR >400 (Gelap)
  
 dataRS= analogRead(pinRS);                   // data sensor hujan yang dibaca dari pin analog RS
  if(dataRS<900) {digitalWrite(LEDc,HIGH);}   // lampu merah (2) menyala apabila nilai RS <900 (Hujan)
  else            {digitalWrite(LEDc,LOW);}   // lampu merah (2) mati apabila nilai RS >900 (Tidak Hujan)
 Serial.print("Data RS = ");                  // tampilan data RS di monitor
 Serial.println(dataRS);                      // Nilai dari data RS yang akan ditampilkan
  if(dataRS>900) {digitalWrite(LEDd,HIGH);}   // lampu hijau (2) menyala apabila nilai RS >900 (Tidak Hujan)
  else            {digitalWrite(LEDd,LOW);}   // lampu hijau (2) mati apabila nilai RS <900 (Hujan)
total = (dataRS - (dataLDR+600));
 Serial.print("total ");
 Serial.println(total);
  if (total<-10)
  { if (x==1){
 Serial.print("jemuran keluar");
 for (int i=0; i<2000; i++)
 {mundur(); } x=0;}
}
else if (total>-10)
{ if(x==0) {
 Serial.println("jemuran masuk");
 for (int i=0; i<2000; i++)
 { maju(); } x=1;} 
}

delay(1000);}

void mundur(){
  step4();
  delay(delaytime);
  step3();
  delay(delaytime);
  step2();
  delay(delaytime);
  step1();
  delay(delaytime);
}
void maju(){
  step1();
  delay(delaytime);
  step2();
  delay(delaytime);
  step3();
  delay(delaytime);
  step4();
  delay(delaytime);
}
void step1(){
  digitalWrite(C1,LOW);
  digitalWrite(C2,LOW);
  digitalWrite(C3,HIGH);
  digitalWrite(C4,HIGH);}
void step2(){
  digitalWrite(C1,HIGH);
  digitalWrite(C2,LOW);
  digitalWrite(C3,LOW);
  digitalWrite(C4,HIGH);}
void step3(){
  digitalWrite(C1,HIGH);
  digitalWrite(C2,HIGH);
  digitalWrite(C3,LOW);
  digitalWrite(C4,LOW);}
void step4(){
  digitalWrite(C1,LOW);
  digitalWrite(C2,HIGH);
  digitalWrite(C3,HIGH);
  digitalWrite(C4,LOW);}

sensor gas sms dan lcd

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <SoftwareSerial.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);

//Pin software Serial untuk komunikasi dengan module SIM800L
SoftwareSerial SIM800L(2, 3); // RX | TX

const int     SensorPin = A0;  // Gas Sensor Here
const int     TestPin = A1;    //Tombol Test
const int     Speaker = 10;
const int     merah = 13; //Out Digital To Emergency Lamp or Sirine drive with Relay
const int     BuzzerPin = 12; //Active Buzzer
const int     hijau = 11;    //LED Indicator Sensor
//https://www.tokopedia.com/rajacell/etalase/arduino-board-module
float         ppmGas;      //Gas dalam 'ppm'->perkiraan
float         GasPercent;  //Gas dalam 'Percent'
const int     GasMax = 50;  //Persentase Maximal Gas
uint8_t       SmsCount = 0; // SMS Count Variable
const int     SmsMax = 3;  //Maksimal SMS yang akan Dikirim
const long    intervalSMS = 10;  //Interval pengiriman setiap sms dalam detik
unsigned long previousMillis = 0;
String        gasStat;
//https://www.tokopedia.com/rajacell/etalase/arduino-board-module
int ledState = LOW;
unsigned long previousMillis2 = 0;
long interval = 1000;

void setup() {
// put your setup code here, to run once:
pinMode (A1,INPUT_PULLUP);
pinMode (11,OUTPUT);
digitalWrite (11, LOW);
pinMode (12,OUTPUT);
pinMode (13,OUTPUT);

lcd.begin(16, 2);
lcd.init();                   
  lcd.init();
  lcd.backlight();


Serial.begin(9600);
SIM800L.begin(9600); 
//https://www.tokopedia.com/rajacell/etalase/arduino-board-module
lcd.setCursor (0,0);
lcd.print(F("Sensor Kebocoran"));
lcd.setCursor (0,1);
lcd.print(F("    Gas LPG    "));
delay (2000);
lcd.clear();
}
//Skecth program ini dibuat oleh Dani-Rajacell untuk www.belajarduino.com
//Silahkan pergunakan coding ini secara free dan mohon untuk tidak menghapus marking ini
//sebagai bentuk apresiasi atas free sharing program ini.
//Untuk kebutuhan Module dan Board Arduino silahkan bisa dibeli di :
//https://www.tokopedia.com/rajacell/etalase/arduino-board-module
void loop() {
// put your main code here, to run repeatedly:
GasPercent = map(analogRead(SensorPin),0,1023,0,100);
ppmGas = map(analogRead(SensorPin),0,1023,0,10000);
interval = map(analogRead(SensorPin),0,1023,1000,10);

Serial.print (GasPercent ); Serial.println (" %");
Serial.print (ppmGas,0); Serial.println (" ppm");

lcd.setCursor (0,0);
lcd.print ("P.Gas:"); lcd.print (GasPercent,1);
lcd.print ("%"); lcd.print ("      ");
lcd.setCursor (0,1);
lcd.print ("C.Gas:"); lcd.print (ppmGas,0);
lcd.print ("ppm"); lcd.print ("    ");
//https://www.tokopedia.com/rajacell/etalase/arduino-board-module
if( GasPercent>GasMax || digitalRead(TestPin) == LOW ){
 
digitalWrite(BuzzerPin,HIGH);
digitalWrite(merah,LOW);
digitalWrite(hijau, HIGH);

gasStat ="*";
if(SmsCount<SmsMax){
  //lcd.backlight();
  unsigned long currentMillis = millis();
  if (currentMillis - previousMillis >= (intervalSMS*1000)) {
  previousMillis = currentMillis;
  kirimSMS();
  SmsCount=SmsCount+1;
 //https://www.tokopedia.com/rajacell/etalase/arduino-board-module
     }
   }
 }
else {
digitalWrite(BuzzerPin,LOW);
digitalWrite(merah,HIGH);
digitalWrite(hijau, LOW);

gasStat ="*";
SmsCount=0; //Reset hitungan SMS
//lcd.noBacklight();
}

blinkingLed (interval);

//delay scanning sensor
delay(100);   


}
//Skecth program ini dibuat oleh Dani-Rajacell untuk www.belajarduino.com
//Silahkan pergunakan coding ini secara free dan mohon untuk tidak menghapus marking ini
//sebagai bentuk apresiasi atas free sharing program ini.
//Untuk kebutuhan Module dan Board Arduino silahkan bisa dibeli di :
//https://www.tokopedia.com/rajacell/etalase/arduino-board-module
void kirimSMS () {
  int tes = 0;
  if(digitalRead(TestPin) == LOW){tes=1;}
  String PesanSMS = ("Terjadi Kebocoran Gas LPG dengan konsentrasi Gas ")+String(GasPercent)+("% ")+String(ppmGas)+(" ppm");
  lcd.clear();
  lcd.setCursor (0,0);
  if(tes==0){lcd.print ("   WARNING!!!   ");}
   if(tes==1){lcd.print ("   TESTING!!!   ");}
  lcd.setCursor (0,1);
  lcd.print ("Send SMS.");
  Serial.println("Menyiapkan Pesan Text");
  SIM800L.write("AT+CMGF=1\r\n");
  delay(500);
  lcd.print (".");
  delay(500);
  Serial.println("Set SMS ke Nomor Tujuan");
  //Tulis nomor tujuan SMS pada perintah dibawah ini
  SIM800L.write("AT+CMGS=\"+6285384571695\"\r\n");
  delay(500);
  lcd.print (".");
  delay(500);
  lcd.print (".");
  Serial.println("Mengirim pesan SMS");
  //Tulis pesan SMS pada baris perintah dibawah ini
  SIM800L.print(PesanSMS);
  Serial.println(PesanSMS);
  //https://www.tokopedia.com/rajacell/etalase/arduino-board-module
  delay(500);
  lcd.print (".");
  delay(500);
  lcd.print (".");
  Serial.println("Mengakhiri SMS");
  SIM800L.write((char)26);
  delay(500);
  lcd.print ("..");   
  Serial.println("SMS Selesai Dikirim!");
  delay(500);
  lcd.setCursor(0,1);
  lcd.print ("   SMS SENT!!   ");
  delay(500);
  lcd.clear();
}
//Skecth program ini dibuat oleh Dani-Rajacell untuk www.belajarduino.com
//Silahkan pergunakan coding ini secara free dan mohon untuk tidak menghapus marking ini
//sebagai bentuk apresiasi atas free sharing program ini.
//Untuk kebutuhan Module dan Board Arduino silahkan bisa dibeli di :
//https://www.tokopedia.com/rajacell/etalase/arduino-board-module
void blinkingLed (long in ) {
 unsigned long currentMillis2 = millis();
  if (currentMillis2 - previousMillis2 >= in) {
    previousMillis2 = currentMillis2;
    if (ledState == LOW) {
      //https://www.tokopedia.com/rajacell/etalase/arduino-board-module
      ledState = HIGH;
    } else {
      ledState = LOW;
    }
   
    lcd.setCursor (14,0);
    lcd.print (gasStat);
  }
}

program sensor ldr dan hujan

#include <Servo.h>

const int pinLDR = A0;
const int pinRS = A1;
int LEDa = 7;                      //variabel LED
int LEDb = 6;

Servo servo;
Servo servo1;
void setup() {
  Serial.begin(9600);
  pinMode(pinLDR,INPUT);          //masukan Led
  pinMode(pinRS,INPUT);           //masukan RS
  pinMode(LEDa,OUTPUT);           // keluaran lampu Merah (1) tanda Gelap
  pinMode(LEDb,OUTPUT);           // keluaran lampu Hijau (1) tanda Cerah
  servo.attach(5) ;         // keluaran lampu Hijau (2) tanda Tidak Hujan
  servo1.attach(4) ;
}

float total;
int dataLDR=0;                    // data LDR dimulai dari 0
int dataRS=0;                     // data RS dimulai dari 0

void loop (){
  dataLDR = analogRead(pinLDR);               // data LDR dibaca dari pin analog LDR
  if(dataLDR>400) {
    digitalWrite(LEDa,HIGH);               // lampu merah (1) menyala apabila nilai LDR >400 (Gelap)
    servo.write(0);
    } 

 else {
      digitalWrite(LEDa,LOW);              // lampu hijau (1) mati apabila nilai LDR <400 (Cerah)
     servo.write(180);
 }
   Serial.print("Data LDR = ");                 // tampilan data LDR di monitor
 Serial.println(dataLDR);


 dataRS= analogRead(pinRS);                   // data sensor hujan yang dibaca dari pin analog RS
  if(dataRS<900) {                          // lampu merah (2) menyala apabila nilai RS <900 (Hujan)
    digitalWrite(LEDb,HIGH);
     servo1.write(0);
    }
   
    else {
      digitalWrite(LEDb,LOW);              // lampu hijau (1) mati apabila nilai LDR <400 (Cerah)
     servo1.write(180);
      }   // lampu merah (2) mati apabila nilai RS >900 (Tidak Hujan)
 Serial.print("Data RS = ");                  // tampilan data RS di monitor
 Serial.println(dataRS);                      // Nilai dari data RS yang akan ditampilkan
 
}