A.
JUDUL
Prototype Pengaman Pintu Berbasis Mikrokontroler AT
Mega 16.
B.
LATAR BELAKANG
Kemajuan zaman terasa
semakin pesat pada abad 20 seperti saat ini, membuat kesenjangan social
daikalangan masyarakat menjadi sulit untuk dihilangkan. Hali ini merupakan
salah satu pemicu semakin tingginya tingka kejahatan di masyarakat seperti
pencurian atau pemrampokan rumah.
Keamanan merupakan hal
yang sangat penting untuk dijaga kapan saja dan dimana saja seseorang berada.
Salah satunya yaitu mesalah keamanan rumah, terutama jika sang pemilik rumah
sedang tidak ada dirumah pada malan hari dan di dalam rumah tersebut terdapat
barang-barang yang berharga.
Meskipun dalam sebuah
pemukiman sudah memberlakukan penjagaan malam (siskamling) ataupun memakai
seorang satpam sebagai penjaga dalam suatu komplek. Namun, mesih ada para
pelaku pencurian yang cerdik dengan memanfaatkan kelengahan para pemilik rumah.
Berangkat dari
masalah-masalah tersebut, penulis bermaksud untuk menciptakan sebuah alat
pengaman pintu yang diharapkan bermanfaat bagi masyarakat. Sistem diharapkan
juga dapat mengurangi tingkat pencurian dan perampokan di rumah masyarakat.
C.
TUJUAN
Setelah melaksanakan proyek diharapkan mampu :
1. Mengembangkan
pengetahuan yang telah diperoleh pada matakuliah Mikrokontroler di Jurusan
Pendidikan Teknik Elektronika FT UNY.
2. Merancang sistem
pengaman pintu rumah dengan kode pengaman berbasis mokrokontrole ATMega 16.
D.
DESAIN RANCANGAN
1.
Blok diagram.
Gambar 1 Blok diagram system pengaman pintu
2.
Skema rangkaian.
a.
Rangkaian sistem
minimum.
Gambar
2.1 Rangkaian sistem minimum menggunakan ATMega 16.
b.
Rangkaian
potersiometer.
Gambar
2.2 Rangkaian potensiometer untuk menginputkan kode keamanan.
c.
Rangkaian
cristal.
Gambar
2.3 Rangkaian cristal dan capasitor sebagai rangkaian osilator system minimum
ATMega 16.
d.
Rangkaian reset.
Gambar
2.4 Rangkaian reset pada system minimum ATMega 16.
e.
Rangkaian power
supply.
Gambar
2.5 Rangkaian power supply untuk sumber tegangan system minimum dengan output 5
volt.
f.
Rangkaian driver
motor steper.
Gambar
2.6 Rangkaian driver motor steper untuk menggerakkan motor steper.
Gambar 2.7 Desain tampilan box tampak depan.
3. Kode program
/***********************************************************
PROTOTIPE
PENGAMAN PINTU BERBASIS MIKROKONTROLER ATMEGA 16
***********************************************************/
#include
<mega16.h>
#include
<delay.h>
//
Alphanumeric LCD functions
#include
<alcd.h>
#include
<stdio.h>
#define
ADC_VREF_TYPE 0x00
// Read
the AD conversion result
unsigned
int read_adc(unsigned char adc_input)
{
ADMUX=adc_input
| (ADC_VREF_TYPE & 0xff);
// Delay
needed for the stabilization of the ADC input voltage
delay_us(10);
// Start
the AD conversion
ADCSRA|=0x40;
// Wait
for the AD conversion to complete
while
((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return
ADCW;
}
int
coba=0;
interrupt
[TIM0_OVF] void timer0_ovf_isr(void)
{
TCNT0 = 0xFD;
if (coba==1)
{lcd_gotoxy(0,0);lcd_putsf("MATI
");}
}
eeprom int
kode_satuan=0, kode_ribuan=0, kode_ratusan=0, kode_puluhan=0;
unsigned
char buff[33],h,m,s;
int
i,sat,pul,rat,rib,a,b,c,d;
int
menu,ganti,masuk,kode,masuk,kode,kunci;
int
terbuka,terkunci;
//
Declare your global variables here
unsigned
char step[]={0b0001,0b0010,0b0100,0b1000};
int i,j;
void
buka()
{
int j=0;
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("Membuka Kunci");
delay_ms(500);
do
{
j++;
i++;
if (i>3)
{
i=0;
}
PORTD = step[i];
delay_ms(20);
}while (j<500);
PORTD=0b00010000;
}
void
tutup()
{
int j=0 ;
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("Mengunci Pintu");
do
{
j++;
i--;
if (i<0)
{
i=3;
}
PORTD = step[i];
delay_ms(20);
}while (j<500);
PORTD=0b00000000;
}
void
input(void)
{
sat = read_adc(0)/100;
pul = read_adc(1)/100;
rat = read_adc(2)/100;
rib = read_adc(3)/100;
if (sat>9){sat=0;};
if (pul>9){pul=0;};
if (rat>9){rat=0;};
if (rib>9){rib=0;};
lcd_gotoxy(7,1);
sprintf(buff,"%d %d %d
%d",rib,rat,pul,sat);
lcd_puts(buff);
delay_ms(100);
}
void
cek(void)
{
if(rib==kode_ribuan&&rat==kode_ratusan&&pul==kode_puluhan&&sat==kode_satuan)
{
masuk=1;
buka();
do{
PORTD=0xFF;
lcd_clear();
lcd_gotoxy(i,0);
lcd_putsf("Assalamualaikum");
i++;
delay_ms(500);
if(i==18){i=0;}
if (PINC.5==0)
{
menu=0;
masuk=0;
lcd_clear();
}
if (PINC.4==0)
{
delay_ms(5);
kunci=1;
masuk=0;
}
}while(masuk==1);
if (kunci==1);
{
tutup();
menu=kode=masuk=ganti=0;
lcd_clear();
}
}
else
{
rib=rat=pul=sat=0;
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("Kode
Salah");
delay_ms(1000);
coba++;
menu=3;
}
}
void
cek_ganti(void)
{
if(rib==kode_ribuan&&rat==kode_ratusan&&pul==kode_puluhan&&sat==kode_satuan)
{
rib=rat=pul=sat=0;
ganti=1;
delay_ms(20);
lcd_clear();
do{
lcd_gotoxy(0,0);
lcd_putsf("Mskan Kode
Baru");
lcd_gotoxy(0,1);
lcd_putsf("Kode
=");
input();
if (PINC.7==0)
{
kode_satuan=sat;
kode_puluhan=pul;
kode_ratusan=rat;
kode_ribuan=rib;
delay_ms(20);
ganti=2;
rib=rat=pul=sat=0;
do{
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("Kode Baru=");
lcd_gotoxy(0,1);
sprintf(buff,"%d
%d %d %d",kode_ribuan,kode_ratusan,kode_puluhan,kode_satuan);
lcd_puts(buff);
delay_ms(1000);
menu=1;
if (PINC.5==0)
{
ganti=3;
menu=3;
lcd_clear();
}
}while(ganti==2&&menu==2);
}
}while(ganti=1&&menu==2);
}
else
{
ganti=0;
menu=3;
rib=rat=pul=sat=0;
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("Kode
Awal Salah");
delay_ms(1000);
menu=2;
lcd_clear();
lcd_gotoxy(0,1);
lcd_putsf("
");
delay_ms(1000);
}
}
void
main(void)
{
PORTA=0x00;
DDRA=0x00;
PORTB=0x00;
DDRB=0x00;
PORTC=0xFF;
DDRC=0x00;
PORTD=0x00;
DDRD=0xFF;
TCCR0=0x07;
TCNT0=0xFD;
OCR0=0x00;
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
MCUCR=0x00;
MCUCSR=0x00;
TIMSK=0x00;
UCSRB=0x00;
ACSR=0x80;
SFIOR=0x00;
ADMUX=ADC_VREF_TYPE
& 0xff;
ADCSRA=0x84;
SPCR=0x00;
TWCR=0x00;
lcd_init(16);
while (1)
{
if (PINC.5==0)
{
menu=1;
delay_ms(200);
do{
lcd_gotoxy(0,0);
lcd_putsf("Masukkan
Kode");
lcd_gotoxy(0,1);
lcd_putsf("Kode =");
if (PINC.5==0)
{
delay_ms(100);
menu=2;
lcd_clear();
}
if (PINC.7==0)
{
kode=1;
do{
input();
if (PINC.7==0)
{
cek();
}
if (PINC.5==0)
{
delay_ms(200);
menu=2;
//lcd_clear();
}
}while(kode==1&&menu==1);
}
}while(menu==1);
lcd_clear();
do{
lcd_gotoxy(0,0);
lcd_putsf("Ganti Kode
Awal");
lcd_gotoxy(0,1);
lcd_putsf("Kode =");
if (PINC.7==0)
{
ganti=1;
do{
input();
if (PINC.7==0)
{
cek_ganti();
}
if (PINC.5==0)
{
delay_ms(100);
menu=2;
lcd_clear();
}
}while(ganti==1&&menu==2);
}
if (PINC.5==0)
{
delay_ms(100);
menu=1;
}
}while(menu==2);
lcd_clear();
}
if(PINC.1==0)
{
delay_ms(200);
kode_satuan=0,kode_ribuan=0,kode_ratusan=0,kode_puluhan=0;
sprintf(buff,"%d%d%d%d",kode_ribuan,kode_ratusan,kode_puluhan,kode_satuan);
lcd_gotoxy(0,0);
lcd_puts(buff);}
if(PINC.0==0){sprintf(buff,"%d%d%d%d",kode_ribuan,kode_ratusan,kode_puluhan,kode_satuan);
lcd_gotoxy(0,0);
lcd_puts(buff);}
if (PINC.6 == 0)
{
tutup();
terkunci=1;
terbuka=0;
lcd_clear();
}
if (PINC.4 == 0)
{
tutup();
terkunci=1;
terbuka=0;
lcd_clear();
}
if (PINC.3 == 0)
{
buka();
terkunci=0;
terbuka=1;
lcd_clear();
}
}
}
E.
LANGKAH PEMBUATAN
1.
Pembuatan
Desaian PCB
a.
Membuat
skema rangkaian di ISIS diantaranya adalah rangkaian :
1)
Rangkaian
input kode
2)
Rangkaian
driver motor
3)
Rangkaian
regulator
4)
Rangkaian
reset
5)
Rangkaian
osilator
6)
Rangkaian
sistem minimum
b.
Membuat
layout PCB di ARES.
c.
Mencetakan
layout PCB yang telah dibuat di ARES ke kertas glossy.
d.
Menyetrika
papan PCB yang telah ditempel layout PCB di kertas glossy.
e.
Melarutkan
PCB dengan larutan Fe3Cl.
f.
Memasangan
komponen atau menyolder komponen.
g.
Menghubungkan
antar rangkaian dengan rangkaian lainnya.
h. Memasukkan program ke sistem minimum.
h. Memasukkan program ke sistem minimum.
a.
Mengukur
triplek sesuai dengan desain box yang telah ditentukan.
b.
Memotong
triplek sesuai dengan ukuran desain box yang telah dibuat.
c.
Menyusun
dan menempel bagian – bagian dari box sesuai dengan desain.
d. Memasang
motor stepper dan PCB sesuai dengan tempatnya masing – masing.
F.
PENGUJIAN
Berikut merupakan video pengujian Prototype pengaman pintu berbasis mikrokontroler AT Mega 16.
Berikut merupakan video pengujian Prototype pengaman pintu berbasis mikrokontroler AT Mega 16.
G.
ANALISA BERDASARKAN TUJUAN
1.
Penginputan
angka dari potensiometer.
Dengan memanfaatkan PORT ADC pada mikrokontroler,
penggunaan-potensiometer untuk menginputkan angka-angka yang digunakan sebagai
kode pengaman. Potensiometer ini menggunakan prinsip pembagi tegangan yang
kemudian hasil dari pembagian tegangan tersebur dimasukkan pada pin ADC yang
terdapat pada PORTA 0 sampai PORTA 7 pada chip ATMega 16.
Penyimpanan kode dalam proyek ini memanfaatkan media
penyimpanan pada mikrokontroler yaitu EEPROM. Dalam mikrokontroler ATMega16 terdiri dari 512 byte
memori data EEPROM 8 bit, data dapat ditulis/dibaca dari memori ini, ketika
catu daya dimatikan, data kode angka yang ditulis pada memori EEPROM masih
tersimpan pada memori ini sampai data tersebut akan dipanggil untuk mdicocokkan
dengan data yang dimasukkan oleh pengguna pada saat akan membuka pintu.
Untuk mengunci pintu, dalam proyek ini menggunakan
motor steper untuk menggerakkan pengunci. Digunakannya motor steper karena besar
putaran pada motor tersebut bias diatur sesuai dengan kebutuhan pengguna dan
memiliki torsi yang cukup besar.
H.
KESIMPULAN
Berdasarkan teori dan pembahasan yang
telah dijabarkan pada bab yang sebelumnya, maka dapat ditarik
kesimpulan sebagai berikut :
1. Sistem pengamanan pintu dapat berguna
mencegah orang- orang tidak berkepentingan
masuk kedalam ruangan/rumah. Sistem keamanan
dapat beroperasi jika password yang dimasukkan
benar. Sehingga dapat melakukan langkah berikutnya yaitu
membuka pintu atau menutup pintu.
2. Sistem keamanan ini dapat dioperasikan
dua tempat yaitu dari dalam ruangan ataupun luar ruangan.
I.
SARAN
Dalam
pembuatan perancangan pembuka pintu ini banyak terdapat beberapa kandala yang
dihadapi, agar apa yang telah direncanakan dapat terealisasi sesuai dengan
perencanaan, untuk itu diharapkan agar dapat dilakukan penyempurnaan dalam
berbagai aspek mulai dari hardware maupun software agar dapat tercipta
alat yang lebih baik lagi. Adapun hal –hal yang perlu lebih diperhatikan dan
ditingkatkan kelak adalah :
1. Penambahan
jumlah maksimum pengguna salah memasukkan kode pengaman, sehingga jika
pemasukkan kode terjadi kesalahan sebanyak batas maksimal maka user perlu
menunggu beberapa saat agar alat dapat kembali digunakan.
2. Pada
pembuatan program masih memerlukan pengembangan dan penyesuaian yang lebih
lanjut sesuai dengan kondisi hardware.
3. Penambahan fitur untuk mengantisipasi jika terjadi kerusakan pada motor pengunci.
Tidak ada komentar:
Posting Komentar