Data Logger Suhu Kelembaban dengan Arduino UNO

Pada postingan sebelumya “Menulis dan membaca microSD Card dg Arduino” kita telah membuat proyek Arduino untuk akses memori microSD Card. Proses penyimpanan (tulis) data maupun pembacaan data sudah berhasil dibuat, walaupun data berupa simulasi saja. Sebagai media penyimpan data dipakai microSD Card karena memori EEPROM Arduino yang terbatas. Kali ini kita lanjutkan dengan menambahkan sebuah sensor suhu kelembaban yaitu DHT22 (saudara kandung DHT11) menjadi aplikasi “Data logger suhu kelembaban Arduino”.

Data logger biasanya orang menyebutnya. Data logger sendiri diartikan sebagai sebuah alat elektronik yang dipakai untuk mencatat data dari waktu ke waktu yang terintegrasi dengan sensor serta instrumen lain. Sebagai inputnya adalah sensor suhu kelembaban DHT22 dan sebagai media penyimpan data dipakai microSD Card dengan modul interface-nya.

Baik kita langsung membuat data logger suhu kelembaban dengan Arduino UNO. Siapkan komponennya :

  • Arduino UNO
  • MicroSD Card
  • Modul MicroSD Card
  • Push button
  • Sensor suhu kelembaban DHT22
  • Breadboard
  • Kabel konektor

Masukkan SD Card (micro SD) ke slot micro SD di modul.

Setelah semua hardware siap, selanjutnya buat rangkaian untuk menulis dan membaca data micro SD dengan Arduino UNO seperti berikut ini :

Koneksi modul micro SD dengan Arduino :

Koneksi sensor DH22 dengan Arduino :

Push button dihubungkan dengan pin 6 Arduino dan ground, fungsinya untuk tombol perintah ‘baca’ data di microSD. Selanjutnya kita buat program untuk menulis dan membaca SD Card dengan Arduino UNO. Buka program Arduino IDE kemudian tulis code berikut :

/*************************************
 * Data Logger Suhu Kelembaban dg Arduino
 * Input : Sensor DHT22
 * Memori : microSD
 * www.ardutech.com
 * ***********************************/
#include <SPI.h>
#include <SD.h>
#include <DHT.h> //library DHT
#define DHTPIN 7 //pin DATA konek ke pin 7 Arduino
#define DHTTYPE DHT22 //tipe sensor DHT11
DHT dht(DHTPIN, DHTTYPE); //set sensor + koneksi pin
float humi, temp;
File myFile;
int i,j,k;
void setup() { 
  Serial.begin(9600);
  pinMode(10, OUTPUT);
  pinMode(6,INPUT_PULLUP);   
  delay(1000);
  
  if (!SD.begin(10)) {
    
    Serial.println(" SD card Gagal!  ");
    delay(2000);
    while(1);
  }
  Serial.println("SD card Berhasil ");
  delay(2000); 
}
//====================================
void loop() {
  i++;
  if(i>10){
    humi = dht.readHumidity();//baca kelembaban
    temp = dht.readTemperature();//baca suhu
    if (isnan(humi) || isnan(temp)) { //jika tidak ada hasil
        Serial.println("DHT11 tidak terbaca... !");
        return;
    }
    else{//jika ada hasilnya 
      Serial.print("Suhu=");  //kirim serial "Suhu"
      Serial.print(temp);     //kirim serial nilai suhu
      Serial.println("C");    //kirim serial "C" Celcius 
      Serial.print("Humi=");  //kirim serial "Humi"
      Serial.print(humi);     //kirim serial nilai kelembaban
      Serial.println("%RH");  //kirim serial "%RH"
      k++;
      writeSD(); 
    } 
    i=0;
  }
  //------------------------------
  for(j=0;j<10;j++){  
    if(digitalRead(6)==LOW){
      readSD(); 
      while(1); 
    }
  delay(100);
  }
}
//============================
void writeSD(){
  //===================Simpan data ke sd Card
      myFile = SD.open("data1.txt", FILE_WRITE);
      if (myFile) {
          Serial.print("Simpan data ke :");
          Serial.println(k);
          myFile.print("Data ke-");   
          myFile.println(k);
          myFile.print("H=");
          myFile.print(humi);
          myFile.print(", T=");
          myFile.println(temp);
          myFile.close();
          delay(2000);
          Serial.println("  Berhasil...  ");
      } 
      else {
          Serial.println("error buka file");
          Serial.println("   data1.txt");
      }
      delay(1000);
}

void readSD(){
  //====================baca isi file data1.txt  
  myFile = SD.open("data1.txt");
  if (myFile){
    Serial.println("Data Logger Suhu Kelembaban :");
    while (myFile.available()) {
      Serial.write(myFile.read());
    }
    myFile.close();
  }  
  else{
    Serial.println("buka file data1.txt Error!!");
  }  
}

Library akses microSD (SD) silakan download disini. Jika yang dipakai sensor DHT11 juga bisa, hanya perlu mengganti programnya :

#define DHTTYPE DHT22

Diganti menjadi :

#define DHTTYPE DHT11

Simpan kemudian Upload. Untuk melihat hasilnya kita perlu Serial Monitornya Arduino IDE. Dari menu Tools – Serial Monitor kemudian seting baudrate pada 9600. Jika sukses maka akan tampil :

Selanjutnya setiap sekitar 14 detik, akan dilakukan penyimpanan data suhu kelembaban ke microSD. Pada Serial Monitor akan tampial :

Delay penyimpanan dapat anda atur sendiri atau jika ingin lebih sempurna, dapat anda tambahkan RTC (Real Time Clock).  Tekan tombol untuk perintah membaca SD Card dan menampilkan hasilnya di Serial Monitor :

Tampilan masih berupa data ‘mentah’, jika ingin lebih menarik dapat dibuat grafik. Alhamdulillah akhirnya selesai juga proyek membuat data logger suhu kelembaban dengan Arduino UNO dan sensor DHT22.

Ok, semoga bermanfaat.

Ardutech – “Sahabat Inovasi Anda”

Leave a Reply

Your email address will not be published.