Modul 4 (Demo Project) : Gorden Otomatis Dilengkapi Kontrol Kipas

MODUL 4 (DEMO PROJECT)

GORDEN OTOMATIS DILENGKAPI KONTROL KIPAS

[KEMBALI KE MENU SEBELUMNYA]

TUJUAN

  • Mempermudah lansia atau orang-orang disabilitas khususnya kesulitan dalam berjalan.
  • Mempermudah pengguna untuk menghidupkan dan mematikan kipas saat suatu kondisi terpenuhi
  • Membuka dan menutup gorden saat suatu kondisi terpenuhi

KOMPONEN

Sensor Cahaya (LDR)



    Sensor Suhu (LM35)




    Arduino Uno




    Motor Driver (L293D)




    LCD (16x2)




    Potensiometer




    Motor (DC)




      Baterai (9V)





      Arduino

          Arduino adalah kit elektronik atau papan rangkaian elektronik open source yang di dalamnya terdapat komponen utama yaitu sebuah chip mikrokontroler dengan jenis AVR dari perusahaan Atmel. Arduino yang kita gunakan pada praktikum ini adalah arduino mega yang menggunakan chip AVR ATmega 2560 yang memiliki fasilitas PWM, komunikasi serial, ADC, timer, interupt, SPI dan I2C. Sehingga Arduino bisa digabungkan bersama modul atau alat lain dengan protocol yang berbeda-beda. Bahasa pemograman yang digunakan adalah bahasa C. Tetapi bahasa ini sudah dipermudah menggunakan fungsi-fungsi yang sederhana sehingga lebih mudah dalam memprogramnya. Dalam memprogram arduino, kita bisa menggunakan serial komunikasi agar arduino dapat berhubungan dengan komputer ataupun aplikasi lain.
          Beberapa fitur dari Arduino Mega 2560 ini adalah :

      Tabel 1. Spesifikasi Arduino
      Microcontroller
      ATmega2560
      Operating Voltage
      5V
      Input Voltage (recommended)
      7-12V
      Input Voltage (limits)
      6-20V
      Digital I/O Pins
      54 (of which 15 provide PWM output)
      Analog Input Pins
      16
      DC Current per I/O Pin
      20 mA
      DC Current for 3.3V Pin
      50 mA
      Flash Memory
      256 KB of which 8 KB used by bootloader
      SRAM
      8 KB
      EEPROM
      4 KB
      Clock Speed
      16 MHz

          Bagian-bagian dari Arduino Mega 2560 :
      • Soket USB (Soket untuk kabel USB yang disambungkan ke komputer atau laptop. Berfungsi untuk mengirimkan program ke Arduino dan juga sebagai port komunikasi serial.)

      • Input / Output Digital (Input/Output Digital atau digital pin adalah pin-pin untuk menghubungkan Arduino dengan komponen atau rangkaian digital. Pada Arduino Mega terdapat 53 I/O Digital dimana 16 diantaranya dapat dijadikan sebagai output PWM.)

      • Input Analog (Pin-pin yang berfungsi untuk menerima sinyal dari komponen atau rangkaian analog. Misalnya dari potensiometer, sensor suhu, sensor cahaya, dsb. Terdapat 16 input analog pada arduino mega 2560.)

      • Pin POWER (Pin yang memberikan tegangan untuk komponen atau rangkaian yang dihubungkan dengan Arduino. Pada bagian catu daya ini terdapat juga pin Vin dan Reset.Vin digunakan untuk memberikan tegangan langsung kepada Arduino tanpa melalui tegangan USB atau adaptor.)

      • Tombol RESET (Pin untuk memberikan sinyal reset melalui tombol atau rangkaian eksternal.)

      • Jack Baterai/Adaptor (Digunakan untuk menyuplai Arduino dengan tegangan dari baterai/adaptor 9V pada saat Arduino sedang tidak disambungkan ke komputer. Kalau Arduino sedang disambungkan ke komputer melalui USB, Arduino mendapatkan suplai tegangan dari USB, jadi tidak perlu memasang baterai/adaptor saat memprogram Arduino.)

      Liquid Crystal Display (LCD)

          Liquid Crystal Display (LCD) adalah sebuah peralatan elektronik yang berfungsi untuk menampilkan output sebuah sistem dengan cara membentuk suatu citra atau gambaran pada sebuah layar. Secara garis besar komponen penyusun LCD terdiri dari kristal cair (liquid crystal) yang diapit oleh 2 buah elektroda transparan dan 2 buah filter polarisasi (polarizing filter).

      Gambar 1. Penampang Komponen Penyusun LCD

          Keterangan :
      1. Film dengan polarizing filter vertical untuk mempolarisasi cahaya yang masuk.
      2. Glass substrate yang berisi kolom-kolom elektroda Indium tin oxide (ITO).
      3. Twisted nematic liquid crystal (kristal cair dengan susunan terpilin).
      4. Glass substrate yang berisi baris-baris elektroda Indium tin oxide (ITO).\
      5. Film dengan polarizing filter horizontal untuk mempolarisasi cahaya yang masuk.
      6. Reflektor cahaya untuk memantulkan cahaya yang masuk LCD kembali ke mata pengamat.
          Sebuah citra dibentuk dengan mengkombinasikan kondisi nyala dan mati dari pixel-pixel yang menyusun layar sebuah LCD. Pada umumnya LCD yang dijual di pasaran sudah memiliki integrated circuit tersendiri sehingga para pemakai dapat mengontrol tampilan LCD dengan mudah dengan menggunakan mikrokontroler untuk mengirimkan data melalui pin-pin input yang sudah tersedia.

      Gambar 2. Rangkaian Modul LCD


      Tabel 2. Kaki-Kaki LCD


      Pulse Width Modulation

          PWM (Pulse Width Modulation) adalah salah satu teknik modulasi dengan mengubah lebar pulsa (duty cylce) dengan nilai amplitudo dan frekuensi yang tetap. Satu siklus pulsa merupakan kondisi high kemudian berada di zona transisi ke kondisi low. Lebar pulsa PWM berbanding lurus dengan amplitudo sinyal asli yang belum termodulasi.
          Pada board Arduino Uno, pin yang bisa dimanfaatkan untuk PWM adalah pin yang diberi tanda tilde (~), yaitu pin 3, 5, 6, 9, 10, dan pin 11. Pin-pin tersebut merupakan pin yang bisa difungsikan untuk input analog atau output analog. Oleh sebab itu, jika akan menggunakan PWM pada pin ini, bisa dilakukan dengan perintah analogWrite();
          PWM pada arduino bekerja pada frekuensi 500Hz, artinya 500 siklus/ketukan dalam satu detik. Untuk setiap siklus, kita bisa memberi nilai dari 0 hingga 255. Ketika kita memberikan angka 0, berarti pada pin tersebut tidak akan pernah bernilai 5 volt (pin selalu bernilai 0 volt). Sedangkan jika kita memberikan nilai 255, maka sepanjang siklus akan bernilai 5 volt (tidak pernah 0 volt). Jika kita memberikan nilai 127 (kita anggap setengah dari 0 hingga 255, atau 50% dari 255), maka setengah siklus akan bernilai 5 volt, dan setengah siklus lagi akan bernilai 0 volt. Sedangkan jika jika memberikan 25% dari 255 (1/4 * 255 atau 64), maka 1/4 siklus akan bernilai 5 volt, dan 3/4 sisanya akan bernilai 0 volt, dan ini akan terjadi 500 kali dalam 1 detik.

      Gambar 3. Siklus Sinyal PWM pada Arduino


      Analog to Digital Converter

          ADC atau Analog to Digital Converter merupakan salah satu perangkat elektronika yang digunakan sebagai penghubung dalam pemrosesan sinyal analog oleh sistem digital. Fungsi utama dari fitur ini adalah mengubah sinyal masukan yang masih dalam bentuk sinyal analog menjadi sinyal digital dengan bentuk kode-kode digital. Ada 2 faktor yang perlu diperhatikan pada proses kerja ADC yaitu kecepatan sampling dan resolusi.
          Kecepatan sampling menyatakan seberapa sering perangkat mampu mengkonversi sinyal analog ke dalam bentuk sinyal digital dalam selang waktu yang tertentu. Biasa dinyatakan dalam sample per second (SPS). Sementara Resolusi menyatakan tingkat ketelitian yang dimilliki. Pada Arduino, resolusi yang dimiliki adalah 10 bit atau rentang nilai digital antara 0 - 1023. Dan pada Arduino tegangan referensi yang digunakan adalah 5 volt, hal ini berarti ADC pada Arduino mampu menangani sinyal analog dengan tegangan 0 - 5 volt.
          Pada Arduino, menggunakan pin analog input yang diawali dengan kode A( A0- A5 pada Arduino Uno). Fungsi untuk mengambil data sinyal input analog menggunakan analogRead(pin);

      Inter Integrated Circuit (I2C)

          Inter Integrated Circuit atau sering disebut I2C adalah standar komunikasi serial dua arah menggunakan dua saluran yang didesain khusus untuk mengirim maupun menerima data. Sistem I2C terdiri dari saluran SCL (Serial Clock) dan SDA (Serial Data) yang membawa informasi data antara I2C dengan pengontrolnya.

      Gambar 4. Cara Kerja Komunikasi I2C

          Pada I2C, data ditransfer dalam bentuk message yang terdiri dari kondisi start, Address Frame, R/W bit, ACK/NACK bit, Data Frame 1, Data Frame 2, dan kondisi Stop. Kondisi start dimana saat pada SDA beralih dari logika high ke low sebelum SCL.  Kondisi stop dimana saat pada SDA beralih dari logika low ke high sebelum SCL. R/W bit berfungsi untuk menentukan apakah master mengirim data ke slave atau meminta data dari slave. (logika 0 = mengirim data ke slave, logika 1 = meminta data dari slave)
          ACK/NACK bit berfungsi sebagai pemberi kabar jika data frame ataupun address frame telah diterima receiver.


      FLOWCHART

      Master



      Slave 1



      Slave 2




      Master

      #include <Wire.h>

      #define lm35 A0
      #define ldr_out A1
      #define ldr_in A2  

      int valueldr_out, valuelm35, valueldr_in;
      boolean x;

      void setup() {
        // put your setup code here, to run once:
        Serial.begin(9600);
        pinMode(lm35, INPUT);
        pinMode(ldr_out, INPUT);
        pinMode(ldr_in, INPUT);
        Wire.begin();
      }

      void slave1(){
        Wire.beginTransmission(1);
        Wire.write(x);
        Wire.endTransmission();
      }

      void slave2(){
        Wire.beginTransmission(2);
        Wire.write(valuelm35);
        Wire.endTransmission();
      }

      void loop() {
        // put your main code here, to run repeatedly:
        valueldr_out = analogRead(ldr_out);
        valueldr_in = analogRead(ldr_in);
        valuelm35 = analogRead(lm35);
        if (valueldr_out > valueldr_in) {
          x = true;
        }
        else {
          x = false;
        }
        slave1();
        slave2();
      }


      Slave 1

      #include <Wire.h>

      #define in1 7
      #define in2 6
      #define en1 5

      int x;
      const byte slaveId = 1;

      void setup() {
        // put your setup code here, to run once:
        Serial.begin(9600);
        pinMode(in1, OUTPUT);
        pinMode(in2, OUTPUT);
        pinMode(en1, OUTPUT);
        Wire.begin (slaveId);
        Wire.onReceive(receiveEvent);
      }

      void receiveEvent(){
        x = Wire.read();
        
      }

      void loop() {
        // put your main code here, to run repeatedly:
        if (x == true){
          digitalWrite (en1, 5);
          digitalWrite (in1, HIGH);
          digitalWrite (in2, LOW);
        }
        else {
          digitalWrite (en1, 5);
          digitalWrite (in1, LOW);
          digitalWrite (in2, HIGH);
        }
      }


      Slave 2

      #include <Wire.h>
      #include <LiquidCrystal.h>

      LiquidCrystal lcd(13, 12, 11, 10, 9, 8);

      #define in1 7
      #define in2 6
      #define en1 5

      int x, lm35;
      const byte slaveId = 2;

      void setup() {
        // put your setup code here, to run once:
        Serial.begin(9600);
        pinMode(in1, OUTPUT);
        pinMode(in2, OUTPUT);
        pinMode(en1, OUTPUT);
        Wire.begin (slaveId);
        Wire.onReceive(receiveEvent);
        lcd.begin(16,2);
      }

      void receiveEvent(){
        x = Wire.read();
        lm35 = x*0.488;
      }

      void loop() {
        // put your main code here, to run repeatedly:
        lcd.setCursor (0,0);
        lcd.print ("Suhu :");
        lcd.setCursor (0,1);
        lcd.print(lm35);
        if (lm35 > 25){
          digitalWrite (en1, 10);
          digitalWrite (in1, HIGH);
        }
        else  if (lm35 > 30){
          digitalWrite (en1, 20);
        }
        else {
          digitalWrite (en1, 0);
          digitalWrite (in1, LOW);
        }
      }




      RANGKAIAN SIMULASI




      VIDEO





      ANALISA

          Pada demo project ini kami akan membuat Gorde Otomatis Dilengkapi Kontrol Kipas. Alat ini bertujuan untuk mempermudah lansia atau orang-orang disabilitas khususnya kesulitan berjalan, dan juga mempermudah pengguna alat ini untuk menghidupkan mematikan kipas saat kondisi tertentu dan membuka dan menutup gorden saat suatu kondisi terpenuhi. 
          Alat ini menerima masukkan dari 2 buah ldr dan 1 sensor LM35. Kedua ldr ini diletakkan terpisah, yang satu berada di dalam ruangan dan satu lagi berada di luar ruangan(tempat tidak ada cahaya saat malam hari), sedangkan LM35 sendiri diletakkan di dalam ruangan. Dan alat ini juga akan dapat mengontrol Kipas dan Gorden yang berada di dalam ruangan. 
          Prinsip kerja dari alat ini adalah input dari kedua LDR dan LM35 akan diolah di Arduino Master, di Arduino Master, kedua LDR akan dibandingkan, jadi jikalau nilai LDR di luar lebih besar dibandingkan dengan LDR di dalam, maka master akan mengirimkan nilai boolean true ke slave 1 dengan menggunakan komunikasi I2C, dan jika nilai LDR di dalam lebih besar dari pada LDR di luar, maka master akan mengirimkan nilai boolean false ke slave 1. Untuk data dari LM35 akan di kirim ke slave 2. Pada Slave 1 akan menerima data boolean dari perbandingan LDR, dan jika data yang diterima itu true, maka motor akan berputar searah jarum jam, dan jikalau yang diterima itu false, maka motro akan berputar kearah berlawanannya. Pada Slave 2 akan menerima data pengukuran LM35 dari Master yang setelah di terima di kali dengan 0,488, agar data yang berbentuk digital(1023) akan sesuai dengan pengukuran LM35-nya, jika hasil perkalian bernilai >25 maka kipas akan hidup, jika hasil perkalian sampai bernilai >35 maka kipas akan makin cepat, jika <=25 maka kipas off. Nilai hasil perkalian itupun di kirim ke LCD, agar LCD menampilkan nilai suhu ruangan.


      LINK DOWNLOAD

      1. Download HTML :
      2. Download Program Master :
      3. Download Program Slave 1:
      4. Download Program Slave 2 :
      5. Download Rangkaian Proteus :
      6. Download Video :