Disusun oleh:
Disusun oleh:
Puji syukur penulis panjatkan kehadirat Tuhan Yang Maha Kuasa atas limpahan
rahmat dan karunia-Nya sehingga laporan tugas akhir dengan judul “Sistem Kontrol
Kehadiran Belajar Mengajar dengan RFID dan Pengenalan Wajah Berbasis
Raspberry Pi” ini dapat terselesaikan. Laporan tugas akhir ini disusun untuk
memenuhi salah satu persyaratan untuk menyelesaikan Program Diploma III
Jurusan Teknik Elektro di Politeknik Negeri Semarang.
Penulis menyadari bahwa lancarnya tugas akhir dan penulisan laporan tidak lepas
dari bimbingan dan bantuan dari berbagai pihak. Oleh karena itu, penulis
mengucapkan terimakasih kepada :
1. Bapak Prof. Dr. Totok Prasetyo, B.Eng (Hons),. M.T., IPU selaku Direktur
Politeknik Negeri Semarang.
2. Bapak Yusnan Badruzzaman, S.T., M.Eng., selaku Ketua Jurusan Teknik
Elektro Politeknik Negeri Semarang.
3. Bapak Ilham Sayekti, S.T., M.Kom., selaku Ketua Program Studi Teknik
Elektronika Politeknik Negeri Semarang.
4. Bapak Dr. samuel BETA; Ing-Tech,. M.T. selaku Dosen Pembimbing I dan Ibu
Dra. Sri Astuti, M.M. selaku Dosen Pembimbing II yang telah memberikan
bimbingan dalam penyusunan tugas akhir ini.
5. Bapak Adi Wisaksono, S.T., M.M., sebagai Dosen Wali Elektronika 3A yang
telah memberikan arahan selama menempuh studi.
6. Seluruh dosen dan staff Program Studi Teknik Elektronika yang telah
memberikan ilmu dan banyak pengalaman selama menempuh studi.
7. Orang tua penulis yang telah memberikan doa dan dukungan.
8. Teman-teman Program Studi Teknik Elektronika khususnya kelas EK-3A yang
selalu memberikan semangat dan kebersamaannya dalam proses penyusunan
tugas akhir.
Semarang, Agustus 2022
v
ABSTRAK
vi
ABSTRACT
Data collection on the attendance of lecturers and students at the Semarang State
Polytechnic was carried out by signing the attendance control sheet provided by
the PBM. There are drawbacks, namely the paper is easily wet, torn and lost, the
arrival hours of lecturers and students are not documented, the Head of Study
Program cannot store complete data on the attendance of lecturers and students
because attendance sheets are always updated every week. Palm touch contact on
paper should be avoided to prevent the spread of unknown viruses. For this reason,
a teaching and learning attendance control system was made with RFID and
Raspberry Pi-based facial recognition which was applied to the Digital Laboratory
of the Semarang State Polytechnic. The purpose of making this system is to facilitate
the determination of student compensation, facilitate the recapitulation of
attendance data through data storage. Raspberry Pi 3B+ is used as input and
output processor. MLX-90614 sensor used to temperature mesurement. HC-SR04
sensor used to measurement object. After the parameters are met, the system reads
the identity card of the lecturer or student registered in the system to fill in
attendance. Push button 1 in the room to open the webcam access to do facial
recognition. Push button 2 to open the door from inside the room. 3.5” screen for
displaying commands and data. To support room security, door opening and
locking can only be done by the Head of Study Program, lecturer, and laboratory
staff. Name, NIM/NIP, information late or not, attendance access used, attendance
time recorded in the local database.
Keywords: GY906-14, HC-SR04, local database, Raspberry Pi 3B+, RFID,
webcam.
vii
DAFTAR ISI
ABSTRAK ......................................................................................................... vi
viii
2.4.2 Pendeteksi Wajah (Kamera Web) .............................................................. 16
2.4.5 Penampil Data (Tampilan Kristal Cair TFT 3.5 inchi) ............................... 21
3.2.10 Penggerak................................................................................................ 48
ix
3.3.4 Pengukuran Tombol Tekan........................................................................ 54
x
DAFTAR TABEL
xi
DAFTAR GAMBAR
xii
Gambar 3.14 Program Menjalankan Sensor Ultrasonik HC-SR04 ......................40
Gambar 3.15 Rangkaian Sensor Suhu MLX90614 dengan Raspberry Pi 3B+ .....41
Gambar 3.16 Program Menjalankan Sensor Suhu MLX90614 ...........................43
Gambar 3.17 Rangkaian Tombol Tekan dengan Raspberry Pi 3B+ ....................43
Gambar 3.18 Program Menjalankan Tombol Tekan ...........................................44
Gambar 3.19 Rangkaian Tampilan Kristal Cair TFT 3.5 inchi dengan Raspberry
Pi 3B+ ...................................................................................................45
Gambar 3.20 Program Menjalankan Tampilan Kristal Cair TFT ........................47
Gambar 3.21 Rangkaian Modul Relai 1 saluran dengan Raspberry Pi 3B+ .........48
Gambar 3.22 Program Menjalankan Pengunci Pintu ..........................................49
Gambar 3.23 Program Menjalankan Database ....................................................50
Gambar 3.24 Tampilan Pangkalan Data Awan ...................................................51
Gambar 3.25 Titik Pengukuran ..........................................................................52
Gambar 3.26 Proses Pengenalan Raut Wajah dengan Kamera ............................56
Gambar 3.27 Grafik Perbandingan .....................................................................58
Gambar 3.28 Menghubungkan Steker Ke Tegangan Jala-Jala.............................59
Gambar 3.29 Mengukur Suhu ............................................................................60
Gambar 3.30 Dosen Melakukan Presensi Menggunakan Kartu RFID .................60
Gambar 3.31 Mahasiswa Melakukan Presensi Menggunakan Kartu RFID .........61
Gambar 3.32 Hasil Data Presensi .......................................................................61
xiii
DAFTAR LAMPIRAN
Lampiran 10 Datasheet
xiv
DAFTAR SINGKATAN
DC = Direct Current
GB = Giga Byte
ID = Identity
xv
MikroSD = Secure Digital Memory Card
NC = Normally Close
NO = Normally Open
xvi
BAB 1 PENDAHULUAN
Daftar hadir mahasiswa pada kegiatan belajar mengajar Program Studi Teknik
Elektronika di Politeknik Negeri Semarang merupakan suatu data yang direkap
guna mengetahui jumlah kehadiran, ketidakhadiran, dan keterlambatan mahasiswa
maupun dosen pada saat perkuliahan. Dosen dan mahasiswa memiliki catatan daftar
hadir menggunakan kertas yang biasanya dilaporkan kepada pengelola PBM
(Proses Belajar Mengajar) selaku pengolah data. Kegiatan presensi mahasiswa
masih dilaksanakan secara manual, dosen harus memanggil nama mahasiswa satu
persatu yang kemudian kertas daftar kehadiran harus ditandatangani oleh
mahasiswa. Daftar kehadiran yang masih menggunakan kertas ini memiliki
kekurangan, yaitu tidak validnya data yang masuk seperti ketidaktelitian dosen saat
melakukan absensi sehingga mahasiswa yang hadir tidak dicatat maupun
sebaliknya, kertas yang mudah rusak dan hilang sehingga dapat merugikan
mahasiswa dan dosen, lalainya mahasiswa dalam melakukan absensi, manipulasi
data (tanda tangan) yang dapat dilakukan oleh mahasiswa maupun dosen ketika
tidak hadir, jumlah akhir presensi mahasiswa yang tidak sesuai dengan kenyataan.
1
2
RFID, mahasiswa dapat menggunakan kamera web dengan meminta izin dosen
terlebih dahulu. Hasil data presensi dapat disimpan, diunduh, dan diolah di
pangkalan data awan sehingga menghasilkan informasi presensi. Dengan adanya
sistem presensi digital membuat presensi mahasiswa dan dosen lebih efisien dan
akurat. Selain itu, ruang laboratorium juga lebih aman setelah kegiatan
pembelajaran sudah selesai.
1.1.2 Tujuan
1.1.3 Manfaat
Manfaat dari perancangan yang dilakukan dari tugas akhir ini yaitu:
BAB I PENDAHULUAN
Dalam bab ini berisi tentang latar belakang, rumusan masalah, tujuan, manfaat,
batasan masalah, dan sistematika penulisan laporan tugas akhir.
Dalam bab ini membahas tentang penelitian terkait dan penjelasan mengenai teori-
teori penunjang yang dijadikan landasan dan rujukan perhitungan dalam
mengerjakan tugas akhir ini.
BAB V KESIMPULAN
Dalam bab ini berisi tentang pernyataan singkat dan tepat yang dijabarkan dari hasil
analisis dan pembahasan, tanpa perlu penulisan saran dan pengembangan lebih
lanjut.
DAFTAR PUSTAKA
LAMPIRAN
BAB 2 TINJAUAN PUSTAKA
Berkaitan dengan judul yang ditentukan tersebut, berikut ini beberapa penelitian
yang berhubungan dengan tugas akhir, diantaranya yaitu:
5
6
4. Nasir, M., Usmardi, U., & Rachmawati, R. (2019) membuat Sistem Monitoring
Absensi Perkuliahan dengan Menggunakan RFID Berbasis Raspberry Pi.
Perekapan absensi secara manual membutuhkan waktu yang cukup lama dan
kemungkinan dapat terjadi kesalahan pendataan dalam proses perekapan
absensi. Penerapan teknologi RFID pada sistem absensi mahasiswa
menggunakan kartu RFID yang berfungsi untuk mengirimkan kode informasi
dan pembacaan data masukan menggunakan modul RC522. Kemudian dari
module RC522 akan dibaca dan diproses oleh Raspberry PI B+. Aplikasi
sistem absesnsi ini dibuat menggunakan bahasa pemrograman python dan
PHP. Berdasarkan hasil pengujian, jarak deteksi maksimal kartu RFID
mahasiswa terhadap modul RC522 adalah 4-5 cm. Dalam penelitian ini juga
menggunakan metode QoS (Quality of Service) untuk mengukur parameter
waktu tunda yang dihasilkan dalam satu jaringan yang digunakan. Hasil
pengujian yang telah dilakukan dalam penelitian ini dengan jarak 1-7 meter
dan memperoleh kualitas sinyal sangat bagus dengan rata-rata waktu tunda
dihasilkan 80 ms.
5. Hidayat, (2020) membuat Rancang Bangun Sistem Absensi dengan Multi
Pengenalan Wajah Berbasis Raspberry Pi 4 dengan SMS Notifikasi
Menggunakan Algoritma Haar Cascade. Alat ini bertujuan untuk
memanfaatkan teknik pengenalan wajah yang terekam di kamera sebagai
masukan data untuk sistem absensi berbasis Raspberry dengan memanfaatkan
pustaka pengenalan wajah dari pengembang yaitu OpenCV dan bahasa
pemrograman PHP untuk antarmuka web dengan notifikasi SMS. Teknologi
yang digunakan adalah Raspberry Pi4.
6. Oktaviarini, K. N., Annyndra, B. A., & Yusanti, L. (2021) membuat Aplikasi
Keamanan Rumah Berbasis IoT. Sistem ini menggunakan Raspberry Pi yang
berfungsi sebagai komponen pengendali utama untuk memantau rumah dengan
membaca sensor magnetik, sensor PIR, dan kamera yang digunakan untuk
memantau rumah, dan tambahan dalam menggunakan pengunci selenoid yang
dapat dikontrol oleh Raspberry Pi dalam mengunci pintu secara otomatis.
Semua data akan terbaca lalu dikirim ke peladen selanjutnya tampil pada
aplikasi perangkat lunak yang ada di ponsel pengguna.
7
Berdasarkan latar belakang dan tinjauan di atas, hasil perbandingan dengan alat
yang berjudul Sistem Kontrol Kehadiran Belajar Mengajar dengan RFID dan
Pengenalan Wajah Berbasis Raspberry Pi dapat dilihat pada Tabel 2.1 Perbedaan
tugas akhir. Alat ini menggunakan Raspberry Pi 3 sebagai pemroses, e-KTP atau
kartu RFID, pembaca RFID, kamera web, dan tampilan kristal cair TFT sebagai
masukan. Dan hasil luaran yaitu tampilan kristal cair TFT, relai, dan selenoid.
Selain itu, hasil rekapan data kehadiran akan disimpan pada pangkalan data awan.
SMS √
Tampilan Kristal Cair √
Kartu mikroSD √
Website √
Keterangan:
1. Nurfitriyana, A., (2016)
2. Ariyanti, S., Adi, S. S., & Purbawanto, S. (2018)
3. Daulay, N. K., & Alamsyah, M. N., (2019)
4. Nasir, M., Usmardi, U., & Rachmawati, R., (2019)
5. Hidayat, R., (2020)
6. Oktaviarini, K. N., Annyndra, B. A., & Yusanti, L., (2021)
OpenCV (Open Source Computer Vision Library) adalah sebuah pustaka perangkat
lunak yang ditujukan untuk mengolah citra atau gambar dan video yang ditangkap
oleh alat perekam (seperti kamera web) yang dikonversi dari analog ke digital lalu
diolah di dalam komputer. OpenCV merupakan salah satu cabang kecerdasan
buatan yang digunakan untuk pengembangan atau analisis isi suatu gambar.
Pengembangan OpenCV diawali oleh Intel dan sekarang didukung oleh Willow
Garage dan Itseez. OpenCV memiliki antarmuka yang mendukung bahasa
pemrograman C++, C, Python, dan Java termasuk untuk sistem operasi Windows,
Linux, Mac OS, iOS, dan Android. OpenCV dirancang untuk efisiensi dalam
komputasi dan difokuskan pada aplikasi sistem waktu nyata. Ditulis dalam C++
yang dioptimalkan, dengan perpustakaan dapat memanfaatkan pengolahan pada
prosesor inti majemuk (multi-core processing). Penggunaan OpenCV mulai dari
seni interaktif, meliputi inspeksi penambangan (mines inspection), stitching maps
di web sampai dengan robotika maju (advanced). (Permana & Destriana, 2018)
Berikut adalah beberapa fungsi opencv yang digunakan dalam penelitian ini
(Ivanjul.com, 2018):
1. cv2 imread(): digunakan untuk membaca gambar.
2. cv2.IMREAD_COLOR: memuat gambar berwarna.
3. cv2.IMREAD_GRAYSCALE: memuat gambar dalam mode grayscale.
4. cv2.imshow (): untuk menampilkan gambar di jendela. Jendela secara otomatis
sesuai dengan ukuran gambar.
9
Algoritma OpenCV
Haar Cascade digunakan untuk proses pendeteksi wajah digunakan algoritma haar
cascade. Secara umum, haar-like feature digunakan dalam mendeteksi objek pada
gambar digital. Istilah Haar menunjukkan suatu fungsi matematika (Haar Wavelet)
yang berbentuk kotak, prinsipnya sama seperti pada fungsi Fourier. Awalnya
pengolahan gambar hanya dengan melihat dari nilai RGB setiap piksel, namun
metode ini ternyata tidaklah efektif. Kemudian dikembangkan lagi sehingga
terbentuk Haar Like feature. Haar-like feature memproses gambar dalam kotak-
kotak, dimana dalam satu kotak terdapat beberapa piksel. Pada setiap kotak
kemudian diproses dan menghasilkan perbedaan nilai yang menandakan daerah
gelap dan terang. Nilai-nilai tersebut akan dijadikan dasar dalam pemrosesan
gambar. Cara menghitung nilai dari fitur ini adalah dengan mengurangkan nilai
piksel pada area putih dengan piksel pada area hitam. Untuk mempermudah proses
penghitungan nilai fitur, algoritma Haar menggunakan sebuah media berupa
Gambar Integral (Integral Image). Gambar Integral adalah sebuah citra yang nilai
tiap pikselnya merupakan penjumlahan dari nilai piksel kiri atas hingga kanan
bawah. Sebagai contoh piksel (a, b) memiliki nilai akumulatif untuk semua piksel
(x, y). Dimana x ≤ a dan y ≤ b. Dalam menggunakan metode haar carcade ada
beberapa jenis citra gambar yang dapat diolah salah satunya yaitu grayscale (Al
Aidid & Pamungkas, 2018).
10
2.3 Pemroses
2.3.1 Raspberry Pi
melalui konektor SODIMM, termasuk dua buah kamera dan LCD port, sementara
model A dan B hanya memiliki satu. Compute modul diharapkan dapat digunakan
oleh perusahaan yang berharap untuk dapat mempercepat proses pengembangan
dari produk baru, berarti hanya papan dasarnya saja yang perlu dibuat, dengan
periperal yang sesuai, dan dengan Compute modul yang menyediakan CPU,
memori dan penyimpanan dengan perangkat lunak yang teruji dan terpercaya.
Berikut ini adalah gambar Raspberry Pi 3B+ yang ditunjukkan pada Gambar 2.1.
kartu RFID yang berisi nomor seri dan kemudian dibaca oleh pembaca RFID untuk
diproses komputer yang akan menunjukkan identitas objek tersebut.
Pembaca RFID adalah alat yang mampu membaca kartu RFID. Pembaca RFID juga
terdiri dari pembaca RFID pasif dan pembaca RFID aktif. Pembaca RFID pasif
hanya mampu menerima sinyal radio dari kartu aktif. Sedangkan pembaca aktif
dapat memancarkan sinyal interogator ke kartu dan menerima balasan autentikasi
dari kartu. Selain itu sinyal interogator juga dapat berfungsi sebagai sumber daya
kartu pasif.
Antena RFID adalah komponen yang berperan mengubah sinyal dari pembaca
RFID ke dalam gelombang sinyal radio dan dapat ditangkap oleh kartu RFID. Pada
saat pembaca RFID dapat membaca data pada kartu, maka kartu RFID akan
mengirimkan data kembali melalui antena ke pembaca, proses ini disebut dengan
backscatter dimana terdapat perubahan energi dari bentuk gelombang RF ke
elektromagnetik. Tanpa adanya antena ini maka pembaca tidak dapat membaca data
dengan benar pada kartu.
Besaran frekuensi pada RFID bermacam macam, ada yang bernilai 125 kHz dan
13.56 MHz.
Kamera web adalah sebutan bagi kamera waktu nyata yang gambarnya dapat dilihat
melalui www (World Wide Web), program pengolah pesan cepat, atau aplikasi
pemanggilan video. Kamera web dapat diartikan sebagai sebagai sebuah kamera
video digital kecil yang dihubungkan ke komputer melalui porta USB (Universal
Serial Bus), porta COM (Porta Serial), atau melalui jaringan internet. Fungsi dari
Kamera web yaitu untuk memudahkan dalam pengolahan pesan cepat seperti video
atau bertatap muka melalui video secara langsung. Kamera web juga berfungsi
sebagai alat untuk mengirim sebuah media secara langsung berupa video.
Sebuah Kamera web yang sederhana terdiri dari sebuah lensa standar yang dipasang
di sebuah papan sirkuit untuk menangkap sinyal gambar, kabel pembantu yang
dibuat dari bahan fleksibel yang salah satu ujungnya dihubungkan dengan papan
sirkuit dan ujung satu lagi memiliki penghubung, kabel ini dikontrol untuk
menyesuaikan ketinggian, arah, dan sudut pandang kamera web. Sebuah kamera
web biasanya dilengkapi dengan perangkat lunak, perangkat lunak ini mengambil
gambar-gambar dari kamera digital secara terus menerus ataupun dalam interval
waktu tertentu dan menyiarkannya melalui koneksi internet. Ada beberapa metode
penyiaran, metode yang paling umum adalah perangkat keras mengubah gambar ke
dalam bentuk file JPG (Joint Photographic Experts Group) dan mengunggahnya ke
web peladen menggunakan FTP (File Transfer Protocol).
17
gelombang ultrasonik (bunyi ultrasonik) yaitu bunyi di atas 20 KHz. Pada frekuensi
tersebut bunyi tidak dapat didengar oleh telinga manusia.
V=
S=V×t
Kecepatan gelombang bunyi pada udara adalah 340 m/s. Karena jarak tempuh
gelombang suara ultrasonik adalah bolak-balik yaitu dari sensor (pengirim) ke
objek dan kembali ke sensor (penerima), maka rumusnya menjadi :
×
S=
. ( /µ ) × (µ )
S (cm) =
S merupakan jarak antara sensor ultrasonik dengan benda (bidang pantul), dan t
adalah selisih antara waktu pemancaran gelombang oleh pengirim dan waktu ketika
19
Sensor Suhu adalah suatu komponen yang dapat mengubah besaran panas menjadi
besaran listrik sehingga dapat mendeteksi gejala perubahan suhu pada obyek
tertentu. Sensor suhu melakukan pengukuran terhadap jumlah energi panas/dingin
yang dihasilkan oleh suatu obyek sehingga memungkinkan kita untuk mengetahui
atau mendeteksi gejala perubahan-perubahan suhu tersebut dalam bentuk keluaran
analog maupun digital. Sensor suhu juga merupakan dari keluarga transduser.
Pada tugas akhir ini dilengkapi dengan sensor suhu Nirsentuh yaitu sensor suhu
MLX90614 untuk menghindari virus Covid-19 pada masa ini. Penggunaan sensor
20
suhu pada tugas akhir ini digunakan untuk mendeteksi suhu tubuh sebelum
melakukan presensi.
Transistor-LCD adalah singkatan dari Layar TFT film tipis. Sederhananya, panel
TFT-LCD dapat dilihat sebagai dua substrat kaca yang diapit di antara lapisan
kristal cair. Substrat kaca atas terhubung ke filter warna, sedangkan kaca bawah
memiliki transistor yang tertanam di dalamnya. Ketika medan listrik berubah
melalui transistor, molekul kristal cair membelokkan, sehingga mengubah
polarisasi cahaya, dan film polarisasi digunakan untuk menentukan keadaan cahaya
dan bayangan Pixel. Selain itu, kaca bagian atas dipasang filter warna, sehingga
setiap Pixel berisi tiga warna merah, biru, dan hijau, yang menyusun gambar pada
panel.
Sebagai antarmuka alat dengan pengguna tampilan kristal cair TFT (Thin Film
Transistor) adalah salah satu jenis LCD yang menggunakan teknologi transistor
film tipis untuk meningkatkan kualitas gambar dan kontras. Layar TFT mampu
memunculkan warna-warna yang cukup kaya , layar sentuh resistif yang digunakan
cukup sensitif terhadap sentuhan.
22
Pada tugas akhir ini, memanfaatkan tampilan kristal cair TFT sebagai tampilan untuk
menampilkan tampilan yang diperlukan. Spesifikasi dari tampilan kristal cair TFT
HDMI 3,5” adalah sebagai berikut:
untuk mengendalikan besi (iron core) tersebut. Apabila kumparan koil diberikan
arus listrik, maka akan timbul gaya elektromagnet yang kemudian menarik
Armature untuk berpindah dari posisi sebelumnya (NC) ke posisi baru (NO)
sehingga menjadi saklar yang dapat menghantarkan arus listrik di posisi barunya
(NO). Posisi dimana Armature tersebut berada sebelumnya (NC) akan menjadi
OPEN atau tidak terhubung. Pada saat tidak dialiri arus listrik, Armature akan
kembali lagi ke posisi awal (NC). Koil yang digunakan oleh Relai untuk menarik
Contact Poin ke posisi Close pada umumnya hanya membutuhkan arus listrik yang
relatif kecil.
Pada pembuatan tugas akhir “Sistem Kontrol Kehadiran Belajar Mengajar dengan
RFID dan Pengenalan Wajah Berbasis Raspberry Pi” menggunakan metode air terjun.
Diagram metode air terjun ditunjukkan pada Gambar 3.1.
Tahap perancangan terdiri dari penentuan sistem dan komponen yang digunakan
dalam pembualan alat yang dilengkapi dengan cara kerja sistem. Tahap
perancangan adalah sebagai berikut:
Sistem kontrol kehadiran ini ditujukan untuk membantu Kaprodi dalam memantau
dan mengontrol kehadiran mahasiswa dan dosen di Laboratorium Digital Politeknik
Negeri Semarang. Pada tugas akhir ini dibuatlah sistem kontrol kehadiran dengan
RFID dan pengenalan wajah dengan Raspbery Pi sehingga memungkinkan Kaprodi
untuk melakukan pengecekan pada waktu tertentu atas kehadiran mahasiswa dan
dosen yang menggunakan laboratorium Digital. Daftar kebutuhan yang diperlukan
24
25
untuk membuat “Sistem Kontrol Kehadiran dengan RFID dan Pengenalan Wajah
Berbasis Raspberry Pi” ditunjukkan pada Tabel 3.1.
No Kebutuhan Keterangan
Pembaca RFID USB 13.56 MHz
1 Masukan data kehadiran
dan kartu RFID pasif
2 Pembuka akses kamera web Tombol tekan
3 Masukan data kehadiran cadangan Kamera Web (C170 HD)
4 Pengukur jarak Sensor jarak (HC-SR04)
5 Pengukur suhu Sensor suhu (MLX90614)
6 Pemroses perintah menjalankan alat Raspberry Pi 3B+
7 Penampil data Tampilan kristal cair TFT 3.5 inchi
8 Penggerak gerendel elektrik Relai
9 Pengunci pintu Gerendel elektrik
Catu daya 12V 5A dan sumber
10 Sumber daya listrik
listrik PLN
Pada tugas akhir ini diperlukan pembaca RFID sebagai pembaca nomor identitas
pada kartu RFID, dimana pada hasil pembacaan data nomor identitas akan
digunakan sebagai data kehadiran pada mahasiswa dan dosen. Kemudian tombol
tekan digunakan untuk membuka akses kamera web yang digunakan sebagai
masukan data kehadiran apabila tidak menggunakan kartu RFID. Pengukur jarak
digunakan untuk mengukur jarak yang sesuai saat melakukan pengukuran suhu.
Dalam usaha menghindari virus Covid-19 sistem presensi dilengkapi dengan sensor
suhu. Pemroses digunakan untuk mengolah data dari hasil pembacaan setiap
komponen masukan. Tampilan kristal cair TFT digunakan untuk menampilkan data
yang telah diolah oleh pemroses. Penggunaan relai dimanfaatkan untuk penggerak
pengunci pintu yaitu gerendel elektrik. Sumber daya listrik yang digunakan adalah
catu daya tersaklar dengan tegangan 12V 5A.
Sistem kontrol kehadiran dirancang dengan beberapa sistem yang terbagi menjadi
4 bagian yaitu komponen utama, masukan, luaran, dan aplikasi. Komponen
masukan yang digunakan yaitu pembaca dan kartu RFID, tombol tekan, kamera
web (C170 HD), sensor pengukur jarak (HC-SR04), dan sensor pengukur suhu
(MLX90614). Kemudian untuk pemroses atau pengolah data menggunakan
26
Tahap pembuatan perangkat keras dan lunak sangat penting dalam pembuatan
sistem ini. Dalam tahap ini pembuatan perangkat keras berupa mekanik alat,
sedangkan perangkat lunak berupa pemrograman untuk menjalankan alat dan
sebagai penampil. Pembuatan perangkat dan lunak dapat dibagi menjadi beberapa
bagian sebagai berikut :
Bagian mekanik dibuat menjadi sebuah kotak yang ditempel pada tembok di
sebelah pintu laboratorium. Bahan yang digunakan untuk membuat kotak yaitu
akrilik dengan ukuran 24×13×9 cm dan memiliki tebal akrilik 1,2 mm. Berikut
merupakan desain alat tampak depan ditunjukkan pada Gambar 3.3, tampak depan
dengan pintu pada Gambar 3.4, tampak belakang pada Gambar 3.5.
Mikrokontroler yang digunakan pada tugas akhir ini adalah Raspberry Pi 3B+.
Mikrokontroler digunakan untuk membaca dan melaksanakan perintah dari setiap
komponen. Raspberry Pi 3B+ memiliki GPIO (General Purpose Input and Output)
dimana pin-pin tersebut dapat diatur fungsinya sebagai pin masukan maupun
keluaran. Berikut ini merupakan pin-pin yang ada pada Raspberry Pi 3B+ pada Gambar
3.6 dan daftar pin yang digunakan seperti terlihat pada Tabel 3.2.
No Pin Fungsi
1 3 SDA untuk sensor suhu
2 5 SCL untuk sensor suhu
3 11 Masukan sensor ultrasonik (Echo)
4 13 Luaran sensor ultrasonik (Trig)
5 15 Masukan tegangan positif tombol tekan
6 12 SIG untuk relai
30
Spesifikasi Keterangan
Prosesor Broadcom BCM2837B0, Cortex-A53
64-bit SoC @ 1.4 GHz
Penyimpanan 1GB LPDDR2 SDRAM
Konektivitas 2.4 GHz dan 5 GHz LAN nirkabel, bluetooth 4.2 GB
Ethernet USB 2.0 (maksimum 300 Mbps)
4 x USB 2.0 Portas
40-pin GPIO
Vidio dan Suara 1 x full size HDMI
Porta MIPI DSI display
Porta kamera MIPI CSI
4 pole keluaran stereo dan porta video komposit
Multimedia MPEG decode (1080p30), 2.0 graphics, OpenGL ES 1.1
Dukungan Kartu SD Slot kartu MikroSD
Daya Masukan 5V/2.5 DC melalui konektor mikro USB
5V DC melalui GPIO header
Daya over Ethernet (PoE)
Lingkungan Beroperasi di suhu 0-50° Celcius
Dari Tabel 3.2 dapat dibuat program untuk saling berkaitan antara komponen satu
dengan lainnya dengan diagran alir pada Gambar 3.7.
31
Catu daya utama yang digunakan adalah catu daya tersaklar berkapasitas 12V 5A. Catu
Daya 12V/5A digunakan untuk memberi masukan tegangan ke gerendel elektrik ,
sementara tegangan keluaran dari penurun tegangan 5V/3A digunakan untuk memberi
suplai tegangan ke Raspberry Pi 3B+. Rangkaian catu daya ditunjukkan pada Gambar
3.8.
Gambar 3.8 Rangkaian Catu Daya Tersaklar 12V/5A dan Penurun Tegangan
5V/3A
Tegangan 220 VAC diubah menjadi 220 VDC menggunakan diode bridge, lalu
disaring menggunakan kapasitor. Setelah itu masuk menuju ke IC osilator yang
berfungsi sebagai pembangkit frekuensi sekitar >20KHz agar dapat mengalirkan
arus dari trafo bagian primer ke sekunder. Pin Vcc1 pada IC digunakan sebagai
pengaktif IC agar menyala. Keluaran IC osilator berbentuk pulsa yang kemudian
diumpankan ke basis transistor. Saat IC osilator menghasilkan pulsa positif, maka
akan mengaktifkan transistor. Saat IC osilator menghasilkan pulsa negatif, maka
transistor akan padam. Hal inilah yang membuat tegangan yang dihasilkan menjadi
tegangan AC, sehingga dapat mengalir dari trafo primer ke sekunder. Saat arus
mengalir maka trafo mengalami induksi, sehingga bagian primer kedua digunakan
sebagai sumber daya untuk IC osilator. Keluaran dari trafo kemudian menuju ke
dioda dan diambil oleh sensor optokopler. Jika tegangan keluaran naik LED
bertambah terang sehingga photo-transistor memiliki nilai resistansi yang
berkurang, maka pin Feedback pada osilator akan mengalirkan tegangan. Dengan
adanya pin Feedback, maka osilator akan meredam kerjanya sehingga transistor
dan trafo akan teredam. Hal ini akan membuat keluaran tegangan sesuai dengan
yang diinginkan.
33
Pembaca RFID USB 13.56 MHz digunakan untuk membaca nomor ID pada kartu
RFID pasif dimana hasil pembacaan tersebut akan digunakan sebagai presensi
mahasiswa dan dosen. RFID USB ini terhubung dengan mikrokontroler seperti
pada Gambar 3.9.
Gambar 3.9 Rangkaian RFID USB 13.56 MHz dengan Raspberry Pi 3B+
Pada tugas akhir ini menggunakan RFID USB 13.56 MHz yang memungkinkan
dalam pembacaan cip RFID dengan jarak yang dekat. Berikut spesifikasi RFID
USB 13.56 MHz:
Tabel 3.4 Spesifikasi RFID USB 13.56 MHz
Spesifikasi Keterangan
Tipe kartu kartu yang didukung EM4001 / EM4001 / EM4102, T5577,
T5557, T5566, RFID 13.56 MHz, kartu ID
Keluaran 10 digit pertama pada kartu RFID atau
kode heksa (opsional)
Sistem yang didukung Windows XP/ 7/ 8/ 10
Frekuensi 13.56 MHz
Kecepatan komunikasi 106 Kbit/s
Waktu baca / tulis < 1s
Daya 5V5%
Jarak baca 5 – 8 cm
Suhu operasional -30°C hingga +40°C
Antarmuka USB 2.0
Indikator LED dan bel
Ukuran 10.8 × 7.8 × 2.8 cm
Berat 70 gram
Pada Gambar 3.10 merupakan program untuk menjalankan pembaca RFID USB
13.5 MHz:
34
1. # ==============================PUSTAKA================================ #
2. import tkinter as tk #Impor tkinter
3. import time #Impor waktu
4. from komponen import komponen, database as db #Impor komponen dan database
5. import halaman_hasil #Impor halaman_hasil
6. import halaman_kamera #Impor halaman_kamera
7. ## =======================DEKLARASI VARIABEL============================ ##
8. # =========================DEKLARASI KAMERA============================= #
9. tampil = False #tampil adalah false
10. pindah_face = False #pindah_face adalah False
11. # =====================PROGRAM TAMPILAN RFID========================== #
12. class HalamanRfidWindow():
13. def __init__(self, parent, suhu):
14. global tampil, pindah_face #Program untuk mengakses tampil dan pindah_face
15. tampil = True #tampil adalah true
16. pindah_face = False #pindah_face adalah false
17. self.parent = parent
18. self.window = tk.Toplevel(parent) #Program membuat jendela baru
19. self.window.title("Halaman rfid") #Program membuat judul
20. self.window.bind('q', self.destroy)
#Program menutup jendela dengan tombol 'q'
21. self.window.bind('<Return>', self.proses_rfid)#Program Memproses RFid
22. self.window.attributes('-fullscreen', True)
#Program layar penuh pada jendela
23. self.window.configure(bg="black")
#Program menjadikan hitam latar belakang
24. self.window.update()
25. self.win_w = self.window.winfo_width()
#Program Mengatur posisi pas lebar pada jendela induk
26. self.win_h = self.window.winfo_height()
#Program Mengatur posisi pas tinggi pada jendela induk
27. komponen.update_waktu(self)
28. # =====================PROGRAM TAMPILAN SUHU========================== #
29. self.window.columnconfigure(0, weight=1)
30. self.window.rowconfigure(1, weight=1)
31. self.suhu_label = tk.Label(self.window, text="%.2f°C" % suhu,
font=("Arial", 170, "bold"), bg="black", fg="white")
32. self.suhu_label.grid(row=1, column=0, columnspan=2)
33. # ==================PROGRAM TAMPILAN RFID STATUS====================== #
34. self.rfid_status = tk.Label(self.window, text="", font=("Arial", 0,
"bold"), bg="black", fg="red")
35. self.rfid_status.grid(row=2, column=0, columnspan=2)
36. # ==================PROGRAM TAMPILAN RFID INPUT======================= #
37. self.rfid_input = tk.Entry(self.window, border=0, bg="black", fg="black")
38. self.rfid_input.grid(row=3, column=0)
39. self.rfid_input.focus_set()
40. self.rfid_label = tk.Label(self.window, text="Silahkan Scan RFID atau",
font=("Arial", 70, "bold"),
41. bg="black", fg="yellow")
42. self.rfid_label.grid(row=4, column=0, columnspan=2)
43. self.face_label = tk.Label(self.window, text="Tekan Tombol untuk Face
Recognition", font=("Arial", 50, "bold"), bg="black", fg="yellow")
44. self.face_label.grid(row=5, column=0, columnspan=2, pady=10)
45. self.waktu_pindah = time.time()
46. self.update()
47. # ===========================PROGRAM TUTUP============================ #
48. def destroy(self, event):
49. global tampil, pindah_face
50. tampil = False
51. pindah_face = False
52. self.rfid_input.delete(0, tk.END) #Program menghapus masukan rfid
53. self.window.destroy()
54. # ===========================PROGRAM RFID============================= #
55. def proses_rfid(self, event):
56. nomor_rfid = self.rfid_input.get().strip() #Program membaca kartu rfid
57. print(f"rfid: {nomor_rfid}")
58. self.rfid_input.delete(0, tk.END)
59. try:
35
Spesifikasi Keterangan
Resolusi FPS HD 720p/30fps
Resolusi Maks 1024 x 768 piksel
Bidang Pandang Diagonal 55°
Koreksi Cahaya Otomatis Lampu Kanan 2
Mikrofon Peredam Kebisingan 1 mikrofon omni-directional
Koneksi USB 2.0
Sistem yang didukung Windows Vista/ XP/ 7/ 8/ 10/ 2000, Vista,
Linux, MacOS
Panjang Kabel 1.5 m
Dimensi 213 x 145 x 78mm
Berat 190 gram
Pada Gambar 3.12 merupakan program untuk menjalankan kamera web C170 HD:
1. # ==============================PUSTAKA================================ #
2. import tkinter as tk
3. from PIL import ImageTk, Image #Impor Image dan ImageTk
4. import cv2 #Impor opencv
5. import time
6. from komponen import komponen, identifikasi, database as db
#Impor komponen, identifikasi, dan pangkalan data
7. import halaman_hasil #Impor halaman_hasil
Sensor ultrasonik HC-SR04 digunakan untuk mengukur jarak pada saat sedang
melakukan pengukuran. Rangkaian sensor ultrasonik HC-SR04 dengan Raspberry Pi
3B+ seperti terlihat pada Gambar 3.13.
40
Spesifikasi Keterangan
Tegangan Masuk 5V DC
Arus 15 mA
Frekuensi Kerja 40 KHz
Jarak Maksimum 400 cm
Jarak Minimum 2 cm
Sudut Pengukuran 15°
Masukan Sinyal Trigger 10µs pulsa TTL
Keluaran Sinyal Echo Sinyal level TTL
Dimensi 45×20×15 mm
1. # ==============================PUSTAKA================================ #
2. import time #Impor time library
3. import board #Impor board
4. import adafruit_mlx90614 #Impor adafruit_mlx90614
5. # ============================PENGESETAN AWAL=============================
#
6. i2c = board.I2C() #Menyamakan tanda board.I2C() dengan 12c
7. mlx = adafruit_mlx90614.MLX90614(i2c)
#Menyamakan tanda dafruit_mlx90614.MLX90614(i2c) dengan mlx
8. # ===========================PROGRAM MLX-90614========================= #
9. def hitung_suhu(): return mlx.object_temperature
#Program pembacaan suhu dengan i2c
Tombol tekan digunakan sebagai pembuka akses kamera web untuk melakukan
presensi. Rangkaian tombol tekan dengan Raspberry Pi 3B+ seperti terlihat pada
Gambar 3.17.
Konfigurasi tombol tekan dan Raspberry Pi 3B+ ditunjukkan pada Tabel 3.5.
Penampil data tampilan kristal cair TFT digunakan untuk menampilkan informasi
presensi yang diperintahkan oleh mikrokontroler. Rangkaian tampilan kristal cair
TFT dengan Raspberry Pi 3B+ seperti terlihat pada Gambar 3.19.
Gambar 3.19 Rangkaian Tampilan Kristal Cair TFT 3.5 inchi dengan Raspberry
Pi 3B+
Tabel 3.10 Spesifikasi Tampilan Kristal Cair TFT 3,5”
Spesifikasi Keterangan
Tipe layar TFT
Antarmuka LCD SPI (Fmax : 32MHz)
Jenis layar sentuh Resistif
Model 3.5” TFT LCD
Disipasi daya 0.13A 5V
Resolusi 480 x 320 piksel
Suhu operasi -20 ~ 60 °C
Pada Gambar 3.20 merupakan program untuk menjalankan Tampilan Kristal Cair
TFT:
46
1. # ==============================PUSTAKA================================ #
2. Import tkinter as tk #Impor tkinter
3. import time #Impor time
4. from komponen import komponen, ultrasonik, mlx, tombol, identifikasi
#Impor komponen, ultrasonik, mlx, tombol, identifikasi
5. import halaman_rfid #Impor halaman_rfid
6. # ==========================KELAS HALAMAN AWAL========================== #
7. class HalamanAwalWindow():
8. # ===================MENGATUR LETAK TULISAN PADA GUI==================== #
9. def __init__(self, parent): #Definisi Jendela awal
10. self.window = parent #Jendala sama dengan GUI
11. self.window.title("Halaman Awal") #Nama Jendala GUI
12. self.window.bind('q', lambda event: window.quit())
#Membuat tombol "q" sebagai menghentikan program
13. self.window.attributes('-fullscreen', True) #Tampilan jendela menjadi
layar penuh
14. self.window.configure(bg="black") #Membuat latar belakang
jendela menjadi hitam
15. self.window.update() #Memperbarui jendela
16. self.win_w = window.winfo_width()
17. self.win_h = window.winfo_height()
18. komponen.update_waktu(self) #Menampilkan Tulisan Waktu
19. self.cek_suhu_font = ("Arial", 120, "bold")
20. self.window.columnconfigure(1, weight=1)
21. self.window.rowconfigure(1, weight=1)
22. self.suhu_label = tk.Label(self.window, text="Cek Suhu Anda",
font=self.cek_suhu_font,
23. bg="black", fg="white")
24. self.suhu_label.grid(row=1, column=0, sticky=tk.NSEW, columnspan=2)
#Membuat tulisan "Cek Suhu Anda" menjadi ditengah jendela
25. self.status_font = ("Arial", 70, "bold")
26. self.status_label = tk.Label(self.window, text="",
font=self.status_font,
27. bg="black", fg="white")
28. self.status_label.grid(row=2, column=0, sticky=tk.EW, columnspan=2)
#Membuat tulisan STATUS menjadi ditengah jendela
29. self.waktu_pindah = time.time() #Waktu pada tampilan gui
30. self.update() #Memperbarui Jendela
31. # ==========================PENGUKURAN SUHU============================ #
32. def update(self): #Definisi update
33. if ultrasonik.hitung_jarak() < 10 and not halaman_rfid.tampil:
#Tunda Waktu disaat telah mengukur suhu
34. suhu = mlx.hitung_suhu() #Suhu didapat dari Sensor
35. self.suhu_label.config(text = "%.2f°C" % suhu, font=("Arial",
200, "bold"))
36. if suhu <= 37.0: #Batas suhu Aman
37. self.status_label.config(text = "Suhu Aman!", fg="yellow")
#Mengatur Tampilan dan warna tulisan STATUS
38. if time.time() - self.waktu_pindah >= 1.5:
#Tunda Waktu setelah menampilkan STATUS suhu
39. self.waktu_pindah = time.time()
40. halaman_rfid.HalamanRfidWindow(self.window, suhu)
#Menampilkan halaman RFid
41. else:
42. self.waktu_pindah = time.time()
43. self.status_label.config(text = "Suhu Tidak Aman!",
fg="red") #Mengatur Tampilan dan warna tulisan STATUS
44. else:
45. self.waktu_pindah = time.time()
46. self.suhu_label.config(text = "Cek Suhu Anda",
font=self.cek_suhu_font)#Program tampilan keetika sensor ultrasonik tidak
membaca jarak yang tentukan
47. self.status_label.config(text = "")
48. komponen.update_waktu(self) #Memperbarui hasil sensor
suhu
49. self.window.after(500, self.update) #Waktu memperbaharui setiap 5s
50. if __name__ == "__main__":
51. window = tk.Tk() #Program Menampilkan Jendela
52. HalamanAwalWindow(window) #Program Menampilkan Tampilan Pada Jendela
53. window.mainloop() #Program Pengulangan
47
54. # ===============================PUSTAKA============================== #
55. from threading import Thread #Impor Tread
56. import tkinter as tk #Impor tkinter
57. from komponen import komponen #Impor Komponen
58. import time #Impor time
59. from komponen import tombol #impor tombol
60. from komponen import database as db #impor pangkalan data awan
61. # =======================KELAS HALAMAN HASIL========================== #
62. class HalamanHasilWindow():
63. # ================MENGATUR LETAK TULISAN PADA GUI===================== #
64. def __init__(self, parent, pengguna, keterangan):
#Inisialisasi pembuatan objek
65. absen = db.Absen(
66. nama = pengguna.nama,
67. nip = pengguna.nip,
68. role = pengguna.role,
69. keterangan = keterangan
70. ) #Program Untuk mengirim data pada pangkalan data
71. db.session.add(absen) #Program menginput data absen pada kolom
72. db.session.commit() #Program menyerahkan data
73. if pengguna.role == 'Dosen' or pengguna.role == 'Staf':
74. Thread(target=tombol.kunci).start() #Program memicu tombol
75. self.window = tk.Toplevel(parent) #Program Membuat jendela baru
76. self.parent = parent #Jendala sama dengan GUI
77. self.window.title("Halaman hasil") #Nama Jendala GUI
78. self.window.bind('q', self.destroy)
#Membuat tombol "q" sebagai menghentikan program
79. self.window.attributes('-fullscreen', True)
#Tampilan jendela menjadi layar penuh
80. self.window.configure(bg="black")
#Membuat latar belakang jendela menjadi hitam
81. self.window.update() #Memperbarui jendela
82. self.win_w = self.window.winfo_width()
#Program Mengatur posisi pas lebar pada jendela induk
83. self.win_h = self.window.winfo_height()
#Program Mengatur posisi pas tinggi pada jendela induk
84. komponen.update_waktu(self, absen.waktu)#Program penulisan Waktu
85. hasil_font = ("Arial", 75, "bold")
86. self.window.columnconfigure(0, weight=1)
87. self.window.rowconfigure(1, weight=1)
88. self.suhu_label = tk.Label(self.window, text=f"{pengguna.nama}",
font=hasil_font,
89. bg="black", fg="white")
#Program menuliskan "pengguna.nama" pada jendela
90. self.suhu_label.grid(row=1, column=0, columnspan=2)
91. self.window.rowconfigure(2, weight=1)
92. self.nip_label = tk.Label(self.window, text=f"{pengguna.nip}",
font=hasil_font,
93. bg="black", fg="white")
#Program menuliskan "pengguna.nip" pada jendela
94. self.nip_label.grid(row=2, column=0, columnspan=2)
95. self.window.rowconfigure(3, weight=1)
96. self.nip_label = tk.Label(self.window, text=f"Role:
{pengguna.role}", font=hasil_font,
97. bg="black", fg="white")
#Program menuliskan "pengguna.role" pada jendela
98. self.nip_label.grid(row=3, column=0, columnspan=2)
99. self.waktu_pindah = time.time()
100. self.update()
101. # ======================MENUTUP JENDELA HALAMAN======================= #
102. def destroy(self, event):
103. self.window.destroy() #Program untuk menutup jendela
104. # =============================WAKTU TUNDA============================ #
105. def update(self):
106. if time.time() - self.waktu_pindah >= 5:
#Program tunda Waktu untuk menutup jendela halaman_hasil
107. self.destroy(None)
108. return
109. self.window.after(500, self.update)
#Program memperbarui setiap di panggil dari halaman_awal
Dalam program menjalankan tampilan kristal cair TFT digunakan pustaka untuk
meringkas program. Program ini diawali dengan tampilan kristal cair TFT
kemudian memanggil pustaka tampilan kristal cair TFT. Kemudian menulis
karakter yang ingin ditampilkan beserta dengan letak cetak karakter.
3.2.10 Penggerak
Pada saat pin Raspberry Pi berlogik 1, maka transistor akan menyala dan kumparan
pada relai akan terjadi induksi. Hal ini mengakibatkan kontak NO yang awalnya
terbuka menjadi tertutup, tegangan 12 V dapat mengalir dan mengakibatkan induksi
pada kumparan gerendel elektrik sehingga gerendel elektrik menarik. Pada saat pin
Raspberry Pi berlogik 0, maka arah induksi pada kumparan relai akan berbalik arah
sehingga menimbulkan arus balik. Arus tersebut akan terbuang melewati dioda. Hal
ini mengakibatkan kontak NO menjadi terbuka menjadi, sehingga tidak dapat
menarik gerendel elektrik. Berikut spesifikasi relai 1 saluran:
Spesifikasi Keterangan
Tegangan Suplai 3.75V hingga 6V
Arus Diam 2 mA
Arus Saat Relai Aktif 70 mA
49
Spesifikasi Keterangan
Tegangan Operasi 12 V
Arus 0.6 A
Panjang Kawat 270 A
Waktu Pembukaan Kunci 1s
Suhu -40°C − 50°C
1. # ==========================DEKLARASI TOMBOL=========================== #
2. GPIO_TOMBOL_FACE = 22 #Pin GPIO 22 sebagai tombol menghidupkan kamera
3. GPIO_TOMBOL_RELAY = 6 #Pin GPIO 6 sebagai tombol pembuka pintu
4. GPIO_RELAY = 18 #pin GPIO 18 sebagai pin relai
5. # ===========================PENGESETAN AWAL=========================== #
6. jeda_kunci = 3000 #Atur waktu relai hidup
7. # ============================PROGAM TOMBOL============================= #
8. def tombol_callback(channel):
9. if halaman_rfid.tampil: halaman_rfid.pindah_face = True
#Program memindah program dari rfid ke kamera
10. GPIO.setup(GPIO_TOMBOL_FACE, GPIO.IN)
#Mengatur tombol pin GPIO kamer menjadi masukan
11. GPIO.add_event_detect(GPIO_TOMBOL_FACE, GPIO.FALLING,
callback=tombol_callback, bouncetime=500) #Program mendeteksi tombol
ketika di tekan lalu menjalankan program lain dengan waktu tunda 0.5 detik
12. GPIO.setup(GPIO_RELAY, GPIO.OUT) #Mengatur pin relai menjadi keluaran
13. GPIO.output(GPIO_RELAY, GPIO.LOW)#Mengatur pin relai berlogika 0 / teg.
rendah
14. # ==========================PROGRAM RELAY============================= #
15. def kunci():
16. GPIO.output(GPIO_RELAY, GPIO.HIGH)#Mengatur pin relai berlogika 1 / teg.
tinggi
17. time.sleep(jeda_kunci/1000) #Mengatur waktu tunda selama jeda_kunci_1000
18. GPIO.output(GPIO_RELAY, GPIO.LOW)#Mengatur pin relai berlogika 0 / teg.
rendah
19. GPIO.setup(GPIO_TOMBOL_RELAY, GPIO.IN, pull_up_down=GPIO.PUD_UP)
#Mengatur tombol pin GPIO menjadi masukan lalu dengan konfigurasi pull up
20. GPIO.add_event_detect(GPIO_TOMBOL_RELAY, GPIO.FALLING, callback=lambda c:
Thread(target=kunci).start(), bouncetime=jeda_kunci+1000)#Program mendeteksi
tombol ketika di tekan lalu menjalankan program lain dengan waktu tunda
Pangkalan data awan digunakan sebagai media untuk menampilkan data presensi
mahasiswa dan dosen di laboratorium Digital Program Studi Teknik Elektronika
Politeknik Negeri Semarang. Data yang telah diterima oleh Raspberry Pi 3B+
dikirimkan ke gerbang jaringan kemudian menuju ke peladen. Kemudian peladen
meneruskan data ke pangkalan data awan yang telah tersedia di laman SQLite.
Tampilan dari pangkalan data awan yang telah dibuat dapat dilihat pada Gambar 3.23.
1. # =============================PUSTAKA================================= #
2. from sqlalchemy import Column, Integer, String, DateTime
#Impor Column, Integer, String, DateTime
3. from sqlalchemy import create_engine #Impor create_engine
4. from sqlalchemy.ext.declarative import declarative_base
#Impor declarative_base
5. from sqlalchemy.orm import sessionmaker #Impor sessionmaker
6. import datetime #Impor datetime
7. # =========================PENGESETAN AWAL============================= #
8. engine = create_engine('sqlite:///data.db', echo = False)
#Membuat pangkalan data SQLite pada memori
9. Base = declarative_base() #Program mengumpulkan data
10. Session = sessionmaker(bind = engine)
#Program membuat session sebelum ke pangkalan data
11. session = Session()
12. # ====================PROGRAM PANGKALAN DATA========================== #
13. class Pengguna(Base): #Program pembuatan folder pada pangkalan data
14. __tablename__ = 'pengguna' #Program membuat nama tabel
15. id = Column(Integer, primary_key=True)
#Kolom pertama id bentuk dan sebagai kunci
16. nama = Column(String, nullable=False)
#Kolom nama bentuk string, tidak boleh kosong
17. nip = Column(String, nullable=False)
#Kolom nip bentuk string, tidak boleh kosong
18. role = Column(String, nullable=False)
#Kolom role bentuk string, tidak boleh kosong
19. rfid = Column(String, nullable=False)
#Kolom rfid bentuk string, tidak boleh kosong
20. face_id = Column(String, nullable=False)
#Kolom face_id bentuk string, tidak boleh kosong
21. class Absen(Base): #Program pembuatan folder pada pangkalan data
22. __tablename__ = 'absen' #Program membuat nama tabel
23. id = Column(Integer, primary_key=True)
#Kolom pertama id bentuk dan sebagai kunci
24. nama = Column(String, nullable=False)
#Kolom nama bentuk string, tidak boleh kosong
25. nip = Column(String, nullable=False)
#Kolom nip bentuk string, tidak boleh kosong
26. role = Column(String, nullable=False)
#Kolom role bentuk string, tidak boleh kosong
27. keterangan = Column(String, nullable=False)
#Kolom keterangan bentuk string, tidak boleh kosong
28. waktu = Column(DateTime, nullable=False, default=datetime.datetime.now)
#Kolom waktu bentuk string, tidak boleh kosong, dengan program waktu
otomatis
sesuai yang dibutuhkan, disini menggunakan 2 tabel pada pangkalan data yang
pertama tabel pengguna yang berisikan orang-orang terdaftar atau yang dapat
mengakses alat ini, dan yang kedua tabel absen digunakan untuk menampung data
presensi.
Pengukuran dan pengujian alat dilakukan untuk mengetahui kemampuan kerja alat.
Pengukuran dilakukan agar kemampuan alat sesuai dengan target. Pada pengukuran
dan pengujian akan dihasilkan data hasil pengukuran yang selanjutnya dianalisis untuk
mengetahui alat bekerja dengan baik atau tidak. Titik pengukuran dapat dilihat pada
Gambar 3.25.
52
Pengukuran catu daya bertujuan untuk mengetahui nilai tegangan yang akan
digunakan untuk memulai sistem kerja alat. Hasil pengukuran tegangan dapat
dilihat pada Tabel 3.6 dan proses pengukuran catu daya dapat dilihat pada Gambar
3.25. Berikut ini merupakan langkah-langkah pengukuran catu daya:
Kalibrasi sensor jarak bertujuan untuk mengetahui sensor jarak bekerja dengan baik
atau tidak pada sistem kerja alat. Pada proses kalibrasi nilai sesungguhnya diukur
menggunakan penggaris sebagai pembanding dengan sensor jarak dalam
pembacaan jarak. Hasil kalibrasi sensor jarak dapat dilihat pada Tabel 3.7. Berikut
ini merupakan langkah-langkah kalibrasi sensor jarak:
1. Menyiapkan alat ukur berupa penggaris, sensor jarak, dan benda padat.
2. Meletakaan benda padat pada jarak tertentu di depan sensor jarak yang
dibandingkan dengan penggaris.
3. Mencatat hasil pembacaan sensor jarak pada Tabel 3.7.
Kalibrasi sensor suhu bertujuan untuk mengetahui sensor suhu berjalan dengan baik
atau tidak pada sistem kerja alat. Pada proses kalibrasi menggunakan kalibrator
yaitu termometer pistol sebagai pembanding pembacaan suhu. Hasil kalibrasi
sensor suhu dapat dilihat pada Tabel 3.8. Berikut ini merupakan langkah-langkah
kalibrasi sensor suhu:
Pengukuran relai bertujuan untuk mengetahui nilai tegangan yang dibutuhkan saat
relai bekerja. Pengukuran tegangan dapat dilihat pada Tabel 3.10 dan proses
pengukuran relai dapat dilihat pada Gambar 3.25. Berikut ini merupakan langkah-
langkah pengukuran relai:
1. Menyiapkan alat ukur berupa multimeter digital.
2. Mengukur pin data luaran relai dengan multimeter secara pararel untuk
mengukur tegangan keluaran. Titik pengukuran dapat dilihat pada Gambar
3.25.
3. Mencatat hasil pengukuran pada Tabel 3.10.
Pengujian pada RFID dilakukan denga tiga tahapan yaitu menguji jarak baca
pembaca RFID, kecepatan pembacaan, dan posisi kartu RFID.
1 Berhasil
Tidak
2 -
Berhasil
3 Berhasil
Berdasarkan data hasil pengujian di atas dapat dibuat grafik seperti Gambar
3.27.
Grafik Perbandingan
37,6
37,4
37,2
37
36,8
36,6
36,4
36,2
36
35,8
35,6
Spesifikasi dari alat kontrol kehadiran dengan RFID dan pengenalan wajah berbasis
Raspberry Pi ditunjukkan pada Tabel 3.15.
59
No Spesifikasi Keterangan
Sistem Kontrol Kehadiran Belajar Mengajar
1 Judul Alat dengan RFID dan Pengenalan Wajah Berbasis
Raspberry Pi
2 Pengontrol Raspberry Pi 3B+
3 Bahasa Pemrograman Bahasa Python
4 Tegangan Jala-Jala 220 VAC, 50 Hz
5 Catu Daya Sistem 5 VDC, 3A
6 Dimensi Alat 240 x 90 x 213 mm
7 Bahan Alat Akrilik
Tampilan Kristal Cair TFT dan Pangkalan Data
8 Penampil
Awan
Tampilan:
a. Tampilan Kristal a. Waktu, Suhu, Nama, NIP/NIM, Role
9 Cair TFT
b. Pangkalan Data b. ID, Nama, NIP/NIM, Role, Keterangan, Waktu
Awan
Tahap penerapan alat ini dilakukan untuk mengetahui apakah sistem sudah bekerja
sesuai dengan harapan atau tidak. Tahap ini dilakukan dengan mengaktifkan sistem
dan melakukan uji coba sistem. Berikut adalah petunjuk pengoperasian Sistem
Kontrol Kehadiran dengan RFID dan Pengenalan Wajah Berbasis Raspberry Pi:
1. Menghubungkan steker pada stop kontak sumber tegangan seperti yang terlihat
pada Gambar 3.28.
4.1 Analisis
Hasil analisis yang telah didapat pada pembaca RFID menunjukkan bahwa alat
dapat membaca nomor ID kartu pada jarak 0 cm hingga 8 cm. Hasil kecepatan
waktu baca pembaca RFID terhadap kartu RFID yaitu rata-rata 1 detik. Kemudian
hasil pembacaan 2 kartu yang bersebelahan atau ditumpuk menunjukkan bahwa
pembaca RFID hanya dapat membaca kartu RFID yang terdekat dengan pembaca
RFID.
Hasil analisis yang telah didapat pada kamera web menunjukkan perbandingan
terhadap wajah asli dengan wajah yang tersimpan pada data set (file XML). Jika
wajah asli terdeteksi sama dengan wajah yang tersimpan pada data set (file XML),
maka pada tampilan kristal cair TFT menunjukkan data identitas wajah tersebut.
Jika wajah asli terdeteksi tidak sama dengan wajah yang tersimpan pada data set
(file XML), maka pada tampilan kristal cair TFT menunjukkan “Anda Belum
Terdaftar”.
Hasil analisis yang telah didapat pada pengujian sensor suhu MLX-90614 yang
dibandingkan dengan suhu referensi yang telah diukur menggunakan termometer
pistol menunjukkan rata – rata kesalahan 1.55% yang ditunjukkan oleh Tabel 3.13.
Sedangkan pengujian sensor suhu MLX-90614 terhadap jarak menunjukkan bahwa
suhu dapat terukur pada jarak 2 cm hingga 5 cm.
4.2 Pembahasan
62
63
fungsinya. Akan tetapi, pada sistem ini tetap masih memiliki nilai kesalahan,
terutama pada pengukuran sensor suhu. Hasil pengukuran sensor suhu MLX-90614
tidak sesuai dengan referensi pengukuran sensor suhu pada termometer pistol.
BAB 5 KESIMPULAN
Pada pelaksanaan tugas akhir “Sistem Kontrol Kehadiran Belajar Mengajar dengan
RFID dan Pengenalan Wajah Berbasis Raspberry Pi”, dapat disimpulkan sebagai
berikut:
1. Telah berhasil dibuat alat untuk mengontrol kehadiran belajar mengajar dengan
pengolah utama Raspberry Pi. Masukan dari alat ini adalah sensor ultrasonik
sebagai pengukur jarak, sensor suhu sebagai pengukur suhu, pembaca RFID
sebagai pembaca nomor id pada kartu RFID, kamera web sebagai pendeteksi
wajah. Sedangkan untuk keluaran menggunakan tampilan kristal cair TFT
sebagai penampil dan data hasil pengukuran kemudian diproses oleh Raspberry
Pi agar dapat ditampilkan pangkalan data awan, relai sebagai untuk penggerak
gerendel elektrik, gerendel elektrik sebagai pengunci pintu.
2. Hasil pengukuran sensor suhu MLX-90614, pembaca RFID, dan kamera web
dapat dilihat pada kristal cair TFT dan pangkalan data awan yang telah
disediakan. Pada tampilan kristal cair TFT menampilkan suhu tubuh kemudian
ditampilkan perintah untuk melakukan presensi menggunakan kartu RFID atau
kamera web. Sedangkan untuk membuka pintu hanya dapat dilakukan dengan
kartu RFID dosen pada awal kegiatan presensi.
3. Hasil pengumpulan data presensi dapat dilihat pada pangkalan data awan
Raspberry Pi. Akan tetapi untuk mengakses pangkalan data awan memerlukan
jaringan yang sama dengan Raspberry Pi. Sehingga memungkinkan Raspberry
Pi untuk mengirimkan informasi menuju pangkalan data awan.
64
DAFTAR PUSTAKA
Ajie. (2014). Tutorial Arduino : 5 Menit Bikin Alat Ukur Jarak Dengan Sensor
Ultrasonik Dan Arduino. Saptaji.Com. http://saptaji.com/2014/03/06/tutorial-
arduino-5-menit-bikin-alat-ukur-jarak-dengan-sensor-ultrasonik-dan-arduino/
Ajifahreza. (2019). Apa Itu Relay Pengertiannya ? Ajifahreza.
https://www.ajifahreza.com/2019/01/apa-itu-relay-pengertiannya.html
Ariyanti, S., Adi, S. S., & Purbawanto, S. (2018). Sistem Buka Tutup Pintu
Otomatis Berbasis Suara Manusia. Elinvo (Electronics, Informatics, and
Vocational Education), 3(1), 83–91.
https://doi.org/10.21831/elinvo.v3i1.19076
Bart.sk. (n.d.). Raspberry Pi 3 Model B+. SOS Electronic. Retrieved April 10,
2022, from www.soselectronic.com/products/raspberry-pi/raspberry-pi-3-
model-b-1-292268
Bukhari, H. R. I., Suryani, V., & Jadied, E. M. (2021). Two Step Authentication
Dengan Rfid Dan Algortima Time-based One Time Password Pada Smart
Lock. eProceedings of Engineering, 8(2).
China, M. in. (n.d.). LCD TFT. Made in China. https://m.made-in-china.com/hot-
china-products/Lcd_Monitor_Of_Touch.html
Daulay, N. K., & Alamsyah, M. N. (2019). Monitoring Sistem Keamanan Pintu
Menggunakan Rfid dan Fingerprint Berbasis Web dan Database. Jurnal Sistem
Komputer Musirawas, 4(2), 85–92.
https://doi.org/10.32767/JUSIKOM.V4I2.632
De, D. (2019). Sensor Ultrasonik HC-SR04. TEKNISIBALI.COM.
https://teknisibali.com/cara-program-sensor-ultrasonic-hc-sr04-arduino/)
Edi Rakhman, F. C. (2014). Raspberry Pi - Mikrokontroler Mungil yang Serba
Bisa. Yogyakarta: CV ANDI OFFSET.
65
66
Kamera USB
Web
PENURUN
CATU DAYA 12V M6 TEGANGAN M1 M5 RASPBERRY PI M2 M3 M4
12V KE 5V
GND GND GND
POLITEKNIK SMG EK TA RK
NEGERI SEMARANG 22 30 12 01
LAMPIRAN 3
8,53
9,12 cm
9,60
10,10 cm
cm
Tombol Pintu
Tombol Kamera
Sensor
MLX90416 R1
Raspberry
R2 PI 3B+
Relai
R3 R4 Q1
D1 Gerendel Elektrik
R5
D2
Pembaca Kartu
Penurun Tegangan
12V ke 5V
Kamera Web
Catu Daya 12V Tampilan Kristal Cair TFT
220VAC
9,34cm
24 cm
Tampak Belakang
PROGRAM KAMERA
1. # ========================PUSTAKA======================= #
2. import tkinter as tk
3. from PIL import ImageTk, Image #Impor Image dan ImageTk
4. import cv2 #Impor opencv
5. import time
6. from komponen import komponen, identifikasi, database as db
#Impor komponen, identifikasi, dan pangkalan data
7. import halaman_hasil #Impor halaman_hasil