Anda di halaman 1dari 164

HALAMAN JUDUL

RANCANG BANGUN ABSENSI ELEKTRONIK BERBASIS


MIKROKONTROLLER ATMEGA328
TUGAS AKHIR

Diajukan Untuk Memenuhi Persyaratan Memperoleh Gelar Sarjana Sains Terapan Pada
Program Studi Teknik Elektro Industri Fakultas Teknik Elektro
Universitas Negeri Padang

Oleh
Subandi Saputra
NIM : 1302555/2013

PROGRAM STUDI TEKNIK ELEKTRO INDUSTRI


FAKULTAS TEKNIK ELEKTRO
UNIVERSITAS NEGERI PADANG
2018

1
HALAMAN PERSETUJUAN TUGAS AKHIR

Rancang Bangun Absensi Elektronik Berbasis Mikrokontroller Atmega328

Nama : Subandi Saputra


BP/NIM : 2013/1302555
Program Studi : Teknik Elektro Industri
Jurusan : Teknik Elektro
Fakultas : Teknik
Padang, Mei 2018

1
HALAMAN PENGESAHAN TUGAS AKHIR

Rancang Bangun Absensi Elektronik Berbasis Mikrokontroller Atmega328

Nama : Subandi Saputra


BP/NIM : 2013/1302555
Program Studi : Teknik Elektro Industri
Jurusan : Teknik Elektro
Fakultas : Teknik

Dinyatakan LULUS setelah dipertahankan didepan tim penguji tugas akhir


Program Studi Teknik Elektro Industri Jurusan Teknik Elektro
Fakultas teknik Universitas Negeri Padang

Padang, Mei 2018

Tim Penguji : Tanda Tangan

Ketua : Drs. Aswardi, MT

Sekretaris : Asnil, S.Pd, M.Eng

Anggota : Krismadinata, ST,MT, Ph.D

1
2
ABSTRAK
Subandi Saputra (2013/1302555) :“Rancang Bangun Absensi Elektronik Berbasis
Mikrokontroller Atmega328”
Pembuatan tugas akhir ini pada dasarnya bertujuan untuk (1)membuat mesin
absensi elektronik dengan sensor biometrik fingerprints scanner yang
berbasiskakan mikrokontroller atmega328. (2) Memperbaharui metode absensi
konvensional menjadi absensi digital, dan (3) Menentukan kinerja mesin absensi
berdasarkan hasil output sistem basis data pada mesin absensi ini.
Dalam pembuatan tugas akhir ini peulis menggunakan mikrokontroller
atmega328 sebagai pusat pengontrolan utama, sensor pembaca sidik jari sebagai
input utama, lcd sebagai penampil informasi waktu pada rangkaian real time clock,
dan rangkaian sdcard module sebagai sistem basis data yang digunakan untuk
menyimpan informasi pada saat absensi dilakukan.
Berdasarkan hasil pengujian rancang bangun absensi elektronik berbasis
mikrokontroller atmega328 adalah sebagai berikut, pertama alat ini dapat
digunakan sebagai pengganti sistem pengambilan absensi secara konvensional. Hal
ini disebabkan karena alat ini dilengkapi dengan sensor pembaca sisik jari sehingga
dalam pegambilan absensi tidak dapat diwakilkan, dan microsdcard module sebagai
sistem basis data sehingga data pada saat pengambilan absensi tidak mudah hilang.
Selain itu, alat ini juga telah dilengkapi dengan RTC sebagai sistem pengatur waktu
yang akan mencatat keterlambatan setiap user pada alat ini. kedua proses
pegambilan absensi (resensi) hanya dapat dilakukan setelah pengguna melakukan
proses registrasi.
Kata Kunci : Absensi, Elektronik, Atmega328, Biometrika, Sidik Jari.

1
KATA PENGANTAR

ِ‫الرحيْم‬
َّ ِ‫الرحْ َمن‬
َّ ‫للا‬
ِّ ِ‫سم‬
ْ ِ‫ب‬
Syukur Alhamdulillah penulis ucapkan kepada Allah SWT yang telah
melimpahkan Rahmat dan Karunia-Nya sehingga penulis dapat menyelesaikan
Tugas Akhir ini. Shalawat dan salam senantiasa dilimpahkan kepada panutan umat
manusia Nabi besar Muhammad SAW.
Tugas Akhir yang berjudul “Rancang Bangun Absensi Elektronik
Berbasis Mikrokontroller Atmega328” disusun sebagai salah satu syarat untuk
mendapatkan gelar Sarjana Sains Terapan Program Studi Diploma Empat
(D4)Teknik Elektro Industri pada Jurusan Teknik Elektro Fakultas Teknik
Universitas Negeri Padang.
Dalam penyelesaian Tugas Akhir ini tidak terlepas dari bantuan dan
dukungan berbagai pihak, untuk itu melalui tulisan ini penulis ingin menyampaikan
ucapan terima kasih dengan setulus-tulusnya kepada:
1. Bapak Drs. Aswardi, M.T. selaku pembimbing I yang telah memberikan

pengarahan, bimbingan, koreksi dan petunjuk yang sangat berharga bagi

penulis.

2. Bapak Asnil, S.Pd, M.Eng dan Bapak Krismadinata, ST. MT, Ph. D., selaku

tim penguji yang telah memberikan masukan berupa kritikan dan saran demi

kesempurnaan Tugas Akhir ini.

3. Bapak Dr. Hansi Effendi, ST, M.Kom. selaku Pembimbing Akademik (PA)

yang telah memberikan pengarahan dan bimbingan kepada penulis dalam

menyelesaikan perkuliahan.

4. Ketua dan Sekretaris jurusan Teknik Elektro UNP yang telah memberikan

bantuan, dorongan, petunjuk dan kemudahan sehingga Tugas Akhir ini dapat

diselesaikan.

5. DR. Fahmi Rizal, M.PD., MT selaku Dekan Fakultas Teknik Universitas

Negeri Padang.

ii
6. Bapak dan ibu staf pengajar, karyawan dan karyawati Fakultas Teknik

Universitas Negeri Padang yang telah membantu dalam urusan perkuliahan.

7. Teristimewa untuk kedua orang tua penulis Situm dan Saban dan juga

saudara kandung penulis yaitu Feri Naldi, yang telah memberikan do’a dan

dukungan yang tak berhingga dalam masa perkuliahan hingga saat sekarang.

8. Keluarga besar Electrical Engineering terutama angkatan 2013 yang telah

memberikan dukungan, kritikan dan saran kepada penulis dalam penyusunan

Tugas Akhir ini.

9. Keluarga besar Tanners Team yang telah mengajarkan banyak sekali tentang

arti kehidupan kepada penulis.

10. Semua pihak yang turut membantu hingga selesainya Tugas Akhir ini yang

tidak dapat penulis sebutkan satu persatu, terima kasih.

Semoga segala bantuan yang telah diberikan menjadi kebaikan dan di ridhoi
oleh Allah SWT. Penulis menyadari Tugas Akhir ini masih jauh dari kesempurnaan
,untuk itu kritik dan saran yang bersifat membangun penulis harapkan demi
kesempurnaan Tugas Akhir ini. Penulis berharap semoga Tugas Akhir ini dapat
memberikan sumbangan pemikiran dan ilmu pengetahuan yang bermanfaat bagi
penulis khususnya dan pembaca pada umumnya. Amiin.....

Padang, Mei 2018

Penulis

iii
DAFTAR ISI

DAFTAR ISI

HALAMAN JUDUL ..............................................................................................1

ABSTRAK .............................................................................................................. i

KATA PENGANTAR ........................................................................................... ii

DAFTAR ISI ......................................................................................................... iv

DAFTAR TABEL .............................................................................................. viii

DAFTAR GAMBAR ............................................................................................ ix

DAFTAR LAMPIRAN ........................................................................................ xi

BAB I PENDAHULUAN .......................................................................................1

A. Latar Belakang .................................................................................. 1

B. Identifikasi Masalah .......................................................................... 2

C. Batasan Masalah................................................................................ 3

D. Rumusan Masalah ............................................................................. 3

E. Tujuan ............................................................................................... 3

F. Manfaat ............................................................................................. 4

BAB II LANDASAN TEORI ................................................................................5

A. Absensi .............................................................................................. 5

1. Sistem absensi konvensional ......................................................... 6

2. Sistem absensi dengan menggunakan kartu identitas ................... 6

iv
3. Sistem absensi dengan menggunakan pemindai hidup ................. 7

B. Mikrokontroller Atmega328 ............................................................. 8

1. Input/output (I/O) .......................................................................... 9

2. Komunikasi ................................................................................. 11

3. Bahasa Pemrograman Atmega328 .............................................. 11

4. Fitur Atmega328 .......................................................................... 17

5. Catu Daya Mikrokontroller Atmega328 ...................................... 19

C. Sensor Sidik jari .............................................................................. 20

1. Pengelompokan sidik jari ............................................................ 21

2. Klasifikasi Sidik Jari ................................................................... 21

3. Pengenalan Pola .......................................................................... 22

4. Fingerprint Recognition ............................................................. 25

5. Modul fingerprints ZFM60XSA ................................................. 26

D. Liquid Crystal Display (LCD) ........................................................ 26

E. Power Supply .................................................................................. 29

F. Komponen Pendukung .................................................................... 33

1. Real Time Clock (RTC) ............................................................... 33

2. Microsd-card module .................................................................. 35

G. Teknik Pemrograman ...................................................................... 36

1. Database (basis data) ................................................................... 37

v
2. Interfacing ................................................................................... 38

3. Bahasa Pemrograman C .............................................................. 38

BAB III PERANCANGAN ALAT .....................................................................40

A. Blok diagram ................................................................................... 40

B. Perancangan Mekanik ..................................................................... 41

1. Perancangan boks ........................................................................ 41

2. Perancangan Papan PCB ............................................................. 46

C. Rangkaian Komponen Sistem ......................................................... 47

1. Perancangan Catu Daya ............................................................... 47

2. Perancangan Sensor Fingerprints ............................................... 49

3. Perancangan Rangkaian Lcd ....................................................... 51

4. Perancangan Rangkaian microSD-card module .......................... 52

5. Perancangan Rangkaian Real Time Clock (RTC) ....................... 53

D. Pembuatan Alat ............................................................................... 54

E. Prinsip Kerja ................................................................................... 57

1. Pendaftaran .................................................................................. 57

2. Verifikasi ..................................................................................... 59

BAB IV PENGUJIAN DAN ANALISA .............................................................61

A. Tujuan Pengujian Alat..................................................................... 61

B. Instrumentasi Pengujian Alat .......................................................... 62

vi
C. Langkah Pengujian .......................................................................... 62

D. Pengujian dan Analisa Perangkat Keras ......................................... 63

1. Rangkaian Catu Daya .................................................................. 63

2. Sistim Minimum Mikrokontroller Atmega328 ........................... 70

3. Pengujian Liquid Crystal Display (LCD) .................................... 72

4. Pengujian RTC ............................................................................ 75

5. Pengujian Sensor Fingerprints .................................................... 78

6. Pengujian modul mikro sd ........................................................... 86

E. Pengujian dan Analisa Perangkat Lunak......................................... 88

1. Deklarasi Dan Konfigurasi .......................................................... 88

2. Program data fingerprints ............................................................ 98

3. Program data LCD RTC ........................................................... 103

4. Program data RTC ..................................................................... 107

5. Program data SD-card ............................................................... 108

F. Pengujian Rangkaian Secara Keseluruhan .................................... 113

BAB V KESIMPULAN DAN SARAN .............................................................118

A. Kesimpulan ................................................................................... 118

B. Saran .............................................................................................. 119

DAFTAR PUSTAKA .........................................................................................120

vii
DAFTAR TABEL

Tabel 1 Konfigurasi Pin LCD 16X4 ..................................................................... 28

Tabel 2 kegunaan pin pada microsd-card module................................................. 35

Tabel 3 spesifikasi PCB untuk mikrokontroller .................................................... 47

Tabel 4 Spesifikasi PCB untuk catu daya ............................................................. 47

Tabel 5 Spesifikasi catu daya ................................................................................ 48

Tabel 6 spesifikasi sensor fingerprints .................................................................. 49

Tabel 7 pengukuran tegangan rangkaian catudaya ............................................... 64

Tabel 8 pengujian tegangan logika pada mikrokontroller..................................... 70

viii
DAFTAR GAMBAR

Gambar 1 Pin Atmega328 ..................................................................................... 10

Gambar 2 memori mapping atmega328 ................................................................ 18

Gambar 3 Pola sidik jari Whorl, Arch dan Loop .................................................. 21

Gambar 4 Proses Klarifikasi ................................................................................. 22

Gambar 5 Proses identifikasi minutia ................................................................... 23

Gambar 6 cara kerja sensor fingerprints ............................................................... 25

Gambar 7 Bentuk Rangkaian LCD ....................................................................... 26

Gambar 8 rangkaian penyearah dengan dioda jembatan....................................... 29

Gambar 9 Bentuk gelombang keluaran penyearah ............................................... 30

Gambar 10 simbol transformator .......................................................................... 32

Gambar 11 rangkaian operasi RTC ....................................................................... 34

Gambar 12 rangkaian skematik microsd card module .......................................... 36

Gambar 13 Blok diagram ...................................................................................... 40

Gambar 14 detail pemotongan dan pembentangan akrilik .................................... 44

Gambar 15 desain alat ........................................................................................... 45

Gambar 16 Perancangan Papan PCB .................................................................... 46

Gambar 17 Rangkaian catu daya .......................................................................... 48

Gambar 18 Rangkaian Fingerprints ...................................................................... 49

Gambar 19 Rangkaian LCD .................................................................................. 51

Gambar 20 Perancangan Rangkaian Micro sd card module ................................. 52

Gambar 21 Rangkaian Real Time Clock .............................................................. 53

ix
Gambar 22 rangkaian secara keseluruhan ............................................................. 56

Gambar 23 flowchart registrasi ............................................................................. 58

Gambar 24 flowchart verifikasi ............................................................................ 60

Gambar 25 titik pengukuran rangkaian catu daya................................................. 63

Gambar 26 bentuk gelombang keluaran trafo sisi sekunder ................................. 66

Gambar 27 Gelombang keluaran setelah penyearah dioda ................................... 67

Gambar 28 Bentuk gelombang setelah filter kapasitor ......................................... 68

Gambar 29 Gelombang setelah ic regulator .......................................................... 69

Gambar 30 pengujian Program sistim minimum mikrokontroller atmega328 ..... 71

Gambar 31 Tampilan LCD tanpa Program ........................................................... 72

Gambar 32 Tampilan LCD sesudah didownloadkan program .............................. 74

Gambar 33 tampilan LCD setelah RTC diprogram melalui mikrokontroller ....... 78

Gambar 34 Pengujian modul fingerprints ZFM60XSA ........................................ 85

Gambar 35 pengujian sensor fingerprint pada rangkaian ..................................... 86

Gambar 36 tampilan pada LCD ............................................................................ 87

Gambar 37 tampilan pembacaan file pada kartu sd .............................................. 87

x
DAFTAR LAMPIRAN

lampiran 1 Program keseluruhan .........................................................................122

xi
BAB I

PENDAHULUAN

A. Latar Belakang

Perkembangan ilmu pengetahuan di segala bidang dalam era globalisasi

saat ini begitu pesat terutama dalam bidang it yang semakin maju seiring

dengan kebutuhan. Canggihnya dunia teknologi memaksa kita unntuk

mengikuti perkembangannya agar tidak tertinggal dari perkembangannya,

salah satunya yaitu teknologi dalam pengambilan absensi.

Absensi merupakan daftar pola kebiasaan ketidakhadiran dari tugas

atau kewajiban sedangkan menurut kamus besar bahasa indonesia, absen

adalah tidak bekerjanya seorang pegawai pada saat hari kerja, karena sakit,

izin, alpa atau cuti. Absensi adalah daftar administrasi ketidakhadiran

pegawai. (“mesinabsensi.co,ide; 2013)

Absensi memiliki fungsi yang sangat penting dalam dunia pekerjaan

salah satunya yaitu untuk menilai tingkat kerajinan pegawai berdasarkan

banyak atau sedikitnya seorang pegawai dalam mengambil cuti. Selain itu

absensi juga berfungsi untuk mengetahui jam masuk atau hari kerja pegawai.

Dewasa ini terdapat berbagai macam cara pengambilan absensi, di antaranya

yaitu dengan menggunakan kertas dan tandatangan atau disebut sebagai

absensi konvensional.

1
2

