iklan header

Projek jemuran arduino

Sensor cahaya adalah sebuah komponen yang nilai resistansinya sesuai dengan intensitas cahaya. Jika sensor terkena cahaya maka semakin besar nilai resistansinya dan begitu pula sebaliknya. Sensor hujan (rain sensor) adalah sensor yang memiliki nilai sesuai dengan adanya air yang terkena permukaan sensor tersebut.

Sensor cahaya dan sensor hujan lebih dominan sensor hujan misalnya jika terjadi hujan panas maka yang akan dominan adalah sensor hujan dan sensor cahaya akan kalah. Program akan memilih menjalankan sensor hujan.

Sensor cahaya dan sensor hujan jika kita gabungkan akan menjadi sebuah projek yang sangat bermanfaat bagi orang banyak misalnya saja penjemuran secara otomatis. Projek ini merupakan gabungan dari beberapa tutorial sebelumnya yaitu menggunakan sensor cahaya (ldr), menggunakan sensor hujan (rain sensor) , menggabungkan sensor ldr dan hujan , control motor dc dengan IC L298N , dan statemen if bersarang. Jika kalian ingin memahami lebih detail tentang projek ini maka kalian terlebih dahulu harus membaca tutorial yang sudah admin bagikan sebelumnya.

Baca Juga
Penggunaan kedua komponen ini sangat diperlukan dalam projek ini apalagi di negara yang memiliki musim hujan dan kemarau. Penjemuran yang dimaksud dalam hal ini misalnya penjemuran hasil pertanian atau penjemuran baju. Dengan adanya alat ini kita tidak usah susah-susah lagi atau bingung.

Misalnya ketika kita lagi enak-enak nyantai dan menjemur hasil pertanian atau baju tiba-tiba terjadi hujan. Hal ini membuat kita terburu-buru untuk melindungi hasil pertanian atau baju agar tidak kehujanan. Maka solusi yang tepat menggunakan alat ini. Dengan alat ini jika terjadi hujan panas maka penjemuran akan menutup sendiri melindungi hasil pertanian/baju dari hujan.

Projek kali ini lumayan sulit karena gabungan dari beberapa tutorial. Menurut beberapa mahasiswa projek ini setara dengan tugas akhirnya. Jadi jika kalian sudah memahami dan bisa membuat projek ini mungkin kalian setara dengan mahasiswa tersebut.

Fungsi statemen if bersarang pada projek ini
Penggunaan operator logika if bersarang sangat diperlukan dalam projek ini agar motor dc bisa berjalan satu kali saja. Jika tidak menggunakan if bersarang maka motor akan berputar berkali-kali sehingga output yang dihasilkan tidak sesuai dengan keinginan kita sendiri dan alat akan error atau rusak. Mari kita lihat gambar berikut ini
Projek jemuran arduino
Gambar 1
Lihatlah gambar satu, pada gambar itu terdapat baju yang bergambar segitiga dan baju itu menggantung pada tali yang diatas. Motor Dc digunakan untuk menggerakan tali supaya baju bisa bergerak keluar dan bisa bergerak masuk.

Penggunaan if bersarang pada projek kali ini untuk mencegah baju tersebut berputar-putar dan akibatnya alat akan rusak/error. Dengan adanya if bersarang baju akan tetap pada tali atas dan pergerakan motor hanya sekali gerak atau sekali eksekusi program.

Pada kali projek ini kalian juga harus menentukan berapa lama motor bergerak kedalam dan keluar dengan menggunakan kode program delay() dibawah kode program menggerakan motor. Jika tidak ada if bersarang maka motor akan terus menerus menggerakan tali sehingga baju akan berputar-putar di tali atas dan tali bawah dan kemungkinan baju akan tersangkut pada motor atau gear bebas seperti gambar dibawah ini
Membuat jemuran arduino

