Rabu, 11 Juni 2014

“PROTOTYPE PENGAMAN PINTU RUMAH BERBASIS MIKROKONTROLER ATMEGA 16”

LAPORAN PROYEK AKHIR
PRAKTIKUM MIKROKONTROLLER
 “PROTOTYPE PENGAMAN PINTU RUMAH BERBASIS MIKROKONTROLER ATMEGA 16”
Dosen Pengampu : Dr. Putu Sudira, M.P









DISUSUN OLEH :
Muthiah Ikhwandhia            NIM.   12502241016

ANGGOTA KELOMPOK :
Andhi Triyanto                     NIM.   12502241009
Shalahudin Kamal                NIM.   12502241011



PROGRAM STUDI PENDIDIKAN TEKNIK ELEKTRONIKA
JURUSAN PENDIDIKAN TEKNIK ELEKTRONIKA
FAKULTAS TEKNIK
UNIVERSITAS NEGERI YOGYAKARTA
2014




A.       JUDUL
“Prototype Pengaman Pintu Rumah Berbasis Mikrokontroler Atmega 16“

B.       LATAR BELAKANG 
Sistem keamanan yang menggunakan sistem mikrokontroller telah digunakan dalam dunia industri, atau pun di dalam kehidupan sehari - hari karena sistem keamanan yang menggunakan mikrokontroller lebih efektif dan terjamin keamanannya.  Aplikasi dari sistem keamanan ini bisa digunakan pada ruangan kelas. Selain keamanan, kedisiplinan  juga sangat diperlukan dalam dunia pendidikan, dimana setiap peserta didik yang masuk ruangan kelas harus sesuai dengan waktu yang telah ditentukan. Sistem keamanan dan kedisiplinan ini diaplikasikan pada pintu kelas yang terintegrasi dari komponen elektronika  dan  sistem mikrokontroller yang dapat digunakan dalam kehidupan sehari-hari. Berdasarkan hal tersebut maka dibuatlah sebuah  alat  yang  diberi  judul “Prototype Pengaman Pintu Rumah Berbasis Mikrokontroler Atmega 16”.
Adapun alat tersebut merupakan perangkat elektronika berupa pintu yang dapat terbuka secara otomatis dengan menggunakan password dan diaplikasikan didalam rumah. Rangkaian ini juga memiliki output berupa Motor stepper yang menggerakkan pintu, LCD dan lampu indikator yang berfungsi untuk mendukung proses kerja alat agar bekerja dengan sebaik mungkin.
Pada  laporan  ini  telah  dibahas  dan dipelajari  lebih  dalam tentang perancangan sebuah alat elektronika berbasis mikrokontroler yang dikendalikan oleh  bahasa pemograman  Assembler  yang dapat  menggerakkan motor stepper sebagai pengunci agar pintu dapat terbuka secara otomatis dan semua indikasi  yang  terkombinasi dengan alat dapat diaktifkan dengan menggunakan password dan dapat dipahami  fungsi, karakteristik, serta cara kerja dari alat yang telah dibuat dan diaplikasikan pada pintu sebagai pengaman ataupun pada aplikasi lainnya yang ada dalam kehidupan sehari-hari.

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.        Gambaran Umum Alat dan Analiasa dan Perancangan Alat
    Pembuka pintu otomatis adalah sebuah alat yang berfungsi membuka pintu sebagai penganti pintu konvensional. Perancangan alat keamanan sistem pintu otomatis ini merupakan alat mampu memberi alternative keamanan kepada tuan rumah. Alat ini terdiri atas : perangkat keras  dan perangkat lunak.  Perangkat keras terdiri atas mikrokontroler, input kode, mini switch yang berfungsi sebagai inputan yang dihubungkan ke IC ATMega 16 yang diisi sebagai proses, serta motor stepper dan LCD sebagai output.
         Pada bagian ini yang akan mengacu pada hasil mengeksekusi pintu. Pada rangkaian ini terdapat input kode yang akan membaca setiap masukkan data dalam password. Password dimasukan secara benar maka motor stepper akan bergerak dan memutar tuas kunci pada pintu. LCD berfungsi untuk menampilkan perintah- perintah untuk membuka pintu, mengunci pintu, mengganti password.

2.    Blok Diagram Sistem 

Gambar 1. Blok Diagram Sistem Pengaman Pintu berbasis Mikrokontroller ATMega 16

Keterangan Blok Diagram Sistem :
a.         Blok Input
1)        Input Kode / Potensiometer
Input kode berupa rangkaian potensiometer yang berfungsi untuk memasukkan kode/sandi sebagai pengaman. Kode yang dapat dimasukkan dari angka 0 sampai dengan angka 9.
2)        Mini Switch 1
Mini Switc 1 digunakan sebagai tombol yang berada di dalam ruangan untuk membuka pintu tanpa harus memasukkan kode sandi pengaman.
3)        Mini Switc 2
Mini Switch 2 digunkan sebagai tombol yang berada di dalam ruangan untuk mengunci pintu tanpa haru memasukkan kode sandi pengaman.
4)        Mini Switch 3
Mini Switch 3 digunakan sebagai tombol yang berada di luar ruangan sebagai menu pilihan masukkan kode, ganti kode dengan memasukkan kode sandi pengaman.
5)        Mini Switch 4
Mini Switch 4 digunakan sebagai tombol yang berada di luar ruangan untuk megunci pintu dengan memasukkan kode sandi pengaman.
6)        Mini Switch 5
Mini Switch 3 digunakan sebagai tombol yang berada di luar ruangan untuk OK.

b.        Blok Proses
       Pada blok diagram ini menggunakan mikrokontroller ATMega 16 yang menjadi pengolah data utama dari input kemudian melakukan eksekusi program sehingga dapat dihasilkan suatu output. Mikrokontroler ini  merupakan suatu device yang merupakan penggabungan beberapa jenis device yaitu mikroprosesor (sebagai otak dari chip ini), internal random access memory (RAM) , internal electrical erasable programmable read only memory  (EEPROM) sebagai program memoridan I/O port , sehingga tidak memerlukan I/O untuk pengambilan atau pengeluaran data dantidak memerlukan memori untuk penyimpanan data, karena semua media tersebut telah ada didalam chip mikrokontroler tersebut. Hanya bila diperlukan fasilitas tersebut dapat ditambah diluar chip.

c.         Blok Output
1)        LCD
LCD digunakan untuk menampilkan output yang berupa tulisan perintah untuk memasukkan kode, mengganti kode, dan peringatan pada eksekusi program yang dilakukkan.

2)        Driver Motor
Driver motor berfungsi untuk mengendalikan putaran motor stepper. Driver ini berfungsi unuk memutar motor stepper arah jarum jam atau pun berlawanan jarum jam.  Rangkaian ini  dikendalikan oleh mikrokontroler  AVR ATMega 16. Jadi dengan memberikan sinyal high secara bergantian ke input dari rangkaian driver motor stepper tersebut,  maka pergerakan motor  stepper untuk membuka pintu sudah dikendalikan oleh miokrokontroler AVR ATMega 16.

                              3)       Skema Rangkaian
              a.         Rangkaian Input Kode/Potensiometer
Gambar 2. Rangkaian Input Kode dengan Potensiometer

              b.        Rangkaian Driver Motor
Gambar 3. Rangkaian Driver Motor

              c.         Rangkaian Power Supply
Gambar 4. Rangkaian Regulator

              d.        Rangkaian Reset
Gambar 5. Rangakain Reset

              e.         Rangkaian Osilator
Gambar 6. Rangkaian Osilator

              f.          Rangkaian Sistem Minimum
Gambar 7. Rangkaian Sistem Minimum

2.         Desain Box
Gambar 8. Desain Box

Gambar 9. Tata Letak Tampilan Menu

Gambar 10. Instalasi Rangkaian

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 downloader
7)        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.

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.

3.         Pemograman Mikrokontroller
/***********************************************************
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();
        } 
    }
}
F.       PENGUJIAN

Video Pengujian Alat PROTOTYPE PENGAMAN PINTU RUMAH BERBASIS MIKROKONTROLER ATMEGA 16”


G.       ANALISIS 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 utuk 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 keamanan ini dapat dioperasikan dua tempat yaitu dari dalam ruangan ataupun luar ruangan.
2.  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.

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.   Pada pembuatan program masih memerlukan pengembangan dan penyesuaian yang lebih lanjut sesuai dengan kondisi  hardware.
2.   Untuk mendesain peralatan elektronika yang dikontrol oleh komputer hendaknya selalu dibekali dengan dasar - dasar atau teori - teori yang kuat tentang hardware dan software komputer sehinnga tidak mengalami kegagalan yang fatal dalam mendesain nantinya.
3.  Tambahkan waktu pengaksesan buka atau tutup pintu agar dapat diketahui waktu terakhir melakukan pembukaan pintu.

7 komentar:

  1. Komentar ini telah dihapus oleh pengarang.

    BalasHapus
  2. kak boleh minta simulasi rangkaiannya. klau bleh ini email saya mb idbaliyah@gmail.com

    BalasHapus
  3. mantap, semoga baca ini menginspirasi para pembaca. sangat kreatif !! good job gan :) salam dari Politeknik Negeri Sriwijaya #Miko

    BalasHapus
  4. mbak senyumnya bikin diabetes... wkwkwkwk

    BalasHapus