Adapun kelemahannya tandatangan dapat dengan mudah dipalsukan,

data mudah hilang dikarenakan tidak adanya sistem backup. Selain itu

terdapat pengambilan absensi dengan menggunakan kartu identitas cara ini

sudah dapat dibilang lebih maju jika dibandingkan dengan absensi

konvensional selain itu absensi ini juga sudah memiliki sistem penyimpanan

sendiri. Walaupun demikian proses absensi dengan menggunakan sistem

absensi tersebut tidak dapat dilakukan jika kartu identitas hilang atau

tertinggal.

Berkaitan dengan keadaan demikian, maka dikembangkan sebuah

mesin absensi digital dengan menggunakan sensor biometrik yang berfungsi

sebagai pengganti kartu identitas serta tanda tangan untuk melakukan proses

absensi dalam metode absensi. Untuk itu dibuatlah sebuah tugas akhir dengan

judul rancang bangun absensi elektronik dengan sensor fingerprints berbasis

Mikrokontroller Atmega328

B. Identifikasi Masalah

Berdasarkan latar belakang masalah di atas, dapat diidentifikasikan

beberapa masalah, pada Tugas Akhir ini adalah :

1. Kelemahan penggunaan pin pada pengambilan absensi menyebabkan

rendahnnya kinerja mesin absensi.

2. Pada absensi konvensional sangat sulit digunakan sebagai rekapitulai

sehingga keluarannya tidak bisa digunakan sebagai pengambil

keputusan oleh pimpinan.


3

3. Pencatatan absensi konvensional tidak bisa dilakukan secara baik,

sehingga menyebabkan kehilangan data.

4. terdapatnya kecurangan dalam praktik pengambilan absensi seperti

penitipan kartu identitas dan pemalsuan tandatangan.

C. Batasan Masalah

Dalam perancangan Tugas Akhir ini diperlukannya pembatasan ruang

lingkup untuk menghindari kerancuan pembahasan yang meluas dalam Tugas

Akhir ini di antaranya adalah :

1. Fingerprint digunakan sebagai sensor biometrik pada pembuatan tugas

akhir ini.

2. Alat ini masih berupa prototype dengan kapasitas pemakai sebanyak 20

orang.

3. Pusat pengendali utama alat ini adalah mikrokontroller atmega328.

D. Rumusan Masalah

Berdasarkan uraian dari latar belakang, identifikasi masalah, dan

batasan masalah di atas, maka rumusan masalah pada Tugas Akhir ini adalah

bagaimana merancang dan membuat mesin absensi elektronik dengan

menggunakan sensor biometrik berbasis mikrokontroller atmega328.

E. Tujuan

Tujuan dari Tugas Akhir ini adalah :

1. Membuat mesin absensi elektronik dengan sensor biometrik

berbasiskan mikrokontroller atmega328.


4

2. Menentukan kinerja mesin absensi berdasarkan hasil output pada

penyimpanan sistem basis data yang dimiliki oleh mesin absensi.

F. Manfaat

Manfaat dari Tugas Akhir ini adalah:

1. Terjadinya peningkatan sistem pengadministrasian karyawan.

2. Menghasilkan karyawan yang mampu untuk selalu tepat waktu ketika

datang ke tempat kerja.


BAB II

LANDASAN TEORI

Landasan teori adalah seperangkat definisi yang disusun rapi serta sistematis

tentang variabel-variabel dalam sebuah penelitian, adapun landasan teori

pendukung dalam pembuatan absensi elektronik dengan sensor fingerprints

berbasis Mikrokontroller Atmega328 yang akan dibahas adalah sebagai berikut :

A. Absensi

Pencatatan kehadiran sering dikenal dengan absensi. Ketidakhadiran

(absenteism) adalah kegagalan untuk melapor pada waktu kerja (pengabean,

2002). Dengan kata lain ketidakhadiran merupakan kegagalan seorang

karyawan untuk hadir di tempat kerja pada hari kerja. Ketidakhadiran berbeda

dengan terlambat ( latenes) yang menunjukkan kegagalan untuk datang tepat

waktu. Cara menghitung ketidakhadiran dengan membagi time lose yaitu

jumlah hari-hari yang hilang dengan frekuensi yaitu jumlah ketidakhadiran

selam satu periode.

Menurut (Julius, 1991) “absensi merupakan kegagalan pekerja pegawai

untuk melaporkan pekerjaan ketika mereka di jadwalkan bekerja”. Sedangkan

menurut Faisal Ali Ahmad (2006, 11) mengatakan bahwa “Absensi adalah

suatu kegiatan atau rutinitas yang dilakukan oleh karyawan untuk

membuktikan dirinya hadir atau tidak hadir dalam bekerja di suatu

perusahaan”.

Berdasarkan metodenya absensi dapat dibedakan menjadi :

5
6

1. Sistem absensi konvensional

Sistem konvensional adalah sebuah sistem absensi yang mana

dalam pengambilan data dan penyimpanannya menggunakan secarik

kertas, yang mana menjadikan sistem absensi ini menjadi sistem

absensi yang memiliki banyak kekurangan yaitu sistem absensi ini

mudah hilang karena belum terdapatnya media penyimpanan dalam

bentuk digital sehingga absensi ini juga mudah dicurangi dengan cara

memalsukan tandatangan para pegawai yang mengambil cuti.

2. Sistem absensi dengan menggunakan kartu identitas

Sistem absensi dengan menggunakan kartu identitas adalah

sebuah sistem absensi yang metode pengambilan datanya

menggunakan kartu identitas dari para pemegang kartu tersebut, sistem

absensi ini biasanya menggunakan pemindai kode bar. Kode bar yang

dimaksud di sini yaitu kode atau karakter yang mewakili nomor

identitas, yang dilengkapi dengan sebuah infrared sebagai pemindainya

dan telah dilengkap media penyimpanan data untuk disimpan pada

database dari sistem absensi tersebut. Sehingga menjadikan absensi

tersebut tidak mudah kehilangan data-data pentingnya. Sistem absensi

tersebut murah akan tetapi memiliki kelemahan yaitu para pemilik kartu

identitas akan menitipkan absensinya kepada temannya yang hadir di

samping itu jika kartu identitas tidak terbawa atau hilang maka pemilik

kartu tidak bisa melakukan proses absensi pada hari tersebut.


7

3. Sistem absensi dengan menggunakan pemindai hidup

Sistem absensi dengan menggunakan pemindai hidup

(biometrics) adalah sebuah pembaruan dari semua sistem absensi. Hal

ini disebabkan karena dalam pengambilan data sistem ini sudah

dilengkapi pemindai hidup. Dalam pembuatan tugas akhir ini

digunakan pemindai sidik jari (fingerprints), dengan menggunakan

metode pengambilan data yang dilengkapi pemindai sidik jari manusia.

Sistem absensi ini memiliki sebuah alat elektronik yang akan memindai

sidik jari yang disebut pemindai hidup(biometrics) yang kemudian akan

memprosesnya ke dalam bentuk digital menggunakan metode

pemrosesan citra digital. Dengan sistem absensi ini pegawai tidak

memerlukan kartu untuk dibawa ke mana-mana sehingga pegawai tidak

perlu khawatir terhadap tertinggalnya kartu identitas yang dimilikinya.

Namun sistem absensi ini lebih mahal jika dibandingkan dengan sistem

absensi konvensional dan sistem absensi dengan menggunakan kartu

identitas, dikarenakan sistem absensi ini menggunakan sidik jari maka

yang sering terjadi adalah tidak terbacanya sidik jari dikarenakan sidik

jari basah atau tergores oleh karena itu dalam tugas akhir ini disarankan

untuk memakai sidik jari jempol kiri karena tangan kiri lebih dominan

untuk tidak digunakan jika dibandingkan dengan tangan kanan

sehingga tangan kiri akan bisa lebih terhindar dari goresan karena

kecelakaan.
8

B. Mikrokontroller Atmega328

Mikrokontroller dapat dikatakan sebuah sistem komputer yang seluruh

atau sebagian besar elemennya dikemas dalam satu chip sehingga sering

disebut sebagai single chip mikrokomputer. Tidak seperti sistem komputer

yang mampu menangani berbagai macam program aplikasi, mikrokontroller

hanya dapat digunakan untuk suatu aplikasi saja. Mikrokontroller dapat

dikatakan sebuah sistem komputer yang seluruh atau sebagian Beberapa

tahun terakhir, mikrokontroller sangat banyak digunakan terutama dalam

pengontrolan robot. Seiring perkembangan elektronika, mikrokontroller

dibuat semakin kompak dengan bahasa pemrograman yang juga ikut berubah.

Salah satunya adalah mikrokontroller AVR (Alf and Vegard’s Risc processor)

ATmega328 yang menggunakan teknologi RISC (Reduce Instruction Set

Computing) di mana program berjalan lebih cepat karena hanya

membutuhkan satu siklus clock untuk mengeksekusi satu instruksi program.

Secara umum, AVR dapat dikelompokkan menjadi 4 kelas, yaitu kelas

ATtiny, keluarga AT90Sxx, keluarga ATmega, dan AT86RFxx. Pada

dasarnya yang membedakan masing-masing kelas adalah memori,

peripheral, dan fungsinya. Dari segi arsitektur dan instruksi yang digunakan,

mereka bisa dikatakan hampir sama.

ATmega328 adalah chip mikrokontroller 8-bit berbasis AVR-RISC

buatan Atmel. Chip ini memiliki 32 KB memori ISP flash dengan

kemampuan baca-tulis (read write), 1 KB EEPROM, dan 2 KB SRAM. Dari

kapasitas memori Flash nya yang sebesar 32 KB itulah chip ini diberi nama
9

ATmega328. Chip lain yang memiliki memori 8 KB diberi nama ATmega8,

dan ATmega16 untuk yang memiliki memori 16 KB.

1. Input/output (I/O)

Mikrokontroller atmega328 memiliki 20 pin I/O, yang terdiri dari

6 pin input analog dan 14 pin digital input/output. Untuk 6 pin analog

sendiri bisa juga difungsikan sebagai output digital jika diperlukan

output digital tambahan selain 14 pin yang sudah tersedia. Untuk

mengubah pin analog menjadi digital cukup mengubah konfigurasi

pada program.

Setiap 14 pin digital pada ATMega328 dapat digunakan sebagai

input atau output dengan menggunakan fungsi pinMode(),

digitalwrite(), dan digitalread(). Setiap pin dapat menyediakan atau

menerima maksimal 40 mA dan memiliki internal pull-up

resistor(diputuskan secara standar) 20-50 KOhms.

Beberapa pin memiliki fungsi sebagai berikut :

a. Serial :0(RX) dan 1(TX) digunakan untuk menerima (RX) dan

mengirim (TX) TTL data serial. Pin ini terhubung pada pin yang

koresponding dari USB FTDI ke TTL chip serial.

b. Interupt external : 2 dan 3. Pin ini dapat dikonfigurasikan untuk

trigger sebuah interrupt pada low value, rissing atau falling edge,

atau perubahan nilai.

c. PWM : 3, 5, 6, 10, dan 11. Mendukung 8 bit output PWM dengan

fungsi analog write.


10

d. SPI : 10 (SS), 11(MOSI), 13 (SCK). Pin ini digunakan untuk

penggunaan hardware eksternal.

e. LED : 13. Pin ini dibuat untuk koneksi LED ke digital PIN 13.

Ketika pin bernilai HIGH, LED hidup, ketika pin bernilai LOW

LED mati.

f. TWI, A4 atau SDA pin dan A5 atau SCL pin. Mendukung

komunikasi TWI.

g. Aref, Referensi tegangan untuk input analog. Digunakan dengan

analog Reference().

h. Reset

Gambar 1 Pin Atmega328


(arduino.cc)
11

2. Komunikasi

Atmega328 menyediakan UART TTL (5v) komunikasi serial,

yang tersedia pada pin digital 0 (RX) dan 1(TX). Sebuah ATmega328

ini menyediakan DART TTL (5V) komunikasi serial, yang tersedia

pada pin digital 0 (RX) dan 1 (TX). Sebuah

ATmega16U2 pada saluran board ini komunikasi serial melalui

USB dan muncul sebagai com port virtual untuk perangkat lunak pada

komputer. Firmware Arduino menggunakan USB driver standar COM

dan tidak ada driver ekstemal yang dibutuhkan. Namun, pada Windows,

file Inf diperlukan. Perangkat lunak Arduino termasuk monitor serial

yang memungkinkan data sederhana yang akan dikirim ke board

Arduino. RX dan TX LED di board akan berkedip ketika data sedang

dikirim melalui chip USB-to-serial dan koneksi USB ke komputer.

ATmega328 ini juga mendukung komunikasi I2C (TWI) dan SP!.

Fungsi ini digunakan untuk melakukan komunikasi inteface pada

sistem.

3. Bahasa Pemrograman Atmega328

Bahasa pemrograman Arduino adalah bahasa C. Tetapi bahasa

IOJ sudah dipermudah menggunakan fungsi-fungsi yang sederhana

sehingga pemula pun bisa mempelajarinya dengan cukup mudah.

Untuk membuat program Arduino dan mengupload ke dalam board


12

Arduino, Anda membutuhkan software Arduino IDE (Integrated

Development Enviroment).

Menurut Artanto, (2012:27) menjelaskan ada tiga bagian utama

dalam bahasa pemrograman arduino, yaitu struktur, variabel, dan fungsi

berikut penjelasan masing-masing bagian.

a. Struktur Program Arduino

Bagian struktur arduino ini meliputi kerangka program,

sintaks program, kontrol aliran program, dan operator. Berikut

uraian singkat dari keempat hal tersebut.

1) Kerangka program, kerangka program arduino sangat

sederhana, yaitu terdiri atas dua bIok, blok pertama

adalah void setupt) yang berisi kode program yang

hanya dijalankan sekali sesaat setelah arduino

dihidupkan atau di reset atau merupakan bagian

persiapan atau inisialisasi program dan blok keduaadalah

void loopO yang berisi kode program yang akan

dijalankan terus-menerus atau merupakan tempat untuk

program utama. Selain kedua biok tersebut, apabila

diperlukan bisa ditambahkan blok function. BJok

function merupakan bagian dari program yang dibuat

terpisah untuk melaksanakan tugas khusus atau fungsi

tertentu.
13

2) Sintaks Program, baik blok void setupO, void

looPO,maupun biok function harus diberi tanda kurung

kurawal buka "{" sebagai tanda awal program di biok

itu dan kurung kurawal tutup "}" sebagai tanda akhir

program. Tanda kurung kurawal buka dan kurung

kurawal tutup tersebut juga digunakan pada biok

kontrol program, seperti if, if-else, for-loop, while-

loop, dan do-while loop. Untuk menandai akhir sebuah

baris kode program digunakan tanda titik koma ";" Sebagai

contoh kerangka dan sintaks, perhatikan program berikut

ini: 1* berikut ini program blank yang sedikit diubah untuk

struktur arduino

Void set up ()

pinMode (13, OUTPUT); //kaki 13 terhubung dengan

LED

Void loop ()

digitalWrite (13, HIGH); //nyalakan LED

delay (1000); //tunggu 1 detik

padam 0; //memanggil function


14

Void padamO //function padam

digitalWrite (13, low); //padamkan LED

delay (1000); //tunggu 1 detik

3) Kontrol aliran program, meliputi instruksi-instruksi yang

digunakan untuk membuat percabangan dan perulangan.

Instruksi percabangan di antaranya adalah if, if-else, switch

case, break, continue, return dan go to. Sedangkan instruksi

perulangan di antaranya adalah for-loop, while-loop, do-

while-Ioop

4) Operator, berikut ini beberapa operator pada program

arduino:

a) Operator aritmatika di arduino meliputi (*),

pembagian (f), penjumlahan (+), pengurangan (-),

dan modulo (%). Modulo adalah perhitungan untuk

mendapatkan sisa basil pembagian.

b) Hasil operasi aritrnatika ini tergantung pada tipe

data operand. Contob untuk pernbagian operand 9

dengan operand 4 akan rnengbasilkan nilai 2 apabiJa

tipe data kedua operand adaJah int


15

c) Jika operand-nya berbeda tipe datanya, maka tipe

data yang paling besar yang digunakan

d) Karena operasi aritrnatika tergantung pad a

tipe data operand nya maka pilihlah tipe data

operand yang cukup besar untuk menarnpung hasil

operasinya.

e) Operator perbandingan di arduino meliputi berikut

ini :

X= Y /I x sama dengan y

X ! = y; II x tidak sarna dengan y

X < y; /I x lebih kecil dari y