flowchart
Sebelum memulai membuat kode program sebaiknya kalian membuat flowchart terlebih dahulu agar mempermudah dalam mengatur alur kerja alat ini dan mempermudah dalam hal penganalisa jika terjadi sebuah problem atau error.
Flowchart jemuran arduino

Cara keja alat ini
Kali ini admin mengibaratkan projek ini untuk jemuran baju. Dan juga admin menggunakan sensor cahaya dan sensor hujan sebagai input. Dua motor DC sebagai output dengan module L298N sebagai driver motor DC.

Cara kerjanya yaitu jika terjadi gelap atau hujan maka jemuran akan bergerak ke tempat yang teduh dengan otomatis. Begitu pula sebaliknya, jika terjadi cerah dan tidak hujan maka jemuran akan menjemur baju atau bergerak ke luar ruangan dengan otomatis.

Bagaimana dengan hujan panas? Pada awal artikel tadi bahwa sensor hujan dan sensor cahaya akan lebih dominan sensor hujan maka jika terjadi hujan panas sama saja seperti terjadi gelap atau hujan yaitu jemuran akan bergerak ke tempat yang teduh secara otomatis.

Projek jemuran arduino menggunakan pin analog
  • Rangkailah seperti gambar dibawah ini.
Rangkaian projek jemuran arduino
  • Pastikan rangkaiannya sudah benar.
  • Sebelum kalian memprogram, kalian harus tahu nilai sensor cahaya dan sensor hujan atau kalian bisa melihat tutorial yang sudah admin rekomendasikan buat kalian.
  • Tulis kode program tersebut ke software IDE Arduino.
  • 
    
    //toleinnovator.blogspot.com
    //ig = @toleinnovator
    //penulis = @salman_azzuri
    
    int ldr = A0;    //inisial pin sensor ldr
    int rain = A1;   //inisial pin sensor hujan
    int en = 6;      //inisial enable motor DC
    int in1 = 13;    //inisial pin motor dc
    int in2=12;     //inisial pin motor dc
    int flag=0;       //menginisialkan bahwa nilai flag adalah 0
    
    void setup() {
      // put your setup code here, to run once:
      pinMode(ldr,INPUT);  //inisial pin sensor ldr sebagai input
      pinMode(rain,INPUT);   //inisial pin sensor hujan sebagai input
      pinMode(en, OUTPUT);    //inisial pin enable sebagai output
      pinMode(in1, OUTPUT);   //inisial pin motor sebagai output
      pinMode(in2, OUTPUT);   //inisial pin motor sebagai output
      flag=0;               //mengatur nilai pertama untuk flag
      Serial.begin(9600);
    }
    
    void loop() {
      // put your main code here, to run repeatedly:
      int cahaya = analogRead(ldr);
      Serial.println("nilai sensor ldr = "+ cahaya);
      int hujan = analogRead(rain);
      Serial.println("nilai sensor hujan = "+ hujan);
    
      if (cahaya > 700 || hujan < 800){     //jika hujan/malam/gelap/hujan panas
        if (flag == 0){
          analogWrite(en, 255);
          digitalWrite(in1,HIGH);
          digitalWrite(in2,LOW);
          delay(5000);
          flag = 1;
        }
        else{
          delay(100);
        }
      }
      else{             //jika tidak hujan/siang/cerah
        if (flag == 1){
          analogWrite(en, 255);
          digitalWrite(in1,LOW);
          digitalWrite(in2,HIGH);
          delay(5000);
          flag = 0;
        }
        else{
          delay(100);
        }
      }
    }
    
    
  • Upload kode program ke board arduino
  • Amati output yang dihasilkan
Projek jemuran arduino menggunakan pin digital
  • Rangkailah seperti gambar dibawah ini.
