SCRIPT DAN RANGKAIAN RTC (REAL TIME CLOCK), MMC DAN APLIKASINYA PADA GREENHOUSE

MEMBUAT RANGKAIAN RTC (REAL TIME CLOCK), MMC DAN APLIKASINYA PADA GREENHOUSE



A.    Real Time Clock
RTC merupakan komponen yang diperlukan untuk memberikan informasi mengenai waktu. Waktu disini dapat berupa detik, menit, hari, bulan dan tahun. RTC dilengkapi dengan baterai, yang umumnya orang-orang menyebutkannya sebagai baterai "CMOS"


Script
#include <LiquidCrystal.h>    // mengambil library lcd
#include <DHT.h>    // mengambil library lcd
#include <Wire.h>   // mengambil library lcd
#include <RTClib.h>   // mengambil library lcd
#include <SD.h>   // mengambil library lcd
#include <SPI.h>    // mengambil library lcd

LiquidCrystal lcd(2, 3, 4, 5, 6, 7);    //penampilan LCD dan tentang penggunaan pin LCD
DHT dht;
RTC_DS1307 RTC;   //tipe RTC yang digunakan
const int chipSelect = 10;    // membuat varibel chipSelect yang di set ke-pin 10
File dataFile;
int lampu = 2;   
int ulangan= 60;    // membuat varibel ulangan bernilai 60
int jeda = 10000;   // membuat varibel jeda bernilai 10000
#define mati HIGH
#define hidup LOW


void setup() {
  Serial.begin(9600);   // digunakan untuk komunikasi Serial dengan komputer
  lcd.begin(16,2);    //ukuran LCD yang digunakan(KOLOM,BARIS)
  lcd.setCursor(3,0);   //posisi yang akan ditampilkan pada LCD
  lcd.print("PRAKTIKUM");   //menampilkan kata "PRAKTIKUM" pada LCD
  lcd.setCursor(5,1);   //posisi yang akan ditampilkan pada LCD
  lcd.print("     RTC");    //menampilkan kata "RTC" pada LCD
  delay(5000);    //waktu tunggu
  lcd.clear();    //hapus layar LCD
  lcd.setCursor(0,0);   //posisi yang akan ditampilkan pada LCD
  lcd.print("TEKNIK PERTANIAN");    //menampilkan kata "TEKNIK                              PERTANIAN" pada LCD
  lcd.setCursor(6,1);   //posisi yang akan ditampilkan pada LCD
  lcd.print("UNILA");   //menampilkan kata "UNILA" pada LCD
  delay(5000);    //waktu tunggu
  lcd.clear();    //hapus layar LCD
  lcd.setCursor(3,1);   //posisi yang akan ditampilkan pada LCD
  lcd.print("SUHU: ");    //menampilkan kata "SUHU : " pada LCD


  dht.setup(3);
  Wire.begin();
  RTC.begin();
  if (!RTC.isrunning()) {
    RTC.adjust(DateTime(__DATE__, __TIME__));
  }
 
  pinMode(SS, OUTPUT);    //membuat SS sebagai output
  digitalWrite(10, HIGH);
  SD.begin(chipSelect);

  dataFile = SD.open("datalog.txt", FILE_WRITE);
  if (dataFile) {
  dataFile.print("Tanggal");
  dataFile.print("\t");
  dataFile.print("Waktu");
  dataFile.print("\t");
  dataFile.print("Suhu");
  dataFile.print("\t");
  dataFile.println();
  }

  pinMode(lampu,OUTPUT);    //membuat OUTPUT sebagai output
  digitalWrite(lampu,mati);
}

void waktu(){
  DateTime now = RTC.now();
 
  lcd.print(now.day(),DEC);   //menampilkan hari pada LCD
  lcd.print("/");   //menampilkan "/" pada LCD
  lcd.print(now.month(),DEC);   //menampilkan bulan pada LCD
  lcd.print("/");  
  lcd.print(now.year(),DEC);    //menampilkan tahun pada LCD
  lcd.print(" ");
  lcd.print(now.hour(),DEC);    //menampilkan jam pada LCD
  lcd.print(":");
  lcd.print(now.minute(),DEC);    //menampilkan menit pada LCD
  lcd.print(" ");
 
 }