X> y; II x lebih besar dari y

X < = y; I I x lebih kecil sarna dengan y

X > = y; II x lebib besar sarna dengan y

f) Operator boolean di arduino meliputi logika AND

(&&), OR (| | ) dan not (!), dengan penggunaan

seperti contoh berikut ini :

If (x > O && x < 5)

if(x> 0 || y> 0)

if(!x> 0)

g) Untuk melakukan operasi perhitungan pada level

bit (biner) dari sebuah variabel, gunakan operator-

operator bitwise berikut ini:


16

& (bitwise and)

! (bitwise or)

1\ (bitwise xor)

- (bitwise not)

« (bitwise left)

»(bitwise right)

h) Untuk mempersingkat penulisan instruksi, pembaca

dapat menggunakan perator compound berikut ini:

X++; // sama seperti x=x+1

X--; // sama seperti x=x-1

X+=y; // sama seperti x=x+y

b. Variabel dan Tipe Data

Berikut ini hal-hal yang berkaitan dengan variabel dan tipe

data pada program arduino :

1) Sebuah variabel digunakan untuk menyimpan sebuah nilai,

bisa diberi nama apa saja asalkan tidak sama dengan kode

program.

2) Sebuah variabel harus dideklarasikan terlebih dulu

sebelum digunakan. Tempat di mana variabel tersebut

dideklarasikan menentukan lingkup variabel.


17

3) Apabila sebuah variabel hanya menyimpan sebuah nilai,

maka untuk menyimpan kumpulan nilai, digunakan sebuah

array.

4) Setiap nilai di dalam array dapat dipanggil dengan nama

array dan nomor indeks nilai tersebut, di mana nomor

indeks dimulai dari O. Array harus dideklarasikan dulu tipe

datanya dan diberi nilai awal (opsional).

5) Apabila array menyimpan nilai berupa angka, maka

untuk menyimpan teks atau kumpulan huruf digunakan

sebuah string.

c. Fungsi

Bagian fungsi ini meliputi fungsi input output

digital,input output analog, advanced I/O, fungsi waktu,

fungsi matematika (termasuk random, instruksi byte dan bit),

serta fungsi komunikasi.

4. Fitur Atmega328

RISC (Reduce Instruction Set Computer) adalah arsitektur dari

atmega328, yang mana setiap proses eksekusi data lebih cepat dari pada

arsitektur CISC (Completed Instruction Set Computer).

Mikrokontroller ini memiliki beberapa fitur antara lain:

a. Memiliki EEPROM (Electrically Erasable Programmable Read

Only Memory) sebesar 1KB sebagai tempat penyimpanan data


18

semi permanen karena EEPROM tetap dapat menyimpan data

meskipun catu daya dimatikan

b. Memiliki SRAM (Static Random Access Memory) sebesar 2KB.

c. Memiliki pin I/O digital sebanyak 14 pin 6 diantaranya PWM

(Pulse Width Modulation) output.

d. 32 x 8-bit register serba guna.

e. Dengan clock 16 MHz kecepatan mencapai 16 MIPS.

f. 32 KB Flash memory dan pada mikrokontroller atmega328

memiliki bootloader yang menggunakan 2 KB dari flash memori

sebagai bootloader.

g. 130 macam instruksi yang hampir semuanya dieksekusi dalam

satu siklus clock.

Gambar 2 memori mapping atmega328


(arduino..cc)
19

5. Catu Daya Mikrokontroller Atmega328

Mikrokontroller Atmega328 dapat diaktifkan melalui koneksi

USB atau dengan catu daya eksternal. Sumber daya dipilih secara

otomatis. Untuk sumber daya Eksternal (non-USB) dapat berasal baik

dari adaptor AC-DC atau baterai. Adaptor ini dapat dihubungkan

dengan memasukkan 2.1mm jack DC ke soket listrik board. Baterai

dapat dimasukkan pada pin header Gnd dan Vin dari konektor DAYA.

Board dapat beroperasi pada pasokan eksternal dari 6 sampai 20

volt. Jika menggunakan tegangan kurang dari 6 volt tidak akan stabil.

Jika menggunakan lebih dari 12V, regulator tegangan bisa panas dan

merusak papan. Rentang yang dianjurkan adalah 7 sampai 12 volt.

Pin listrik yang tersedia adalah sebagai berikut:

a. VIN merupakan input tegangan ke board mikrokontroller

atmega328, pin tersebut dapat digunakan sebagai pemasok daya

dari steker listrik.

b. 5V merupakan pin output 5V yang telah diatur oleh regulator

papan mikrokontroller atmega328. Board dapat diaktifkan

dengan daya yang berasal dari steker listrik DC (7 – 12V),

konektor USB (5V), atau pin VIN board (7-12V).

c. GND pin Ground.

d. IOREF merupakan pin yang akan memberikan tegangan referensi

pada papan mikrokontroller atmega328 ketika mikrokontroller

beroperasi.
20

C. Sensor Sidik jari

Sensor merupakan salah satu bentuk perangkat keras yang digunakan

untuk menangkap suatu perubahan lingkungan yang terjadi di sekitar sensor

seperti objek, suhu, cahaya, suara, tekanan, dan sebagainya. Sensor dapat

berperan sebagai indra jika diintegrasikan pada suatu rangkaian elektronik.

Salah satunya seperti sidik jari yang merupakan sebagian dari teknologi

biometrika

Sifat yang dimiliki oleh sidik jari antara lain Perennial nature, yaitu

guratan-guratan pada sidik jari yang melekat pada kulit manusia seumur

hidup, Immutability, yaitu sidik jari seseorang tidak pernah berubah, kecuali

mendapatkan kecelakaan yang serius, dan Individuality, pola sidik jari adalah

unik dan berbeda untuk setiap orang. Ciri khas sidik jari yang digunakan

adalah guratan sidik jari yang dapat diidentifikasi dengan cara menganalisis

detail dari guratan-guratan sidik jari yang dinamakan dengan “minutiae”.


21

1. Pengelompokan sidik jari

Secara umum sidik jari dibagi menjadi 3 tipe pola utama, yaitu

arch, loops, dan whorls. Selain ini hanyalah variasi dari kombinasi

ketiga pola ini. Tipe loops merupakan pola yang paling banyak

ditemukan pada manusia. Sekitar 60% sidik jari bertipe loops, 30%

bertipe whorls, dan 10% bertipe arch.

2. Klasifikasi Sidik Jari

Klasifikasi sidik jari digunakan untuk mengelompokkan sidik jari

ke dalam tiga kelas yang ditentukan. Kelas-kelas tersebut adalah Arch,

Gambar 3 Pola sidik jari Whorl, Arch


dan Loop
(Badan Pengkajian dan Penerapan
Teknologi; 2010)
Loop, dan Whorl. Fungsi dari pengelompokan ini adalah untuk

memperkecil proses pencocokan minutia pada data dalam skala besar.

Klasifikasi dilakukan dengan tiga tahap, yaitu Tahap preprosessing,

yang terdiri dari segmentasi, dan Image Enhancement, Tahap ekstraksi,

yang terdiri dari Ridgevalley Orientation, dan Registration dengan

menggunakan algoritma R92, dan Tahap klasifikasi, algoritma


22

klasifikasi sidik jari ini menggunakan Probabilitic Neural Network

Multi-layer, Perceptron Neural Network, dan Pseudo-ridge Tracer.

Berikut adalah hasil proses dari beberapa tahap klasifikasi :

Gambar 4 Proses Klarifikasi


a) Hasil segmentasi
b) Hasil image enchanments
c) Hasil ridge-valley Orientation
(Badan Pengkajian dan Penerapan Teknologi; 2010)

3. Pengenalan Pola

Pola adalah entitas yang terdefinisi dan dapat diidentifikasi

melalui ciri-cirinya. Ciri-ciri tersebut digunakan untuk membedakan

suatu pola dengan pola lainnya. Ciri yang bagus adalah ciri yang

memiliki daya pembeda yang tinggi, sehingga pengelompokan pola

berdasarkan ciri yang dimiliki dapat dilakukan dengan keakuratan yang

tinggi.

Identifikasi sidik jari dilakukan untuk mencari letak minutia

pada citra sidik jari. Minutia adalah sebuah karakteristik sidik jari yang

banyak ditemukan pada sidik jari. Pada dasarnya minutia ada dua

macam, yaitu percabangan garis (bifurcation), dan garis buntu (Ridge


23

ending). Pada proses identifikasi, minutia-minutia ini akan dicatat

lokasinya berdasarkan koordinat (x,y) dan sudut yang membentuk

minutia tersebut (theta). Proses identifikasi ini dilakukan melalui

beberapa tahap, seperti, menggenerate image quality maps, binarisasi

image, deteksi minutia, dan Count Nighbour Ridges. Hasil dari

ekstraksi minutia ini, digunakan untuk proses matching antara sidik jari

penguji dengan sidik jari yang diuji. Proses matching dengan

menggunakan algoritma Bozorth3 yang dikembangkan oleh Allan S.

Bozorth. Algoritma ini menggunakan proses mathcing untuk lokasi

(x,y) dan sudut orientasi (theta). Pada dasarnya algoritma ini

menggunakan beberapa proses seperti, Construct Intra-Fingerprint

Minutia Comparison Tables, Constructan Inter-Fingerprint

Compatibility Table dan Traverse the Inter Fingerprint Compatibility

Table. Hasil dari beberapa prosesnya dapat dilihat pada gambar berikut:

Gambar 5 Proses identifikasi minutia


(Badan Pengkajian dan Penerapan Teknologi;
2010)
Identifikasi sidik jari dilakukan untuk mencari letak minutia pada

citra sidik jari. Minutia adalah sebuah karakteristik sidik jari yang

banyak ditemukan pada sidik jari. Pada dasarnya minutia ada dua
24

macam, yaitu percabangan garis (bifurcation), dan garis buntu (Ridge

ending). Pada proses identifikasi, minutia-minutia ini akan dicatat

lokasinya berdasarkan koordinat (x,y) dan sudut yang membentuk

minutia tersebut (theta). Proses identifikasi ini dilakukan melalui

beberapa tahap, seperti, menggenerate image quality maps, binarisasi

image, deteksi minutia, dan Count Nighbour Ridges.

Hasil dari ekstraksi minutia ini, digunakan untuk proses matching

antara sidik jari penguji dengan sidik jari yang diuji. Proses matching

dengan menggunakan algoritma Bozorth3 yang dikembangkan oleh

Allan S. Bozorth Algoritma ini menggunakan proses mathcing untuk

lokasi (x,y) dan sudut orientasi (theta). Pada dasarnya algoritma ini

menggunakan beberapa proses seperti, Construct Intra-Fingerprint

Minutia Comparison Tables, Constructan Inter-Fingerprint

Compatibility Table dan Traverse the Inter-Fingerprint Compatibility

Table
25

4. Fingerprint Recognition

Sebuah sistem fingerprint scanner memiliki dua pekerjaan, yakni

mengambil gambar sidik jari, dan memutuskan apakah pola alur sidik

jari dari gambar yang diambil sama dengan pola alur sidik jari yang ada

pada database. Ada beberapa cara untuk mengambil gambar sidik jari

seseorang, namun salah satu metode yang paling banyak digunakan

saat ini adalah optical scanning.

Gambar 6 cara kerja sensor fingerprints


(androidauthority.com)

Inti dari scanner optical adalah charge coupled device (CCD),

sistem sensor cahaya yang sama digunakan pada kamera digital dan

camcorder. CCD merupakan diode peka cahaya yang disebut photosite,

yang menghasilkan sinyal elektrik yang memberikan respons foton

cahaya. Setiap photosite merekam sebuah pixel, titik kecil yang

merepresentasikan cahaya dan membentuknya. Pixel-pixel ini


26

membentuk pola terang dan gelap dari sebuah gambar hasil scan sidik

jari seseorang. Pola terang dihasilkan oleh valley dan pola gelap

dihasilkan oleh ridge.

5. Modul fingerprints ZFM60XSA

Modul fingerprints ZFM60XSA merupakan sensor sidik jari

optikal, yang dapat mendeteksi sidik jadi dengan verifikasi yang sangat

sederhana. Modul sensor ini bekerja dengan otak utama berupa chip

DSP yang melakukan image rendering, kemudian melakukan kalkulasi,

feature-finding dan terakhir searching pada data yang sudah ada.

D. Liquid Crystal Display (LCD)

Menurut Nurcahyo (2012), “LCD atau Liquid Crystal Display adalah

suatu perangkat yang menggunakan teknologi kristal cair yang disusun

didalam kaca, kemudian dilengkapi rangkaian elektronik sehingga dapat

dikonfigurasi untuk menampilkan titik, garis, huruf, angka ataupun gambar”

Gambar 7 Bentuk Rangkaian LCD


(Setiawan, 2011: 25)
27

(p. 229). Bentuk rangkaian atau konfigurasi dari pin LCD seperti yang terlihat

pada Gambar di bawah ini:

Pada layar LCD, setiap matrik adalah susunan dua dimensi pixel yang

dibagi dalam bentuk baris dan kolom. Setiap pertemuan baris dan kolom

adalah sebuah LED yang terdapat pada sebuah bidang latar, yang merupakan

elemen kaca bagian belakang dengan sisi dalam yang ditutupi oleh lapisan

elektroda transparan. Cairan yang digunakan memiliki warna cerah pada saat

normal. Daerah-daerah tertentu pada cairan akan berubah warnanya menjadi

hitam ketika tegangan diterapkan di antara bidang latar dan pola elektroda

yang terdapat pada sisi dalam lempeng kaca bagian depan. Menurut Setiawan

(2011: 25), “Keunggulan LCD adalah LCD hanya menarik arus yang kecil

(beberapa mikro ampere), sehingga alat atau sistem menjadi portable karena

dapat menggunakan catu daya yang kecil. Keunggulan lainnya yaitu tampilan

yang diperlihatkan dapat dibaca dengan mudah di bawah terangnya sinar

matahari.

Secara umum, LCD dapat dikelompokkan menjadi dua macam yaitu

text LCD dan graphic LCD. Text LCD adalah LCD yang hanya mampu

menampilkan huruf dan angka, sedangkan graphic LCD adalah LCD yang

mampu menampilkan titik, garis dan gambar. LCD tidak banyak

memerlukan komponen pendukung. Hanya diperlukan satu resistor dan satu

variable resistor untuk memberi tegangan kontras pada matrik LCD. Agar

lebih jelas, pin-pin LCD dapat dilihat pada Tabel di bawah ini
28

Tabel 1 Konfigurasi Pin LCD 16X4

Nomor Simbol Kegunaan