Rangkaian projek jemuran dengan pin digital arduino
  • Pastikan rangkaiannya sudah benar.
  • Sebelum kalian memprogram, kalian harus tahu nilai sensor cahaya dan sensor hujan atau kalian bisa melihat tutorial yang sudah admin rekomendasikan buat kalian.
  • Tulis kode program tersebut ke software IDE Arduino.
  • 
    
    //toleinnovator.blogspot.com
    //ig = @toleinnovator
    //penulis = @salman_azzuri
    
    int ldr = 5;    //inisial pin sensor ldr
    int rain = 3;   //inisial pin sensor hujan
    int en = 6;      //inisial enable motor DC
    int in1 = 13;    //inisial pin motor dc
    int in2=12;     //inisial pin motor dc
    int flag=0;       //menginisialkan bahwa nilai flag adalah 0
    
    void setup() {
      // put your setup code here, to run once:
      pinMode(ldr,INPUT);  //inisial pin sensor ldr sebagai input
      pinMode(rain,INPUT);   //inisial pin sensor hujan sebagai input
      pinMode(en, OUTPUT);    //inisial pin enable sebagai output
      pinMode(in1, OUTPUT);   //inisial pin motor sebagai output
      pinMode(in2, OUTPUT);   //inisial pin motor sebagai output
      flag=0;               //mengatur nilai pertama untuk flag
      Serial.begin(9600);
    }
    
    void loop() {
      // put your main code here, to run repeatedly:
      int cahaya = digitalRead(ldr);
      Serial.println("nilai sensor ldr = "+ cahaya);
      int hujan = digitalRead(rain);
      Serial.println("nilai sensor hujan = "+ hujan);
    
      if (cahaya ==1 || hujan == 0){  //jika kondisi hujan atau gelap/hujan panas
        if (flag == 0){
          analogWrite(en, 255);
          digitalWrite(in1,HIGH);
          digitalWrite(in2,LOW);
          delay(5000);
          flag = 1;
        }
        else{
          delay(100);
        }
      }
      else{           //jika tidak hujan atau siang/cerah
        if (flag == 1){
          analogWrite(en, 255);
          digitalWrite(in1,LOW);
          digitalWrite(in2,HIGH);
          delay(5000);
          flag = 0;
        }
        else{
          delay(100);
        }
      }
    }
    
    
  • Upload kode program ke board arduino
  • Amati output yang dihasilkan

BEDAH CODE

  • Pada bagian ini kita mendeklarasikan atau menginisial komponen yang kita pakai agar dikenali oleh system. Pada projek yang menggunakan pin analog dan pin digital sebenarnya sama saja yang membedakan hanyalah pin inputan yang menancap di arduino.