void loop() {
  for (int t=0; t<ulangan; t++){
    lcd.setCursor(0,0);
    waktu();
    float temp = dht.getTemperature();
    float temp1 = round(temp);
    lcd.setCursor(9,1);
    lcd.print(temp,0);
    lcd.print((char)223);
    lcd.print("C");
    lcd.print(" ");
    delay(jeda);
   
//logika if
   if(temp1  >36 ){
      digitalWrite(lampu,mati);
    }
    if(temp1 <=36){
      digitalWrite(lampu,hidup
    }
    }

    float temp = dht.getTemperature();
    DateTime now = RTC.now();
    dataFile.print(now.day(),DEC);
    dataFile.print("/");
    dataFile.print(now.month(),DEC);
    dataFile.print("/");
    dataFile.print(now.year(),DEC);
    dataFile.print("\t");

    dataFile.print(now.hour(),DEC);
    dataFile.print(":");
    dataFile.print(now.minute(),DEC);
    dataFile.print(":");
    dataFile.print(now.second(),DEC);
    dataFile.print("\t");

    dataFile.print(temp,0);
    dataFile.print("");
    dataFile.println();
    dataFile.flush();
   
}


B.     MMC
Multimedia Card (MMC) merupakan kartu memori standar, bentuknya lebih besar dari memory stick dan dapat digunakan pada slot SD Card. Sebuah SD Card tidak dapat langsung terhubung dengan arduino dengan menggunakan kaki-kakinya begitu saja. Untuk menghubungkan dengan arduino maka SD Card harus dalam mode SPI (dapat menggunakan adapter). SPI mode yatiu serial pheriperal interface yang nantinya akan dihubungkan sesuai dengan pin arduino.

Skema Rangkaian


Script Program
#include <LiquidCrystal.h>  //pengambilan library
#include <SD.h> //pengambilan library

//pembuatan objek
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);

const int chipSelect = 53;  //pin SS
File dataFile;

int ulangan= 3;   // membuat varibel ulangan yang di set ke-pin 3
int jeda = 1000;  // membuat varibel jeda yang bernilai 1 detik

void setup() {
  Serial.begin(9600);   // digunakan untuk komunikasi Serial dengan komputer
  lcd.begin(20,4);  //ukuran LCD yang digunakan
  lcd.setCursor(3,1); //posisi yang akan ditampilkan pada LCD
  lcd.print("Praktikum MMC");   //menampilkan kata "Praktikum MMC" pada LCD
  lcd.setCursor(4,2); //posisi yang akan ditampilkan pada LCD
  lcd.print("DATA LOGGER"); //menampilkan kata "Praktikum MMC" pada LCD
  delay(3000);  //waktu tunggu 3 detik
  lcd.clear();  //hapus layar LCD

  pinMode(SS, OUTPUT);  //membuat SS sebagai output
  digitalWrite(10, HIGH);
  SD.begin(chipSelect);

  dataFile = SD.open("datalog.txt", FILE_WRITE);
  if (dataFile) {
  //----------------------------------Program membuka dan menulis nama file di MMC
  dataFile.print("PRAKTIKUM MMC");
  dataFile.print("\t");
  dataFile.println();
  //--------------------------------
  }
}

void loop() {
  for (int t=0; t<ulangan; t++){

    lcd.setCursor(3,3); //posisi yang akan ditampilkan pada LCD
    lcd.print ("data Disimpan");
    delay(jeda);  //waktu tunggu
    lcd.setCursor(3,3); //posisi yang akan ditampilkan pada LCD
    lcd.print("Sukses MMC");
    delay(jeda);    //waktu tunggu
    lcd.clear();    //hapus layar LCD
     }

    dataFile.print("Praktikum MMC berhasil Disimpan");
    dataFile.print("\t"); //Untuk membuat spasi
    dataFile.print(jeda);
    dataFile.println();
    dataFile.flush();
}

C.    Analisis Greenhouse