Pin
1 VSS Ground
2 VDD 3v atau 5v
3 V0 Tegangan untuk kontras LCD
4 RS Register pemilih sinyal
5 R/W H=baca(modul LCD ke
mikrokontroller);
L=tulis(mikrokontroller ke
LCD
6 E Pengaktifan
(LCD sinyal
16x4 datasheet)
7-14 DB0...7 H/L Jalur bus data 0...7
15 A/VEE + 4.2 V untuk LED (RA = 0
Ω)/keluaran tegangan negatif
16 K Catu daya untuk B/L (0 V)
Operasi dasar pada LCD terdiri dari empat, yaitu instruksi mengakses

proses internal, instruksi menulis data, instruksi membaca kondisi sibuk dan

instruksi membaca data. ROM pembangkit sebanyak 192 tipe karakter, tiap

karakter dengan huruf 5x7 dot matrik. Kapasitas pembangkit RAM 8 tipe

karakter (membaca program), maksimum pembacaan 80x8 bit tampilan

data. Perintah utama LCD adalah Display Clear, Cursor Home, Display

On/Off, Cursor On/Off, Display Character Blink, Cursor Shift, dan Display

Shift.

LCD membutuhkan tegangan dan daya yang kecil sehingga sangat

popular untuk aplikasi kalkulator, arloji digital, dan instrumen elektronik

lain seperti Global Positioning System (GPS), bargraph display, dan

multimeter digital. LCD umumnya dikemas dalam bentuk Dual Inline

Package (DIP) dan mempunyai kemampuan untuk menampilkan beberapa

kolom dan baris dalam satu panel. Untuk membentuk pola, baik itu karakter
29

maupun gambar, ada kolom dan baris secara bersamaan digunakan metode

screening. Metode screening adalah mengaktifkan daerah perpotongan

suatu kolom dan suatu baris secara bergantian dan cepat, sehingga seolah-

olah semuanya aktif. Penggunaan metode ini bertujuan untuk menghemat

jalur yang digunakan untuk mengaktifkan panel LCD.

E. Power Supply

Power supply adalah sebuah piranti yang berfungsi sebagai penyuplai

tegangan listrik untuk piranti lain, sedangkan menurut Grace Natali (2003, p.

43) berpendapat bahwa Power supply adalah sebuah rangkaian yang bekerja

untuk mengubah tegangan AC menjadi tegangan DC. Power supply tidak

menghasilkan noise sehingga masuknya aliran listrik tetap stabil. Beberapa

radio atau tape kecil menggunakan baterai sebagai sumber tenaga namun

sebagian besar menggunakan listrik PLN sebagai sumber tenaganya. Untuk

itu dibutuhkan suatu rangkaian yang dapat mengubah arus listrik bolak-balik

dari PLN menjadi arus listrik searah. Ada banyak jenis atau variasi rangkaian

Gambar 8 rangkaian penyearah dengan dioda jembatan


(Muhammad H. Rashid, 2001: 141)
30

catudaya dengan segala kelebihan dan kekurangannya. Namun secara prinsip

rangkaian catudaya terdiri atas transformator, dioda dan condensator.

1. Penyearah

Penyearah digunakan untuk mengarahkan gelombang bolak-balik

(AC) menjadi DC yang berasal dari jaringan jala-jala listrik. Pada alat

ini digunakan penyearah gelombang penuh dengan menggunakan

empat dioda jembatan. Dapat dilihat pada Gambar 8 .

Selama setengah siklus tegangan sekunder yang positif dioda D1

dan D4 mengalami pra-tegangan maju sehingga tegangan beban

mempunyai polaritas seperti yang ditunjukan tanda kurang pada

sebelah kanan dan tanda tambah pada sebelah kiri. Selama setengah

siklus negatif D2 dan D3 mengalami pra-tegangan maju dan sekali lagi

tegangan beban mempunyai polaritas kurang dan tambah seperti yang

ditunjukkan gambar, jadi untuk kedua setengah siklus, tegangan beban

mempunyai polaritas yang sama karena arus beban selalu mengalir

Gambar 9 Bentuk gelombang keluaran penyearah


(Muhammad H. Rashid, 2001: 140)
31

dalam arah yang sama tanpa memperhatikan dioda mana yang sedang

menghantar. Bentuk – bentuk gelombang keluaran dari penyearah

gelombang penuh dapat dilihat pada gambar di bawah :

frekuensi sudut pada sumber 𝜔 = 2𝜋/𝑇, juga dapat dituliskan :

1 𝜋
𝑉𝑑𝑐 = ∫ 𝑣 𝑠𝑖𝑛 𝜔 𝑡𝑑(𝜔𝑡)
2𝜋 0 𝑚

Jadi,

𝑉𝑚
setengah gelombang 𝑣𝑑𝑐 = = 0,318𝑉𝑚
𝜋

Dalam hal ini pada penyearah gelombang penuh pada gambar 2,

mengindikasi bahwa 𝑉𝐿 (𝑡) = 𝑉𝑚 |𝑠𝑖𝑛 𝜔𝑡| untuk semua siklus setengah

penuh, baik yang negatif ataupun yang positif. Karenanya dapat

dituliskan sebuah rumus:

1 𝜋
𝑉𝑑𝑐 = ∫ 𝑉𝑚 𝑠𝑖𝑛 𝜔𝑡 𝑑(𝜔𝑡 )
𝜋 0

Jadi,

2𝑣𝑚
gelombang penuh 𝑉𝑑𝑐 = = 0,636𝑉𝑚
𝜋

Maka tegangan rata-rata dapat dihitung dengan rumus :

1 𝑇
𝑉𝑟𝑚𝑠 = [ ∫ 𝑉𝐿2 (𝑡)𝑑𝑡]
𝑇 0

Dalam hal ini pada penyearah setengah gelombang berlaku

vrms=0 untuk setengah siklus negatifnya yang dapat dituliskan dengan

rumus :
32

1 𝜋
𝑉𝑟𝑚𝑠 = √ ∫ (𝑉 𝑠𝑖𝑛 𝜔𝑡)2 𝑑(𝜔𝑡)
2𝜋 0 𝑚

Atau,

𝑉𝑚
setengah gelombang 𝑉𝑟𝑚𝑠 = = 0,5𝑉𝑚
2

Dalam hal tersebut berlaku Vrms(t)=Vm|sin wt | untuk semua

siklus setengah gelombang untuk sikus negatif dan positifnya yang

dapat dituliskan dengan rumus :

1 𝜋
𝑉𝑟𝑚𝑠 = √ ∫ (𝑉𝑚 sin 𝜔𝑡)2 𝑑(𝑑𝜔𝑡)
𝜋 0

Atau,

𝑉𝑚
gelombang penuh 𝑉𝑟𝑚𝑠 = = 0,707 𝑉𝑚
√2

Hasil dari semua rumus adalah seperti yang diharapkan karena

nilai tegangan rata-rata harus sama dengan tegangan AC murni.

2. Penurun Tegangan

Komponen utama yang bisa digunakan untuk menurunkan

tegangan adalah transformator. Transformator terdiri dari dua buah

Gambar 10 simbol transformator


(PC Sen, 2012: 69)
33

lilitan yaitu lilitan primer (N1) dan lilitan sekunder (N2) yang dililitkan

pada suatu inti yang saling terisolasi atau terpisah antara satu dengan

yang lain. Besar tegangan pada lilitan primer dan lilitan sekunder

ditentukan oleh jumlah lilitan yang terdapat pada bagian primer dan

sekundernya.

Berikut rumus perbandingan trafo:

𝑁1 𝑉2 𝐼2
= 𝑉1 . 𝐼1 = 𝑉2 . 𝐼2 = =
𝑁2 𝑉1 𝐼1

Keterangan:

- V1 = tegangan primer (volt)

- V1 = tegangan sekunder (volt)

- N1 = lilitan primer

- N2 = lilitan sekunder

F. Komponen Pendukung

Untuk merancang rangkaian-rangkaian pada suatu sistem, dibutuhkan

komponen-komponen elektronik yang memiliki fungsi kerja yang berbeda.

Komponen-komponen pendukung yang digunakan pada perancangan sistem

absensi elektronik ini adalah sebagai berikut:

1. Real Time Clock (RTC)

real-time clockc (RTC) adalah penunjuk waktu berdaya rendah,

yang memiliki format full biner-coded decimal (BCD), pada penunjuk


34

waktu yang dapat menunjukkan jam / kalender . Alamat dan data

ditransfer secara serial melalui bus dua jalur dan dua arah. RTC

menyediakan informasi detik, menit, jam, hari, tanggal, bulan, dan

tahun. Tanggal akhir bulan disesuaikan secara otomatis dengan bulan-

bulan yang kurang dari 31 hari, termasuk koreksi untuk tahun kabisat.

Jam beroperasi dalam format 24 jam atau 12 jam dengan indikator AM

/ PM. Rtc memiliki sirkuit power-sense built-in yang mendeteksi

kegagalan daya dan akan secara otomatis beralih ke persediaan daya

cadangan, operasi pencatatan waktu akan terus berlanjut untuk

sementara dengan menggunakan persediaan daya cadangan.

Keakuratan jam bergantung pada keakuratan kristal, kecocokan

antara beban kapasitif rangkaian osilator, dan beban kapasitif di mana

kristal diratakan. Kesalahan dapat disebabkan oleh perubahan frekuensi

kristal yang disebabkan oleh pergeseran suhu. Sirkuit eksternal yang

Gambar 11 rangkaian operasi RTC


(RTC datasheet)
35

digabungkan ke sirkuit osilator dapat mengakibatkan jam berjalan lebih

cepat.

2. Microsd-card module

Modul (MicroSD Card Adapter) adalah modul pembaca kartu

Micro SD, melalui sistem file dan antarmuka driver SPI, agar

mikrokontroller dapat membaca dan menulis kartu MicroSD.

Tabel 2 kegunaan pin pada microsd-card module


Nama Pin Kegunaan

GND Ground

VCC power supply

MISO SPI bus

MOSI SPI bus

SCK SPI bus

CS Chip untuk memilih sinyal

(microsd-card module datasheet)


36

Modul ini memiliki fitur sebagai berikut : Mendukung kartu

Micro SD, kartu Micro SDHC (kartu kecepatan tinggi), tingkat

konversi papan sirkuit dengan antarmuka 5V atau 3.3V, catu daya yang

didukung adalah 4.5V ~ 5.5V, regulator tegangan 3.3V pada papan

rangkaian, komunikasi SPI adalah komunikasi antarmuka standar yang

Gambar 12 rangkaian skematik microsd card module


digunakan pada modul ini.

G. Teknik Pemrograman

Teknik Pemrograman adalah suatu teknik yang digunakan untuk

memprogram sebuah perancangan suatu sistem yang dalam hal perancangan

tugas akhir ini adalah sebagai berikut :


37

1. Database (basis data)

Database atau Basis data adalah mekanisme yang

digunakan untuk menyimpan data atau informasi (stephen &

plew, 2000) sedangkan menurut Siberschatz et al. (2005), basis

data adalah kumpulan data yang berisi informasi yang sesuai

untuk sebuah perusahaan jadi basis data adalah sekumpulan data

yang berisi informasi yang bisa dibaca oleh komputer maupun

manusia yang berguna untuk perusahaan. Terdapat bagian-bagian

penting di dalam basis data yaitu di antaranya :

a. Entity, adalah subjek atau konsep yang informasinya

direkam.

b. Atribut, setiap entity mempunyai atribut atau sebutan untuk

mewakili suatu entity.

c. Data value (nilai atau isi data), adalah data aktual atau

informasi yang disimpan pada tiap data elemen atau atribut.

d. Record / Tuple, kumpulan elemen-elemen yang saling

berkaitan menginformasikan tentang suatu entity secara

lengkap. Suatu record mewakili satu data atau informasi

tentang seseorang.

e. File, adalah suatu kumpulan record yang saling

berhubungan. File dibuat bila diperlukan suatu kumpulan

record tertentu. Data yang dikumpulkan dari sumber-

sumber dokumen baru, atau mengambil record dari file


38

yang sudah ada dan disusun kembali ke dalam file baru.

Biasanya penyusunan record didasarkan pada suatu key

record tertentu. Oleh karena itu record yang sama dapat

diurut menurut suatu key record lain untuk file kedua.

2. Interfacing

Interfacing adalah suatu teknik yang bertujuan untuk

menghubungkan piranti elektronika satu dengan piranti

elektronika lainnya ataupun menghubungkan suatu peralatan

elektronika dengan manusia. Teknik ini dapat dijalankan melalui

perangkat lunak berupa program dan perangkat keras berupa IC,

onboard-chipsets,

3. Bahasa Pemrograman C

Bahasa pemrograman C merupakan salah satu bahasa

pemrograman komputer. Dibuat pada tahun 1972 oleh Dennis

Ritchie untuk Sistem Operasi Unix di Bell Telephone

Laboratories. Meskipun C dibuat untuk memprogram sistem dan

jaringan komputer namun bahasa ini juga sering digunakan dalam

mengembangkan software aplikasi. C juga banyak dipakai oleh

berbagai jenis platform sistem operasi dan arsitektur komputer,

bahkan terdapat beberepa compiler yang sangat populer telah

tersedia. C secara luar biasa memengaruhi bahasa populer

lainnya, terutama C++ yang merupakan extensi dari C. Berikut


39

ini adalah contoh program sederhana yang akan mencetak kalimat

"Hello, World!" dengan menggunakan pustaka stdio.h (ANSI C):

#include <stdio.h>

int main(void) {

printf("Hello, World!\n");

return 0;

}
BAB III

PERANCANGAN ALAT

A. Blok diagram

Blok diagram adalah rancangan yang menggambarkan secara global

mengenai sistem yang dirancang dari sistem informasi di dalam satu

organisasi dengan adanya batasan pada sistem. Dalam hal ini blok diagram

berfungsi sebagai media yang terdiri dari suatu proses. Adapun blok diagram

pada tugas akhir ini dapat dilihat dalam gambar berikut :

Gambar 13 Blok diagram

40
41

a. Blok input pada perancangan alat ini adalah sidik jari dan pemindai

sidik jari

b. Blok catu daya pada perancangan alat ini adalah catu daya dc 5 volt

untuk memberikan catu daya pada blok input dan 12 volt untuk catu

daya pada blok kontrol

c. Blok kontrol pada perancangan alat ini adalah mikrokontroller

atmega328 yang sekaligus berfungsi sebagai database

d. Blok output pada alat ini adalah LCD

B. Perancangan Mekanik

Perancangan mekanik merupakan hal yang sangat penting dalam

pembuatan tugas akhir ini, karena dengan perancangan mekanik barulah alat

dapat diuji. Perancangan mekanik pada pembuatan tugas akhir ini meliputi

perancangan boks, dan perancangan papan pcb .

1. Perancangan boks

Boks adalah sebuah benda yang berbentuk persegi atau persegi

panjang dan berfungsi untuk menaruh benda, pada perancangan tugas

akhir ini bagian kanan boks akan disediakan satu tombol yang

berfungsi sebagai tombol registrasi, dan tombol yang lainya berfungsi

sebagai tombol verifikasi. Lalu pada bagian depan akan disediakan

tombol Pushbutton yang berfungsi sebagai input untuk memilih nomor

identitas sebelum melakukan pembacaan sidik jari untuk pertama kali,


42

kemudian di dalam boks ini juga telah disediakan sebuah tampilan lcd

yang berfungsi sebagai output pada alat ini. Bentuk boks alat ini adalah

persegi panjang dengan menggunakan bahan yang terbuat dari akrilik,

boks memiliki ukuran panjang 30 cm, lebar 15 cm, dan tinggi 15 cm.
43
44

Gambar 14 detail pemotongan dan pembentangan akrilik


45

Gambar 15 desain alat


46

2. Perancangan Papan PCB

PCB(Printed Circuit Board) atau papan rangkaian tercetak, PCB

berfungsi sebagai penghubung komponen-komponen elektronika. Pada

pembuatan tugas akhir ini papan pcb yang digunakan untuk

mikrokontroller atmega328 adalah papan pcb polos sedangkan

rangkaian catu daya adalah papan pcb bolong atau biasa disebut papan

pcb matrik. Untuk mikrokontroller atmega328 proses pemasangan

komponen dan penyolderannya mengacu kepada dua board arduino

uno yang digabungkan menjadi satu melalui pin i2c,

Gambar 16 Perancangan Papan PCB

Papan PCB yang digunakan memiliki spesifikasi :


47

Tabel 3 spesifikasi PCB untuk mikrokontroller


Merek Pertinax
Tipe Fiberfr4
Ukuran 100x200mm

Tabel 4 Spesifikasi PCB untuk catu daya


Merek Maskot Circuit
Tipe PCB 002
Ukuran 5x7 cm
Jumlah lubang 432
Jarak Lubang 2,54 mm
C. Rangkaian Komponen Sistem

Rangkaian komponen sistem pada Tugas Akhir ini merupakan

rangkaian yang dibentuk oleh komponen-komponen elektronika pasif dan

aktif yang merupakan suatu satuan untuk pemrosesan isyarat (signal

processing). Dalam perancangan rangkaian elektronik: pada Tugas Akhir ini

meliputi beberapa perancangan rangkaian elektronik:, di antaranya yaitu

rangkaian catu daya (power supply), perancangan fingerprints sensor,

rangkaian RTC dan rangkaian LCD, yang akan dijelaskan sebagai berikut :

1. Perancangan Catu Daya

Catu daya adalah sebuah piranti yang berguna sebagai sumber

listrik untuk piranti lain, untuk mendukung kerja alat pada perancangan

tugas akhir ini. maka, dibuatlah sebuah catu daya yang memiliki

spesifikasi seperti tertera pada tabel berikut :


48

Tabel 5 Spesifikasi catu daya

Nama komponen Spesifikasi Jumlah

Trafo ct Stepdown 2 ampere 1

Kapasitor 220 uf 16 Volt 2

Dioda Bridge 50 ampere 1

Kapasitor 470 uf 15 Volt 2

pada perancangan catu daya pada alat ini memiliki 2 keluaran

yang bertujuan sebagai 5 volt dc untuk masukkan ke sensor fingerprints

Gambar 17 Rangkaian catu daya


dan 12 volt dc untuk masukkan ke lcd dan komponen-komponen

pendukung lain melalui mikrokontroller.


49

2. Perancangan Sensor Fingerprints

Rangkaian sensor fingerprints adalah sebuah sensor biometrik

yang mana akan mengukur atau mendeteksi jari manusia berdasarkan

pola sidik jari yang dimiliki oleh manusia, rangkaian sensor fingerprint

dapat dilihat pada gambar di bawah ini :

Gambar 18 Rangkaian Fingerprints

Spesifikasi dari sensor fingerprints yang digunakan pada

perancangan alat ini dapat dilihat pada tabel di bawah :

Tabel 6 spesifikasi sensor fingerprints


Prosesor Synochip DSP AS606 120MHz

Supply voltage DC 4V - 6.0V

Operating Current 65mA


50

Peak current 95mA

Fingerprint image time 1 .0 seconds

Window area 14.5mm x 19.4 mm

Signature File 256 bytes

Template files 512 bytes

Storage capacity 162 (internal storage), 1000 (PC

Application)

False Accept Rate (FAR): 0 .001% (security level 3)

False Reject Rate (FRR): 1 .0% (security level 3)

Search time: 1 .0 seconds (1: 500 average)

PC interface UART (TTL logic level)

Baud rate (UART) (9600 x N)bps (N=1-12,N default

6, equal 57600bps)

Lighting Long light/Flashing(Green Light)

Dimensions (L x W x H) : 56mm * 20mm * 20.5mm

Kabel Merah Vcc 4V - 6V

Kabel Hijau Serial TTL TX

Kabel Putih Serial TTL RX

Kabel Hitam GND


51

3. Perancangan Rangkaian Lcd

LCD (Liquid Crystal Display) adalah suatu jenis media tampil

yang menggunakan kristal cair sebagai penampil utama. LCD sudah

digunakan di berbagai bidang misalnya alal–alat elektronik seperti

televisi, kalkulator, atau pun layar komputer. Pada perancangan tugas

akhir ini LCD yang digunakan ialah LCD dot matrix dengan jumlah

karakter 16 x 4. LCD sangat berfungsi sebagai penampil yang nantinya

akan digunakan untuk menampilkan status kerja alat. Rangkaian LCD

berfungsi untuk menampilkan informasi yang diperlukan. Pada LCD

16x 4 yang digunakan pada pembuatan Tugas Akhir ini memiliki 14 pin

yang mana pin 1 dan pin 5 harus di ground-kan untuk pin 4, 6, 11, 12,

13 dan 14 harus diberi tegangan +5 volt untuk Rangkaiannya dapat

dilihat pada gambar di bawah :

Gambar 19 Rangkaian LCD


52

4. Perancangan Rangkaian microSD-card module

Micro-sd card module merupakan alat penyimpanan data yang

berbentuk segi pajang dengan ukuran 42x24x12MM. digunakan

sebagai storage media, micro-sd card module akan menyimpan data-

data perekaman sidik jari dari fingerprints scanner yang mana

Gambar 20 Perancangan Rangkaian Micro sd card


module
rangkaiannya dapat dilihat pada gambar berikut :
53

5. Perancangan Rangkaian Real Time Clock (RTC)

Real time clock atau RTC merupakan sebuah modul yang

berfungsi untuk mengatur waktu pada rangkaian sistem, DS1307 adalah

IC serial real time clock 8 pin dengan konsumsi daya rendah,

menggunakan format full binary coded decimal (BCD) pada pengaturan

tanggal dan kalender serta memiliki nonvolatile SRAM sebesar 56 byte.

Alamat dan data dikirim secara serial melalui 2 jalur dan 2 arah. Jam

dan tanggal dilengkapi dengan informasi detik, menit, jam, hari,

tanggal, bulan serta tahun. Setiap akhir bulan secara otomatis tanggal

akan berubah sesuai dengan tanggal pada bulan berikutnya, sama

halnya dengan akhir tahun maka akan berubah sesuai tahun yang baru.

Jam dapat di set dengan format 24 jam atau 12 jam. DS1307

menggunakan teknologi built-in power sense circuit yang dapat

mengetahui adanya kesalahan pada catu daya dan secara otomatis akan

berubah menggunakan catu daya pada baterai. Agar pembuatan sistem

Gambar 21 Rangkaian Real Time Clock


54

absensi pada tugas akhir ini dapat mengetahui waktu di mana absensi

ini dipasang maka diperlukan sebuah pewaktu yang mana rangkaian

dari pewaktu tersebut dapat dilihat pada gambar berikut :

D. Pembuatan Alat

Pembuatan alat pada Tugas Akhir ini dimulai dengan membuat layout

PCB, pemindahan jalur ke papan PCB sesuai dengan gambar rangkaian,

proses pelarutan, pembersihan ulang, pengeboran, serta pemasangan

komponen. Proses yang dilakukan dalam pembuatan rangkaian ini antara lain

1. Pembuatan Layout PCB.

Pembuatan Layout PCB dapat dilakukan dengan dua cara, yaitu

dengan cara manual dan bisa juga dengan menggunakan software

seperti Eagle. Pembuatan secara manual dapat dilakukan dengan cara

menulis langsung layout pada PCB dengan cara manual. Sedangkan

jika kita menggunakan software kita cukup membuat gambar rangkaian

lalu dicetak ke kertas HVS selanjutnya dipindahkan ke PCB.

2. Pemindahan Jalur.

Sebelum memindahkan layout ke permukaan papan PCB

sebaiknya permukaan PCB dibersihkan terlebih dahulu. Cara untuk


55

membersihkannya bisa menggunakan kertas amplas yang halus atau

menggunakan sabun cuci. Ini bertujuan agar permukaan PCB bersih

dari kotoran dan debu yang bisa mengakibatkan proses pemindahan

layout tidak maksimal. Cara untuk memindahkan layout pada

permukaan PCB, penulis menggunakan teknik sablon Caranya, gambar

layout yang telah dibuat, dicetak menggunakan printer. Hasil dari

cetakan tersebut kemudian di foto kopi kekertas OHP.

3. Proses Pelarutan.

Setelah proses pembuatan layout PCB selesai langkah selanjutnya

adalah proses pelarutan. Proses ini berfungsi untuk membuang tembaga

pada permukaan PCB yang tidak dibutuhkan. Adapun alat dan bahan

yang diperlukan pada proses ini adalah pelarut Ferit Chloride (FeCh),

air panas, dan wadah.

4. Pembersihan Ulang.

Setelah proses pelarutan pada PCB selesai, bersihkan permukaan

PCB dari sisa-sisa larutan ferit chloride tadi. Cara untuk

membersihkannya bisa menggunakan air bersih. Setelah dibersihkan,

amplas permukaan PCB dengan menggunakan kertas amplas yang

halus agar nanti pada saat penyolderan timah melekat dengan baik.

5. Pengeboran.
56

Pengeboran dilakukan menggunakan bor sebagai tempat

kedudukan tiap komponen menurut letak komponen pada rangkaian.

Pengeboran dilakukan agar komponen-komponen yang dibutuhkan bisa

dipasang pada PCB (printed Circuit Board) dengan baik dan rapi.

6. Pemasangan Komponen.

Merupakan proses akhir dari pembuatan suatu rangkaian. Agar

tidak terjadi kesalahan dalam pemasangan komponen yang bisa

mengakibatkan komponen rusak maka ada beberapa hal yang harus

diperhatikan yaitu polaritas komponen dan daya tahan komponen

Gambar 22 rangkaian secara keseluruhan


terhadap panasnya solder.
57

E. Prinsip Kerja

1. Pendaftaran

Saat alat diaktifkan dengan menekan tombol ok maka alat siap

untuk memulai proses pendaftaran(enrolll), Pilih nomor Id dengan cara

tekan tombol panah keatas atau kebawah lalu tekan tombol ok untuk

mengkonfirmasi. scan sidik jari yang mau didaftarkan ke sensor sidik

jari dengan memperhatikan lampu LED yang bewarna hijau, lepas dan

scan kembali sidik jari yang ingin didaftarkan..


58

Gambar 23 flowchart registrasi


59

2. Verifikasi

Dengan menekan tombol start setelah sensor siap untuk

digunakan dengan memperhatikan indikator lampu hijau, maka user

meletakkan jari pada permukaan sensor (pastikan jari yang diletakkan

sama dengan jari di saat registrasi ) Citra Sidik jari yang diambil

dibandingkan dengan basis data yang ada. Bila data pada proses

verifikasi sama dengan data yang ada pada basis data maka proses

presensi akan dilanjutkan dengan menampilkan nomor user pada LCD.

Namun bila data pada proses verifikasi tidak sama dengan data yang

ada pada basis data maka proses akan ditolak dan user harus

mendaftarkan jari atau memnsccan jari yang telah didaftarkan

sebelumnya.
60

Gambar 24 flowchart verifikasi


BAB IV

PENGUJIAN DAN ANALISA

Suatu peralatan atau program dapat dikatakan bekerja dengan baik apabila

telah disertai dengan pembuktian terhadap fungsi kera dari peralatan tersebut. Pada

bab ini akan dijelaskan mengenai cara pengujian dari perangkat keras (hardware).

Dari pengujian ini akan didapatkan data-data maupun bukti-bukti hasil akhir dari

kenyataan bahwa perangkat keras yang telah dibuat bisa bekerja dengan baik dan

dapat digabungkan dengan perangkat lunak (software). Berdasarkan data-data dan

bukti-bukti tersebut dapat dilakukan analisa terhadap proses kerja yang nantinya

dapat digunakan untuk menarik kesimpulan dari apa yang telah dibuat dalam Tugas

Akhir ini.

A. Tujuan Pengujian Alat

Setelah pembuatan alat dan perangkat lunak selesai, selanjutnya yang

perlu dilakukan adalah pengujian dan analisa alat yang bertujuan untuk :

1. Mengukur dan melakukan analisa setiap rangkaian apakah sudah

berjalan dengan baik dan benar sesuai dengan rancangan modul

program

2. Mengukur tegangan yang masuk ke mikrokontroller apakah tidak

melebihi tegangan kerja +5Vdc, dengan kelebihan beban tersebut dapat

mengakibatkan rusaknya mikrokontroller, dan selanjutnya mengukur

tegangan keluaran dari driver yang digunakan apakah telah sesuai

dengan logika pada perancangan.

61
62

3. Mengetahui apakah program yang dibuat dapat melakukan output

sesuai dengan yang diinginkan berdasarkan rancangan modul program.

B. Instrumentasi Pengujian Alat

Instrumentasi yang digunakan untuk pengukuran rangkaian adalah

sebagai berikut:

1. Multimeter

Multimeter berfungsi untuk mengukur tegangan, baik AC

maupun DC pada rangkaian catu daya dan sistem minimum dari alat

absensi elektronik dengan sensor fingerprints berbasis Mikrokontroller

Atmega328. Multimeter yang digunakan adalah multimeter bermerek

HELES dengan tipe UX-37TR.

2. Osciloscope

Osciloscope digunakan untuk melihat gelombang keluaran dari

rangkaian catu daya.

C. Langkah Pengujian

Langkah-langkah pengujian rangkaian dapat dilakukan dengan cara


sebagai berikut :
1. Kalibrasi instrument sebelum digunakan.

2. Hidupkan catu daya

3. Lakukan pengukuran pada masing-masing rangkaian berikut:

a. Catu daya

b. Mikrokontroller Atmega328

c. Rangkaian LCD
63

4. Pastikan program tidak terjadi error kemudian analisa hasil

pengukuran.

D. Pengujian dan Analisa Perangkat Keras

1. Rangkaian Catu Daya

a. Pengukuran Tegangan

Pengukuran tegangan catu daya dilakukan dengan

menggunakan alat multimeter digital HELES UX-37TR.

Pengujian catu daya dilakukan untuk mengetahui apakah

rangkaian catu daya dapat bekerja dengan baik, sehingga mampu

menyuplai tegangan ke seluruh rangkaian elektronik yang

digunakan. Tegangan keluaran catu daya akan menyuplai

beberapa rangkaian di antaranya rangkaian mikrokontroller

Atmega328, Liquid cristal display (LCD), dan rangkaian sensor.

Transformator yang digunakan pada pembuatan catu daya

ini adalah transformator stepdown 2A. Tegangan AC 220 V pada

sisi primer dan tegangan AC 12 V pada sisi sekunder akan

Gambar 25 titik pengukuran rangkaian catu daya


64

digunakan sebagai tegangan yang akan di searah kan menjadi

tegangan keluaran 5 V DC dan 12 V DC. Pengukuran catu daya

yang digunakan pada tugas akhir ini dapat dilihat pada gambar di

bawah ini :

Dari pengujian dan pengukuran yang telah dilakukan maka

diperoleh hasil pengukuran pada tabel berikut :

Tabel 7 pengukuran tegangan rangkaian catudaya

Titik Titik Pengukuran Hasil


Pengukuran Pengukuran
1 Tegangan sisi primer AC 219,5
transformator VAC
2 Tegangan sisi sekunder AC 18,7 VAC
transformator
3 Tegangan Output Dioda Bridge AC 16 Volt
4 Tegangan Output regulator DC 12,09 Volt
LM7812
5 Tegangan Output regulator DC 5,06 Volt
LM7805
b. Analisa

Dari hasil pengujian dan pengukuran pada rangkaian catu

daya, dapat di analisis berapa persentase kesalahan antara

tegangan keluaran yang diinginkan dengan tegangan keluaran

yang diukur. Persentase kesalahannya dapat dihitung dengan

menggunakan rumus berikut :

𝑉𝑠 − 𝑉𝑡
%𝑘𝑒𝑠𝑎𝑙𝑎ℎ𝑎𝑛 = 𝑥100%
𝑉𝑠

Di mana :

- Vs = Tegangan yang seharusnya (Volt)


65

- Vt = Tegangan yang terukur (Volt)

Persentase kesalahan antara tegangan yang diinginkan

dengan tegangan yang diukur pada keluaran 5 VDC adalah :

Diketahui :

- Vs = 5 VDC

- Vt = 5,06 VDC
𝑉𝑠−𝑉𝑡
Maka, %𝑘𝑒𝑠𝑎𝑙𝑎ℎ𝑎𝑛 = 𝑥100%
𝑉𝑠

5 − 5,06
= 𝑥100%
5

= −0,012%

Persentase kesalahan antara tegangan yang diinginkan

dengan tegangan yang diukur pada Output 12 VDC adalah :

- Vs = 12 Volt DC

- Vt = 12,09 Volt DC
𝑉𝑠−𝑉𝑡
Maka, %𝑘𝑒𝑠𝑎𝑙𝑎ℎ𝑎𝑛 = 𝑥100%
𝑉𝑠

12 − 12,09
= 𝑥100%
12

= −0,0075%

Penyimpangan yang terjadi yaitu pada keluaran

regulator 7805 sebesar −0,012%. Penyimpangan tersebut masih

dalam toleransi, karena range output pada IC LM 7805 adalah 4,8

– 5,2 VDC. Berdasarkan dari kondisi pengukuran dan analisa di

atas, maka rangkaian catu daya untuk keluaran 5 VDC telah dapat
66

bekerja dengan baik sedangkan penyimpangan pada regulator

7812 masih dalam toleransi karena range output pada IC LM

7812 ±4% atau 11,5 - 12,5 VDC . Berdasarkan dari kondisi

pengukuran dan analisa di atas, maka rangkaian catu daya untuk

keluaran +12 VDC telah dapat bekerja dengan baik.. Untuk

melihat gelombang keluaran dan nilai frekuensi pada rangkaian

catu daya ini dapat digunakan Osciloscope. Osciloscope yang

digunakan pada analisa ini adalah merek Aditeg ADS 810 C

Digital Stroge Oscilloscope

c. Pengukuran Gelombang

1) Gelombang Sisi Sekunder Transformator