int ldr = A0;    //inisial pin sensor ldr
int rain = A1;   //inisial pin sensor hujan
int en = 6;      //inisial enable motor DC
int in1 = 13;    //inisial pin motor dc
int in2=12;     //inisial pin motor dc
int flag=0;       //menginisialkan bahwa nilai flag adalah 0
  • Pada bagian ini atau bagian kode program di dalam void setup digunakan untuk mendeklarasikan atau menginisial cara kerja komponen yang kita gunakan. Apakah komponen kita sebagai input atau sebagai output. Dan pada bagian ini biasnya digunakan untuk settingan default komponen misalnya flag = 0. Hal ini memberikan nilai pada flag yaitu nilai 0.


  pinMode(ldr,INPUT);  //inisial pin sensor ldr sebagai input
  pinMode(rain,INPUT);   //inisial pin sensor hujan sebagai input
  pinMode(en, OUTPUT);    //inisial pin enable sebagai output
  pinMode(in1, OUTPUT);   //inisial pin motor sebagai output
  pinMode(in2, OUTPUT);   //inisial pin motor sebagai output
  flag=0;               //mengatur nilai pertama untuk flag
  Serial.begin(9600);
  • Pada bagian ini sebenarnya menginisial cahaya dan hujan sama dengan membaca pin sensor. Kode program analogRead dan digitalRead digunakan untuk membaca pin sensor sehingga system akan mendapatkan nilai sesuai dengan pin sensor yang menancap pada board arduino. Ingaat!! bahwa nilai pin analog dan digital memiliki perbedaan. Sedangkan Serial.println() digunakan untuk menampilkan nilai ke serial monitor sehingga kita dapat mengetahui nilai sensor.


  int cahaya = digitalRead(ldr);
  Serial.println("nilai sensor ldr = "+ cahaya);
  int hujan = digitalRead(rain);
  Serial.println("nilai sensor hujan = "+ hujan);
  • Kode program if else pada bagian ini merupakan if else yang utama. Jadi eksekusi program if bersarang sesuai dengan pengkondisian if ini. Kode program ini berfungsi untuk menentukan atau sebagai pengkondisian kode mana yang akan dieksekusi. Dengan adanya pengkondisian ini maka kode program yang dijalankan akan sesuai dengan kondisi sensor saat ini.


  if (cahaya ==1 || hujan == 0){  //jika kondisi hujan atau gelap/hujan panas
    //jalankan kode
  }
  else{           //jika tidak hujan atau siang/cerah
    //jalankan kode
  }

  • Pada bagian ini, analogWrite(en, 255); digunakan untuk mengatur kecepatan motor dc. Karena nilai kecepatan motor pada modul yaitu 0-255. digitalWrite(in1,HIGH); dan digitalWrite(in2,LOW); Kenapa yang satu HIGH dan yang satu LOW? karena kode ini untuk menentukan arah putar motor dc dan jika HIGH dan LOW kita ganti maka putaranya akan berbanding terbalik dengan putar yang awal. delay(5000); digunakan untuk berapa lama motor akan berputar.


  analogWrite(en, 255);
  digitalWrite(in1,HIGH);
  digitalWrite(in2,LOW);
  delay(5000);
  • Kode program ini merupakan kode if bersarang. Pada bagian awal tadi admin sudah mendeklarasikan nilai flag = 0 hal ini untuk kondisi utama benar maka nilai 0 ini akan dibawa oleh program sehingga akan bertemu dengan pengkondisian lainya yaitu if bersarang. Nilai 0 tersebut adalah nilai flag dan disamakan dengan pengkondisian if bersarang. Setelah benar maka akan mengeksekusi program secara satu kali saja. flag = 1;  itu akan dibawa program setelah mengeksekusi kode pertama. Dan seakrang nilai flag nya satu dan program akan berulang-ulang atau mekeksekusi kode pada else bersarang  secara terus menerus sampai kondisi awal berubah misalnya dari cerah menjadi hujan. Nah pada kondisi ini maka program akan mengeksekusi program kedua dan program membawa nilai flag yaitu satu. Setelah lolos pengondisian pertama maka nilai flag akan dicocokan ,jika sama maka akan mengeksekusi kode selanjutnya. Dan terakhir ada nilai flag = 0; hal ini untuk merubah nilai flag menjadi semula. Pada awal artikel saya sudah menjelaskan fungsi statemen if bersarang, jika belum paham silahkan baca lagi.


 if (cahaya ==1 || hujan == 0){  //jika kondisi hujan atau gelap/hujan panas
    if (flag == 0){
      analogWrite(en, 255);
      digitalWrite(in1,HIGH);
      digitalWrite(in2,LOW);
      delay(5000);
      flag = 1;
    }
    else{
      delay(100);
    }
  }
  else{           //jika tidak hujan atau siang/cerah
    if (flag == 1){
      analogWrite(en, 255);
      digitalWrite(in1,LOW);
      digitalWrite(in2,HIGH);
      delay(5000);
      flag = 0;
    }
    else{
      delay(100);
    }
  }

Semoga artikel ini bisa bermanfaat kalian dan jangan lupa share agar bisa membantu orang banyak. Jika kalian ada masalah dalam materi ini atau masih bingung silahkan comment dibawah.

3 Responses to "Projek jemuran arduino"

  1. Bang kok motor dcnya gak berenti yak bolak balik terus ada yg salah diapanya ya kira2

    ReplyDelete
  2. harusnya gimana kode flagnya bang

    ReplyDelete

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel