Pages

Rabu, 11 Juni 2014

Prototype Pengemanan Pintu Berbasis Mikrokontroler ATMega 16

 

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. 

                         g.  Desain box  
             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.

2.         Pembuatan Desain Box
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.

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.

2.      Penyimpanan angka ke EEPROM.
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.

3.      Penguncian dan pembukaan kunci pintu dengan motor.
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

 

Blogger news

Blogroll