Pada pengujian gelombang ini dilakukan pada titik

pengukuran 2 dan hasil gelombang keluaran pada trafo sisi

sekunder adalah seperti gambar berikut.

Gambar 26 bentuk gelombang keluaran trafo sisi


sekunder
67

Keterangan :

- VPP = 2,76 V
- Prd = 20,08 ms
- Vavg = 360 Mv
- Freq = 49,80 Hz

Pada gambar di atas terlihat gelombang pada sisi

sekunder trafo masih terdapat riak gelombang. Hal ini

disebabkan karena tegangan input yang masuk dari sumber

220 VAC tidak stabil, sehingga berpengaruh pada bentuk

gelombang.

2) Gelombang Keluaran Setelah Dioda Penyearah

Gelombang pada titik ini adalah gelombang keluaran

dari dioda bridge, di mana pada titik ini gelombang tidak

sinusoidal lagi melainkan gelombang penuh yang sudah

Gambar 27 Gelombang keluaran setelah


penyearah dioda
68

disearahkan (tegangan DC). Hasil gelombang keluaran

setelah dioda penyearah adalah seperti gambar berikut.

Keterangan :
- VPP = 1.80 V
- Prd = 9.96 ms
- V avg = 1.20 V
- Freq = 100.4 Hz

Bentuk gelombang keluaran di atas sudah