Tanggal
Waktu
sensor 1
sensor 2
sensor 3
Rerata
Nilai setting point atas
1/13/2017
19:57:17
25
26
26
25.7
36
1/13/2017
20:07:39
26
26
26
26.0
36
1/13/2017
20:18:01
25
26
26
25.7
36
1/13/2017
20:28:24
25
26
25
25.3
36
1/13/2017
20:38:47
25
25
25
25.0
36
1/13/2017
20:49:09
25
26
26
25.7
36
1/13/2017
20:59:32
25
25
25
25.0
36
1/13/2017
21:09:54
25
25
25
25.0
36
1/13/2017
21:20:17
25
25
25
25.0
36
1/13/2017
21:30:40
25
25
25
25.0
36
1/13/2017
21:41:02
25
25
25
25.0
36
1/13/2017
21:51:25
25
25
25
25.0
36
1/13/2017
22:01:47
24
25
25
24.7
36
1/13/2017
22:12:09
24
25
24
24.3
36
1/13/2017
22:22:32
24
25
24
24.3
36
1/13/2017
22:32:55
24
24
24
24.0
36
1/13/2017
22:43:17
24
24
24
24.0
36
1/13/2017
22:53:40
24
25
25
24.7
36
1/13/2017
23:04:02
24
25
25
24.7
36
1/13/2017
23:14:24
24
25
25
24.7
36
1/13/2017
23:24:47
24
25
25
24.7
36
1/13/2017
23:35:09
24
25
25
24.7
36
1/13/2017
23:45:32
25
25
25
25.0
36
1/13/2017
23:55:55
25
25
25
25.0
36
1/14/2017
0:06:17
25
25
25
25.0
36
1/14/2017
0:16:39
25
25
25
25.0
36
1/14/2017
0:27:02
25
25
25
25.0
36
1/14/2017
0:37:24
25
25
25
25.0
36
1/14/2017
0:47:46
25
25
25
25.0
36
1/14/2017
0:58:09
25
25
25
25.0
36
1/14/2017
1:08:31
25
25
25
25.0
36
1/14/2017
1:18:53
25
26
26
25.7
36
1/14/2017
1:29:15
25
26
26
25.7
36
1/14/2017
1:39:38
25
26
26
25.7
36
1/14/2017
1:50:00
25
26
26
25.7
36
1/14/2017
2:00:22
26
26
26
26.0
36
1/14/2017
2:10:44
26
26
26
26.0
36
1/14/2017
2:21:06
26
26
26
26.0
36
1/14/2017
2:31:28
26
26
26
26.0
36
1/14/2017
2:41:50
26
27
27
26.7
36
1/14/2017
2:52:13
27
27
27
27.0
36
1/14/2017
3:02:35
27
27
27
27.0
36
1/14/2017
3:12:57
27
27
27
27.0
36
1/14/2017
3:23:19
27
28
28
27.7
36
1/14/2017
3:33:41
28
28
28
28.0
36
1/14/2017
3:44:03
28
28
28
28.0
36
1/14/2017
3:54:26
29
29
29
29.0
36
1/14/2017
4:04:48
30
29
30
29.7
36
1/14/2017
4:15:10
31
31
31
31.0
36
1/14/2017
4:25:32
32
32
31
31.7
36
1/14/2017
4:35:55
29
29
29
29.0
36
1/14/2017
4:46:17
29
29
29
29.0
36
1/14/2017
4:56:39
29
29
29
29.0
36
1/14/2017
5:08:02
29
29
29
29.0
36
1/14/2017
5:18:24
29
29
29
29.0
36
1/14/2017
5:28:46
29
29
29
29.0
36
1/14/2017
5:38:08
29
29
29
29.0
36
1/14/2017
5:48:48
29
29
29
29.0
36
1/14/2017
5:58:10
28
28
28
28.0
36
1/14/2017
6:08:02
30
30
30
30.0
36
1/14/2017
6:18:24
29
29
29
29.0
36
1/14/2017
6:28:46
29
29
29
29.0
36
1/14/2017
6:38:08
27
27
27
27.0
36
1/14/2017
6:48:48
29
29
29
29.0
36
1/14/2017
6:58:10
29
30
29
29.3
36
1/14/2017
7:08:02
30
30
30
30.0
36
1/14/2017
7:18:24
31
31
31
31.0
36
1/14/2017
7:28:46
32
33
32
32.3
36
1/14/2017
7:38:08
33
33
33
33.0
36
1/14/2017
7:48:48
32
32
32
32.0
36
1/14/2017
7:58:10
33
33
33
33.0
36
1/14/2017
8:08:02
32
32
32
32.0
36
1/14/2017
8:18:24
35
35
35
35.0
36
1/14/2017
8:28:46
37
37
37
37.0
36
1/14/2017
8:38:08
38
38
39
38.3
36
1/14/2017
8:48:48
37
37
37
37.0
36
1/14/2017
8:58:10
36
36
36
36.0
36
1/14/2017
9:08:02
35
35
35
35.0
36
1/14/2017
9:18:24
36
37
36
36.3
36
1/14/2017
9:28:46
35
35
35
35.0
36
1/14/2017
9:38:08
36
37
36
36.3
36
1/14/2017
9:48:48
38
38
38
38.0
36
1/14/2017
9:58:10
37
37
37
37.0
36
1/14/2017
10:08:02
37
37
37
37.0
36
1/14/2017
10:18:24
35
35
35
35.0
36
1/14/2017
10:28:46
35
35
35
35.0
36
1/14/2017
10:38:08
35
36
35
35.3
36
1/14/2017
10:48:48
36
36
36
36.0
36
1/14/2017
10:58:10
37
37
37
37.0
36


Nilai regresinya adalah 0,816
utuk mengkailbrasinya dapat menggunakan pendekatan rumus y = 0.149x + 22.08
Dari grafik diatas dapat diketahui bahwa alat mulai stabil pada jam 8:18:24


Terima kasih.

Komentar

Postingan populer dari blog ini

Pemanfaatan Lahan Marginal, Naungan dan Pasang Surut

Rotasi dan Penyusunan Pola Tanam

POLA TANAM (monokultur dan tumpang sari)