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
Untuk model 4 demo project kali ini,kelompok 3 membuat Gorden
Otomatis Dilengkapi Kontrol Kipas. Untuk tujuan dari alat ini agar mempermudah
orang terkhususnya orang yang sulit untuk berjalan seperti para lansia dan
sebagainya. Dengan adanya alat ini lebih mempermudah seseorang untuk
menghidupkan dan mematikan kipas saat dan membuka dan membuka dan menutup
gorden.Pada alat ini, terdapat 2 LDR sebagai input dan 1 sensor LM35. Untuk
posisi dari LDR dan LM35, 1 LDR diletakan di dalam ruangan dan LDR yang satunya
lagi diletakkan di luar ruangan. Prinsip kerja dari demo project ini dimana
LM35 dan LDR pertama,datanya akan diolah di master dan di master nilai dari dua
buah LDR akan dibandingkan, diterima di slave 1 dan akan mempengaruhi nilai
perputaran motor, dengan kondisi jika nilai LDR didalam lebih besar
dibandingkan nilai LDR diluar maka master akan mengirim nilai Boolean false ke
slave 1 dan motor akan berputar berlawanan arah jarum jam,tetapi sebaliknya
jika nilai LDR didalam lebih kecil dibandingkan nilai LDR diluar maka master
akan mengirim nilai bolean true ke slave1 dan motor akan berputar searah jarum
jam. Selanjutnya data pengukuran LM35 dari master akan dikirim ke slave dan
proses selanjutnya setelah diterima slave 2 dikali dengan 488 yang bertujuan
agar data yang berbentuk digital sesuai dengan pengukuran dari LM35 itu
sendiri, dengan kondisi jika hasil dari perkalian dengan 0,488 besar dari 25
maka kipas akan hidup dan kondisi jika hasil perkaliannya besar dari 35 maka
kipas berputar akan semakin cepat dan kondisi jika hasil perkaliannya kecil
sama dari 25, maka kipas akan berhenti berputar ( off). Selanjutnya nilai dari
hasil perkalian tadi akan dikirim ke LCD untuk menampilkan nilai suhu ruangan.
LINK DOWNLOAD
- Download HTML :
- Download Program Master :
- Download Program Slave 1:
- Download Program Slave 2 :
- Download Rangkaian Proteus :
- Download Video :
Tidak ada komentar:
Posting Komentar