berbentuk gelombang DC penuh, namun pada gelombang

masih terdapat riak karena belum adanya penapis

(kapasitor).

3) Gelombang Keluaran Dioda Penyearah Setelah Difilter

Kapasitor

Kapasitor digunakan untuk menapis (filter) riak pada

tegangan DC keluaran penyearah dioda. Kapasitor yang

Gambar 28 Bentuk gelombang setelah filter kapasitor


69

digunakan untuk memfilter adalah kapasitor 1100uF

50Volt. Bentuk Gelombang dapat dilihat pada gambar

berikut :

Keterangan :

- VPP = 280 mV
- Prd =--
- V avg = 720 mV
- Freq < 10 Hz

Gelombang yang telah di filter oleh kapasitor

menghasilkan gelombang tegangan DC namun masih

terlihat tegangan riple.

4) Gelombang Keluaran Setelah IC Regulator

Merupakan Gelombang Keluaran Setelah IC

regulator dan di filter kembali menggunakan kapasitor 1000

µF. Pada titik ini tegangan DC yang dihasilkan lebih rata

dan riak pada tegangan sudah tidak terlihat, karena IC

Gambar 29 Gelombang setelah ic regulator


70

regulator telah membatasi tegangan yang masuk dan

kemudian kembali di filter menggunakan kapasitor.

Gambar gelombang keluaran dapat dilihat pada gambar

berikut :

Keterangan :

- VPP = 160 mV
- Prd =--
- V avg = 720 mV
- Freq <10Hz

2. Sistim Minimum Mikrokontroller Atmega328

Pengujian minimum sistem mikrokontroller ATmega328

meliputi pengujian rangkaian dan program atmega328. Pengujian ini

dilakukan karena menjadi bagian penting dalam sistem absensi.

a. Pengujian Rangkaian

Pengujian tegangan dilakukan dengan mengukur tegangan

parameter logika ‘0’ dan logika ‘1’ pada port I/O mikrokontroller

atmega328. Hasil pengujian atmega328 dapat dilihat pada tabel berikut

Tabel 8 pengujian tegangan logika pada mikrokontroller


Parameter logika yang diukur Nilai tegangan yang terukur

Logika low (0) 0,02 VDC

Logika high(1) 5 VDC


71

b. Pengujian Program

Rangkaian sistem minimum mikrokontroller Atmega328

dapat diuji dengan cara menghubungkan rangkaian sistim

minimum mikrokontroller atmega328 dengan pc, sedangkan

langkah-langkah pengujiannya yaitu sebagai berikut :

1) Hubungkan sistim minimum dengan pc melalui port

usb

2) Buka perangkat lunak arduino ide di pc klik tab tools

pilih port yang sedang dihubungkan antara sistim

minimum dengan pc

3) Lalu pilih tools lagi dan klik get board info.

Gambar 30 pengujian Program sistim minimum mikrokontroller


atmega328
72

c. Analisa

Berdasarkan pengujian rangkaian dan program di atas

dapat diambil kesimpulan bahwa mikrokontroller atmmega328

bekerja pada tegangan logika low sebesar 0,02 v dan bekerja pada

tegangan logika high sebesar 5v yang berarti rangkaian

atmega328 dapat digunakan dengan baik. Lalu, arduino ide

mendeteksi rangkaian sistim minimum mikrokontroller

atmega328 berstruktur arduino uno, yang menandakan bahwa

rangkaian sistim minimum mikrokontroller atmega328 layak

untuk dipakai.

3. Pengujian Liquid Crystal Display (LCD)

Pengujian LCD ini bertujuan untuk mengetahui apakah LCD

yang dipakai rusak atau dapat dipakai semestinya. LCD memiliki kaki

yang terdiri dari 8 pin jalur data, 2 pin power supply, 1 pin untuk

mengatur kontras, 3 pin kontrol dan 2 pin ground. Pengujian pertama

yang dilakukan dengan memberi tegangan pada kaki 1 dan 2 sebagai

Vcc dan GND, maka LCD akan menyala seperti pada gambar.

Gambar 31 Tampilan LCD tanpa


Program
73

Pada gambar dapat dilihat bahwa LCD dapat menyala, namun

tidak berarti LCD sudah dapat bekerja dengan baik. Perlu dilakukan

pengujian berikutnya yaitu menghubungkan Pin LCD ke PORT.C

mikrokontroller. Mikrokontroller akan didownloadkan program ke

dalamnya sehingga pada layar LCD akan menampilkan karakter yang

sesuai dengan program. Adapun programnya adalah :

// include the library code:

#include <LiquidCrystal.h>

// initialize the library by associating any needed LCD interface pin

// with the arduino pin number it is connected to

const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;

LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

void setup() {

// set up the LCD's number of columns and rows:

lcd.begin(16, 2);

// Print a message to the LCD.

lcd.print("hello, world!");
74

void loop() {

// set the cursor to column 0, line 1

// (note: line 1 is the second row, since counting begins with 0):

lcd.setCursor(0, 1);

// print the number of seconds since reset:

lcd.print(millis() / 1000);

Tampilan LCD setelah didownloadkan program di atas dapat

dilihat pada gambar di bawah :

Gambar 32 Tampilan LCD sesudah didownloadkan program


ke mikrokontroller
75

4. Pengujian RTC

Pengujian RTC ini bertujuan untuk mengetahui apakah RTC yang


dipakai rusak atau dapat dipakai semestinya. RTC memiliki 4 kaki yang
terdiri dari 2 jalur data, dan 2 pin power supply. Cara pengujian RTC
ini yaitu dengan mendownloadkan program ke mikrokontroller, adapun
programnya adalah seperti di bawah ini :
// Date and time functions using a DS1307 RTC connected via I2C and
Wire lib
#include <Wire.h>
#include "RTClib.h"

RTC_DS1307 rtc;

char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday",


"Wednesday", "Thursday", "Friday", "Saturday"};

void setup () {
while (!Serial); // for Leonardo/Micro/Zero

Serial.begin(57600);
if (! rtc.begin()) {
Serial.println("Couldn't find RTC");
while (1);
}

if (! rtc.isrunning()) {
Serial.println("RTC is NOT running!");
76

// following line sets the RTC to the date & time this sketch was
compiled
// rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
// This line sets the RTC with an explicit date & time, for example to
set
// January 21, 2014 at 3am you would call:
// rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
}
}

void loop () {
DateTime now = rtc.now();

Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(" (");
Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
Serial.print(") ");
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
77

Serial.print(" since midnight 1/1/1970 = ");


Serial.print(now.unixtime());
Serial.print("s = ");
Serial.print(now.unixtime() / 86400L);
Serial.println("d");

// calculate a date which is 7 days and 30 seconds into the future


DateTime future (now + TimeSpan(7,12,30,6));

Serial.print(" now + 7d + 30s: ");


Serial.print(future.year(), DEC);
Serial.print('/');
Serial.print(future.month(), DEC);
Serial.print('/');
Serial.print(future.day(), DEC);
Serial.print(' ');
Serial.print(future.hour(), DEC);
Serial.print(':');
Serial.print(future.minute(), DEC);
Serial.print(':');
Serial.print(future.second(), DEC);
Serial.println();

Serial.println();
delay(3000);
}
78

Setelah didownloadkan program di atas maka tampilan lcd

akan menampilkan waktu sesuai dengan yang telah terset di

dalam program, sehingga tampilan lcd akan tampak seperti

Gambar 33 tampilan LCD setelah RTC


diprogram melalui mikrokontroller
gambar berikut :

5. Pengujian Sensor Fingerprints

Pengujian modul finngerprints ZFM60XSA ini bertujuan untuk

mengetahui apakah modul, berfungsi dengan semestinya atau tidak.

Pengujian modul fingerprints ZFM60XSA ini dilakukan dengan cara

dihubungkan langsung dengan rangkaian mikrokontroller. Yang

kemudian di koneksikan dengan PC/Laptop dengan menggunakan

software SFG Demo. Sebelum sensor ini dapat digunakan, terlebih

dahulu harus memasukkan program melalui mikrokontroller dan juga

data sidik jari. List pemrograman untuk modul fingerprints

ZFM60XSA ini adalah sebagai berikut :

#include <Adafruit_Fingerprint.h>

#include <SoftwareSerial.h>
79

int getFingerprintIDez();

// pin #2 is IN from sensor (GREEN wire)

// pin #3 is OUT from arduino (WHITE wire)

SoftwareSerial mySerial(2, 3);

Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);

// On Leonardo/Micro or others with hardware serial, use those! #0 is

green wire, #1 is white

//Adafruit_Fingerprint finger = Adafruit_Fingerprint(&Serial1);

void setup()

while (!Serial); // For Yun/Leo/Micro/Zero/...

Serial.begin(9600);

Serial.println("Adafruit finger detect test");

// set the data rate for the sensor serial port

finger.begin(57600);

