JEMURAN OTOMATIS
Perinsip Kerja Jemuran Otomatis
Jemuran Otomatis berbasis Arduino, Sebuah tema bukan tema baru sebenar nya. Karena begitu saya coba search di google, ada banyak artikel tentang ini. Nah kebetulan ada tuh orang yang mau belajar bagaimana sih cara menbuat jemuran otomatis berbasis Arduino? Karena prinsip kerja nya masih masuk akal, akhir nya kita siap untuk membuat dan memberikan cara-cara bagaimana membuat jemuran ini? pas pula musim Hujan, jadi pembuatan ini jadi semakin mengena.
Jemuran Otomatis ini memiliki cara kerja yang sederhana. Ada dua sensor saja di sana sebagai pengendali, apakah jemuran akan di jemur atau apakah jemuran di kembalikan ke tempat teduh. Sensor nya adalah sensor Hujan dan Sensor LDR.
Sensor LDR ini ini berfungsi untuk deteksi apakah cahaya redup? apakah malam apakah Siang terik? Sementara Sensor hujan mendeteksi apakah ada hujan gerimis? hehe jangan bilang kalo nanti sensor ini di siram sama tetangga, karena walau siraman, Arduino akan menganggap ini ada Hujan. Mungkin butuh beberapa sensor untuk penyempurnaan nya.
Ops, hampir lupa ini, cara kerja nya? Bagaimana kah cara kerja nya? Cara kerja nya yaitu, Jemuran hanya akan di jemur jika Tidak ada Hujan dan Terik. Disini saya mengguanakan kata-kata dan? artinya jika kedua nya terpenuhi yaitu panas terik dan Tidak Hujan maka jemuran akan di jemur. Bagaimana jika kondisi terik tapi Hujan? Jemuran akan di tarik dan Bagaimana jika Tidak hujan tapi Gelap? Jemuran juga akan di tarik.
Motor DC sebagai Penarik Jemuran
Alat untuk menarik dan Menjemur nanti nya adalah sebuah Motor DC. Dimana waktu atau lama penarikan Jemuran akan di tentukan dari program. Sebenar nya ini harus diperbaiki dengan sensor limit. Maksud nya jika sensor limit sudah sampai batas maka motor berhenti. Tapi karena buru-buru kita gunakan waktu lama nya looping motor berputar.
Untuk mengendalikan Motor, kita menggunakan LM298. Untuk Motor DC 1 A torsi 19Kg, saya rasa sudah cukup lah. Tapi kalo teman-teman ingin desain dengan motor lebih besar untuk torsi yang lebih besar maka membutuhkan rangkaian yang berbeda dan program yang berbeda. Untuk mengendalikan motor kita tidak bisa menggunakan LM298 tapi menggunakan H-brigde Mosfet. Mungkin lain kali kita bahas tentang rangkaian H-Bridge mosfet ini.
Motor DC yang di gunakan menggunakan power supply 12v, jadi teman-teman harus siapkan power supply 12volt, yang akan kita input ke Arduino, kemudian di PIN Vin arduino kita ambil power supply untuk Motor nya. Ingat, karena motor menggunakan 12v/1A, maka setidak nya kita harus menggunakan power supply 12v/2A, Agar power supply tidak drop karena kekurangan Daya, Ingat itu, next adalah Wiring nya?
Konfigurasi Wiring Untuk Jemuran Otomatis
Konfigurasi wiring nya bisa teman-teman lihat pada tabel di bawah ini. Agar program yang akan kita upload kan ke Arduino akan berjalan dengan Sempurna. Jadi gak ada tuh cerita coding nya fail. Mohon di baca pelan-pelan yah, atau bisa chat kita untuk lebih jelas nya di tombol chat whatsapp sebelah kanan bawah. Berikut wiring nya.
Sensor LDR | Sensor Hujan | Arduino |
Dout | A0 | |
Aout | A1 | |
Vcc | Vcc | +5v |
Gnd | Gnd | Gnd |
Untuk Gambar-gambar sensor nya bisa teman-teman lihat pada gambar di bawah ini,
Pastikan sensor di atas di pakai, Nah Selanjut nya adalah Wiring dari LM298, Untuk konfigurasi PIN nya bisa teman-teman lihat pada gambar di bawah ini.
Moto DC | LM298 | Arduino | Remark |
+12v | Vin | Bisa vcc lain, 12V | |
Gnd | Gnd | ||
Enable A | D9 | ||
Input 1 | D2 | ||
Input 2 | D3 | ||
Pin + | + Motor A | ||
Pin – | – Motor B |
Untuk Gambar Pin out LM298 bisa teman-teman lihat pada gambar di bawah ini
Setelah semua wiring sudah pas, selanjut nya tinggal coding,. berikut koding untuk jemuran otomatis ini
Sebenar nya saya tidak terlalu suka dengan wiring-wiring atau jumper jumper di Arduino, Lebih suka buat PCB sendiri, agar barang nya kokoh dan kuat
Coding Jemuran Otomatis
Selanjut nya adalah, bagaimana kah cara program nya? hehe sebenar nya coding ini di bayarin, tapi kita kasih free ke teman-teman, sesuai konsep learning and sharing. Berikut Program nya
#include <Wire.h> #include <LiquidCrystal_I2C.h> #define LIMIT_LDR 200 // nilai batas intensitas cahaya pada LDR #define LIMIT_RAIN 1000 // nilai batas air pada sensor #define LIMIT_MOTOR 100 // nilai batas waktu putaran motor #define LIMIT_SPEED 100 // nilai kecepatan motor byte hold1 = 0; // tahan putara motor jemur byte hold2 = 0; // tahan putara motor balik byte Stop = 0; const byte en1 = 2; const byte en2 = 3; const byte speedMotor = 9; // Set the LCD address to 0x27 for a 16 chars and 2 line display LiquidCrystal_I2C lcd(0x3F, 16, 2); void jemur(); void kembali(); void berhenti(); void setup() { pinMode(A0, INPUT_PULLUP); // set sebagai output pinMode(A1, INPUT_PULLUP); // set sebagai output lcd.begin(); lcd.backlight(); lcd.print("Jemuran Otomatis"); delay(2000); lcd.clear(); } void loop() { int s_ldr = analogRead(A0); int s_rain = analogRead(A1); lcd.clear(); /*lcd.setCursor(0,0); lcd.print("L: "); lcd.print(s_ldr); lcd.print(" R: "); lcd.print(s_rain); */ if ( s_ldr < LIMIT_LDR && s_rain > LIMIT_RAIN){ // TERANG ATAU TIDAK HUJAN lcd.setCursor(0,1); lcd.print("Jemur Pakaian"); if ( hold1 == 0){ lcd.setCursor(0,0); lcd.print("Motor Jalan"); jemur(); } if ( Stop == 1){ lcd.setCursor(0,0); lcd.print("Motor Stop"); } } if ( s_ldr > LIMIT_LDR || s_rain < LIMIT_RAIN){ // GELAP ATAU HUJAN lcd.setCursor(0,1); lcd.print("Pakaian Kembali"); if ( hold2 == 0){ lcd.setCursor(0,0); lcd.print("Motor Jalan"); kembali(); } if ( Stop == 1){ lcd.setCursor(0,0); lcd.print("Motor Stop"); } } delay(250); } void jemur(){ Stop = 0; for ( int i = 0; i < LIMIT_MOTOR; i++){ analogWrite(speedMotor, LIMIT_SPEED); digitalWrite(en1, LOW); digitalWrite(en2, HIGH); delay(100); if ( i == LIMIT_MOTOR - 1){ hold1 = 1; hold2 = 0; berhenti(); } } } void kembali(){ Stop = 0; for ( int i = 0; i < LIMIT_MOTOR; i++){ analogWrite(speedMotor, LIMIT_SPEED); digitalWrite(en1, HIGH); digitalWrite(en2, LOW); delay(100); if ( i == LIMIT_MOTOR - 1){ hold1 = 0; hold2 = 1; berhenti(); } } } void berhenti(){ analogWrite(speedMotor, 0); digitalWrite(en1, LOW); digitalWrite(en2, HIGH); Stop = 1; delay(100); }
Nah, karena di atas menggunakan LCD i2C, maka pastikan teman-teman sudah baca artikel kita tentang I2C ini, bisa baca di link berikut https://mikroavr.com/arduino-lcd-i2c/.
Baca Artikel project kami yang lain dihttps://mikroavr.com/project/
Semoga Bermanfaat
Thanks