Modul 4 mP&mC





Projek Demo Modul 4


1. Tujuan [back]

Merancang kandang ayam yang dapat mengatur dan mempertahankan intensitas cahaya di dalamnya secara otomatis.

2. Daftar Komponen [back]
1. LDR
2. LED
3. Buzzer
4. LCD
5. Arduino

1.        Light Dependent Resistor (LDR)

Light Dependent Resistor atau disingkat dengan LDR adalah jenis Resistor yang nilai hambatan atau nilai resistansinya tergantung pada intensitas cahaya yang diterimanya. Nilai Hambatan LDR akan menurun pada saat cahaya terang dan nilai Hambatannya akan menjadi tinggi jika dalam kondisi gelap. Dengan kata lain, fungsi LDR (Light Dependent Resistor) adalah untuk menghantarkan arus listrik jika menerima sejumlah intensitas cahaya (Kondisi Terang) dan menghambat arus listrik dalam kondisi gelap.
Prinsip kerja LDR sangat sederhana tak jauh berbeda dengan variable resistor pada umumnya. LDR dipasang pada berbagai macam rangkaian elektronika dan dapat memutus dan menyambungkan aliran listrik berdasarkan cahaya. Semakin banyak cahaya yang mengenai LDR maka nilai resistansinya akan menurun, dan sebaliknya semakin sedikit cahaya yang mengenai LDR maka nilai hambatannya akan semakin membesar. Naik turunnya nilai Hambatan akan sebanding dengan jumlah cahaya yang diterimanya. Pada umumnya, Nilai Hambatan LDR akan mencapai 200 Kilo Ohm (kΩ) pada kondisi gelap dan menurun menjadi 500 Ohm (Ω) pada Kondisi Cahaya Terang.
LDR (Light Dependent Resistor) yang merupakan Komponen Elektronika peka cahaya ini sering digunakan atau diaplikasikan dalam Rangkaian Elektronika sebagai sensor pada Lampu Penerang Jalan, Lampu Kamar Tidur, Rangkaian Anti Maling, Shutter Kamera, Alarm dan lain sebagainya.
Bagian-bagian LDR:
Grafik respon LDR :
Intensitas cahaya berbanding terbalik dengan resistansi LDR

2.        LED

LED adalah suaatu semikonduktor yang memancarkan cahaya,  LED mempunyai kecenderungan polarisasi. LED mempunyai kutub positif dan negatif (p-n) dan hanya akan menyala bila diberikan arus maju. Ini dikarenakan LED terbuat dari bahan semikonduktor yang hanya akan mengizinkan arus listrik mengalir ke satu arah dan tidak ke arah sebaliknya. Bila LED diberikan arus terbalik, hanya akan ada sedikit arus yang melewati  LED. Ini menyebabkan LED tidak akan mengeluarkan emisi cahaya.

3.        Buzzer

Buzzer Elektronika adalah sebuah komponen elektronika yang dapat menghasilkan getaran suara berupa gelombang bunyi. Buzzer elektronika akan menghasilkan getaran suara ketika diberikan sejumlah tegangan listrik dengan taraf tertentu sesuai dengan spesifikasi bentuk dan ukuran buzzer elektronika itu sendiri. Pada umumnya, buzzer elektronika ini sering digunakan sebagai alarm karena penggunaannya yang cukup mudah yaitu dengan memberikan tegangan input maka buzzer elektronika akan menghasilkan getaran suara berupa gelombang bunyi yang dapat didengar manusia.
Pada dasarnya, setiap buzzer elektronika memerlukan input berupa tegangan listrik yang kemudian diubah menjadi getaran suara atau gelombang bunyi yang memiliki frekuensi berkisar antara 1 - 5 KHz. Jenis buzzer elektronika yang sering digunakan dan ditemukan dalam rangkaian adalah buzzer yang berjenis Piezoelectric (Piezoelectric Buzzer). Hal itu karena Piezoelectric Buzzer memiliki berbagai kelebihan diantaranya yaitu lebih murah, relatif lebih ringan dan lebih mudah penggunaannya ketika diaplikasikan dalam rangkaian elektronika.
Efek Piezoelektrik (Piezoelectric Effect) ditemukan pertama kali oleh dua orang ilmuwan Fisika pada tahun 1880 bernama Pierre Curie dan Jacques Curie yang berasal dari kebangsaan Perancis. Penemuan tersebut kemudian dikembangkan oleh sebuah perusahaan Jepang menjadi Piezoelectric Buzzer dan mulai populer digunakan pada tahun 1970-an.
Dalam rangkaian elektronika, piezoelectric buzzer dapat digunakan pada tegangan listrik sebesar 6 volt hingga 12 volt dan dengan tipikal arus sebesar 25 mA. Buzzer yang termasuk dalam keluarga Transduser ini sering disebut juga dengan Beeper.