if (finger.verifyPassword()) {

Serial.println("Found fingerprint sensor!");


80

} else {

Serial.println("Did not find fingerprint sensor :(");

while (1);

Serial.println("Waiting for valid finger...");

void loop() // run over and over again

getFingerprintIDez();

delay(50); //don't ned to run this at full speed.

uint8_t getFingerprintID() {

uint8_t p = finger.getImage();

switch (p) {

case FINGERPRINT_OK:

Serial.println("Image taken");
81

break;

case FINGERPRINT_NOFINGER:

Serial.println("No finger detected");

return p;

case FINGERPRINT_PACKETRECIEVEERR:

Serial.println("Communication error");

return p;

case FINGERPRINT_IMAGEFAIL:

Serial.println("Imaging error");

return p;

default:

Serial.println("Unknown error");

return p;

// OK success!

p = finger.image2Tz();
82

switch (p) {

case FINGERPRINT_OK:

Serial.println("Image converted");

break;

case FINGERPRINT_IMAGEMESS:

Serial.println("Image too messy");

return p;

case FINGERPRINT_PACKETRECIEVEERR:

Serial.println("Communication error");

return p;

case FINGERPRINT_FEATUREFAIL:

Serial.println("Could not find fingerprint features");

return p;

case FINGERPRINT_INVALIDIMAGE:

Serial.println("Could not find fingerprint features");

return p;

default:

Serial.println("Unknown error");
83

return p;

// OK converted!

p = finger.fingerFastSearch();

if (p == FINGERPRINT_OK) {

Serial.println("Found a print match!");

} else if (p == FINGERPRINT_PACKETRECIEVEERR) {

Serial.println("Communication error");

return p;

} else if (p == FINGERPRINT_NOTFOUND) {

Serial.println("Did not find a match");

return p;

} else {

Serial.println("Unknown error");

return p;

}
84

// found a match!

Serial.print("Found ID #"); Serial.print(finger.fingerID);

Serial.print(" with confidence of "); Serial.println(finger.confidence);

// returns -1 if failed, otherwise returns ID #

int getFingerprintIDez() {

uint8_t p = finger.getImage();

if (p != FINGERPRINT_OK) return -1;

p = finger.image2Tz();

if (p != FINGERPRINT_OK) return -1;

p = finger.fingerFastSearch();

if (p != FINGERPRINT_OK) return -1;

// found a match!

Serial.print("Found ID #"); Serial.print(finger.fingerID);


85

Serial.print(" with confidence of "); Serial.println(finger.confidence);

return finger.fingerID;

Jika data dan program sudah masuk pada mikrokontroller dan

rangkaian modul fingerprints ZFM60XSA, maka kita dapat melakukan

pencarian pada software SFG Demo yang hasilnya dapat dilihat pada

Gambar 34 Pengujian modul fingerprints ZFM60XSA

gambar berikut :

Selain diuji dengan menggunakan software SFG-Demo, sensor

fingerprint juga diuji secara langsung ke rangkaian hal ini bertujuan

untuk menganalisis apakah rangkaian sensor finngerprint dapat

terhubung dengan rangkaian output dan rangkaian input lainnya. Yaitu

dengan cara menekan pushbutton enroll pada rangkaian lalu mengamati


86

pada lcd perintah atau informasi yang ditampilkan di dalam lcd, hasil

pengamatannya dapat dilihat pada gambar berikut :

Gambar 35 pengujian sensor fingerprint pada rangkaian


dari gambar di atas dapat diketahui bahwa sensor fingerprint

dapat berjalan dengan baik, baik itu menggunakan software ataupun

rangkaian secara langsung.

6. Pengujian modul mikro sd

Pada pengujian modul mikro sd ini alat yang digunakan adalah

kartu mikro sd dan laptop sebagai pembaca file yang ada di dalam kartu

mikro sd, langkah-langkahnya yaitu sebagai berikut :

1. Masukkan kartu mikro sd ke micro-sd card module

2. Unggah program micro-sd card module ke mikrokontroller

3. Lakukan scan jari ke sensor fingerprint

4. Amati LCD

5. Lepas kartu microsd yang terdapat pada modul


87

6. Masukkan dan baca kartu mikro sd di laptop melalui sd card

reader.

7. Pastikan data yang terbaca di LCD dengan yang terbaca di

kartu mikro sd sama.

Gambar 36 tampilan pada LCD

Gambar 37 tampilan pembacaan file pada kartu sd

8. Jika sama maka micro-sd card module berjalan dengan

baik.
88

E. Pengujian dan Analisa Perangkat Lunak

Program merupakan bagian utama karena merupakan induk sistem

kendali yang akan dibuat. Pemrograman mikrokontroller atmega328

menggunakan software IDE arduino. Pemrograman mikrokontroller

atmega328 dibagi beberapa tahap di antaranya Deklarasi dan konfigurasi,

program data fingerprint, program data LCD, program data RTC, dan

program data pushbutton,

1. Deklarasi Dan Konfigurasi

Deklarasi dan konfigurasi merupakan tahap awal dari

pemrograman

a. Deklarasi awal

#include <Adafruit_Fingerprint.h>

#include <SoftwareSerial.h>

#include <LiquidCrystal.h>

LiquidCrystal lcd(6,7,8,9,10,11);

#include "Wire.h"

#define DS3231_I2C_ADDRESS 0x68

#include <SPI.h>

#include <SD.h>
89

// Convert normal decimal numbers to binary coded

decimal

byte decToBcd(byte val)

return( (val/10*16) + (val%10) );

// Convert binary coded decimal to normal decimal

numbers

byte bcdToDec(byte val)

return( (val/16*10) + (val%16) );

int jam;

int menit;

int detik;

int hari;

int bulan;

int tahun;
90

String waktu;

String tanggal;

uint8_t id;

int getFingerprintIDez();

uint8_t getFingerprintEnroll();

int sendlog=0;

int fingerlog;

String nama="";

String data;

String datasd;

int step;

int getid=1;

// pin #2 is IN from sensor (GREEN wire)

// pin #3 is OUT from arduino (WHITE wire)

SoftwareSerial mySerial(2,3);
91

SoftwareSerial mySerial2(4,5);

Adafruit_Fingerprint finger =

Adafruit_Fingerprint(&mySerial);

uint8_t readnumber(void) {

uint8_t num = 0;

boolean validnum = false;

while (1) {

while (! Serial.available());

char c = Serial.read();

if (isdigit(c)) {

num *= 10;

num += c - '0';

validnum = true;

} else if (validnum) {

return num;

}
92

b. Konfigurasi

void setup()

pinMode(A0, INPUT);

pinMode(A1, INPUT);

pinMode(A2, INPUT);

pinMode(A3, INPUT);

digitalWrite(A0,HIGH);

digitalWrite(A1,HIGH);

digitalWrite(A2,HIGH);

digitalWrite(A3,HIGH);

lcd.begin(16,4);

lcd.clear();

lcd.setCursor(0,0);

lcd.print(" ABSENSI ");

lcd.setCursor(0,1);

lcd.print(" ELEKTRONIK ");

lcd.setCursor(0,2);

lcd.print("SUBANDI SAPUTRA ");

lcd.setCursor(0,3);

lcd.print(" 1302555 ");

delay(4000);
93

Serial.begin(9600);

mySerial2.begin(9600);

Serial.println("Adafruit finger detect test");

// set the data rate for the sensor serial port

finger.begin(57600);

Wire.begin();

if (finger.verifyPassword()) {

Serial.println("Found fingerprint sensor!");

} else {

Serial.println("Did not find fingerprint sensor :(");

while (1);

// Serial.println("Waiting for valid finger...");

lcd.clear();

c. Program Loop

void loop() // run over and over again

lcd.setCursor(0,2);

lcd.print(" ");

lcd.setCursor(0,3);
94

lcd.print(" ");

if(digitalRead(A0)==LOW)

step=2;

else if(digitalRead(A1)==LOW)

if(step==1)

step=3;

delay(1000);

else step=1;

if (step==1)

lcd.setCursor(0,2);

lcd.print("Enroll ID :");

lcd.print(getid);

delay(500);

if(digitalRead(A2)==LOW)

{
95

getid=getid-1;

if(getid<=0)getid=1;

else if(digitalRead(A3)==LOW)

getid=getid+1;

else if (step==2)

getFingerprintIDez();

else if(step==3)

id=getid;

while (! getFingerprintEnroll() );

delay(2000);

step=0;

if(sendlog==9)

{
96

if(fingerlog==1) nama="nama1";

else if(fingerlog==2) nama="nama2";

else if(fingerlog==3) nama="nama3";

else if(fingerlog==4) nama="Nama4";

else if(fingerlog==5) nama="Nama5";

else if(fingerlog==6) nama="Nama6";

else if(fingerlog==7) nama="Nama7";

else if(fingerlog==8) nama="Nama8";

else if(fingerlog==9) nama="Nama9";

else if(fingerlog==10) nama="Nama10";

else if(fingerlog==11) nama="nama11";

else if(fingerlog==12) nama="nama12";

else if(fingerlog==13) nama="Nama13";

else if(fingerlog==14) nama="Nama14";

else if(fingerlog==15) nama="Nama15";

else if(fingerlog==16) nama="Nama16";

else if(fingerlog==17) nama="Nama17";

else if(fingerlog==18) nama="Nama18";

else if(fingerlog==19) nama="Nama19";

else if(fingerlog==20) nama="Nama20";

lcd.setCursor(0,2);

lcd.print("ID :");
97

lcd.print(fingerlog);

lcd.setCursor(0,3);

lcd.print("Nama :");

lcd.print(nama);

datasd="Nama ";

datasd+=nama;

datasd+=data;

Serial.println(datasd);

mySerial2.print(datasd);

delay(2000);

lcd.setCursor(0,2);

lcd.print(" Terimakasih! ");

lcd.setCursor(0,3);

lcd.print(" ");

delay(2000);

sendlog=0;

step=0;

lcd.setCursor(0,0);
98

lcd.print(" ");

lcd.setCursor(0,0);

lcd.print("Time : ");

lcd.print(waktu);

lcd.setCursor(0,1);

lcd.print(" ");

lcd.setCursor(0,1);

lcd.print("Date : ");

lcd.print(tanggal);

displayTime();

delay(50); //don't ned to run this at full speed.

2. Program data fingerprints

uint8_t getFingerprintID() {

uint8_t p = finger.getImage();

switch (p) {

case FINGERPRINT_OK:

Serial.println("Image taken");

break;

case FINGERPRINT_NOFINGER:
99

Serial.println("No finger detected");

return p;

case FINGERPRINT_PACKETRECIEVEERR:

Serial.println("Communication error");

return p;

case FINGERPRINT_IMAGEFAIL:

// Serial.println("Imaging error");

return p;

default:

// Serial.println("Unknown error");

return p;

// OK success!

p = finger.image2Tz();

switch (p) {

case FINGERPRINT_OK:
100

Serial.println("Image converted");

break;

case FINGERPRINT_IMAGEMESS:

Serial.println("Image too messy");

return p;

case FINGERPRINT_PACKETRECIEVEERR:

Serial.println("Communication error");

return p;

case FINGERPRINT_FEATUREFAIL:

Serial.println("Could not find fingerprint features");

return p;

case FINGERPRINT_INVALIDIMAGE:

// Serial.println("Could not find fingerprint features");

return p;

default:

Serial.println("Unknown error");

return p;

}
101

// OK converted!

p = finger.fingerFastSearch();

if (p == FINGERPRINT_OK) {

Serial.println("Found a print match!");

} else if (p == FINGERPRINT_PACKETRECIEVEERR) {

Serial.println("Communication error");

return p;

} else if (p == FINGERPRINT_NOTFOUND) {

Serial.println("Did not find a match");

return p;

} else {

Serial.println("Unknown error");

return p;

// found a match!

Serial.print("Found ID #"); Serial.print(finger.fingerID);


102

Serial.print(" with confidence of ");

Serial.println(finger.confidence);

// returns -1 if failed, otherwise returns ID #

int getFingerprintIDez() {

uint8_t p = finger.getImage();

if (p != FINGERPRINT_OK) return -1;

p = finger.image2Tz();

if (p != FINGERPRINT_OK) return -1;

p = finger.fingerFastSearch();

if (p != FINGERPRINT_OK) return -1;

// found a match!

Serial.print("Found ID #"); Serial.print(finger.fingerID);


103

Serial.print(" with confidence of ");

Serial.println(finger.confidence);

fingerlog=finger.fingerID;

sendlog=9;

//return finger.fingerID;

3. Program data LCD RTC

void displayTime()

byte second, minute, hour, dayOfWeek, dayOfMonth, month,

year;

// retrieve data from DS3231

readDS3231time(&second, &minute, &hour, &dayOfWeek,

&dayOfMonth, &month,

&year);

jam= hour, DEC;

if (minute<10)

{
104

menit=0;

menit=minute, DEC;

if (second<10)

detik=0;

detik=second, DEC;

hari=dayOfMonth, DEC;

bulan=month, DEC;

tahun=year, DEC;

waktu=jam;

waktu+=":";

waktu+=menit;

waktu+=":";

waktu+=detik;

tanggal=hari;
105

tanggal+="/";

tanggal+=bulan;

tanggal+="/";

tanggal+=tahun;

data=" Pukul ";

data+=waktu;

data+=" Tanggal ";

data+=tanggal;

//==============

uint8_t getFingerprintEnroll() {

int p = -1;

lcd.setCursor(0,2);

lcd.print(" Waiting finger ");

Serial.print("Waiting for valid finger to enroll as #");

Serial.println(id);

while (p != FINGERPRINT_OK) {
106

p = finger.getImage();

switch (p) {

case FINGERPRINT_OK:

Serial.println("Image taken");

lcd.setCursor(0,2);

lcd.print("Image taken ");

break;

case FINGERPRINT_NOFINGER:

Serial.println(".");

break;

case FINGERPRINT_PACKETRECIEVEERR:

Serial.println("Communication error");

break;

case FINGERPRINT_IMAGEFAIL:

Serial.println("Imaging error");

break;

default:

Serial.println("Unknown error");
107

break;

4. Program data RTC

void setDS3231time(byte second, byte minute, byte hour, byte


dayOfWeek, byte dayOfMonth, byte month, byte year)
{
// sets time and date data to DS3231
Wire.beginTransmission(DS3231_I2C_ADDRESS);
Wire.write(0); // set next input to start at the seconds register
Wire.write(decToBcd(second)); // set seconds
Wire.write(decToBcd(minute)); // set minutes
Wire.write(decToBcd(hour)); // set hours
Wire.write(decToBcd(dayOfWeek)); // set day of week
(1=Sunday, 7=Saturday)
Wire.write(decToBcd(dayOfMonth)); // set date (1 to 31)
Wire.write(decToBcd(month)); // set month
Wire.write(decToBcd(year)); // set year (0 to 99)
Wire.endTransmission();
}
void readDS3231time(byte *second,
byte *minute,
byte *hour,
byte *dayOfWeek,
byte *dayOfMonth,
byte *month,
byte *year)
108

{
Wire.beginTransmission(DS3231_I2C_ADDRESS);
Wire.write(0); // set DS3231 register pointer to 00h
Wire.endTransmission();
Wire.requestFrom(DS3231_I2C_ADDRESS, 7);
// request seven bytes of data from DS3231 starting from register
00h
*second = bcdToDec(Wire.read() & 0x7f);
*minute = bcdToDec(Wire.read());
*hour = bcdToDec(Wire.read() & 0x3f);
*dayOfWeek = bcdToDec(Wire.read());
*dayOfMonth = bcdToDec(Wire.read());
*month = bcdToDec(Wire.read());
*year = bcdToDec(Wire.read());
}
5. Program data SD-card

void setup() {

pinMode(8, OUTPUT);

pinMode(9, OUTPUT);

buzz();

// Open serial communications and wait for port to open:

Serial.begin(9600);

while (!Serial) {
109

; // wait for serial port to connect. Needed for native USB port

only

Serial.print("Initializing SD card...");

if (!SD.begin(4)) {

Serial.println("initialization failed!");

return;

Serial.println("initialization done.");

// re-open the file for reading:

myFile = SD.open("absensi.txt");

if (myFile) {

Serial.println("absensi.txt:");
110

// read from the file until there's nothing else in it:

while (myFile.available()) {

Serial.write(myFile.read());

// close the file:

myFile.close();

} else {

// if the file didn't open, print an error:

Serial.println("error opening absensi.txt");

buzz();

void buzz()

digitalWrite(8,HIGH);

digitalWrite(9,HIGH);

delay(200);
111

digitalWrite(8,LOW);

digitalWrite(9,LOW);

delay(100);

digitalWrite(8,HIGH);

digitalWrite(9,HIGH);

delay(200);

digitalWrite(8,LOW);

digitalWrite(9,LOW);

void loop() {

msg="";

while(Serial.available()) {

c=Serial.read();

msg+=c;

delay(10);

msgs=msg;
112

if (msgs=="")

else

myFile = SD.open("absensi.txt", FILE_WRITE);

// if the file opened okay, write to it:

if (myFile) {

Serial.print("Writing to absensi.txt...");

myFile.println(msgs);

// close the file:

myFile.close();

Serial.println("done.");

buzz();

} else {
113

// if the file didn't open, print an error:

Serial.println("error opening datalog.txt");

}}}

F. Pengujian Rangkaian Secara Keseluruhan

Pengujian ini dilakukan untuk mengetahui apakah sistem dapat bekerja

dengan baik. Untuk melakukan pengujian ini yaitu dengan menjalankan

sistem secara keseluruhan mulai dari power supply, mikrokontroller

atmega328, fingerprint, pushbutton dan LCD

Terlebih dahulu alat dihubungkan dengan sumber PLN 220VAC lalu

pindahkan posisi saklar yang berada di bawah LCD ke posisi 1 atau ON,

ketika alat sudah siap beroperasi maka alat akan menampilkan nama alat,

nama penulis, dan waktu ketika alat dihidupkan setelah itu tekan tombol

enroll untuk meregistrasi pengguna kemudian pilih nomor list pengguna ke

berapa sisik jari akan didaftarkan, letakkan jari yang akan digunakan untuk

melakukan proses absensi pada sensor fingerprints selanjutnya masukkan

sekali lagi untuk verifikasi.


114

Saat pertama

kali

dihidupkan

lcd akan

menampilkan

nama alat dan

nama penulis

untuk

beberapa saat

ketika alat sudah

siap dioperasikan

Saat tombol OK

ditekan dan saat

pemilihan nomor

list identitas
115

Perintah untuk

meletakkan jari

ke sensor setelah

pemilihan nomor

identitas dan saat

sensor belum

membaca akan

adanya jari

Saat sensor

mendeteksi

adanya jari,

letakkan jari

sekali lagi ke

sensor.

Saat proses

pendaftaran user

berhasil

dilakukan
116

Saat proses

pengambilan

resensi dilakukan

Berdasarkan basil pengujian sistem keseluruhan di atas, kita dapat

melihat kondisi tiap - tiap komponen di tiap prosesnya. Yang pertama kita

memastikan catu daya mendapat tegangan dari keluaran PLN 220 Vac. Catu

daya digunakan sebagai sumber tegangan untuk seluruh rangkaian yang ada.

Pada alat ini kita menggunakan catu daya bernilai sebesar 12 Vdc menuju

mikrokontroller atmega328, dan 5 Vdc menuju sensor fingerprints

Pada saat sistem dalam keadaan inisialisasi, LCD akan menampilkan,

nama, nim, judul tugas akhir dari penulis, dan waktu ketika sistem

dihidupkan. Dan Sistem Absensi akan aktif setelah di tekan tombol start,

maka kita akan melakukan beberapa proses untuk bisa melalukan proses

pengambilan resensi sesuai dengan perancangan.

Pertama LCD akan menampilkan nama alat dan nama penulis setelah

muncul jam, tanggal, bulan dan tahun kita harus melakukan registrasi terlebih

dahulu dengan cara menekan tombol OK lalu kita pilih nomor list pengguna

yang ada di sistem dari 1 sampai 20. Kemudian tekan tombol OK lagi lalu

letakkan sidik jari ke sensor kemudian lepaskan dan letakkan sekali lagi untuk
117

memverifikasi bahwa jari yang kita letakkan ke sensor itu adalah jari yang

akan kita pakai untuk melakukan proses pengambilan resensi.

Berdasarkan pengujian sistem keseluruhan ini, bisa disimpulkan bahwa

tiap-tiap komponen pada tugas akhir ini telah berjalan dengan yang

diinginkan.
BAB V

KESIMPULAN DAN SARAN

A. Kesimpulan

Dari perancangan, pembuatan, hasil dan pengujian perangkat keras,

serta perangkat lunak pada tugas akhir ini, maka dapat diperoleh kesimpulan

berikut :

1. Sistem absensi Elektronik Berbasis Mikrokontroller Atmega328

sebagai pusat kontrol utama dan menggunakan bahasa c untuk

pemrogramannya dengan menggunakan tegangan masukan yang

bernilai 12 volt dc sehingga sistem dapat bekerja dengan baik.

2. Sistem absensi elektronik berbasis mikrokontroller atmega328

dapat bekerja sebagai pengganti sistem absensi konvensional

3. Proses resensi hanya dapat dilakukan setelah pengguna melakukan

proses registrasi.

118
119

B. Saran

Dalam pengerjaan dan penyelesaian Tugas Akhir ini tentu tidak lepas

dari berbagai macam kekurangan dan kesalahan, baik itu pada perancangan

sistem maupun pada proses pembuatan Tugas Akhir yang telah dibuat. Untuk

memperbaiki kekurangan dalam menyempurnakan sistem ini, maka penulis

memberikan saran agar didapatkan basil yang lebih sempurna, di antaranya:

1. Untuk sistem absensi yang lebih baik, diharapkan menggunakan

sensor pengenal biometrika yang lebih baik lagi dari segi spesifikasi

agar tidak sering terjadi kesalahan baca.

2. Sebagai tampilan dalam memberikan informasi diharapkan

menggunakan LCD graphich agar dapat menampilkan foto dari

pengguna

3. Untuk sistem kontrol yang akan digunakan pada Sistem absensi

Elektronik lebih baik diperhatikan dulu jenis-jenis mikrokontroller

yang digunakan, mulai dari ATmega, pin I/O digital, dan memori

penyimpanan program, supaya tidak terjadi kegagalan dalam

menjalankan program, karena sistem absensi yang menggunakan

teknologi biometrika harus menggunakan mikrokontroller yang

memiliki spesifikasi tinggi.

4. Untuk pengembangan selanjutnya, sebaiknya ada sistem absensi

yang masih menggunakan teknologi biometrika yang dapat

menampilkan foto dari penggunanya.


120

DAFTAR PUSTAKA

Antonius Rahmat C. 2010. Algoritma dan Pemrograman dengan Bahasa C.

Yogyakarta, Indonesia: Penerbit Andi.

Deddy Susilo. 2010. 48 jam Kupas Tuntas Mikrokontroller MC51 dan AVR.
Yogyakarta: Penerbit Andi.

Dimas Agil (2015). Perancangan Sistem Otomasi Proses Pembuatan Softener

Dikendalikan Dengan Mikrokontroller. Tugas Akhir Teknik Elektro

Industri pada Institut Teknologi Sepuluh Nopember. Surabaya

Dony Saputra, Dian Fitriani, dkk. 2014. Akses Kontrol Ruangan Menggunakan

Sensor Sidik Jari Berbasis Mikrokontroler Atmega328p. Seminar Nasional

Teknologi Informasi dan Komunikasi. ISSN: 2089-9813

Frank D. Petruzella. 2001. Elektronik Industri. Yogyakarta: Penerbit Andi.

Grace Natalia. 2003. Belajar Merakit dan Memperbaiki Rangkaian Elektronika.


Surabaya: Greisinda.

Ifa, Misbach. 2010. Dahsyatnya Sidik Jari. Jakarta. VisiMedia

Muhammad Rahman Jamal. (2015). Perancangan Dan Pembuatan Sistem Akuisisi


Data Photovaltaic Thermal Dengan Menggunakan Bluetooth. Tugas Akhir
Teknik Elektro pada FT UNP Padang: tidak diterbitkan.

Muhammad Shofian (2017). Rancang Bangun Sistem Keamanan Brankas


Menggunakan Biometrics Technologies Berbasis Mikrokontroller Arduino.
Tugas Akhir Teknik Elektro pada FT UNP Padang: tidak diterbitkan.

Rachmat-bot. bahasa pemrograman C(online) diakses pada 18 Januari 2018

Saludin Muis. 2014. Perancangan Power Supply Switch Mode. Yogyakarta: Graha
Ilmu. Yogyakarta: Penerbit Andi.
121

Telkom. 2013 Perancangan Bahasa Pemrograman(Online) diakses pada 15

Januari 2018

Terhulin Purba Tambak dan T. Ahri Bahriun. 2015. Perancangan Sistem Home

Automation Berbasis Arduino Uno. Singuda Ensikom, VOL.10 NO.28, 121.


lampiran 1 Program keseluruhan
#include <Adafruit_Fingerprint.h>
#include <SoftwareSerial.h>

#include <LiquidCrystal.h>
LiquidCrystal lcd(6,7,8,9,10,11);

#include "Wire.h"
#define DS3231_I2C_ADDRESS 0x68
// Convert normal decimal numbers to binary coded decimal
byte decToBcd(byte val)
{
return( (val/10*16) + (val%10) );
}
// Convert binary coded decimal to normal decimal numbers
byte bcdToDec(byte val)
{
return( (val/16*10) + (val%16) );
}
int jam;
int menit;
int detik;
int hari;
int bulan;
int tahun;
String waktu;
String tanggal;

122
uint8_t id;
int getFingerprintIDez();
uint8_t getFingerprintEnroll();

int sendlog=0;
int fingerlog;
String nama="";
String data;
String datasd;

int step;
int getid=1;
// pin #2 is IN from sensor (GREEN wire)
// pin #3 is OUT from arduino (WHITE wire)
SoftwareSerial mySerial(2,3);
SoftwareSerial mySerial2(4,5);
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);

uint8_t readnumber(void) {
uint8_t num = 0;
boolean validnum = false;
while (1) {
while (! Serial.available());
char c = Serial.read();
if (isdigit(c)) {
num *= 10;

123
num += c - '0';
validnum = true;
} else if (validnum) {
return num;
}
}
}
void setup()
{
pinMode(A0, INPUT);
pinMode(A1, INPUT);
pinMode(A2, INPUT);
pinMode(A3, INPUT);
digitalWrite(A0,HIGH);
digitalWrite(A1,HIGH);
digitalWrite(A2,HIGH);
digitalWrite(A3,HIGH);
lcd.begin(16,4);
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" ABSENSI ");
lcd.setCursor(0,1);
lcd.print(" ELEKTRONIK ");
lcd.setCursor(0,2);
lcd.print("SUBANDI SAPUTRA ");
lcd.setCursor(0,3);
lcd.print(" 1302555 ");

124
delay(4000);
Serial.begin(9600);
mySerial2.begin(9600);
Serial.println("Adafruit finger detect test");

// set the data rate for the sensor serial port


finger.begin(57600);
Wire.begin();

if (finger.verifyPassword()) {
Serial.println("Found fingerprint sensor!");
} else {
Serial.println("Did not find fingerprint sensor :(");
while (1);
}
// Serial.println("Waiting for valid finger...");
lcd.clear();
}

void loop() // run over and over again


{
lcd.setCursor(0,2);
lcd.print(" ");
lcd.setCursor(0,3);
lcd.print(" ");
if(digitalRead(A0)==LOW)
{

125
step=2;
}
else if(digitalRead(A1)==LOW)
{
if(step==1)
{
step=3;
delay(1000);
}
else step=1;
}

if (step==1)
{
lcd.setCursor(0,2);
lcd.print("Enroll ID :");
lcd.print(getid);
delay(500);
if(digitalRead(A2)==LOW)
{
getid=getid-1;
if(getid<=0)getid=1;
}
else if(digitalRead(A3)==LOW)
{
getid=getid+1;
}

126
}
else if (step==2)
{
getFingerprintIDez();

}
else if(step==3)
{
id=getid;
while (! getFingerprintEnroll() );
delay(2000);
step=0;
}

if(sendlog==9)
{
if(fingerlog==1) nama="nama1";
else if(fingerlog==2) nama="nama2";
else if(fingerlog==3) nama="nama3";
else if(fingerlog==4) nama="Nama4";
else if(fingerlog==5) nama="Nama5";
else if(fingerlog==6) nama="Nama6";
else if(fingerlog==7) nama="Nama7";
else if(fingerlog==8) nama="Nama8";
else if(fingerlog==9) nama="Nama9";
else if(fingerlog==10) nama="Nama10";
else if(fingerlog==11) nama="nama11";

127
else if(fingerlog==12) nama="nama12";
else if(fingerlog==13) nama="Nama13";
else if(fingerlog==14) nama="Nama14";
else if(fingerlog==15) nama="Nama15";
else if(fingerlog==16) nama="Nama16";
else if(fingerlog==17) nama="Nama17";
else if(fingerlog==18) nama="Nama18";
else if(fingerlog==19) nama="Nama19";
else if(fingerlog==20) nama="Nama20";

lcd.setCursor(0,2);
lcd.print("ID :");
lcd.print(fingerlog);
lcd.setCursor(0,3);
lcd.print("Nama :");
lcd.print(nama);
datasd="Nama ";
datasd+=nama;
datasd+=data;
Serial.println(datasd);
mySerial2.print(datasd);

delay(2000);
lcd.setCursor(0,2);
lcd.print(" Terimakasih! ");
lcd.setCursor(0,3);
lcd.print(" ");

128
delay(2000);
sendlog=0;

step=0;
}

lcd.setCursor(0,0);
lcd.print(" ");
lcd.setCursor(0,0);
lcd.print("Time : ");
lcd.print(waktu);
lcd.setCursor(0,1);
lcd.print(" ");
lcd.setCursor(0,1);
lcd.print("Date : ");
lcd.print(tanggal);
displayTime();

delay(50); //don't ned to run this at full speed.


}

uint8_t getFingerprintID() {
uint8_t p = finger.getImage();
switch (p) {
case FINGERPRINT_OK:
Serial.println("Image taken");

129
break;
case FINGERPRINT_NOFINGER:
Serial.println("No finger detected");
return p;
case FINGERPRINT_PACKETRECIEVEERR:
Serial.println("Communication error");
return p;
case FINGERPRINT_IMAGEFAIL:
// Serial.println("Imaging error");
return p;
default:
// Serial.println("Unknown error");
return p;
}

// OK success!

p = finger.image2Tz();
switch (p) {
case FINGERPRINT_OK:
Serial.println("Image converted");
break;
case FINGERPRINT_IMAGEMESS:
Serial.println("Image too messy");
return p;
case FINGERPRINT_PACKETRECIEVEERR:
Serial.println("Communication error");

130
return p;
case FINGERPRINT_FEATUREFAIL:
Serial.println("Could not find fingerprint features");
return p;
case FINGERPRINT_INVALIDIMAGE:
// Serial.println("Could not find fingerprint features");
return p;
default:
Serial.println("Unknown error");
return p;
}

// OK converted!
p = finger.fingerFastSearch();
if (p == FINGERPRINT_OK) {
Serial.println("Found a print match!");
} else if (p == FINGERPRINT_PACKETRECIEVEERR) {
Serial.println("Communication error");
return p;
} else if (p == FINGERPRINT_NOTFOUND) {
Serial.println("Did not find a match");
return p;
} else {
Serial.println("Unknown error");
return p;
}

131
// found a match!
Serial.print("Found ID #"); Serial.print(finger.fingerID);
Serial.print(" with confidence of "); Serial.println(finger.confidence);
}

// returns -1 if failed, otherwise returns ID #


int getFingerprintIDez() {
uint8_t p = finger.getImage();
if (p != FINGERPRINT_OK) return -1;

p = finger.image2Tz();
if (p != FINGERPRINT_OK) return -1;

p = finger.fingerFastSearch();
if (p != FINGERPRINT_OK) return -1;

// found a match!
Serial.print("Found ID #"); Serial.print(finger.fingerID);
Serial.print(" with confidence of "); Serial.println(finger.confidence);
fingerlog=finger.fingerID;
sendlog=9;

//return finger.fingerID;
}

132
void setDS3231time(byte second, byte minute, byte hour, byte dayOfWeek, byte
dayOfMonth, byte month, byte year)
{
// sets time and date data to DS3231
Wire.beginTransmission(DS3231_I2C_ADDRESS);
Wire.write(0); // set next input to start at the seconds register
Wire.write(decToBcd(second)); // set seconds
Wire.write(decToBcd(minute)); // set minutes
Wire.write(decToBcd(hour)); // set hours
Wire.write(decToBcd(dayOfWeek)); // set day of week (1=Sunday, 7=Saturday)
Wire.write(decToBcd(dayOfMonth)); // set date (1 to 31)
Wire.write(decToBcd(month)); // set month
Wire.write(decToBcd(year)); // set year (0 to 99)
Wire.endTransmission();
}
void readDS3231time(byte *second,
byte *minute,
byte *hour,
byte *dayOfWeek,
byte *dayOfMonth,
byte *month,
byte *year)
{
Wire.beginTransmission(DS3231_I2C_ADDRESS);
Wire.write(0); // set DS3231 register pointer to 00h
Wire.endTransmission();
Wire.requestFrom(DS3231_I2C_ADDRESS, 7);

133
// request seven bytes of data from DS3231 starting from register 00h
*second = bcdToDec(Wire.read() & 0x7f);
*minute = bcdToDec(Wire.read());
*hour = bcdToDec(Wire.read() & 0x3f);
*dayOfWeek = bcdToDec(Wire.read());
*dayOfMonth = bcdToDec(Wire.read());
*month = bcdToDec(Wire.read());
*year = bcdToDec(Wire.read());
}
void displayTime()
{
byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;
// retrieve data from DS3231
readDS3231time(&second, &minute, &hour, &dayOfWeek, &dayOfMonth,
&month,
&year);
jam= hour, DEC;
if (minute<10)
{
menit=0;
}
menit=minute, DEC;
if (second<10)
{
detik=0;
}
detik=second, DEC;

134
hari=dayOfMonth, DEC;
bulan=month, DEC;
tahun=year, DEC;

waktu=jam;
waktu+=":";
waktu+=menit;
waktu+=":";
waktu+=detik;
tanggal=hari;
tanggal+="/";
tanggal+=bulan;
tanggal+="/";
tanggal+=tahun;
data=" Pukul ";
data+=waktu;
data+=" Tanggal ";
data+=tanggal;
}
//==============
uint8_t getFingerprintEnroll() {

int p = -1;
lcd.setCursor(0,2);
lcd.print(" Waiting finger ");
Serial.print("Waiting for valid finger to enroll as #"); Serial.println(id);
while (p != FINGERPRINT_OK) {

135
p = finger.getImage();
switch (p) {
case FINGERPRINT_OK:
Serial.println("Image taken");
lcd.setCursor(0,2);
lcd.print("Image taken ");
break;
case FINGERPRINT_NOFINGER:
Serial.println(".");
break;
case FINGERPRINT_PACKETRECIEVEERR:
Serial.println("Communication error");
break;
case FINGERPRINT_IMAGEFAIL:
Serial.println("Imaging error");
break;
default:
Serial.println("Unknown error");
break;
}
}

// OK success!

p = finger.image2Tz(1);
switch (p) {
case FINGERPRINT_OK:

136
Serial.println("Image converted");
lcd.setCursor(0,2);
lcd.print("Image converted ");
break;
case FINGERPRINT_IMAGEMESS:
Serial.println("Image too messy");
return p;
case FINGERPRINT_PACKETRECIEVEERR:
Serial.println("Communication error");
return p;
case FINGERPRINT_FEATUREFAIL:
Serial.println("Could not find fingerprint features");
return p;
case FINGERPRINT_INVALIDIMAGE:
Serial.println("Could not find fingerprint features");
return p;
default:
Serial.println("Unknown error");
return p;
}

Serial.println("Remove finger");
lcd.setCursor(0,2);
lcd.print("Remove finger ");
delay(2000);
p = 0;
while (p != FINGERPRINT_NOFINGER) {

137
p = finger.getImage();
}
Serial.print("ID "); Serial.println(id);
p = -1;
Serial.println("Place same finger again");
lcd.setCursor(0,2);
lcd.print(" Place same ");
lcd.setCursor(0,3);
lcd.print(" finger again ");
while (p != FINGERPRINT_OK) {
p = finger.getImage();
switch (p) {
case FINGERPRINT_OK:
Serial.println("Image taken");
break;
case FINGERPRINT_NOFINGER:
Serial.print(".");
break;
case FINGERPRINT_PACKETRECIEVEERR:
Serial.println("Communication error");
break;
case FINGERPRINT_IMAGEFAIL:
Serial.println("Imaging error");
break;
default:
Serial.println("Unknown error");
break;

138
}
}

// OK success!

p = finger.image2Tz(2);
switch (p) {
case FINGERPRINT_OK:
Serial.println("Image converted");
break;
case FINGERPRINT_IMAGEMESS:
Serial.println("Image too messy");
return p;
case FINGERPRINT_PACKETRECIEVEERR:
Serial.println("Communication error");
return p;
case FINGERPRINT_FEATUREFAIL:
Serial.println("Could not find fingerprint features");
return p;
case FINGERPRINT_INVALIDIMAGE:
Serial.println("Could not find fingerprint features");
return p;
default:
Serial.println("Unknown error");
return p;
}

139
// OK converted!
Serial.print("Creating model for #"); Serial.println(id);

p = finger.createModel();
if (p == FINGERPRINT_OK) {
Serial.println("Prints matched!");
} else if (p == FINGERPRINT_PACKETRECIEVEERR) {
Serial.println("Communication error");
return p;
} else if (p == FINGERPRINT_ENROLLMISMATCH) {
Serial.println("Fingerprints did not match");
return p;
} else {
Serial.println("Unknown error");
return p;
}

Serial.print("ID "); Serial.println(id);


p = finger.storeModel(id);
if (p == FINGERPRINT_OK) {
Serial.println("Stored!");
lcd.setCursor(0,2);
lcd.print(" Stored! ");
lcd.setCursor(0,3);
lcd.print(" Thankyou ");
} else if (p == FINGERPRINT_PACKETRECIEVEERR) {
Serial.println("Communication error");

140
return p;
} else if (p == FINGERPRINT_BADLOCATION) {
Serial.println("Could not store in that location");
return p;
} else if (p == FINGERPRINT_FLASHERR) {
Serial.println("Error writing to flash");
return p;
} else {
Serial.println("Unknown error");
return p;
}
}

#include <SPI.h>
#include <SD.h>

File myFile;

char c;
String msg;
String msgs;

void setup() {
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
buzz();
// Open serial communications and wait for port to open:

141
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}

Serial.print("Initializing SD card...");

if (!SD.begin(4)) {
Serial.println("initialization failed!");
return;
}
Serial.println("initialization done.");

// re-open the file for reading:


myFile = SD.open("absensi.txt");
if (myFile) {
Serial.println("absensi.txt:");

// read from the file until there's nothing else in it:


while (myFile.available()) {
Serial.write(myFile.read());
}
// close the file:
myFile.close();
} else {
// if the file didn't open, print an error:

142
Serial.println("error opening absensi.txt");
}

buzz();
}
void buzz()
{
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
delay(200);
digitalWrite(8,LOW);
digitalWrite(9,LOW);
delay(100);
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
delay(200);
digitalWrite(8,LOW);
digitalWrite(9,LOW);
}

void loop() {
msg="";
while(Serial.available()) {
c=Serial.read();
msg+=c;
delay(10);
}

143
msgs=msg;
if (msgs=="")
{

}
else
{
myFile = SD.open("absensi.txt", FILE_WRITE);

// if the file opened okay, write to it:


if (myFile) {
Serial.print("Writing to absensi.txt...");
myFile.println(msgs);
// close the file:
myFile.close();
Serial.println("done.");
buzz();
} else {
// if the file didn't open, print an error:
Serial.println("error opening datalog.txt");
}}
}

144

Anda mungkin juga menyukai