TUGAS AKHIR
Karya tulis sebagai salah satu syarat untuk memperoleh gelar Sarjana
Oleh
Grace La Rosa Sihotang
NIM 14S14010
Penulis
Pasfoto 3x4
Pembimbing
Mengetahui:
Diberikan kepada :
Nama : Grace La Rosa Sihotang
NIM : 14S14010
BAB I Pendahuluan
BAB II Tinjauan Pustaka
BAB III Metodologi Penelitian
BAB IV Hasil dan Pembahasan
BAB V Kesimpulan
Menyetujui
Oleh
Grace La Rosa Sihotang
NIM : 14S14010
Jumlah mahasiswa di Institut Teknologi Del pada awalnya tidak terlalu banyak, dan
penggunaan sistem pencatatan kehadiran manual masih tergolong efisien apabila
dilihat dari segi jumlah mahasiswa saat itu dan jumlah penggunaan kertas. Namun,
seiring berjalannya waktu, jumlah mahasiswa Institut Teknologi Del mengalami
peningkatan yang cukup signifikan, sehingga saat ini dibutuhkan sebuah sistem yang
efisien baik dari segi waktu maupun material yang digunakan untuk mendata kehadiran
mahasiswa dan dosen. Oleh sebab itu, dibutuhkan sebuah sistem yang dapat
meminimalisir hal tersebut. Teknologi RFID merupakan sebuah metode identifikasi
dengan menggunakan sarana yang disebut label RFID yang terdiri dari microchip
silicon dan antena. Sistem pencatatan kehadiran ini akan bekerja dengan
membandingkan id RFID pengguna yang sedang melakukan pencatatan kehadiran
dengan data id RFID yang sudah didaftar sebelumnya. Sistem pencatatan kehadiran
telah berhasil dibangun dan digunakan untuk mengatasi masalah pendataan kehadiran
yang masih dilakukan secara manual di IT Del. Sistem pencatatan ini dibangun
menggunakan Raspberry PI sebagai micro controller, MySQL sebagai database, dan
diimplementasikan dengan menggunakan bahasa pemrograman Python. Sistem
pencatatan kehadiran tersebut berhasil mencapai akurasi sebesar 86,8% dengan total
waktu yang digunakan ketika mebandingkan id RFID yang masuk dengan id RFID
yang telah disimpan adalah ± 1 detik.
I
KATA PENGANTAR
Puji serta syukur penulis panjatkan kepada Tuhan Yang Maha Esa yang telah
melimpahkan rahmat-Nya sehingga penulis dapat melaksanakan Tugas Akhir serta
dapat menyelesaikan skripsi yang berjudul “Pemanfaatan Teknologi RFID untuk
Pencatatan Pencatatan kehadiran di Institut Teknologi Del”. Keberhasilan
pengerjaan Tugas Akhir tidak lepas dari dukungan berbagai pihak yang sangat
membantu, oleh sebab itu penulis sampaikan rasa terimakasih kepada :
1. Bapak I Gde Eka Dirgayussa,S.Pd, M.Si, selaku Dosen Pembimbing I, yang
telah membimbing pengerjaan Tugas Akhir ini hingga selesai.
2. Bapak Marojahan Mula Timbul Sigiro, S.T, M.Sc, selaku Dosen
Pembimbing II yang telah membimbing pengerjaan Tugas Akhir ini hingga
selesai.
3. Bapak Indra Hartarto Tambunan, Ph.D, selaku Ketua Program Studi Teknik
elektro yang telah mengdukung dan memberikan izin untuk keberlangsungan
penelitian ini.
4. Keluarga besar, terkhusus orang tua yang telah banyak memberikan doa dan
dukungan hingga skripsi ini selesai.
5. Semua Pihak yang telah banyakk membantu dalam penyusunan skripsi ini,
yang tidak dapat penulis sebutkan satu persatu.
Akhir kata penulis menyadari bahwa dalam skripsi ini masih terdapat
kekurangan dan jauh dari sempurna, hal ini dikarenakan oleh keterbatasan,
pengalaman, dan pengetahuan penulis. Untuk itu saran dan kritik yang membangun
sangat diperlukan demi kesempurnaan skripsi ini di kemudian hari. Penulis berharap
semoga skripsi ini bermanfaat bagi penulis dan pihak lain yang tertarik untuk
membacanya.
Sitoluama, Januari 2019
Penulis
Grace La Rosa Sihotang
14S14010
II
DAFTAR ISI
ABSTRAK ..................................................................................................................... i
DAFTAR ISI ................................................................................................................ iii
DAFTAR GAMBAR .................................................................................................... v
DAFTAR TABEL ........................................................................................................ vi
DAFTAR SINGKATAN DAN LAMBANG.............................................................. vii
BAB 1 Pendahuluan ................................................................................................ 1
1.1. Latar Belakang ............................................................................................... 1
1.2. Rumusan Masalah .......................................................................................... 3
1.3. Tujuan Penelitian ............................................................................................ 3
1.3.1 Tujuan ................................................................................................... 3
1.3.2 Manfaat ................................................................................................. 3
1.4. Ruang Lingkup dan Batasan........................................................................... 4
1.5. Sistematika Penyajian .................................................................................... 4
BAB 2 Tinjauan Pustaka ......................................................................................... 5
2.1. RFID ............................................................................................................... 5
2.2. LCD (Liquid Crystal Display) 4x20 ............................................................... 6
2.3. Raspberry Pi ................................................................................................... 7
2.4. Python ............................................................................................................. 9
2.5. MySQL Database ........................................................................................... 9
BAB 3 Metode Penelitian ..................................................................................... 10
3.1. Lokasi dan Waktu Penelitian ........................................................................ 10
3.2. Bahan dan Alat Penelitian ............................................................................ 10
3.2.1 Bahan Penelitian.................................................................................. 10
3.2.2 Alat Penelitian ..................................................................................... 10
3.3. Teknik Pengambilan Data ............................................................................ 11
3.3.1 Studi Literatur ............................................................................................ 11
3.3.2 Observasi .................................................................................................... 11
3.3.3 Wawancara ................................................................................................. 12
3.4. Perancangan dan Pembuatan Alat ................................................................ 12
3.4.1 Perancangan Desain Sistem ................................................................ 12
3.4.2 Perancangan Desain Hardware ........................................................... 28
III
3.4.3 Perancangan Desain Database............................................................. 35
BAB 4 Hasil dan Pembahasan .............................................................................. 38
4.1. Tampilan Utama pada Sistem....................................................................... 38
4.2. Tampilan User ketika sistem berhasil membaca RFID card ....................... 39
4.3. Tampilan User Tidak Dikenal Sistem .......................................................... 40
BAB 5 Kesimpulan dan Saran .............................................................................. 41
5.1. Kesimpulan ................................................................................................... 41
5.2. Saran ............................................................................................................. 41
DAFTAR PUSTAKA ................................................................................................. 42
IV
DAFTAR GAMBAR
V
DAFTAR TABEL
VI
DAFTAR SINGKATAN DAN LAMBANG
VII
Tugas Akhir Sarjana BAB 1
BAB 1 Pendahuluan
RFID merupakan sebuah teknologi yang biasa digunakan saat merancang alat
pencatatan kehadiran yang otomatis.RFID terdiri dari microchip dan antena, microchip
tersebut akan digunakan sebagai tanda pengenal untuk setiap user melalui kartu yang
disebut RFID tag. Selanjutnya, pembacaan antara RFID tag dan RFID reader akan
dibantu oleh antena sebagai receiver dan transceiver. Penelitian ini bertujuan untuk
menerapkan teknologi RFID tersebut pada sistem pencatatan kehadiran yang
berguna untuk meminimalisir jumlah penggunaan kertas dan menghindari
Pemamfaatan Teknologi RFID untuk Pencatatan Pencatatan 1
kehadiran di Institut Teknologi Del
Tugas Akhir Sarjana BAB 1
kecurangan berupa pemalsuan identitas yang ada di Institut Teknologi Del. Sistem
pencatatan kehadiran ini akan bekerja dengan membandingkan data id RFID
pengguna yang sedang melakukan pencatatan kehadiran dengan data id RFID yang
sudah didaftar sebelumnya. Dengan adanya sistem pencatatan kehadiran ini,
diharapkan pihak BAAK lebih dimudahkan dalam proses pendataan kehadiran. Salah
satu aspek penting dalam penelitian ini adalah bagaimana proses matching antara data
yang masuk ketika melakukan pencatatan kehadiran, dengan data yang sudah disimpan
sebelumnya pada database, dalam penelitian ini database yang digunakan adalah My
Sql. Kedepannya, diharapkan penelitian ini boleh menjadi acuan penulis dalam
mengembangkan penelitian nya.
1.3.1 Tujuan
Adapun tujuan dari penelitian yang dilakukan dalam pembuatan sistem pencatatan
kehadiran dengan RFID adalah sebagai berikut:
1. Membangun sistem pencatatan kehadiran dengan menggunakan RFID sebagai
alat pencatat kehadiran mahasiswa atau dosen.
2. Meningkatkan sistem paperless (perpindahan dari paper-based environment ke
electronic-based environment) sehingga dapat mengurangi biaya operasional.
3. Memberikan kemudahan dalam proses pencatatan kehadiran bagi mahasiswa
atau dosen dan meningkatkan efisiensi waktu dalam pencatatan kehadiran di
Institut Teknologi Del.
1.3.2 Manfaat
Adapun manfaat dari pembuatan sistem pencatatan kehadiran mahasiswa dan dosen
berbasis RFID yaitu:
1. Menghindari kesalahan dan manipulasi data karena hanya mahasiswa yang
bersangkutan saja yang dapat melakukan pencatatan kehadiran.
2. Memberikan kemudahan dalam proses pencatatan kehadiran bagi para
mahasiswa dan meningkatkan efisiensi waktu.
3. Memberikan informasi kepada administrator mengenai kehadiran mahasiswa
yang dapat dijadikan dasar penilaian kedisiplinan mahasiswa.
Adapun Dokuman Skripsi ini disusun dalam 5 Bab yang terdiri dari:
BAB 2 TINJAUAN PUSTAKA berisi informasi dan teori para ahli yang diperoleh
berdasarkan tinjauan pustaka yang relevan dengan topik penelitian skripsi untuk
memperluas informasi dalam melakukan kajian dalam penelitian.
2.1. RFID
RFID (Radio Frequency Identification) adalah teknologi identifikasi berbasis
gelombang. Metode identifikasi menggunakan sarana yang disebut label RFID atau
transponder (tag) untuk menyimpan dan mengambil data jarak jauh. Teknologi ini
mampu mengidentifikasi berbagai objek secara simultan tanpa diperlukan kontak
langsung (atau dalam jarak pendek).
Secara utuh RFID terdiri atas 2 komponen yaitu :
1. RFID Tag
RFID tag dapat berupa stiker, kertas, atau plastic dengan beragam ukuran.
Dalam setiap tag terdapat chip yang mampu menyimpan sejumlah informasi
tertentu. Sebuah tag yang dipasang tidak menggunakan sumber energi seperti
batere sehingga dapat digunakan dalam waktu yang sangat lama.
2. RFID Reader
RFID reader terdiri dari RFID reader dan antenna yang akan mempengaruhi
jarak ortimal identifikasi. Reader mengirim gelombang electromagnet, yang
kemudian di terima oleh antenna pada label RFID. Label RFID mengirim data
berupa nomer serial (id RFID ) yang tersimpan dalam label, dengan mengirim
kembali gelombang radio ke RFID reader. Gambar 2.1. merupakan RFID tag
dan RFID reader.
RFID
tag
LCD (Liquid Crystal Display) atau display elektronik adalah salah satu
komponen elektronika yang berfungsi sebagai tampilan suatu data, baik karakter,
huruf ataupun grafik. LCD (Liquid Cristal Display) adalah salah satu jenis display
elektronik yang dibuat dengan teknologi CMOS logic yang bekerja dengan tidak
menghasilkan cahaya tetapi memantulkan cahaya yang ada di sekelilingnya
terhadap front-lit atau mentransmisikan cahaya dari back-lit. LCD merupakan
lapisan dari campuran organik antara lapisan kaca bening dengan elektroda
transparan indium oksida dalam bentuk tampilan seven-segment dan lapisan
elektroda pada kaca belakang. Ketika elektroda diaktifkan dengan medan listrik
(tegangan), molekul organik yang panjang dan silindris menyesuaikan diri dengan
elektroda dari segmen. Lapisan sandwich memiliki polarizer cahaya vertikal
depan dan polarizer cahaya horisontal belakang yang diikuti dengan lapisan
reflektor. Cahaya yang dipantulkan tidak dapat melewati molekul-molekul yang
telah menyesuaikan diri dan segmen yang diaktifkan terlihat menjadi gelap dan
membentuk karakter data yang ingin ditampilkan. [1] Bentuk fisik dari LCD 4x20
ditunjukkan pada Gambar 2.2. [4]
Untuk lebih jelas tentang fungsi masing-masing pin dari LCD 4x20 dapat dilihat pada
Tabel 2.1 [2]
Tabel 2.1 Fungsi Pin pada LCD 4x20
No Simbol Fungsi
1 VSS GND, 0V
2 VDD +5V
3 VO Contrast adjustment
4 RS Function Select
5 R/W Read/Write
6 E Enable Signal
7-10 DB0-DB3 Data Bus Line (Not Required)
11-14 DB4-DB7 Data Bus Line
15 A LED Backlight Anode (+)
16 K LED Backlight Cathode (-)
2.3. Raspberry Pi
Untuk lebih jelas tentang fungsi masing-masing pin pada Raspberry Pi dapat dilihat
pada Gambar 2.4.
2.4. Python
Python adalah bahasa pemrograman tingkat tinggi yang ditafsirkan, berorientasi objek,
dengan semantik yang dinamis. Tingkatannya yang tinggi dalam struktur data,
dikombinasikan dengan pengetikan yang dinamis dan pengikatan dinamis,
membuatnya sangat menarik untuk pengembangan aplikasi yang cepat, serta
digunakan sebagai bahasa scripting untuk menghubungkan komponen yang ada secara
bersamaan. Python merupakan bahasa pemograman yang sederhana, dengan sintaks
yang mudah dipelajari dan karenanya mengurangi biaya pemeliharaan program.
Python mendukung modul dan paket, yang mendorong modularitas program.
Interpreter Python dan pustaka standar yang luas tersedia dalam bentuk sumber tanpa
biaya untuk semua platform utama, dan dapat didistribusikan secara bebas. [3]
MySQL adalah sebuah perangkat lunak sistem manajemen basis data SQL. MySQL
adalah sebuah implementasi dari sistem manajemen basisdata relasional (RDBMS)
yang didistribusikan secara gratis dibawah lisensi GPL (General Public License).
Setiap pengguna dapat secara bebas menggunakan MySQL, namun dengan batasan
perangkat lunak tersebut tidak boleh dijadikan produk turunan yang bersifat komersial.
MySQL sebenarnya merupakan turunan salah satu konsep utama dalam basisdata yang
telah ada sebelumnya; SQL(Structured Query Language). SQL adalah sebuah konsep
pengoperasian basisdata, terutama untuk pemilihan atau seleksi dan pemasukan data,
yang memungkinkan pengoperasian data dikerjakan dengan mudah secara otomatis.
MySQL sangat populer untuk aplikasi web-hosting karena banyak fitur Web yang
dioptimalkan seperti tipe data HTML, dan karena tersedia secara gratis. Ini adalah
bagian dari arsitektur Linux, Apache, MySQL, PHP (LAMP), kombinasi dari platform
yang sering digunakan untuk membuat dan mendukung aplikasi Web yang canggih.
MySQL menjalankan basis data back-end dari beberapa situs web terkenal, termasuk
Wikipedia, Google, dan Facebook - sebuah bukti stabilitas dan ketangguhannya
terlepas dari filosofi yang terdesentralisasi dan bebas untuk semua. [5]
Penelitian dilakukan di Lab Sistem Kendali Institut Teknologi Del pada bulan Februari-
Juni 2018. Dengan melakukan penelitian pada RFID tag, RFID reader dan Raspberry
Pi sehingga dapat mengumpulkan data mengenai alat yang akan dibuat.
- Contrast Adjustment
3.3.2 Observasi
Observasi dilakukan di ruang kelas dan Lab Sistem Kendali di Institut Teknologi Del,
untuk mendapatkan data yang diperlukan dalam merancang hardware.
3.3.3 Wawancara
Wawancara dilakukan langsung kepada mahasiswa dan dosen yang ada di Institut
Teknologi Del agar diperoleh sistem yang baik sesuai kebutuhan mahasiswa dan dosen.
Pada Gambar 3.1 dapat dilihat bagaimana diagram sistem yang telah dirancang untuk
diimplementasikan. Raspberry Pi sebagai main controller akan menyimpan dan
membandingkan data yang masuk dengan data yang sudah disimpan di database. Main
controller tersebut terhubung dengan jaringan LAN (Local Area Network)
menggunakan kabel ethernet. LCD 4x20 bertindak untuk menampilkan identitas dari
user ketika melakukan pencatatan kehadiran. Seluruh komponen diatas akan bekerja
dengan sangat baik, sesuai dengan yang diharapkan oleh peneliti, dosen dan mahasiswa
apabila dihubungkan dengan sangat baik, dan tentunya juga dengan berbagai kode
program yang sesuai dengan apa yang sudah dirancang diatas. Untuk lebih jelas dan
rinci, seluruh kode program tersebut akan penulis cantumkan di masing-masing
komponen.
3.4.1.1 Registration
Flowchart pada Gambar 3.2 menunjukkan bagaimana proses registrasi untuk semua
mahasiswa dan dosen. Pada flowchart dapat dilihat bahwa proses akan terus
berlangsung apabila administrator hendak mendaftarkan terus mahasiswa/dosen yang
baru. Proses registrasi akan dimulai saat admin merekam data mahasiswa atau dosen
yang akan diregistasi berupa nama, nim, NIDN, kelas dan mata kuliah. Kemudian
setelah data yang dibutuhkan terpenuhi, dilakukanlah pembacaan id RFID mahasiswa
atau dosen, id RFID ini kemudian akan disimpan dalam database dan proses registrasi
selesai. Apabila id RFID gagal dibaca dan tidak dapat disimpan dalam database, akan
dilakukan pembacaan ulang. Proses ini akan dilakukan terus menerus, hingga semua
mahasiswa atau dosen terdaftar. Berikut ini adalah kode program yang digunakan
untuk proses registarsi tersebut :
import serial
import time
import datetime
import MySQLdb
import MFRC522
import RPi.GPIO as GPIO
db = MySQLdb.connect(host="172.37.40.40", user="root",
passwd="password", db="rfid")
curs= db.cursor()
#ser=serial.Serial('/dev/ttyACM1', 9600)
if ( f.verifyPassword() == False ):
raise ValueError('The given fingerprint sensor password
is wrong!')
except Exception as e:
print('The fingerprint sensor could not be initialized!')
print('Exception message: ' + str(e))
exit(1)
if ( positionNumber >= 0 ):
print('Template already exists at position #' +
str(positionNumber))
exit(0)
print('Remove finger...')
time.sleep(2)
## Creates a template
f.createTemplate()
f.loadTemplate(positionNumber, 0x01)
char_store = str (f.downloadCharacteristics(0x01))
char_store1= char_store.translate(None, ',[]')
except Exception as e:
print('Operation failed!')
print('Exception message: ' + str(e))
exit(1)
#GPIO.setmode(GPIO.BCM)
print("Type DONE to exit!")
status=" kosong"
while (status!='DONE'):
status=raw_input("Enter Status : ")
if(status=='Mahasiswa'):
nama=raw_input ("Enter Name : ")
nim=raw_input ("Enter Nim : ")
kelas=raw_input("Enter Class : ")
print('Scan RFID Card!')
MIFAREReader = MFRC522.MFRC522()
(status1,TagType) =
MIFAREReader.MFRC522_Request(MIFAREReader.PICC_REQIDL)
(status1,uid) = MIFAREReader.MFRC522_Anticoll()
while status1 != MIFAREReader.MI_OK :
MIFAREReader = MFRC522.MFRC522()
(status1,TagType) =
MIFAREReader.MFRC522_Request(MIFAREReader.PICC_REQIDL)
(status1,uid) = MIFAREReader.MFRC522_Anticoll()
if status1 == MIFAREReader.MI_OK:
rt_rfid = str (uid)
read_rfid = rt_rfid.translate(None, ',[] ')
print('ID RFID : %s' %read_rfid)
Pemamfaatan Teknologi RFID untuk Pencatatan Pencatatan 15
kehadiran di Institut Teknologi Del
Tugas Akhir Sarjana BAB 3
result=fingerscan()
id_finger=result[0]
print('ID Fingerprint: %i' %id_finger)
print(' \n')
templ_finger=result[1]
curs.execute("INSERT INTO user (rfid, nomor_induk,
status, nama, id_finger, temp_finger) VALUES ('%s', '%s', '%s',
'%s', '%i', '%s')" %(read_rfid, nim, status, nama, id_finger,
templ_finger ))
curs.execute("INSERT INTO Mahasiswa(rfid,
id_finger, Nama, Nim, Class)VALUES ('%s', '%i', '%s', '%s',
'%s')" %(read_rfid, id_finger, nama, nim, kelas))
db.commit()
else :
nama=raw_input ("Enter Name : ")
nidn=raw_input ("Enter Nidn : ")
matkul1=raw_input("Enter Subject : ")
matkul2=raw_input("Enter Subject : ")
matkul3=raw_input("Enter Subject : ")
matkul4=raw_input("Enter Subject : ")
print('Scan RFID Card!')
MIFAREReader = MFRC522.MFRC522()
(status1,TagType) =
MIFAREReader.MFRC522_Request(MIFAREReader.PICC_REQIDL)
(status1,uid) = MIFAREReader.MFRC522_Anticoll()
while status1 != MIFAREReader.MI_OK :
MIFAREReader = MFRC522.MFRC522()
(status1,TagType) =
MIFAREReader.MFRC522_Request(MIFAREReader.PICC_REQIDL)
(status1,uid) = MIFAREReader.MFRC522_Anticoll()
if status1 == MIFAREReader.MI_OK:
rt_rfid = str (uid)
read_rfid = rt_rfid.translate(None, ',[] ')
print('ID RFID : %s' %read_rfid)
result=fingerscan()
id_finger=result[0]
print('ID Fingerprint: %i' %id_finger)
print(' \n')
templ_finger=result[1]
curs.execute("INSERT INTO user (rfid, nomor_induk,
status, nama, id_finger, temp_finger) VALUES ('%s', '%s', '%s',
'%s', '%i', '%s')" %(read_rfid, nidn, status, nama, id_finger,
templ_finger ))
curs.execute("INSERT INTO Dosen (rfid, id_finger,
nidn, Nama, matakuliah1, matakuliah2, matakuliah3, matakuliah4)
VALUES ('%s', '%i', '%s', '%s', '%s', '%s', '%s',
'%s')" %(read_rfid, id_finger, nidn, nama, matkul1, matkul2,
matkul3, matkul4 ))
db.commit()
if __name__ == '__main__':
Pemamfaatan Teknologi RFID untuk Pencatatan Pencatatan 16
kehadiran di Institut Teknologi Del
Tugas Akhir Sarjana BAB 3
try:
main()
except KeyboardInterrupt:
pass
finally:
print "Goodbye!"
#lcd_byte(0x01, LCD_CMD)
#lcd_string("Goodbye!",LCD_LINE_2,2)
GPIO.cleanup()
3.4.1.2 Matching
Flowchart pada Gambar 3.3 menunjukkan ketika user yang melakukan pencatatan
kehadiran berstatus dosen, maka user tersebut akan melakukan pemilihan matakuliah,
dan selanjutnya data waktu pencatatan kehadiran akan tersimpan di database.
Proses matching akan dimulai ketika mahasiswa atau dosen ingin memasuki ruangan
kelas. Ketika kartu RFID mahasiswa atau dosen diletakkan pada modul RFID, id RFID
akan dibaca untuk dikenali. Jika RFID modul gagal membaca id RFID , maka akan
Pemamfaatan Teknologi RFID untuk Pencatatan Pencatatan 17
kehadiran di Institut Teknologi Del
Tugas Akhir Sarjana BAB 3
muncul perintah “COBA LAGI !” yang meminta user untuk meletakkan kembali RFID
tag pada modul RFID .Apabila id RFID berhasil dibaca, sistem akan memeriksa data
pemilik id RFID tersebut dengan data yang ada di database. Apabila berstatus
mahasiswa, sistem akan menampilkan nama mahasiswa, kelas, dan waktu mahasiswa
tersebut melakukan enroll. Selanjutnya sistem akan menyimpan data enroll tersebut ke
dalam database table log. Apabila pemilik id RFID berstatus dosen, sistem akan
menampilkan nama dosen, kelas, dan waktu. Kemudian sistem akan menampilkan
daftar mata kuliah yang dibawakan dosen tersebut dan meminta dosen untuk memilih
mata kuliah yang akan diajarkannya pada kelas yang akan dimasuki. Setelah mata
kuliah dipilih, sistem akan menyimpan data tersebut ke dalam database sebagai log.
Kode program yang dibangun untuk proses matching dapat dilihat pada : [4]. Kode
program dibawah ini akan membantu seluruh rancangan untuk matching diatas berjalan
dengan baik dan sesuai dengan fungsi yang telah dirancang.
import serial
import time
import datetime
import MySQLdb
import MFRC522
import Adafruit_GPIO.SPI as SPI
from pyfingerprint.pyfingerprint import PyFingerprint
# Timing constants
E_PULSE = 0.0005
E_DELAY = 0.0005
GPIO.setmode(GPIO.BCM)
GPIO.setup(26,GPIO.IN,pull_up_down=GPIO.PUD_DOWN) #tombol1
GPIO.setup(13,GPIO.IN,pull_up_down=GPIO.PUD_DOWN) #tombol2
GPIO.setup(6,GPIO.IN,pull_up_down=GPIO.PUD_DOWN) #tombol3
GPIO.setup(5,GPIO.IN,pull_up_down=GPIO.PUD_DOWN) #tombol4
GPIO.setup(12,GPIO.IN,pull_up_down=GPIO.PUD_DOWN) #tombol_OK
GPIO.setup(19,GPIO.IN,pull_up_down=GPIO.PUD_DOWN) #tombol update
GPIO.setup(21,GPIO.OUT) #BUZZER
def lcd_init():
# Initialise display
lcd_byte(0x33,LCD_CMD) # 110011 Initialise
lcd_byte(0x32,LCD_CMD) # 110010 Initialise
lcd_byte(0x06,LCD_CMD) # 000110 Cursor move direction
lcd_byte(0x0C,LCD_CMD) # 001100 Display On,Cursor Off, Blink Off
lcd_byte(0x28,LCD_CMD) # 101000 Data length, number of lines, font size
lcd_byte(0x01,LCD_CMD) # 000001 Clear display
time.sleep(E_DELAY)
GPIO.output(LCD_RS, mode) # RS
# High bits
GPIO.output(LCD_D4, False)
GPIO.output(LCD_D5, False)
GPIO.output(LCD_D6, False)
GPIO.output(LCD_D7, False)
if bits&0x10==0x10:
GPIO.output(LCD_D4, True)
if bits&0x20==0x20:
Pemamfaatan Teknologi RFID untuk Pencatatan Pencatatan 19
kehadiran di Institut Teknologi Del
Tugas Akhir Sarjana BAB 3
GPIO.output(LCD_D5, True)
if bits&0x40==0x40:
GPIO.output(LCD_D6, True)
if bits&0x80==0x80:
GPIO.output(LCD_D7, True)
# Low bits
GPIO.output(LCD_D4, False)
GPIO.output(LCD_D5, False)
GPIO.output(LCD_D6, False)
GPIO.output(LCD_D7, False)
if bits&0x01==0x01:
GPIO.output(LCD_D4, True)
if bits&0x02==0x02:
GPIO.output(LCD_D5, True)
if bits&0x04==0x04:
GPIO.output(LCD_D6, True)
if bits&0x08==0x08:
GPIO.output(LCD_D7, True)
def lcd_toggle_enable():
# Toggle enable
time.sleep(E_DELAY)
GPIO.output(LCD_E, True)
time.sleep(E_PULSE)
GPIO.output(LCD_E, False)
time.sleep(E_DELAY)
def lcd_string(message,line,style):
if style==1:
message = message.ljust(LCD_WIDTH," ")
elif style==2:
message = message.center(LCD_WIDTH," ")
elif style==3:
message = message.rjust(LCD_WIDTH," ")
lcd_byte(line, LCD_CMD)
for i in range(LCD_WIDTH):
lcd_byte(ord(message[i]),LCD_CHR)
def tampilayar(data1,data2):
lcd_byte(0x01, LCD_CMD)
lcd_string("WELCOME",LCD_LINE_1,2)
lcd_string("Ruangan 715",LCD_LINE_2,2)
lcd_string(data2,LCD_LINE_3,2)
lcd_string(data1,LCD_LINE_4,2)
# Blank display
#lcd_byte(0x01, LCD_CMD)
def tampilayardosen(ntemp,data1,data2,data3,data4):
today= datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
str(today)
GPIO.input(26)==0
GPIO.input(13)==0
GPIO.input(6)==0
GPIO.input (5)==0
GPIO.input (12)==0
lcd_byte(0x01, LCD_CMD)
lcd_string("Choose",LCD_LINE_2,2)
lcd_string("Your Subject!",LCD_LINE_3,2)
#lcd_string("Subject!",LCD_LINE_4,2)
time.sleep(1.5)
ruang = "GD715"
while( GPIO.input(12)!=1):
if GPIO.input(26):
curs.execute("INSERT INTO Log (nama, datetime, ruangan,
matakuliah) VALUES ('%s', '%s', '%s', '%s')" %(ntemp, today, ruang,
data1))
print "26 masuk"
db.commit()
sleep(.2)
elif GPIO.input(13):
curs.execute("INSERT INTO Log (nama, datetime, ruangan,
matakuliah) VALUES ('%s', '%s', '%s', '%s')" %(ntemp, today, ruang,
data2))
print "13 masuk"
db.commit()
sleep(.2)
elif GPIO.input(6):
Pemamfaatan Teknologi RFID untuk Pencatatan Pencatatan 21
kehadiran di Institut Teknologi Del
Tugas Akhir Sarjana BAB 3
elif GPIO.input(5):
curs.execute("INSERT INTO Log (nama, datetime, ruangan,
matakuliah) VALUES ('%s', '%s', '%s', '%s')" %(ntemp, today, ruang,
data4))
print "5 masuk"
db.commit()
sleep(.2)
else:
pass
def main():
#MIFAREReader = MFRC522.MFRC522()
GPIO.setmode(GPIO.BCM) # Use BCM GPIO numbers
GPIO.setup(LCD_E, GPIO.OUT) # E
GPIO.setup(LCD_RS, GPIO.OUT) # RS
GPIO.setup(LCD_D4, GPIO.OUT) # DB4
GPIO.setup(LCD_D5, GPIO.OUT) # DB5
GPIO.setup(LCD_D6, GPIO.OUT) # DB6
GPIO.setup(LCD_D7, GPIO.OUT) # DB7
lcd_init()
while (True):
MIFAREReader = MFRC522.MFRC522()
lcd_string("ATTENDANCE SYSTEM",LCD_LINE_1,2)
lcd_string("TA-2 ELEKTRO 2014",LCD_LINE_4,2)
#str(today)
clk= datetime.datetime.now().strftime("%H:%M:%S")
lcd_string(rdy,LCD_LINE_2,2)
lcd_string(clk,LCD_LINE_3,2)
if GPIO.input(19):
lcd_byte(0x01, LCD_CMD)
lcd_string("UPDATING..",LCD_LINE_2,2)
try:
f = PyFingerprint('/dev/ttyUSB0', 57600, 0xFFFFFFFF,
0x00000000)
if ( f.verifyPassword() == False ):
raise ValueError('The given fingerprint sensor
password is wrong!')
except Exception as e:
print('The fingerprint sensor could not be initialized!')
Pemamfaatan Teknologi RFID untuk Pencatatan Pencatatan 22
kehadiran di Institut Teknologi Del
Tugas Akhir Sarjana BAB 3
except Exception as e:
print('Operation failed!')
print('Exception message: ' + str(e))
lcd_byte(0x01, LCD_CMD)
print('Duplicated Data')
lcd_string("Duplicated Data",LCD_LINE_2,2)
lcd_string("Please Contact",LCD_LINE_3,2)
lcd_string("Administrator",LCD_LINE_4,2)
print('Exception message: ' + str(e))
time.sleep(2)
lcd_byte(0x01, LCD_CMD)
try:
(status,TagType) =
MIFAREReader.MFRC522_Request(MIFAREReader.PICC_REQIDL)
if status == MIFAREReader.MI_OK:
(status,uid) = MIFAREReader.MFRC522_Anticoll()
if status == MIFAREReader.MI_OK:
lcd_byte(0x01, LCD_CMD)
rt_rfid = str (uid)
rt_rfid1 = rt_rfid.translate(None, ',[] ')
print rt_rfid1
#print today
curs.execute("SELECT matakuliah1 FROM Dosen
WHERE rfid = ('%s')" %rt_rfid1)
matkul1 = curs.fetchone()
t_matkul1 = matkul1[0]
curs.execute("SELECT matakuliah2 FROM Dosen
WHERE rfid = ('%s')" %rt_rfid1)
matkul2 = curs.fetchone()
t_matkul2 = matkul2[0]
curs.execute("SELECT matakuliah3 FROM Dosen
WHERE rfid = ('%s')" %rt_rfid1)
matkul3 = curs.fetchone()
t_matkul3 = matkul3[0]
curs.execute("SELECT matakuliah4 FROM Dosen
WHERE rfid = ('%s')" %rt_rfid1)
matkul4 = curs.fetchone()
t_matkul4 = matkul4[0]
tampilayar(ntemp,clk)
print "Memilih matakuliah"
tampilayardosen(ntemp, t_matkul1, t_matkul2,
t_matkul3, t_matkul4)
print "Data sudah masuk"
lcd_byte(0x01, LCD_CMD)
lcd_string("DATA RECORDED",LCD_LINE_2,2)
time.sleep(1)
lcd_byte(0x01, LCD_CMD)
else:
today=
datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
str(today)
curs.execute("SELECT nama FROM user WHERE rfid =
('%s')" %rt_rfid1)
nama = curs.fetchone()
ntemp = nama[0]
print ntemp
print today
ruang = "GD715"
mat="-"
tampilayar(ntemp,clk)
curs.execute("INSERT INTO Log (nama, datetime,
ruangan, matakuliah) VALUES ('%s', '%s', '%s', '%s')" %(ntemp, today,
ruang, mat))
db.commit()
lcd_byte(0x01, LCD_CMD)
except Exception as e:
GPIO.output(21, True)
Pemamfaatan Teknologi RFID untuk Pencatatan Pencatatan 24
kehadiran di Institut Teknologi Del
Tugas Akhir Sarjana BAB 3
time.sleep(.075)
GPIO.output(21, False)
time.sleep(.045)
GPIO.output(21, True)
time.sleep(.075)
GPIO.output(21, False)
time.sleep(.045)
GPIO.output(21, True)
time.sleep(.075)
GPIO.output(21, False)
lcd_byte(0x01, LCD_CMD)
print('RFID belum didaftar!!!')
lcd_string("COBA LAGI",LCD_LINE_2,2)
print('Exception message: ' + str(e))
time.sleep(2)
lcd_byte(0x01, LCD_CMD)
try:
f = PyFingerprint('/dev/ttyUSB0', 57600, 0xFFFFFFFF,
0x00000000)
if ( f.verifyPassword() == False ):
raise ValueError('The given fingerprint sensor password
is wrong!')
except Exception as e:
print('The fingerprint sensor could not be initialized!')
print('Exception message: ' + str(e))
try:
key= f.readImage()
if (key != False ):
## Converts read image to characteristics and stores it in charbuffer 1
f.convertImage(0x01)
## Searchs template
result = f.searchTemplate()
positionNumber = result[0]
lcd_byte(0x01, LCD_CMD)
curs.execute("SELECT status FROM user WHERE id_finger=
('%s')" %positionNumber)
status = curs.fetchone()
t_stat=status[0]
print t_stat
GPIO.output(21, True)
time.sleep(.085)
GPIO.output(21, False)
ruang = "GD715"
if(t_stat == "Dosen"):
curs.execute("SELECT Nama FROM Dosen WHERE id_finger
= ('%s')" %positionNumber)
nama = curs.fetchone()
Pemamfaatan Teknologi RFID untuk Pencatatan Pencatatan 25
kehadiran di Institut Teknologi Del
Tugas Akhir Sarjana BAB 3
ntemp = nama[0]
print ntemp
#print today
curs.execute("SELECT matakuliah1 FROM Dosen WHERE
id_finger = ('%s')" %positionNumber)
matkul1 = curs.fetchone()
t_matkul1 = matkul1[0]
curs.execute("SELECT matakuliah2 FROM Dosen WHERE
id_finger = ('%s')" %positionNumber)
matkul2 = curs.fetchone()
t_matkul2 = matkul2[0]
curs.execute("SELECT matakuliah3 FROM Dosen WHERE
id_finger = ('%s')" %positionNumber)
matkul3 = curs.fetchone()
t_matkul3 = matkul3[0]
curs.execute("SELECT matakuliah4 FROM Dosen WHERE
id_finger = ('%s')" %positionNumber)
matkul4 = curs.fetchone()
t_matkul4 = matkul4[0]
tampilayar(ntemp,clk)
print "Memilih matakuliah"
tampilayardosen(ntemp, t_matkul1, t_matkul2,
t_matkul3, t_matkul4)
print "Data sudah masuk"
lcd_byte(0x01, LCD_CMD)
lcd_string("DATA RECORDED",LCD_LINE_2,2)
time.sleep(1)
lcd_byte(0x01, LCD_CMD)
else:
today=
datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
str(today)
curs.execute("SELECT nama FROM user WHERE id_finger
= ('%s')" %positionNumber)
nama = curs.fetchone()
ntemp = nama[0]
print ntemp
print today
mat="-"
tampilayar(ntemp,clk)
curs.execute("INSERT INTO Log (nama, datetime,
ruangan, matakuliah) VALUES ('%s', '%s', '%s', '%s')" %(ntemp, today,
ruang, mat))
db.commit()
lcd_byte(0x01, LCD_CMD)
except Exception as e:
GPIO.output(21, True)
time.sleep(.075)
GPIO.output(21, False)
time.sleep(.045)
GPIO.output(21, True)
time.sleep(.075)
Pemamfaatan Teknologi RFID untuk Pencatatan Pencatatan 26
kehadiran di Institut Teknologi Del
Tugas Akhir Sarjana BAB 3
GPIO.output(21, False)
time.sleep(.045)
GPIO.output(21, True)
time.sleep(.075)
GPIO.output(21, False)
print('Fingerprint belum didaftar!!!')
lcd_string("COBA LAGI",LCD_LINE_2,2)
print('Exception message: ' + str(e))
time.sleep(2)
lcd_byte(0x01, LCD_CMD)
if __name__ == '__main__':
try:
main()
except KeyboardInterrupt:
pass
finally:
lcd_byte(0x01, LCD_CMD)
lcd_string("Goodbye!",LCD_LINE_2,2)
GPIO.cleanup()
Pada Gambar 3.4 dapat dilihat bagaimana integrasi antara LCD dan Raspberry Pi. Pada
gambar terdapat Potensiometer yang berfungsi untuk mengatur kontras/kecerahan
layar LCD. Raspberry dan LCD diatas akan berjalan dengan baik apabila dihubungkan
dengan baik sesuai dengan pinnya, dan juga dengan bantuan kode program yang
berfungsi untuk menjalankan seluruh fungsi yang telah dirancang. Berikut ini adalah
kode program konfugarasi Raspberry Pi dengan LCD.
# Timing constants
E_PULSE = 0.0005
E_DELAY = 0.0005
def lcd_init():
# Initialise display
lcd_byte(0x33,LCD_CMD) # 110011 Initialise
lcd_byte(0x32,LCD_CMD) # 110010 Initialise
lcd_byte(0x06,LCD_CMD) # 000110 Cursor move direction
lcd_byte(0x0C,LCD_CMD) # 001100 Display On,Cursor Off, Blink Off
lcd_byte(0x28,LCD_CMD) # 101000 Data length, number of lines,
font size
lcd_byte(0x01,LCD_CMD) # 000001 Clear display
time.sleep(E_DELAY)
GPIO.output(LCD_RS, mode) # RS
# High bits
GPIO.output(LCD_D4, False)
GPIO.output(LCD_D5, False)
GPIO.output(LCD_D6, False)
GPIO.output(LCD_D7, False)
if bits&0x10==0x10:
GPIO.output(LCD_D4, True)
if bits&0x20==0x20:
GPIO.output(LCD_D5, True)
if bits&0x40==0x40:
GPIO.output(LCD_D6, True)
if bits&0x80==0x80:
GPIO.output(LCD_D7, True)
# Low bits
GPIO.output(LCD_D4, False)
GPIO.output(LCD_D5, False)
Pemamfaatan Teknologi RFID untuk Pencatatan Pencatatan 29
kehadiran di Institut Teknologi Del
Tugas Akhir Sarjana BAB 3
GPIO.output(LCD_D6, False)
GPIO.output(LCD_D7, False)
if bits&0x01==0x01:
GPIO.output(LCD_D4, True)
if bits&0x02==0x02:
GPIO.output(LCD_D5, True)
if bits&0x04==0x04:
GPIO.output(LCD_D6, True)
if bits&0x08==0x08:
GPIO.output(LCD_D7, True)
def lcd_toggle_enable():
# Toggle enable
time.sleep(E_DELAY)
GPIO.output(LCD_E, True)
time.sleep(E_PULSE)
GPIO.output(LCD_E, False)
time.sleep(E_DELAY)
def lcd_string(message,line,style):
# Send string to display
# style=1 Left justified
# style=2 Centred
# style=3 Right justified
if style==1:
message = message.ljust(LCD_WIDTH," ")
elif style==2:
message = message.center(LCD_WIDTH," ")
elif style==3:
message = message.rjust(LCD_WIDTH," ")
lcd_byte(line, LCD_CMD)
for i in range(LCD_WIDTH):
lcd_byte(ord(message[i]),LCD_CHR)
lcd_init()
lcd_string("ATTENDANCE SYSTEM",LCD_LINE_1,2)
#str(today)
clk= datetime.datetime.now().strftime("%H:%M:%S")
lcd_string(rdy,LCD_LINE_2,2)
lcd_string(clk,LCD_LINE_3,2)
Pada Gambar 3.5 dapat dilihat bagaimana integrasi antara modul RFID dengan
Raspbery Pi. Raspberry Pi akan membantu mengirim dan membandingkan data dari
RFID reader ke database. Agar seluruh alat diatas bekerja dengan baik, maka selain
pengunnaan pin nya harus tepat, kode program yang tepat dan sesuai dengan rancangan
juga harus di implementasikan. Berikut ini adalah kode Program Untuk Konfigurasi
RFID RC 522 ke Raspberry Pi.
try:
#membaca rfid card yang diletakkan pada modul MFRC522
(status,TagType) =
MIFAREReader.MFRC522_Request(MIFAREReader.PICC_REQIDL)
if status == MIFAREReader.MI_OK:
(status,uid) = MIFAREReader.MFRC522_Anticoll()
if status == MIFAREReader.MI_OK:
lcd_byte(0x01, LCD_CMD)
t_stat=status_1[0]
print t_stat
GPIO.output(21, True)
time.sleep(.085)
GPIO.output(21, False)
if(t_stat == "Dosen"):
curs.execute("SELECT Nama FROM Dosen WHERE rfid =
('%s')" %rt_rfid1)
nama = curs.fetchone()
ntemp = nama[0]
print ntemp
#print today
curs.execute("SELECT matakuliah1 FROM Dosen WHERE
rfid = ('%s')" %rt_rfid1)
matkul1 = curs.fetchone()
t_matkul1 = matkul1[0]
curs.execute("SELECT matakuliah2 FROM Dosen WHERE
rfid = ('%s')" %rt_rfid1)
matkul2 = curs.fetchone()
t_matkul2 = matkul2[0]
curs.execute("SELECT matakuliah3 FROM Dosen WHERE
rfid = ('%s')" %rt_rfid1)
matkul3 = curs.fetchone()
t_matkul3 = matkul3[0]
curs.execute("SELECT matakuliah4 FROM Dosen WHERE
rfid = ('%s')" %rt_rfid1)
matkul4 = curs.fetchone()
t_matkul4 = matkul4[0]
tampilayar(ntemp,clk)
print "Memilih matakuliah"
tampilayardosen(ntemp, t_matkul1, t_matkul2,
t_matkul3, t_matkul4)
print "Data sudah masuk"
lcd_byte(0x01, LCD_CMD)
lcd_string("DATA RECORDED",LCD_LINE_2,2)
time.sleep(1)
lcd_byte(0x01, LCD_CMD)
else:
today=
datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
str(today)
curs.execute("SELECT nama FROM user WHERE rfid =
('%s')" %rt_rfid1)
nama = curs.fetchone()
ntemp = nama[0]
print ntemp
print today
ruang = "GD715"
mat="-"
tampilayar(ntemp,clk)
except Exception as e:
GPIO.output(21, True)
time.sleep(.075)
GPIO.output(21, False)
time.sleep(.045)
GPIO.output(21, True)
time.sleep(.075)
GPIO.output(21, False)
time.sleep(.045)
GPIO.output(21, True)
time.sleep(.075)
GPIO.output(21, False)
lcd_byte(0x01, LCD_CMD)
print('RFID belum didaftar!!!')
lcd_string("COBA LAGI",LCD_LINE_2,2)
print('Exception message: ' + str(e))
time.sleep(2)
lcd_byte(0x01, LCD_CMD)
Tabel dosen akan menyimpan data: ID RFID , NIDN, Nama, dan matakuliah yang
diajarkan. Tabel dosen dapat dilihat pada Gambar 3.7.
Tabel mahasiswa akan menyimpan data: id RFID , NIM, Nama dan Kelas. Tabel
mahasiswa dapat dilihat pada Gambar 3.8.
Tabel log akan menyimpan data nama dan waktu ketika user melakukan pencatatan
kehadiran. Tabel log dapat dilihat pada Gambar 3.9.
Pemamfaatan Teknologi RFID untuk Pencatatan Pencatatan 36
kehadiran di Institut Teknologi Del
Tugas Akhir Sarjana BAB 3
Integrasi Database dan web server yang dibangun pada sistem ini, menggunakan
bantuan software XAMPP yang di-install pada PC. Agar bisa diakses oleh client
lainnya, perlu dilakukan setting-an dengan mengganti file Apache (httpd.conf), pada
file tersebut terdapat baris script : Listen: localhost:80, ganti script tersebut menjadi:
Listen: ip_address:80 (Misalnya Listen 172.37.40.40:80). Apabila sudah selesai,
jalankan apache web server dan mysql database pada aplikasi XAMPP.
.
Gambar 4.2 Tampilan pada LCD ketika berhasil membaca RFID card
Pada Gambar 4.2 ditunjukkan tampilan user dengan status adalah mahasiswa. Pada
LCD terdapat informasi berupa ruangan yang dimasuki, waktu ketika dilakukan
pencatatan kehadiran dan nama dari mahasiswa tersebut. Gambar diatas menunjukkan
bahwa fungsi registrasi berhasil, fungsi matching berhasil dan LCD mampu
menampilkan identitas user.
Pada Gambar 4.3 ditunjukkan tampilan sistem ketika user yang melakukan pencatatan
kehadiran tidak dikenali oleh sistem. Modul RFID kadang kala tidak baik menangkap
gelombang radio dari RFID card yang dimiliki user. Jarak yang baik agar hasil
tangkapan gelombang radio yang dihasilkan baik adalah posisi dimana RFID tag dan
RFID reader, tidak lebih dari 6cm. Gambar diatas menunjukkan bahwa fungsi
matching bekerja dengan baik, tidak hanya untuk user yang sudah di daftarkan namun
juga untuk user yang belum terdaftar, demikian juga hal nya dengan LCD. LCD bekerja
dengan baik, tidak hanya sebagai disply untuk user terdaftar tetapi juga sebagai disply
untuk user yang belum terdaftar.
5.2. Saran
Adapun saran untuk penelitian selanjutnya adalah menambahkan fitur-fitur lainnya,
membuat enkripsi keamanan data, membangun sistem informasi untuk data yang
disimpan di database, dan merancang tampilan hardware yang lebih baik.