4.        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 Penampang komponen penyusun LCD
Keterangan:
1. Film dengan polarizing filter vertical untuk memolarisasi 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 memolarisasi cahaya yang masuk.
6. Reflektor cahaya untuk memantulkan cahaya yang masuk LCD kembali ke mata pengamat.
Sebuah citra dibentuk dengan mengombinasikan 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.

Kaki-kaki yang terdapat pada LCD

5.        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 dalam praktikum ini adalah Arduino Uno yang menggunakan chip AVR ATmega 328P. Dalam memprogram Arduino, kita bisa menggunakan komunikasi serial agar Arduino dapat berhubungan dengan komputer ataupun perangkat lain.
Adapun spesifikasi dari Arduino Uno ini adalah sebagai berikut :
Gambar 1.4. 1 Arduino Uno

Microcontroller                                           ATmega328P

Operating Voltage                                      5 V

Input Voltage (recommended)                   7 – 12 V

Input Voltage (limit)                                  6 – 20 V

Digital I/O Pins                                          14 (of which 6 provide PWM output)

PWM Digital I/O Pins                                6

Analog Input Pins                                       6

DC Current per I/O Pin                              20 mA

DC Current for 3.3V Pin                            50 mA

Flash Memory                                            32 KB of which 0.5 KB used by bootloader

SRAM                                                        2 KB

EEPROM                                                   1 KB

Clock Speed                                               16 MHz

BAGIAN-BAGIAN ARDUINO UNO

POWER USB
Digunakan untuk menghubungkan Papan Arduino dengan komputer lewat koneksi USB.

POWER JACK
Supply atau sumber listrik untuk Arduino dengan tipe Jack. Input DC 5 - 12 V.

Crystal Oscillator
Kristal ini digunakan sebagai layaknya detak jantung pada Arduino.
Jumlah cetak menunjukkan 16000 atau 16000 kHz, atau 16 MHz.

Reset
Digunakan untuk mengulang program Arduino dari awal atau Reset.

Digital Pins I / O
Papan Arduino UNO memiliki 14 Digital Pin. Berfungsi untuk memberikan nilai logika ( 0 atau 1 ). Pin berlabel " ~ " adalah pin-pin PWM ( Pulse Width Modulation ) yang dapat digunakan untuk menghasilkan PWM.

Analog Pins
Papan Arduino UNO memiliki 6 pin analog A0 sampai A5. Digunakan untuk membaca sinyal atau sensor analog seperti sensor jarak, suhu dsb, dan mengubahnya menjadi nilai digital.

LED Power Indicator
Lampu ini akan menyala dan menandakan Papan Arduino mendapatkan supply listrik dengan baik. 

BAGIAN-BAGIAN PENDUKUNG

RAM

RAM (Random Access Memory) adalah tempat penyimpanan sementara pada komputer yang isinya dapat diakses dalam waktu yang tetap, tidak memperdulikan letak data tersebut dalam memori atau acak. Secara umum ada 2 jenis RAM yaitu SRAM (Static Random Acces Memory) dan DRAM (Dynamic Random Acces Memory)

ROM

ROM (Read-only Memory) adalah perangkat keras pada computer yang dapat menyimpan data secara permanen tanpa harus memperhatikan adanya sumber listrik. ROM terdiri dari Mask ROM, PROM, EPROM, EEPROM.


6.        Komunikasi Inter Integrated Circuit (I2C)

Inter Integrated Circuit atau sering disebut I2C adalah standar komunikasi serial dua arah menggunakan dua saluran yang didisain 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. 
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.


Master
#include <Wire.h>
#define SLAVE_ADDR 9
int analogPin [] = {0,1};
byte pin[]={11};

int val = 0;
int vel = 1;

void setup() {
  Wire.begin();
   Serial.begin(9600);
   pinMode(11,OUTPUT);
}

void loop() {
 { delay(50);
  val = map(analogRead(0), 0,1023, 255, 1);
  Serial.println(val);
  Wire.beginTransmission(SLAVE_ADDR);
  Wire.write(val);
 Wire.endTransmission();
}
vel=map(analogRead(1), 0,1023, 255, 1);
Serial.println(vel);
if (vel>120){
digitalWrite(11,vel);
}
else{
  digitalWrite(11,LOW);
}
}

Slave
#include<Wire.h>
#include<LiquidCrystal.h>
#define SLAVE_ADDR 9
LiquidCrystal lcd (2,3,4,5,6,7);
byte pin []={8,9,10,12,13};
int rd;
int br;

void setup()    //Semua kode dalam fungsi ini dieksekusi sekali
{
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(13, OUTPUT);
  lcd.begin(16,2);
  Wire.begin(SLAVE_ADDR);
  Wire.onReceive(receiveEvent);
  Serial.begin(9600);           
}

void receiveEvent(int howMany)
{
  {
    rd=Wire.read();
    Serial.println(rd);
  }
}


