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)
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 :
- Film dengan polarizing filter vertical untuk mempolarisasi cahaya yang masuk.
- Glass substrate yang berisi kolom-kolom elektroda Indium tin oxide (ITO).
- Twisted nematic liquid crystal (kristal cair dengan susunan terpilin).
- Glass substrate yang berisi baris-baris elektroda Indium tin oxide (ITO).\
- Film dengan polarizing filter horizontal untuk mempolarisasi cahaya yang masuk.
- 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
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
- Download HTML :
- Download Program Master :
- Download Program Slave 1:
- Download Program Slave 2 :
- Download Rangkaian Proteus :
- Download Video :