Sedikit Pengenalan
Dengan perkembangan teknologi yang semakin maju, diharapkan dapat membantu kehidupan manusia. Khususnya dalam kegiatan rumah tangga. Salah satunya dalam sistem otomatisasi. Dengan segala hal yang bersifat otomatis, tentunya dapat membantu memudahkan kerja kita untuk melakukan suatu pekerjaan. Kedepanya diharapkan banyak bermunculan produk-produk atau project Arduino mampu memenuhi hal tersebut.
Pada artikel ini, saya akan membagikan satu project Arduino. Berikut ini adalah Project Arduino Sistem Jemuran Otomatis dengan Sensor Hujan dan Cahaya. Dengan memanfaatkan inputan dari sensor Air Hujan dan sensor Cahaya (LDR), untuk membaca beberapa kondisi alam, seperti siang, malam, mendung, dan hujan. Kemudian memudian digunakan untuk memberikan tugas pada sebuah Aktuator, untuk menggerakan pintu (pintu jemuran), menjadi posisi terbuka atau tertutup (sesuai dengan kondisi sensor).
Berikut kita bahas referensi pembuatanya. Sebagai catatan disini saya tidak membahas sampai detail demo alatnya, karena tidak sempat membuat videonya, alatnya keburu dikirim (orderan orang) :D. Ok langsung saja kepembahasan.
DIAGRAM BLOK
Dari diagram blok diatas, saya menggunakan Arduino Nano sebagai mirkokontrollernya. Kemudian terdapat 3 buah inputan, tombol, sensor cahaya (LDR), dan sensor hujan (sensor air). 2 buah output berupa driver motor dengan menggunakan Relay DPDT, untuk mengatur putaran motor dua arah dan penambahan Mosfet IRF540 (Type-N), untuk mengatur kecepatan motor.
SKEMATIK & PCB LAYOUT
Semua komponen yang digunakan dapat dilihat dari desain diatas, untuk melihat lebih jelasnya dapat download file desainya di tag Download dibawah.
ILUSTRASI ALAT
Dari ilustrasi alat diatas, sensor cahaya & hujan ditempakan pada luar ruangan jemuran untuk membaca data kondisi cuaca. Pada rangkaian skema diatas saya sengaja memberikan dua buah motor, jikalau menggunakan lebih dari satu pintu jemuran.
PEMROGRAMAN ARDUINO
//================================================== #include <EEPROM.h> // Library EEPROM // Definisikan PIN, agar lebih mudah #define WATER A5 #define LDR A4 #define BUP A0 #define BDN A1 #define RLY1 4 #define RLY2 12 #define PWM1 3 #define PWM2 11 #define delayMotor 1000 // Delay 1000 ms untuk nyala motor #define batasCahaya 30 // Batas persentase Data Cahaya < 30 = Mendung #define batasHujan 30 // Batas persentase Data Cahaya > 30 = Hujan #define TUTUP 0 #define BUKA 1 // Deklarasi Variable int hujan, cahaya, spd, jemuran; int toleransi = 2; // Toleransi untuk jaga-jaga naik turunya data terlalu cepat. byte speedMotor = 100; // kecepatan awal motor, jika tidak disimpan di EEPROM String stats; // Status Serial Debug //================================================== void setup() { Serial.begin(9600); // Aktifkan Serial Monitoring // Ubah mode PIN pinMode(BUP, INPUT_PULLUP); pinMode(BDN, INPUT_PULLUP); pinMode(RLY1, OUTPUT); pinMode(RLY2, OUTPUT); pinMode(PWM1, OUTPUT); pinMode(PWM2, OUTPUT); } //================================================== void loop() { speedMotor = EEPROM.read(0); cahaya = 100 - map(analogRead(LDR), 0, 1023, 0, 100); // mapping data, untuk diubah hujan = 100 - map(analogRead(WATER), 0, 1023, 0, 100); // contoh 0 s/d 1023, menjadi spd = map(speedMotor, 0, 255, 0, 100); // 0 s/d 100 persen DEBUG(); if (digitalRead(BUP) == LOW) speedMotor++; // Tombol + Kecepatan Motor if (digitalRead(BDN) == LOW) speedMotor--; // Tombol - Kecepatan Motor EEPROM.write(0, speedMotor); // Kondisi CAHAYA = Mendung / Malam dan HUJAN = BASAH if (cahaya < (batasCahaya - toleransi) and hujan > (batasHujan + toleransi) and jemuran == BUKA) { motorTutup(); stats = "TUTUP, MENDUNG, BASAH"; } // Kondisi CAHAYA = Siang dan HUJAN = BASAH else if (cahaya > (batasCahaya + toleransi) and hujan > (batasHujan + toleransi) and jemuran == BUKA) { motorTutup(); stats = "TUTUP, SIANG, BASAH"; } // Kondisi CAHAYA = Mendung dan HUJAN = KERING else if (cahaya < (batasCahaya - toleransi) and hujan < (batasHujan - toleransi) and jemuran == BUKA) { motorTutup(); stats = "TUTUP, MENDUNG, KERING"; } // Kondisi CAHAYA = Siang dan HUJAN = KERING else if (cahaya > (batasCahaya + toleransi) and hujan < (batasHujan - toleransi) and jemuran == TUTUP) { motorBuka(); stats = "BUKA, SIANG, KERING"; } delay(100); } //================================================== void DEBUG() { Serial.print("CAHAYA : "); Serial.print(cahaya); Serial.print(" % , "); Serial.print("HUJAN : "); Serial.print(hujan); Serial.print(" % , "); Serial.print("SPEED : "); Serial.print(spd); Serial.print(" % , "); Serial.print("STATUS : "); Serial.println(stats); } //================================================== void motorBuka() { digitalWrite(RLY1, BUKA); // Relay Aktif = Arah motor Buka digitalWrite(RLY2, BUKA); analogWrite(PWM1, speedMotor); // Sinyal PWM untuk kecepatan motor analogWrite(PWM2, speedMotor); delay(delayMotor); // Jeda motor untuk menyala sampai jemuran terbuka digitalWrite(RLY1, LOW); // Matikan Relay digitalWrite(RLY2, LOW); analogWrite(PWM1, 0); // Matikan Sinyal PWM = Motor Berhenti analogWrite(PWM2, 0); jemuran = BUKA; } //================================================== void motorTutup() { digitalWrite(RLY1, TUTUP); // Relay Mati = Arah motor TUTUP digitalWrite(RLY2, TUTUP); analogWrite(PWM1, speedMotor); // Sinyal PWM untuk kecepatan motor analogWrite(PWM2, speedMotor); delay(delayMotor); // Jeda motor untuk menyala sampai jemuran terbuka digitalWrite(RLY1, LOW); // Matikan Relay digitalWrite(RLY2, LOW); analogWrite(PWM1, 0); // Matikan Sinyal PWM = Motor Berhenti analogWrite(PWM2, 0); jemuran = TUTUP; }
PEMBAHASAN PROGRAM
Saya tidak akan membahas detailnya, cuma sekilas saja. Karena sudah saya jelaskan pada komentar setiap baris kotak. Dari program diatas didapatkan data berikut melalui Serial Monitoring:
Dari data diatas dapat kita buat keputusan dengan menggunakan perintah (if..then), untuk digunakan sebagai pengendali kondisi pintu (arah putar motor). Saya sengaja membuat 2 driver motor pada rangkaian atau desain PCB diatas, karena kebutuhan project saya menggunakan 2 buah pintu.
Ok sekian dulu project ini, jika kurang lengkap saya sudah membuka diskusi pada forum grub diskusi Facebook, silahkan join pada menu forum diskusi diatas. Semoga bermanfaat.
boleh lihat video pembuatannya dan perancangannya bang ?
Maaf mas, ini project orang lain, jadi gak sempet buat video sudah keburu dikirim.. disini saya share agar bisa dicontoh pembaca..