void loop()                          
{
 void receiveEvent();
 {
     while(0<Wire.available())
  {
    rd=Wire.read();
  }
   br=map(rd,1,255,1,255);
 }
 
if (br<80)
{
  digitalWrite(8,HIGH);
  digitalWrite(9,LOW);
  digitalWrite(10,LOW);
  digitalWrite(12,LOW);
  digitalWrite(13,LOW);
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("DI LUAR");
  lcd.setCursor(0,1);
  lcd.print("TERANNG");
  
}
else if (br<100){
  digitalWrite(8,HIGH);
  digitalWrite(9,HIGH);
  digitalWrite(10,LOW);
  digitalWrite(12,LOW);
  digitalWrite(13,LOW);
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("DI LUAR");
  lcd.setCursor(0,1);
  lcd.print("REDUP ");
  
}
else if (br<120){
  digitalWrite(8,HIGH);
  digitalWrite(9,HIGH);
  digitalWrite(10,HIGH);
  digitalWrite(12,LOW);
  digitalWrite(13,LOW);
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("DILUAR");
  lcd.setCursor(0,1);
  lcd.print("GELAP "); 
   
}
else {
  digitalWrite(8,HIGH);
  digitalWrite(9,HIGH);
  digitalWrite(10,HIGH);
  digitalWrite(12,HIGH);
  digitalWrite(13,HIGH);
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("DI LUAR");
  lcd.setCursor(0,1);
  lcd.print("SANGAT GELAP"); 
  }
 
  delay(50);
}
 
Master
Slave

Pada rangkaian ini menggunakan 2 arduino uno dan dihubungkan dengan komunikasi I2C, sensor yang digunakan yaitu sensor LDR, dan untuk outputnya yaitu LED, buzzer dan LCD. Sensor LDR 1 pada rangkaian ini dihubungkan ke pin A0 pada arduino uno master dan untuk sensor LDR 2 dihubungkan ke pin A1 pada arduino uno master. Komunikasi yang digunakan pada arduino uno master adalah komunikasi inter integrated circuit (I2C). Sensor LDR 1 diletakkan diluar ruangan yang berfungsi untuk menangkap  cahaya dari luar ruangan, sedangkan sensor LDR 2 diletakkan didalam ruangan yang berfungsi untuk menangkap cahaya dari LED yang terletak didalam ruangan. Untuk listing programnya, pada arduino uno master pertama kita deklarasikan wire.h yang berfungsi untuk menjalankan fungsi-fungsi komunikasi I2C dalam program, Variabel slave_addr, analog pin yang digunakan yaitu pin 0 dan 1, pin 11 untuk buzzer, val=0 untuk nilai LDR 1 dan vel=1 untuk nilai LDR 2.  Untuk perulangan nya digunakan perulangan void, dimana dilakukan proses mapping untuk nilai val = map(analogRead(0), 0,1023, 255, 1) untuk LDR 1, wire.beginTransmission untuk memulai transmisi dan wire.write(val) mengirim data yang didapat dari val dari pembacaan LDR 1. Nilai vel=map(analogRead(1), 0,1023, 255, 1) untuk LDR 2 dan untuk nilai vel jika nilainya besar dari 120 maka buzzer akan hidup jika tidak maka buzzer akan  mati. Pada program slave, pertama kita deklarasikan wire.h, liquidcrystal.h, variabel slave_addr 9, dan pin-pin yang digunakan pada arduino uno slave, rd dan br. Pin 8,9,10,12,13 merupakan pin output LED, LCD yang digunakan bertipe 16x2, wire.onReceive(receiveEvent) untuk menerima data dari master. Buat fungsi void receiveEvent, wire.read untuk membaca pembacaan dari master dan disimpan pada variabel rd. Pada void loop nilai rd dibandingkan dengan menggunakan map. Jika nilai br < 80 maka 1 LED akan hidup dan di LCD tercetak “Diluar Terang”. Jika nilai br < 100 maka 2 LED akan hidup dan di LCD tercetak “Diluar Redup”. Jika nilai br < 120 maka 3 LED akan hidup dan di LCD tercetak “Diluar Gelap”. Dan lainnya maka semua LED akan hidup dan di LCD tercetak “Diluar Sangat Gelap”.

Ketika itensitas cahaya yang ditangkap oleh LDR 1 tinggi maka nilai resistansinya akan menurun. Dan 1 LED akan menyala serta di LCD tertulis “Diluar terang”. LED akan menyala berdasarkan cahaya yang diterima oleh LDR 1, nyala LED akan direspon oleh LDR 2 , yang mana LDR 2 akan terhubung ke buzzer sebagai outputnya. Saat LED yang hidup di dalam ruangan kecil atau intensitas cahaya yang diterima oleh LDR 2 sedikit resistansinya akan semakin besar dan buzzer akan hidup.

Link download video [disini]
Link download rangkaian [disini]
Link download listing program master [disini]
Link download listing program slave [disini]
Link download library arduino [disini]
Link download datasheet LDR [disini]
Link download HTML [disini]


Tidak ada komentar:

Posting Komentar