alat pendeteksi suhu tubuh dan wajah berbasis
TRANSCRIPT
ALAT PENDETEKSI SUHU TUBUH DAN WAJAH BERBASIS
RASPBERRY PI
PROYEK AKHIR
Laporan akhir ini dibuat dan diajukan untuk memenuhi salah satu syarat
kelulusan Dipolma III Politeknik Manufaktur Negeri Bangka Belitung
Diusulkan oleh
Junialdi Saputra NIM : 0031844
Puspita Desvirati NIM : 0031851
POLITEKNIK MANUFAKTUR NEGERI
BANGKA BELITUNG
2021
iv
v
PERNYATAAN BUKAN PLAGIAT
Yang bertanda tangan dibawah ini:
Nama Mahasiswa 1: Junialdi Saputra
Nama Mahasiswa 2: Puspita Desvirati
Dengan Judul : Alat Pendeteksi Suhu Tubuh Dan Wajah Berbasis Raspberry Pi
Menyatakan bahwa laporan akhir ini adalah hail kerja kami sendiri dan bukan
merupakan plagiat. Pernyataan ini kami buat dengan sebenarnya dan bila
dikemudian hari ternyata melanggar pernyataan ini kami bersedia menerima
sanksi yang berlaku.
Sungailiat, 10Agustus 2021
vi
ABSTRAK
Penelitian ini mengarah pada pembuatan alat presensi dengan menerapkan
sistem pengenalan dan pendeteksian wajah, serta dilengkapi dengan pengukuran
suhu tubuh. Dalam penelitian ini untuk pendeteksian dan pengenalan wajah
diterapkan Algoritma Local Binary Pattern Histogram (LBPH) dan Haar
Cascade of Classifier. Sistem kerja algoritma tersebut melakukan pendeteksian
dan pengenalan wajah secara cepat dengan penggunaan WebCam. Cara tepat
dalam pembuatan Mesin Presensi ini adalah melakukan penyusunan database,
training, pendeteksian, pengenalan, dan pengidentifikasian wajah. Untuk
pengukuran suhu tubuh menggunakan sensor suhu Infrared MLX90614, sensor
suhu ini memanfaatkan radiasi gelombang inframera, secara otomatis sensor ini
dapat melakukan pengukuran energi pada radiasi inframerah yang akan menjadi
skala temperatur. Dalam pengujian Mesin Presensi ini menggunakan 100 gambar
wajah yang tersimpan pada database dan akan dibaca citra wajahnya saat proses
pendeteksian. Dari hasil pengujian, sistem pendeteksian dan pengenalan wajah
akan bekerja secara maksimal pada jarak 30-100 cm dari WebCam. sedangkan
pada sistem pengukuran suhu tubuh akan lebih akurat pada jarak 5-15 cm dari
sensor suhu MLX90614.
Kata kunci: Sistem pendeteksian dan pengenalan wajah, Algoritma Local Binary
Pattern Histogram (LBPH), Haar Cascade of Classifier, sensor suhu
Infrared MLX90614, Raspberry Pi.
vii
ABSTRACT
This research leads to the manufacture of presence tools by
implementing a face recognition and detection system, and is equipped with body
temperature measurements. In this study, for face detection and recognition, the
Local Binary Pattern Histogram (LBPH) Algorithm and Haar Cascade of
Classifier were applied. The algorithm's working system performs face detection
and recognition quickly with the use of a webcam. The right way to make this
Presence Machine is to do database preparation, training, detection, recognition,
and face identification. For measuring body temperature using the MLX90614
Infrared temperature sensor, this temperature sensor utilizes infrared radiation,
this sensor can automatically measure energy in infrared radiation which will
become a temperature scale. In this Presence Machine test, 100 face images are
stored in the database and the face image will be read during the detection
process. From the test results, the face detection and recognition system will work
optimally at a distance of 30-100 cm from the WebCam. while the body
temperature measurement system will be more accurate at a distance of 5-15 cm
from the MLX90614 temperature sensor.
Keywords: Face detection and recognition system, Local Binary Pattern
Histogram (LBPH) Algorithm, Haar Cascade of Classifier, Infrared
temperature sensor MLX90614, Raspberry Pi.
viii
KATA PENGANTAR
Puji syukur dipanjatkan atas kehadiran Allah SWT, karena atas berkat dan
rahmatnya Laporan Tugas Akhir ini dapat terselesaikan tepat pada waktunya.
Laporan Tugas Akhir ini disusun sebagai salah satu syarat dan kewajiban
mahasiswa dalam menyelesaikan kurikulum program pendidikan Dipolma III di
Politeknik Manufaktur Negeri Bangka Belitung.
Laporan Tugas Akhir ini dapat diselesaikan berkat adanya usaha dan kerja
sama tim yang baik, serta adanya bantuan dan dukungan dari berbagai pihak. Pada
kesempatan diucapkan terima kasih kepada pihak-pihak yang turut serta dalam
membantu dan mendukung tersebut, diantaranya :
1. Bapak Aan Febriansyah, S.ST., M.T selaku pembimbing I yang telah
meluangkan waktu, tenaga dan pikiran dalam mengarahkan pengarahan
dalam penulisan Laporan Tugas Akhir.
2. Bapak Irwan, M. Sc. Ph. D selaku pembimbing II yang telah memberikan
saran-saran dan solusi dari masalah-masalah yang dihadapi selama proses
perencanaan dan pembuatan alat serta penyusunan laporan.
3. Bapak Dr. Parulian Silalahi,M.Pd selaku wali kelas III Elektronika B
teknik D3 Elektronika Politeknik Manufaktur Negeri Bangka Belitung.
4. Bapak I Made Andik S, Eng , Ph.D selaku Direktur Politeknik Manufaktur
Negeri Bangka Belitung.
5. Seluruh staf pengajar di Politeknik Manufaktur Negeri Bangka Belitung.
6. Rekan-rekan mahasiswa Politeknik Manufaktur Negeri Bangka Belitung,
yang telah banyak membantu selama pengerjaan Tugas Akhir.
7. Keluarga besar yang selalu senantiasa memberi dukungan dan doa selama
proses pembuatan Tugas Akhir.
8. Pihak-pihak lainnya yang telah memberikan bantuan baik secara langsung
dalam pembuatan Tugas Akhir yang tidak dapat disebutkan satu persatu.
ix
Dalam pembuataan Laporan Tugas Akhir ini masih jauh dari kata
sempurna, baik dari segi isi maupun penulisannya. Oleh karena itu diharapkan
kritik dan saran dari semua pihak yang bersifat membangun demi kebaikan
dalam penulisan laporan kedepannya.
Akhir kata diucapkan terima kasih, semoga laporan ini dapat berguna
dalam menambah pengetahuan dan wawasan bagi penulis dan pembaca.
Sungailiat, 10 Agustus 2021
Penulis
x
DAFTAR ISI
HALAMAN JUDUL ......................................................................................... i
LEMBAR PENGESAHAN ................................................................................ ii
PERNYATAAN BUKAN PLAGIAT ............................................................... iii
ABSTRAK ......................................................................................................... iv
ABSTRACT......................................................................................................... v
KATA PENGANTAR ....................................................................................... vi
DAFTAR ISI .................................................................................................... vii
DAFTAR TABEL ............................................................................................ vii
DAFTAR GAMBAR ........................................................................................ ix
DAFTAR LAMPIRAN ...................................................................................... x
BAB I PENDAHULUAN ................................................................................... 1
1.1. Latar Belakang ........................................................................................ 1
1.2. Rumusan Masalah ................................................................................... 2
1.3. Batasan Masalah ..................................................................................... 2
1.4. Tujuan Proyek Akhir ............................................................................... 3
BAB II LANDASAN TEORI ............................................................................. 4
1.1. Deteksi dan Pengenalan Wajah ............................................................... 4
1.2. Deteksi Wajah Algoritma LBPH (Local Binary Pattern Histogram) ...... 4
1.3. Haar Cascade of Classifier .................................................................... 6
1.4. Raspberry Pi .......................................................................................... 7
1.4.1. Fungsi dan Penggunaan Raspberry Pi ............................................... 7
1.4.2. Jenis-jenis Raspberry Pi ................................................................... 7
1.4.3. Bagian-bagian dan Spesifikasi Raspberry Pi 3 B .............................. 7
1.5. Sistem Operasi Rasbian .......................................................................... 8
1.6. Bahasa Pemrograman Python ................................................................. 8
1.7. OpenCV ................................................................................................. 8
1.8. Pengolah Citra ........................................................................................ 9
xi
1.9. WebCam................................................................................................. 9
1.10. Sensor Suhu Infrared MLX90614 ...................................................... 10
1.11. Speaker USB ...................................................................................... 10
BAB III METODE PELAKSANAAN ............................................................. 12
3.1. Pengumpulan Data Pendeteksian suhu tubuh dan wajah ....................... 13
3.2. Pengolahan Data Pendeteksian suhu tubuh dan wajah ........................... 13
3.3. Perancangan Software .......................................................................... 13
3.4. Assembly (Pearakitan Alat) ................................................................... 14
3.5. Uji Coba ............................................................................................... 14
BAB IV PEMBAHASAN ................................................................................ 15
4.1. Alat Pendeteksi Suhu Tubuh Dan Wajah Berbasis Raspberry Pi ........... 15
4.2. Pengujian ............................................................................................. 19
4.3. Sistem Presensi .................................................................................... 26
4.4. Pengukuran Suhu Tubuh ...................................................................... 29
4.5. Hasil Perancangan dan Pengujian ......................................................... 31
BAB V PENUTUP ........................................................................................... 45
5.1. Kesimpulan .......................................................................................... 45
5.2. Saran .................................................................................................... 46
DAFTAR PUSTAKA ....................................................................................... 47
DAFTAR TABEL
Table 4.2 Pengukuran suhu tubuh dengan Thermogan ........................................ 41
Tabel 4.1 pengukuran suhu tubuh dengan sensor MLX90614 ............................. 41
Table 4.3 Pengukuran suhu tubuh berdasarkan suhu ruangan ............................. 44
xiii
DAFTAR GAMBAR
Gambar 2.1. Cara Kerja Original Local Binary Pattern ....................................... 5
Gambar 2.2 Proses Local Binary Pattern Histogram (LBPH) .............................. 5
Gambar 2.3 Struktur dari Cascade Classifier ....................................................... 6
Gambar 2.4 bagian-bagian Raspberry Pi ............................................................. 7
Gambar 3.1 Flowchart Metode Pelaksanaan ...................................................... 14
Gambar 3.2 Diagram Blok Rancangan ............................................................... 16
Gambar 4.1 Flowchart Database ....................................................................... 18
Gambar 4.2 Flowchart sistem Presensi .............................................................. 20
Gambar 4.3 Parameter MaxSize.......................................................................... 20
Gambar 4.4 Parameter MinSize .......................................................................... 21
Gambar 4.5 Database Wajah ............................................................................. 21
Gambar 4.6 Training wajah di Database ........................................................... 24
Gambar 4.7 Identifikasi Wajah .......................................................................... 25
Gambar 4.8 Identifikasi wajah pada sistem presensi ........................................... 27
Gambar 4.9 Settingan waktu .............................................................................. 28
Gambar 4.10 Data Presensi ................................................................................ 29
Gambar 4.11 Pendeteksian dan pengidentifikasian wajah pada jarak 10 cm dari
WebCam. ....................................................................................... 31
Gambar 4.12 Pendeteksian dan pengidentifikasian wajah pada jarak 30 cm dari
WebCam ........................................................................................ 32
Gambar 4.13 Pendeteksian dan pengidentifikasian wajah pada jarak 50 cm dari
Webcam......................................................................................... 32
Gambar 4.14 Pendeteksian dan pengidentifikasian wajah pada jarak 80 cm dari
WebCam. ....................................................................................... 32
Gambar 4.15 Pendeteksian dan pengidentifikasian wajah pada jarak 100 cm dar
WebCam. ....................................................................................... 33
Gambar 4.16 Pendeteksian dan pengidentifikasian wajah pada jarak 150 cm dari
WebCam. ....................................................................................... 33
xiv
Gambar 4.17 Pendeteksian dan pengidentifikasian wajah dengan kurangnya
pencahayaan. ................................................................................. 34
Gambar 4.18 Pendeteksian dan pengidentifikasian wajah dengan intensitas
pencahayaan dari bawah. ............................................................... 34
Gambar 4.19 Pendeteksian dan pengidentifikasian wajah dengan intensitas
pencahayaan dari atas .................................................................... 34
Gambar 4.20 Pendeteksian dan pengidentifikasian wajah dengan intensitas
pencahayaan dari samping kanan ................................................... 35
Gambar 4.21 Pendeteksian dan pengidentifikasian wajah dengan intensitas cahaya
dari samping kiri ........................................................................... 35
Gambar 4.22 Pendeteksian dan pengidentifikasian wajah dengan intensitas cahaya
dari depan WebCam ....................................................................... 36
Gambar 4.23 Pendeteksian dan pengidentifikasian wajah dengan intensitas cahaya
dari belakang WebCam .................................................................. 36
Gambar 4.24 Posisi wajah di depan WebCam ..................................................... 36
Gambar 4.25 Posisi wajah di samping kiri WebCam........................................... 37
Gambar 4.26 Posisi wajah di samping kanan WebCam ....................................... 37
Gambar 4.27 Pengukuran suhu tubuh pada bagian tangan dengan jarak 5 cm dari
sensor suhu tubuh. ......................................................................... 38
Gambar 4.28 Pengukuran suhu tubuh pada bagian tangan dengan jarak 10 cm dari
sensor suhu tubuh .......................................................................... 38
Gambar 4.29 Pengukuran suhu tubuh pada bagian tangan pada jarak 15 cm dari
sensor suhu tubuh .......................................................................... 39
Gambar 4.30 Pengukuran suhu tubuh pada bagian tangan pada jarak 20 cm dari
sensor suhu tubuh .......................................................................... 39
Gambar 4.31 Pengukuran suhu tubuh pada bagian tangan pada jarak 25 cm dari
sensor suhu tubuh .......................................................................... 40
Gambar 4.32 Pengukuran suhu tubuh pada bagian tangan pada jarak 30 cm dari
sensor suhu tubuh. ......................................................................... 40
Gambar 4.33 Pengukuran suhu tubuh pada bagian tangan dengan suhu ruangan
26°C. ............................................................................................. 43
xv
Gambar 4.34 Pengukuran suhu tubuh pada bagian tangan dengan suhu ruangan
27°C. ............................................................................................. 43
Gambar 4.35 Pengukuran suhu tubuh pada bagian tangan dengan suhu ruangan
28°C. ............................................................................................. 43
Gambar 4.36 Pengukuran suhu tubuh pada bagian tangan dengan suhu ruangan
29°C. ............................................................................................. 44
Gambar 4.37 Pengukuran suhu tubuh pada bagian tangan dengan suhu ruangan
30°C. ............................................................................................. 44
xvi
DAFTAR LAMPIRAN
LAMPIRAN 1 : RIWAYAT HIDUP
LAMPIRAN 2 : LIST PROGRAM
1
BAB I
PENDAHULUAN
1.1 Latar Belakang
Mesin Presensi adalah mesin yang dipergunakan dalam pendataan kehadiran
mahasiswa, karyawan, maupun anggota dalam sebuah organisasi. Mesin Presensi
ini sering dipergunakan baik di kantor, sekolah, maupun instansi. Peranan Mesin
Presensi ini sangat penting dalam melakukan pendataan kehadiran berupa jam
masuk/pulang kerja terutama bagi perusahaan yang melakukan perhitungan gaji
atau upah sesuai hitungan waktu. Mesin Presensi juga sering dipergunakan pada
sekolah maupun Kampus dalam pendataan kehadiran siswa maupun mahasiswa,
hal ini sangat membantu mengajarkan kedisiplinan kepada siswa maupun
mahasiswa. Penggunaan Mesin Presensi dapat menghasilkan data kehadiran yang
akurat sehingga minim tingkat kesalahannya, selain itu juga pendataan akan lebih
cepat dilakukan [1].
Pada era sekarang Mesin Presensi juga mengalami perkembangan secara
teknologi seperti pengembangan pada sensor input-annya. Untuk sekarang banyak
pengembangan Mesin Presensi yang didasari oleh jenis inputnya seperti: Mesin
Presensi Kartu, Mesin Presensi Digital, dan Mesin Presensi Biometrik yang dapat
mendeteksi bagian tubuh manusia seperti sidik jari,wajah dan suara [2]. Seiring
perkembangan, Mesin Presensi tidak hanya sebagai pendataan dalam kehadiran
dan memperhitungkan upah saja, namun peranan Mesin Presensi dituntut
berintegrasi secara langsung pada sistem di sekolah, kampus, maupun di sebuah
instansi. Kecanggihan teknologi pada Mesin Presensi juga bukan hanya terletak
pada kecanggihan inputannya saja, tetapi seiring pengembangan sensor
integrasinya juga dikembangkan, seperti Mesin Presensi USB, Mesin Presensi
TCP/IP, Mesin Presensi Wi-Fi [1].
Adanya penyebaran virus COVID-19 yang berkembang pesat di dunia yang
berdampak negatif kepada pihak masyarakat, penyebaran virus menular ini harus
di hindari karena dapat menghambat kegiatan baik di Kantor, Sekolah, maupun di
Instansi. Untuk menghindari dampak penyebaran dari virus menular COVID-19 di
2
kantor, sekolah, kampus maupun Instansi telah menggunakan Presensi berbasis
scan wajah untuk menghindari interaksi antar sesama. Dikarenakan untuk
pengukuran suhu tubuh masih menggunakan operator yang dimana virus COVID-
19 mudah terjangkit melalui udara hal itu di nilai kurang efektif. Oleh karena itu
penulis membuat suatu “Alat Pendeteksi Suhu Tubuh dan Wajah Berbasis
Raspberry Pi” yang merupakan penggabungkan alat scan wajah dan pengukur
suhu tubuh.
1.2 Rumusan Masalah
Rumusan masalah pada Proyek Akhir ini adalah:
1. Bagaimana cara mengembangkan Mesin Presensi berbasis Raspberry Pi?
2. Bagimana membuat Mesin Presensi dengan menggabungkan Alat Scan
Wajah dan Pengukur suhu tubuh?
1.3 Batasan Masalah
Untuk lebih terarahnya tujuan Proyek Akhir, maka batasan masalah dalam
pengerjaan ini:
1. Pelaksanaan pembuatan database berisi Nama, NIM, Jam masuk dan
pulang.
2. Pelaksanaan pembuatan tampilan di layar monitor terdiri Nama, Suhu
tubuh, Keterangan masuk atau tidak, Tanggal dan Jam masuk.
3. Menggunakan Algoritma LBPH dan metode Haar Cascade Classifier
yang sesuai dengan Scan Wajah.
4. Pelaksanaan Pembuatan Output Suara dengan kata “Suhu Tubuh Normal
dan Suhu Tubuh Tidak Normal”.
5. Pengukuran suhu tubuh pada bagian tangan.
6. Data Record Scan wajah maksimal 10 gambar per orang.
7. Jarak sensor suhu dalam mendeteksi suhu dengan akurat sejauh 5-10 cm.
8. Kecepatan data sistem presensi bergantung dengan koneksi Internet.
3
1.4 Tujuan Proyek Akhir
1. Membuat Mesin Presensi scan wajah dan pendeteksi suhu tubuh bebasis
Raspberry Pi.
2. Membuat Mesin Presensi dengan menggabungkan alat scan wajah dan
pengukur suhu tubuh.
4
BAB II
DASAR TEORI
2.1 Deteksi Dan Pengenalan Wajah
Deteksi wajah merupakan sebuah metode dalam mengekstraksi daerah
pada wajah dengan tujuan sebagai proses pengenalan wajah. Sementara itu
Pengenalan wajah termauk kedalam sebuah teknologi yang melakukan
pengolahan citra (computer vision), dalam hal ini dapat mengidentifikasi suatu
identitas atau informasi seseorang dari wajahnya [3].
Face recognition merupakan sebuah teknologi komputer yang mampu
mendeteksi dan mengidentifikasi wajah melalui sebuah gambar digital dengan
melakuka pencocokkan tekstur dari lekuk wajah yang sudah terdata dan tersimpan
dalam database [4].
2.2 Deteksi Wajah Algoritma LBPH (Local Binary Pattern Histogram)
Algoritma LBPH bekerja dengan mencari perbedaan pada suatu objek dan
background. Local Binary Pattern Histogtram (LBPH) terbentuk dari
kombinasi algoritma LBP dengan Histogram of Oriented Gradients (HOG).
Citra wajah yang yang di tangkap secara cepat oleh WebCam akan dilakukan
perbandingkan dan dicocokan dengan metode histogram yang sudah diekstraksi
citra wajahnya yang ada pada database [3].
Prinsip kerja dari algoritma Local Binary Pattern Histogram (LBPH)
dalam mencocokkan gambar adalah dengan melakukan perbandingan nilai suatu
pixel yang berada di pusat citra dengan 8 nilai pixel yang ada di
sekelilingnya [5]. Pixel yang berada di tengah diperoleh dengan melakukan
perbandingan insensitasnya dengan insensitas dari pixel yang lainnya. Nilai dari
pixel yang tengah merupakan suatu ambang batas dari kedelapan pixel lainnya.
Dalam sebuah matriks, nilai biner yang berada di tengah akan dibandingkan
dengan nilai matriks yang berada di sekelilingnya. Apabila nilai matriks yang
berada di tengah lebih tinggi dari nilai yang ada di sekelilingnya, maka nilai
matriks di sekelilingnya akan diberi nilai ‘1’ begitu juga sebaliknya, apabila nilai
5
matriks yang ada di tengah bernilai lebih rendah dari nilai yang ada di
sekelilingnya, maka nilai matriks di sekelilingnya akan bernilai ‘0’ [3]. Angka 0
dan 1 (8 nilai biner) akan disusun searah jarum jam, nilai-nilai ini disebut
sebagai threshold. Dari susunan 8 nilai biner tersebut, akan dikonversi menjadi
nilai decimal [5]. Hal selanjutnya yaitu menghitung nilai histogram untuk
melakukan perbandingan dan pencocokan identitas wajah yang ditangkap oleh
WebCam dengan yang telah tersimpan pada database [3]. persamaan untuk
menghitung nilai threshold:
……………………………….(2.2.1)
Nilai dari D merupakan pembandingan antara citra wajah yang tersimpan pada
database dengan yang berada di kamera.
g1 g2 g3
g4 g5 g6
g7 g8 g9
Gambar 2.1. Prinsip kerja Original Local Binary Pattern [3]
Dengan melakukan perbandingan nilai pixel yang berada di pusat atau di
tengah citra wajah dengan 8 nilai pixel yang ada di sekelilingnya, didapat nilai
desimalnya (nilai threshold).
6
Gambar 2.2 Proses Local Binary Pattern Histogram (LBPH) [5].
2.3 Haar Cascade Of Classifier
Haar Cascade of Classifier adalah library yang sudah tesedia di
dalam Open-CV, library ini dibangun di atas Bahasa C/C++ menggunakan
API (Application Programming Interface) python [3]. Dengan melakukan
pengkombinasian pengklasifikasian dalam suatu Cascade of Classifier yang
membuat kecepatan dalam proses pendeteksian meningkat, hal ini
dilakukan dengan cara memperhatikan daerah-daerah dalam citra wajah
yang berpeluang saja [5]. Haar Cascade melakukan kombinasi tiga hal
yang akan menjadi dasarnya. Pertama dengan memiliki fitur lengkap yang
luas serta dapat dihitung secara cepat dan tepat, dalam hal ini dapat
mengurangi suatu variabilitas dalam suatu kelas, serta meningkatkan
variabilitas antar kelas. Kedua dengan melakukan penerapan algoritma yang
dapat memungkinkan pilihan dari suatu fitur dan pelatihan. Ketiga dengan
melakukan suatu pembentukan cascade dengan bertahap yang menghasilkan
suatu klasifikasi dan skema deteksi yang akan lebih komplek, efesien dan
cepat [3].
Gambar 2.3 Struktur dari Cascade Classifier [5].
2.4 Raspberry Pi
Merupakan komputer seperti sebuah papan tunggal (single-board
circuit; SBC) yang memiliki ukuran seperti kartu kredit. Raspberry Pi
memiliki CPU, GPU, RAM, Port USB, Audio Jack, HDMI, Ethernet, dan
GPIO hampir sama seperti komputer pada umumnya. Hanya saja
7
penyimpanan pada Raspberry Pi tidak menggunakan harddisk drive (HDD)
tetapi hanya menggunakan Micro SD dengan kapasitas yang dapat
disesuaikan dengan kebutuhan, sumber tenaga dari Raspberry Pi
menggunakan micro USB power dengan sumber daya 5V dan minimal arus
700 mA [6].
2.4.1 Jenis-jenis Raspberry Pi
Ada dua model utrama yang dimiliki Raspberry Pi, yaitu model A
dan model B. Kedua model Raspberry Pi ini memiliki perbedaan yaitu
terletak pada memori yang digunakan, Model A sendiri menggunakan
memori 256 MB sedangkan model B menggunakan memori 512 MB, model
B juga telah menggunakan ethernet port (kartu jaringan) yang tidak ada pada
model A. berikut jenis-jenis dari Raspberry Pi adalah [6]:
a. Raspberry Pi A+
b. Rasberry Pi B dan B+
c. Raspberry Pi 2
d. Raspberry Pi 3
2.4.2 Bagian-bagian dan Spesifikasi Raspberry Pi 3 B
Gambar 2.4 bagian-bagian Raspberry Pi [6]
2.5 Sistem Operasi Raspbian
Sistem Operasi Raspbian adalah suatu sistem operasi yang
berbasis Linux Distro Debian, sistem ini dioptimalkan untuk penggunaan
Raspberry Pi. Pada sistem operasi ini mempunyai beberapa program
standar dan program pembantu yang dapat menjalankan perangkat keras
yang ada pada Raspberry Pi [7].
8
2.6 Bahasa Pemrograman Python
Python merupakan bahasa pemrograman dengan model skrip
(scripting language) diorientasi dengan obyek. Python digunakan
diberbagai kebutuhan dalam pembentukan pengembangan suatu
perangkat lunak dan dapat dijalankan diberbagai platform dalam suatu
sistem operasi. Python juga dapat dikatakan bahasa pemrograman yang
bersifat freeware, dalam art ian tidak ada batasan di dalam
mendistribusikannya. dilengkapi source code, debugger dan profiler,
terdapat juga pelayanan antarmuka [7].
2.7 OpenCV
OpenCV merupakan libray yang digunakan dalam mengolah suatu
gambar dan video sehingga dapat meng-ekstrak informasi di dalam suatu
gambar atau video tersebut [8]. Terdapat 2500 lebih algoritma optimasi yang
dapat digunakan untuk memproses, memanipulasi, serta mengedit suatu
gambar dengan menggunakan OpenCV. OpenCV dapat digunakan dengan
berbagai macam bahasa pemprograman seperti Python, PHP, C, C++, dan
Java. Ada beberapa aplikasi yang dapat dipergunakan dalam penerapan
OpenCV ialah Interaksi Manusia Komputer (HCI), Pendeteksian dan
Pengenalan Wajah, Pengenalan Gestur, Pengenalan dan Identifikasi Objek,
Tracking Gerakan, Proses pada gambar, dan Mobile Robotics(Implementasi
Penggunaan OpenCV). OpenCV meng-support berbagai macam platform
seperti Windows, Linux, Mac OS, iOS dan Android [9].
2.8 Pengolahan Citra
Diperolehnya sebuah Citra digital merupakan hasil digitalisasi dari
sebuah citra analog. Ada dua proses dalam mendigitalisasi sebuah citra yaitu
proses sampling dan kuantisasi. Dalam proses sampling ditunjukkan
banyaknya suatu pixel/blok dalam mendefinisikan sebuah gambar. Sedangkan
dalam suatu proses kuantisasi akan menunjukkan banyaknya suatu nilai
9
derajat pada setiap pixel (menunjukkan sejumlah bit yang berada pada sebuah
gambar digital, dengan 2 bit black/white, 8 bit grayscale, dan 24 bit true
color) [10]. Pengolahan Citra dilakukan agar dapat melakukan peningkatan
kualitas dari citra agar mudah diinterpretasi oleh manusia maupun komputer.
Masukannya merupakan berupa sebuah citra dan keluarannya akan berupa
citra juga, yang diekstrak menjadi kualitas lebih baik lagi dari pada citra
masukkan sebelumnya. Operasi yang berhubungan antara pengelolahan citra
dalam deteksi wajah adalah neighborhood operation, histogram equalization,
grayscaling, thresholding, resizing. Proses dari suatu analisis sebuah citra
wajah dimulai dari melakukan pencitraan sampai dengan proses terakhir,
sehingga akan didapatkan sebuah keputusan dengan maksud dan tujuan
tertentu [10].
2.9 WebCam
WebCam (Web Camera) merupakan sebuah kamera realtime
(bermakna keadaan pada saat ini juga) gambar yang ditangkap bisa
diakses atau dilihat melalui program instant messaging, World Wide Web,
maupun aplikasi video call. Dalam web camera terdapat sebuah lensa
standar yang dipasang pada sebuah papan yang berupa sirkuit berguna
untuk menangkap sinyal gambar. Memiliki sebuah lubang lensa di casing
depan yang digunakan untuk menginput sebuah gambar. Salah satu
ujungnya kabel suport dihubungkan dengan papan sirkuit dan ujung satu
lagi sebagai connector, kabel ini dapat dikontrol sesuai ketinggian, arah
dan sudut pandang dari web camera [7].
2.10 Sensor Suhu Infrared MLX90614
Sensor MLX90614 adalah sensor yang memanfaatkan radiasi dari
gelombang inframerah yang akan digunakan untuk pengukuran suhu tubuh.
Sensor ini dikhususkan dalam melakukan pendeteksian energi dari radiasi
inframerah yang kemudian akan secara otomatis melakukan kalibrasi suatu
energi dari radiasi inframerah yang kemudian akan diubah menjadi skala
10
temperatur.
Pada sensor ini terdapat signal conditioning ASSP MLX90302 dan
detektor thermopile infrared MLX81101 yang berguna dalam melakukan
pemprosesan keluaran dari sensor inframerah [11]. Sensor ini juga memiliki
tegangan rendah suatu penguat, unit DSP, thermometer, dan ADC 17 bit serta
memiliki tingkat keakurasian dan resulusi yang cukup tinggi [12]. Sensor ini
Mampu melakukan pendeteksian suatu radiasi temperature objek antara - 70
C hingga 380 C. Keluarannya akan berupa digital, hal ini dikarenakan di
dalam sensor ini telah terdapat ADC. Cara kerja dari sensor ini adalah
menangkap dari pancaran inframerah suatu energi panas yang dihasilkan
setiap benda, setelah itu akan dikonversikan dalam bentuk besaran suhu [11].
2.11 Speaker USB
Speaker merupakan suatu perangkat keras atau output yang memiliki
fungsi dalam mengeluarkan hasil dari pemrosesan yang telah dilakukan oleh
CPU berupa audio/suara. speaker dapat dikatakan sebagai alat bantu yang
berguna sebagai keluaran suara dari perangkat musik seperti MP3 Player,
DVD Player dan perangkat musik lainnya [13].
Dalam hal lain speaker juga mempunyai fungsi sebagai suatu alat yang
digunakan dalam mengubah suatu gelombang listrik yang pada awalnya
merupakan perangkat penguat audio/suara menjadi gelombang getaran
setelahnya berupa suara itu sendiri. Dalam suatu proses perubahan gelombang
elektromagnet ke gelombang bunyi akan bermula melalui aliran listrik yang
berada pada penguat audio/suara setelah itu akan dialirkan ke dalam suatu
kumparan. Dalam suatu kumparan tersebut akan terjadi sebuah pengaruh gaya
magnet pada speaker yang akan sesuai dengan kuat atau lemahnya suatu
aliran arus listrik yang telah diperoleh, oleh karena itu getaran yang akan
dihasilkan pada suatu membran akan sama. Dari hal tersebut terjadilah sutau
gelombang bunyi yang dapat didengar dalam kesehariannya [13].
11
.
12
BAB III
METODE PELAKSANAAN
Untuk memudahkan proses pembuatan proyek akhir, ada beberapa tahap
dalam bentuk flowchart dapat ditunjukkan pada gambar 3.1
Gambar 3.1 Flowchart Metode Pelaksanaan
Mulai
Pengumpulan Data
Pendeteksian suhu tubuh dan
wajah
Pengolahan Data Pendeteksian
suhu tubuh dan wajah
Perancangan Softdware
Assembly (Perakitan Alat)
Uji coba
berhasil
Selesai
Ya
Tidak
13
2.1 Pengumpulan Data Pendeteksian Suhu Tubuh Dan Wajah
Proses pengumpulan data ini bertujuan untuk mempermudah dan
mengetahui kebutuhan akan komponen yang digunakan sebelum melakukan
perancangan Alat Pendeteksian suhu tubuh dan wajah. Pada tahap studi
pustaka akan dipelajari beberapa hal-hal yang berhubungan dengan proyek
akhir ini, diantaranya:
Pengumpulan data secara primer, yaitu:
a. Diskusi dengan pembimbing
Pengumpulan data secara skunder, yaitu :
a. Dari referensi jurnal
b. Dari Internet
2.2 Pengolahan Data Pendeteksian Suhu Tubuh Dan Wajah
Pada tahapan ini data yang sudah dikumpulkan akan didiskusikan
bersama pembimbing untuk memperjelas informasi yang ada, kemudian dari
hasil diskusi tersebut akan didapatkan kesimpulan yang mengarah ke
pembuatan alat proyek akhir berupa Alat Pendeteksi suhu tubuh dan wajah,
baik dari segi tekniknya maupun metode - metode yang di perlukan.
2.3 Perancangan Software
Saat semua alat yang dibuat telah terkumpul, adapun proses
perancangan software yang bertujuan untuk mengakses hardware yang telah
dirancang agar menjadi satu kesatuan. Rancangan software ini berupa
database yang berisi program citra wajah yang akan dikirim ke DashBoard
dengan webserver sebagai koneksi. Dalam pembuatan rancangan software
menggunakan bahasa Python dengan menggunakan aplikasi bawaan dari
Raspberry Pi yaitu Thony, sementara untuk pembuatan webserver
menggunakan PHP Framework Codeigniter.
14
2.4 Assembly (Perakitan Alat)
Tahap selanjutnya melakukan perakitan alat berupa penyusunan
beberapa bagian komponen yang akan menjadi sebuah alat pendeteksi suhu
tubuh dan wajah sebagai pendataan kehadiran. Adapun rancangan hardware
yang dibuat terdiri dari letak komponen, fungsi komponen, dan assembly dari
hardware. Hardware yang dirancang di harapkan dapat berfungsi dengan
baik. Berikut perancangan hardware yang dibuat:
a) Pemasangan WebCam pada Raspberry Pi.
b) Pemasangan sensor suhu MLX90614 pada Raspberry Pi.
c) Pemasangan Speaker pada Raspberry Pi
d) Pemasangan monitor pada Raspberry Pi
Gambar 3.2 Diagram Blok Rancangan
2.5 Uji Coba
Dalam menguji coba alat biasanya mengalami trial and error, dalam
mengatasi masalah tersebut hardware dan rancangan sistem yang telah
dibuat harus diuji coba, agar proses kerja yang diinginkan tercapai dan sesuai.
Jika dalam proses uji coba alat mengalami gangguan(error) dan tidak bekerja
sesuai dengan keinginan, maka proses selanjutnya adalah melakukan
perbaikan pada sistem yang mengalami gangguan tersebut. Apabila tahap uji
coba selanjutnya berhasil dengan proses kerja yang sesuai, maka pembuatan
selesai.
Monitor
WebCam Logitech
C720
Sensor Suhu MLX90614
Raspberry Pi
Speaker
15
BAB IV
PEMBAHASAN
Pada bab ini akan membahas mengenai proses pembuatan Alat Pendeteksi
Suhu Tubuh Dan Wajah Berbasis Raspberry Pi yang terdiri dari perancangan,
pembuatan alat, pemprograman, dan pengujian sistem kerja alat. Berikut adalah
penjelasannya.
4.1 Alat Pendeteksi Suhu Tubuh Dan Wajah Berbasis Raspberry Pi
Alat Pendeteksi Suhu Tubuh Dan Wajah Berbasis Raspberry Pi ini
merupakan sebuah Mesin Presensi yang dibuat untuk mempermudah mahasiswa,
siswa, serta karyawan dalam pendataan kehadiran. Mesin ini menggunakan
Raspberry Pi 3B sebagai prosesor utama pada Mesin Presensi ini. Pada sistem
kontrol alat ini menggunakan WebCam logitech C270 HD untuk proses
pengenalan dan pendeteksian wajah, sensor suhu inframera MLX90614 untuk
proses pengukuran suhu tubuh, dan Speaker ASP600 USB sebagai keluaran
berupa suara penanda terdeteksinya wajah dan suhu tubuh yang terukur normal
atau tidak normal.
Alat Presensi ini melakukan pendeteksian dan pengenalan pada wajah dalam
pendataan kehadirannya kemudian data tersebut akan tersimpan pada Database,
jika wajah dikenali dan terdeteksi Mesin Presensi ini akan melakukan pengecekan
suhu tubuh dengan estimasi suhu normal 35°-37°C, pada proses ini akan
ditampilkan pada layar monitor, keluaran dari Mesin Presensi ini berupa suara
yang dikeluarkan pada speaker, apabila suhu tubuh terukur normal maka suara
yang di keluarkan yaitu “suhu tubuh normal”, dan sebaliknya apabila suhu tubuh
terukur tidak normal suara yang akan dikeluarkan yaitu “suhu tubuh tidak
normal”. Data kehadiran berupa nama, NIM, kelas, jam masuk/pulang, dan suhu
tubuh akan tersimpan pada DashBoard.
16
Pada sistem presensi kamera WebCam Logitech C270 menjadi inputan
data, gambar yang ditangkap akan di filter pada algoritma Haar Cascade
Classifier dan diubah dalam bentuk matriks, setelah itu gambar akan di deteksi
dan di capture sebanyak 10 gambar per orang, gambar-gambar tersebut akan di
Gambar 4.1 Flowchart Database
Start
Input Data Kamera
Mem-filter gambar (Haar
Cascade Classifier
Deteksi
wajah
Meng-capture gambar
>=10
gambar
Menyimpan pada folder
Database
Training Wajah
Stop
Tidak
Tidak
Ya
Ya
17
training dengan memberikan ID yang berbeda- beda pada setiap wajah yang
berbeda pula, kemudian gambar akan tersimpan pada folder Database.
Tidak
Ya
Start
Input data kamera
Mem-filter gambar (Haar
Cascade Classifier)
Deteksi
Wajah
Identifikasi Wajah dengan Algoritma
Local Binary Pettern Histogram(LBPH)
Interval
Nilai
Threshold
Pengukuran Suhu Tubuh Dengan
Sensor Suhu Tubuh MLX90614
35°-37,2°C
A
B
Database
“UNKNOWN”
Tidak
Suhu Tubuh Tidak
Normal
Ya
18
Pada sistem presensi kamera WebCam Logitech C270 menjadi inputan
data, gambar yang ditangkap akan di filter pada algoritma Haar Cascade
Classifier dan diubah dalam bentuk matriks, jika wajah sudah dikenali dan
terdeteksi maka proses selanjutnya sistem akan melakukan identifikasi dari
wajah tersebut, proses ini dilakukan oleh algoritma Local Binary Pettern
Histogram(LBPH), selanjutnya sistem akan mencari interval nilai threshold pada
wajah yang sesuai dengan data gambar yang telah tersimpan pada Database.
jika wajah yang terdeteksi sesuai pada Database identitas dari pemilik wajah
akan teridentifikasi, selanjutnya sensor suhu tubuh MLX90614 akan mendeteksi
nilai suhu tubuh pemilik wajah pada bagian tangan, estimasi nilai suhu tubuh
normal adalah 35°C – 37,2 °C. jika suhu tubuh menunjukan nilai suhu antara
35°C – 37,2 °C maka suhu tubuh menunjukkan suhu normal, hal ini akan di
tandai dengan adanya keluaran suara yaitu “Suhu Tubuh Nomal”. Jika suhu
A
Keluaran Berupa Suara
Suhu Tubuh Normal/ Tidak
Normal
Data Identifikasi wajah dan
suhu tubuh dikirim ke
DashBoard sistem Presensi
Stop
B
Suhu Tubuh Normal
Gambar 4.2 Flowchart sistem Presensi
19
tubuh kurang atau melebihi 35°C – 37,2 °C maka suhu tubuh menunjukan nilai
suhu tubuh tidak normal, hal ini juga akan di tandai dengan adanya keluaran
suara yaitu “Suhu Tubuh Tidak Normal”. Selanjutnya data wajah yang
teridentifikasi dan suhu tubuh yang terukur akan dikirim ke Dashboard sistem
presensi sebagai peserta yang hadir. Jika wajah tidak teridentifikasi karena
belum terdata pada Database akan menampilkan bacaan “UNKNOWN”.
4.2 Pengujian
Tahap pengujian ini dilakukan setelah tahap perancangan.
a) Menampilkan video atau kamera dengan perintah OpenCV
Hal awal yang dilakukan adalah mengetahui apakah WebCam
Logitech C720 HD sudah siap digunakan atau belum dalam sistem alat
presensi ini. Jika kamera sudah siap digunakan akan ditandai dengan aktifnya
lampu LED pada WebCam Logitech C720 HD.
Selanjutnya adalah menambahkan program pada python untuk memanggil
video atau kamera menggunakan OpenCv dengan perintah:
cam = cv2.VideoCapture(sourceCam)
Setelah sistem kamera dapat dipanggil, sistem kamera dapat mendeteksi dan
menunjukkan perbedaan mana objek yang wajah dan mana yang bukan wajah
dengan perintah:
detector=cv2.CascadeClassifier('/home/pi/juniald
i/include/face.xml')
Tahap selanjutnya mengambil gambar dari kamera yang kemudian diubah
menjadi berwarna hitam putih, pada pendeteksian ini terdapat parameter yang
menentukan seberapa besar ukuran gambar diperkecil pada setiap skala
gambar, ditandai dengan adanya kotak berwarna hijau.
ret, im =cam.read()
gray=cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)
faces=detector.detectMultiScale(
20
gray,
scaleFactor=myScaleFactor,
minNeighbors=5,
minSize=(myMinSize, myMinSize),
maxSize = (myMaxSize, myMaxSize),
flags=cv2.CASCADE_SCALE_IMAGE)
Menampilkan ROI (Region Of Interest) dalam bentuk kotak warna biru
sesuai dengan koordinat dan dimensinya (nilai x,y,w,h).
cv2.rectangle(im,(x-50,y-
50),(x+w+50,y+h+50),(225,0,0),2)
Gambar 4.3 Parameter MaxSize
Ukuran objek wajah maksimum yang kemungkinan dapat di deteksi, objek
wajah yang lebih besar akan diabaikan atau tidak dapat terdeteksi.
Gambar 4.4 Parameter MinSize
21
Ukuran objek wajah seminimal mungkin yang kemungkinan dapat di
deteksi, objek wajah yang lebih kecil akan diabaikan atau tidak dapat
terdeteksi.
b) Penyimpanan data wajah pada Database
Setelah wajah terdeteksi, perintah pemprograman dengan bahasa python
akan meng-capture wajah dan akan menyimpan wajah tersebut ke dalam
Database, dengan perintah:
label = "Capture foto "+nama+" "+str(i)
print(label)
gambar yang telah ter-capture akan tersimpan pada Database dengan format
.jpg, user akan memberi nama ke gambar pertama, misalnya face_aldi_3_1,
begitu juga dengan gambar selanjutnya. Gambar yang tersimpan dalam
database sebanyak 10 gambar per orang.
cv2.imwrite("/home/pi/junialdi/face/face_"+img_name+"-
"+face_id +"."+ str(i) + ".jpg", gray[y-
offset:y+h+offset,x-offset:x+w+offset])
Gambar 4.5 Database Wajah
22
c) Training Database
Pada pengujian Training Database foto yang sudah tersimpan dalam
database akan dibaca dengan tujuan melatih wajah agar dapat dikenali dalam
proses identifikasi wajah nantinya. Dalam hal ini algoritma Local Binary
Pattern Hitogram (LBPH) akan mengenali foto yang sudah tersimpan dalam
folder Database secara terus menerus sehingga dapat mengenali pemilik
wajah tersebut dengan tepat.
recognizer = cv2.face.LBPHFaceRecognizer_create()
dalam hal ini akan dilakukan perintah pengulangan agar sistem dapat
mengenali gambar wajah secara tepat, dengan perintah:
def get_images_and_labels(path):
gambar yang ada di folder Database akan diambil untuk ditraining secara
keseluruhannya pada gambar yang ada.
image_paths = [os.path.join(path, f) for f in
os.listdir(path)]
perintah di atas bertujuan untuk menelusuri setiap gambar yang ada pada
database. Tahap selanjutnya dibuat definisi untuk gambar wajah dan labelnya
dengan perintah:
images = []
labels = []
gambar akan dipelajari dengan menggunakan looping pada perintah, dimana perintah
tersebut akan mengkonversikan gambar menjadi gray(hitam putih) terlebih dahulu
kemudian di konversikan lagi menjadi array,
for image_path in image_paths:
# Read the image and convert to grayscale
image_pil = Image.open(image_path).convert('L')
# Convert the image format into numpy array
image = np.array(image_pil, 'uint8')
23
# Get the label of the image
nbr =
int(os.path.split(image_path)[1].split("-
")[1].split(".")[0])
membutuhkan sebuah modul dalam pengelolahan gambar yaitu PIL (Python
Imaging Library) yang berguna dalam membuka, memanipulasi, dan
menyimpan gambar dalam berbagai format file, setelah semua looping telah
selesai, selanjutnya akan disimpan pada sebuah file dengan ekstensi .yml
(training.yml).
Berikut adalah perintahnya:
# return the images list and labels list
return images, labels
recognizer = cv2.face.LBPHFaceRecognizer_create()
cascadePath = "/home/pi/junialdi/include/face.xml"
faceCascade = cv2.CascadeClassifier(cascadePath);
try:
images, labels = get_images_and_labels("face")
cv2.imshow('train',images[0])
cv2.waitKey(1)
recognizer.train(images, np.array(labels))
recognizer.write('/home/pi/junialdi/include/trainer.yml')
print("Proses Train Face selesai")
cv2.destroyAllWindows()
except Exception as e:
print(e)
cv2.destroyAllWindows()
24
Gambar 4.6 Training wajah di Database
d) Pendeteksi, Pengenalan dan Pengidentifikasian Wajah
Wajah yang sudah di simpan dalam database memiliki ID yang
berbeda-beda dalam melakukan pendataan kehadirannya, sehingga pada saat
proses identifikasi wajah identitas pemilik wajah akan mudah dikenali .
Dalam proses pendeteksian dan pengenalan pada wajah alat presensi ini
menggunakan Haar Cascade Classifier dan algoritma Local Binary Pattern
Histogram (LBPH).
recognizer = cv2.face.LBPHFaceRecognizer_create()
recognizer.read('/home/pi/junialdi/include/trainer.yml')
Dalam proses pendektesian dan pengenalan wajah diperlukan untuk
mengetahui interval nilai threshold yang di dapatkan pada proses training
sebelumnya, diperlukan juga keakuratan untuk mengetahui tingkat kecocokan
dalam proses pendeteksian dan pengenalan . Berikut merupakan perintahnya :
recognizer.predict(gray[y:y+h,x:x+w])
if(conf<=accuracy): 80
Proses selanjutnya dalam melakukan pengidentifikasian dan pengenalan
adalah memberikan identisas pemilik wajah agar terdata pada saat melakukan
pendataan kehadiran.
def get_ID():
print("tambah Face ID")
25
flag = False
nama = ""
face_id = ""
img_name = ""
try:
addID = requests.post(url_addFaceID,
data={"iddev":iddev}, timeout=2).json()
#print(json.dumps(addID, indent=4,
sort_keys=True))
if addID['status'] == "ADD":
nama = addID['nama']
face_id = addID['face_id']
img_name = addID['image']
if addID['status'] == "-":
print("Tidak ada Face ID baru dari SERVER")
except Exception as e:
print(e)
Jika identitas sudah terdata, saat melakukan pengidentifikasian dan
pengenalan wajah akan menampilkan identitas pada pemilik wajah tersebut.
Jika wajah tersebut tidak terdata atau tidak dikenali maka akan menampilkan
bacaan “Tidak ada Face ID baru dari SERVER”.
cv2.putText(im,nama, (x,y+h),font,1,(0,255,0), 2)
tulisan akan berwana hijau dengan ukuran tulisan (font 1). Sesuai dengan
koordinat dan dimensinya (nilai x,y,w,h).
Gambar 4.7 Identifikasi Wajah
26
4.3 Sistem Presensi
Sistem presensi dapat bekerja setelah identifikasi wajah berhasil. Pada
tahap ini wajah akan dideteksi dan di identifikasi sesuai dengan citra wajah yang
telah terdata pada Database, interval nilai threshold yang telah diketahui dan data
wajah akan di akurasikan tingkat kecocokannya agar identifikasi yang di
keluarkan dapat sesuai dengan wajah tersebut. Sensor suhu tubuh akan bekerja
untuk mengukur nilai suhu pemilik wajah pada bagian tangan. Hal ini akan
dikirim ke data sistem presensi, berikut perintahnya :
print(dir (cv2.face))
recognizer = cv2.face.LBPHFaceRecognizer_create()
recognizer.read('/home/pi/junialdi/include/trainer.yml')
cascadePath = "/home/pi/junialdi/include/face.xml"
faceCascade = cv2.CascadeClassifier(cascadePath);
Id = 0
face_id = 0
#cam = cv2.VideoCapture(0)
cam = cv2.VideoCapture(sourceCam)
font = cv2.FONT_HERSHEY_SIMPLEX
haveSend = False
while True:
ret, im = cam.read()
haveSend = False
flagAbsen = False
if ret == True :
try:
mlx = adafruit_mlx90614.MLX90614(i2c)
suhuTubuh =
"{:.2f}".format(mlx.object_temperature)
suhuTubuh = float(suhuTubuh) + suhu_kalibrasi
except Exception as e:
print(e)
suhuTubuh = "0.0"
for(x,y,w,h) in faces:
cv2.rectangle(im,(x,y),(x+w,y+h),(225,0,0),2)
27
cv2.putText(im,"suhu
"+str(suhuTubuh),(x+20,y+20),font,1,(0,255,0),2)
Id, conf =
recognizer.predict(gray[y:y+h,x:x+w])
if(conf<=accuracy):
for i in range(len(id_list)):
#print(i)
if Id == int(id_list[i]):
nama = nama_list[i]
print(nama)
face_id = int(id_list[i])
Gambar 4.8 Identifikasi wajah pada sistem presensi
Dapat dilihat pada gambar data pemilik wajah yang sudah terdata akan
ditampilkan sesuai dengan citra atau interval nilai threshold wajah yang terbaca
pada database, terlihat tingkat kecocokan dari wajah bernilai 41,2 semakin
mendekati nilai 0 maka tingkat kecocokan wajah semakin akurat. Pada gambar
di atas juga terdapat identitas pemilik wajah berupa nama, nilai suhu tubuh, jam
masuk, tingkat kecocokan wajah, dan keterangan masuk atau tidak masuk. Jika
wajah tidak terdata pada Database atau tidak ada kecocokan citra wajah pada
saat melakukan presensi maka akan ditampilkan “UNKNOWN”, sesuai perintah
yang telah dibuat:
else:
print(nama)
face_id = 0
cv2.putText(im,nama, (x,y+h),font,1,(0,255,0), 2)
28
cv2.putText(im,"kecocokan
"+str(round(conf,1)), (x,y+h+20),font,1,(0,255,255), 2)
if face_id > 0 and nama != "Unknown":
Perintah untuk menampilkan waktu:
print(time.strftime("%d %B %Y %H:%M",
time.localtime(time.time())))
Gambar 4.9 Setting waktu
Data yang telah teridentifikasi tersebut akan di kirim ke web server,
dengan perintah:
data_FaceID = requests.post(url_name_user,
data={"iddev":iddev}).json()
print(json.dumps(data_FaceID, indent=4,
sort_keys=True))
data yang telah teridentifikasi identitas pemilik wajah berupa nama,
nilai suhu tubuh, jam masuk, tingkat kecocokan wajah, dan keterangan masuk
atau tidak masuk. Akan ditampilkan pada Dashboard :
print("Kirim data ke server...")
print("Nama : "+nama)
print("Face ID : "+str(face_id))
print(time.strftime("%d %B %Y %H:%M",
time.localtime(time.time())))
namaImgAbsensi = "absensi.jpg"
cv2.imwrite(namaImgAbsensi,im)
29
try:
files = {"foto":open(namaImgAbsensi,
"rb")}
send_absen = requests.post(url_absensi,
data={"faceid":face_id, "iddev":iddev, "suhu":str(suhuTubuh)},
files=files, timeout=5).json()
print(json.dumps(send_absen, indent=4,
sort_keys=True))
if send_absen['status'] == "success":
cv2.putText(im,send_absen['waktu'],
(10,300),font,1,(0,255,0), 2)
flagAbsen = True
cv2.putText(im,send_absen['ket'],
(10,400),font,1,(0,0,255), 2)
haveSend = True
Gambar 4.10 Data Presensi
4.4 Pengukuran Suhu Tubuh
Dalam pengukuran suhu tubuh menggunakan sensor suhu MLX90614.
Sensor ini menggunakan I2C sebagai inputannya, oleh karena itu perlu
mengaktifkan 2 pin utama pada Raspberry Pi yaitu pin SCL sebagai pin jam
dan SDA sebagai pin data. Dalam mengaktifkan pin I2C agar terbaca pada
30
sistem presensi saat melakukan pengukuran perlulah men-download dan meng-
import library I2C itu sendiri.perintahnya sebagai berikut:
import busio as io
import adafruit_mlx90614
i2c = io.I2C(board.SCL, board.SDA, frequency=100000)
pada pengukur suhu tubuh haruslah mendapatkan nilai suhu tubuh yang
akurat. Keakuratan pada sensor suhu tubuh dapat dilakukan dengan perintah:
accuracy = 80 #semakin mendekati 0 semakin akurat
myScaleFactor = 1.5
myMinSize = 100
myMaxSize = 800
suhu_min = 35.0
suhu_max = 37.2
suhu_kalibrasi = 3.0 #penambahan suhu dr sensor
setelah suhu tubuh terdeteksi dengan baik data akan direkam dan di tampilkan
pada sistem presensi, untuk menampilkannya menggunakan perintah
mlx = adafruit_mlx90614.MLX90614(i2c)
suhuTubuh =
"{:.2f}".format(mlx.object_temperature)
suhuTubuh = float(suhuTubuh) +
suhu_kalibrasi
except Exception as e:
print(e)
suhuTubuh = "0.0"
jika suhu tubuh yang terdeteksi oleh sensor suhu MLX90614 bernilai 35-
37°C itu tandanya suhu tubuh normal, dan jika tidak bernilai 35-37°C
menandakan suhu tubuh yang terukur tidak normal. Hal ini ditandai dengan
adanya keluaran suara dari speaker yaitu “Suhu Tubuh Normal dan Suhu
Tubuh Tidak Normal, dapat ditunjukkan pada perintah berikut:
if suhuTubuh >= suhu_min and suhuTubuh <= suhu_max:
31
fileMP3 = "/home/pi/junialdi/normal.mp3"
else:
fileMP3 = "/home/pi/junialdi/tidaknormal.mp3"
4.5 Hasil Perancangan dan Pengujian
Hasi rancangan meliputi beberapa parameter yang memungkinkan dapat
berpengaruh pada alat presensi ini dalam melakukan pendeteksian, pengenalan
wajah, dan pengidentifikasi, seperti jarak wajah pada kamera, intensitas cahaya
di sekitar ruangan, posisi wajah dengan kamera, banyak wajah yang ingin di
deteksi dan di identifikasi. Kemudian dapat juga berpengaruh pada pengukuran
suhu tubuh, seperti jarak sensor suhu tubuh dengan tangan, serta pengaruh suhu
lingkungan sekitar.
Berikut hasil perancangan dan pengujiannya:
a) Pendeteksian dan Pengidentifikasian berdasarkan jarak wajah
dengan kamera.
Gambar 4.11 Pendeteksian dan pengidentifikasian wajah pada jarak 10 cm
dari WebCam.
Dapat dilihat pada gambar di atas pendeteksian dan
pengidentifikasian dengan jarak 10 cm dari WebCam tidak dapat
mendeteksi dan mengidentifikasi wajah.
32
Gambar 4.12 Pendeteksian dan pengidentifikasian wajah pada jarak 30 cm
dari WebCam
Dapat dilihat pada gambar di atas pendeteksian dan
pengidentifikasian dengan jarak 30 cm dari WebCam dapat mendeteksi
dan mengidentifikasi wajah.
Gambar 4.13 Pendeteksian dan pengidentifikasian wajah pada jarak 50 cm
dari Webcam.
Dapat dilihat pada gambar di atas pendeteksian dan
pengidentifikasian dengan jarak 50 cm dari WebCam dapat mendeteksi
dan mengidentifikasi wajah.
Gambar 4.14 Pendeteksian dan pengidentifikasian wajah pada jarak 80 cm
dari WebCam.
Dapat dilihat pada gambar di atas pendeteksian dan
pengidentifikasian dengan jarak 80 cm dari WebCam dapat mendeteksi
dan mengidentifikasi wajah.
33
Gambar 4.15 Pendeteksian dan pengidentifikasian wajah pada jarak 100
cm dari WebCam.
Dapat dilihat pada gambar di atas pendeteksian dan
pengidentifikasian dengan jarak 100 cm dari WebCam dapat mendeteksi
dan mengidentifikasi wajah.
Gambar 4.16 Pendeteksian dan pengidentifikasian wajah pada jarak 150
cm dari WebCam.
Dapat dilihat pada gambar di atas pendeteksian dan
pengidentifikasian dengan jarak 150 cm dari WebCam tidak dapat
mendeteksi dan mengidentifikasi wajah.
34
b) Pendeteksian dan Pengidentifikasian wajah berdasarkan intensitas
cahaya di sekitar ruangan
Gambar 4.17 Pendeteksian dan pengidentifikasian wajah dengan
kurangnya pencahayaan.
Dapat dilihat pada gambar di atas pendeteksian dan
pengidentifikasian dengan kurangnya pencahayaan, dapat mendeteksi dan
mengidentifikasi wajah.
Gambar 4.18 Pendeteksian dan pengidentifikasian wajah dengan
intensitas pencahayaan dari bawah.
Dapat dilihat pada gambar di atas pendeteksian dan
pengidentifikasian dengan pencahayaan dari bawah, tidak dapat
mendeteksi dan mengidentifikasi wajah.
Gambar 4.19 Pendeteksian dan pengidentifikasian wajah dengan
intensitas pencahayaan dari atas
35
Dapat dilihat pada gambar di atas pendeteksian dan
pengidentifikasian dengan pencahayaan dari atas, dapat mendeteksi dan
mengidentifikasi wajah.
Gambar 4.20 Pendeteksian dan pengidentifikasian wajah dengan intensitas
pencahayaan dari samping kanan
Dapat dilihat pada gambar di atas pendeteksian dan
pengidentifikasian dengan pencahayaan dari samping kanan, dapat
mendeteksi dan mengidentifikasi wajah.
Gambar 4.21 Pendeteksian dan pengidentifikasian wajah dengan intensitas
cahaya dari samping kiri
Dapat dilihat pada gambar di atas pendeteksian dan
pengidentifikasian dengan pencahayaan dari samping kiri, dapat
mendeteksi dan mengidentifikasi wajah.
36
Gambar 4.22 Pendeteksian dan pengidentifikasian wajah dengan intensitas
cahaya dari depan WebCam
Dapat dilihat pada gambar di atas pendeteksian dan
pengidentifikasian dengan pencahayaan dari depan WebCam, dapat
mendeteksi dan mengidentifikasi wajah.
Gambar 4.23 Pendeteksian dan pengidentifikasian wajah dengan intensitas
cahaya dari belakang WebCam
Dapat dilihat pada gambar di atas pendeteksian dan
pengidentifikasian dengan pencahayaan dari belakang WebCam , dapat
mendeteksi dan mengidentifikasi wajah.
c) Pendeteksian dan pengidentifikasian berdasarkan posisi wajah
dengan kamera.
Gambar 4.24 Posisi wajah di depan WebCam
37
Dapat dilihat pada gambar di atas pendeteksian dan
pengidentifikasian pada posisi wajah di depan WebCam, wajah dapat
terdeteksi dan teridentifikasi.
Gambar 4.25 Posisi wajah di samping kiri WebCam
Dapat dilihat pada gambar di atas pendeteksian dan
pengidentifikasian pada posisi wajah di samping kiri WebCam, wajah
dapat terdeteksi dan teridentifikasi.
Gambar 4.26 Posisi wajah di samping kanan WebCam
Dapat dilihat pada gambar di atas pendeteksian dan
pengidentifikasian pada posisi wajah di samping kanan WebCam, wajah
dapat terdeteksi dan teridentifikasi.
38
d) Pengukuran suhu tubuh berdasarkan jarak sensor suhu tubuh pada
bagian tangan
Gambar 4.27 Pengukuran suhu tubuh pada bagian tangan dengan jarak 5
cm dari sensor suhu tubuh.
Dapat dilihat pada gambar pengukuran suhu tubuh pada bagian
tangan dengan jarak 5 cm dari sensor suhu tubuh terukur, dan
menunjukkan nilai suhu tubuh yaitu 36,69°C. Dalam hal ini untuk suhu
normal yang dapat di ukur pada alat adalah 35°C-37,2°C, maka dari hasil
pengujian suhu yang di hasilkan normal.
Gambar 4.28 Pengukuran suhu tubuh pada bagian tangan dengan jarak 10
cm dari sensor suhu tubuh
Dapat dilihat pada gambar pengukuran suhu tubuh pada bagian
tangan dengan jarak 10 cm dari sensor suhu tubuh terukur, dan
menunjukkan nilai suhu tubuh yaitu 36,17°C. Dalam hal ini untuk suhu
normal yang dapat di ukur pada alat adalah 35°C-37,2°C, maka dari hasil
pengujian suhu yang di hasilkan normal.
39
Gambar 4.29 Pengukuran suhu tubuh pada bagian tangan pada jarak 15 cm
dari sensor suhu tubuh
Dapat dilihat pada gambar pengukuran suhu tubuh pada bagian
tangan dengan jarak 15 cm dari sensor suhu tubuh terukur, dan
menunjukkan nilai suhu tubuh yaitu 35,33°C. Dalam hal ini untuk suhu
normal yang dapat di ukur pada alat adalah 35°C-37,2°C, maka dari hasil
pengujian suhu yang di hasilkan normal.
Gambar 4.30 Pengukuran suhu tubuh pada bagian tangan pada jarak 20 cm
dari sensor suhu tubuh
Dapat dilihat pada gambar pengukuran suhu tubuh pada bagian
tangan dengan jarak 20 cm dari sensor suhu dan menunjukkan nilai suhu
tubuh yaitu 34.75°C, dalam hal ini. Dalam hal ini untuk suhu normal yang
dapat di ukur pada alat adalah 35°C-37,2°C, maka dari hasil pengujian
suhu yang di hasilkan tidak normal, bisa juga pengukuran suhu pada tubuh
tidak terdeteksi dan suhu yang di hasilkan dari pengujian merupakan suhu
lingkungan sekitar atau suhu ruang.
40
Gambar 4.31 Pengukuran suhu tubuh pada bagian tangan pada jarak 25 cm
dari sensor suhu tubuh
Dapat dilihat pada gambar pengukuran suhu tubuh pada bagian
tangan dengan jarak 25 cm dari sensor suhu tubuh terukur, dan
menunjukkan nilai suhu tubuh yaitu 34,81°C. Dalam hal ini untuk suhu
normal yang dapat di ukur pada alat adalah 35°C-37,2°C, maka dari hasil
pengujian suhu yang di hasilkan tidak normal, bisa juga pengukuran suhu
pada tubuh tidak terdeteksi dan suhu yang di hasilkan dari pengujian
merupakan suhu lingkungan sekitar atau suhu ruang.
Gambar 4.32 Pengukuran suhu tubuh pada bagian tangan pada jarak 30 cm
dari sensor suhu tubuh.
Dapat dilihat pada gambar pengukuran suhu tubuh pada bagian
tangan dengan jarak 30 cm dari sensor suhu tubuh terukur, dan
menunjukkan nilai suhu tubuh yaitu 34.57°C. Dalam hal ini untuk suhu
normal yang dapat di ukur pada alat adalah 35°C-37,2°C, maka dari hasil
pengujian suhu yang di hasilkan tidak normal, bisa juga pengukuran suhu
pada tubuh tidak terdeteksi dan suhu yang di hasilkan dari pengujian
merupakan suhu lingkungan sekitar atau suhu ruang.
41
Tabel 4.1 Pengukuran suhu tubuh dengan sensor MLX90614
Table 4.2 Pengukuran suhu tubuh dengan Thermogun
No Jarak Sensor Suhu Tubuh Temperature
1 5cm 36,69°C
2 10cm 36,17°C
3 15cm 36,33°C
4 20cm 34,75°C
5 25cm 34,81°C
6 30cm 34,57°C
No Jarak Sensor Suhu Tubuh Temperature
1 5cm 36,5°C
2 10cm 36,4°C
3 15cm 36,4°C
4 20cm 36,3°C
5 25cm 36,2°C
6 30cm 36,2°C
42
Error Pengukuran Suhu Tubuh antara pengukuran dengan menggunakan sensor
suhu inframerah MLX90614 dan Pengukuran Suhu Tubuh dengan Thermogun.
Jarak 5 cm
Selisih = sensor MLX90614 – Thermogun
= |36,69 – 36,5|= 0,19
Error =| 0,19
36,5| 𝑥 100% = 0,56 %
Jarak 10 cm
Selisih = sensor MLX90614 – Thermogun
= |36,17 – 36,4|= 0,23
Error =| 0,23
36,4| 𝑥 100% = 0,63 %
Jarak 15 cm
Selisih = sensor MLX90614 – Thermogun
= |36,33 – 36,3|= 0,08
Error =| 0,03
36,3| 𝑥 100% = 0,08 %
Jarak 20 cm
Selisih = sensor MLX90614 – Thermogun
= |34,75 – 36,3|= -1,55
Error = |1,55
36,3| 𝑥 100% = 4,27 %
Jarak 25 cm
Selisih = sensor MLX90614 – Thermogun
= |34,81 – 36,2|= -1,39
Error =| 1,39
36,2| 𝑥 100% = 3,84 %
Jarak 30 cm
Selisih = sensor MLX90614 – Thermogun
= |34,57 – 36,2|= -1,63
Error =| 1,63
36,2| 𝑥 100% = 4,50 %
Perbandingan Pengukuran suhu tubuh pada bagian tangan berdasarkan
jarak dengan sensor suhu inframerah MLX90614 dan Thermogun, pada jarak 5-15
43
cm nilai error yang dihasilkan tidak begitu tinggi, karena hasil pengukuran tidak
jauh berbeda. Sedangkan pengukuran suhu tubuh pada jarak 20-30 nilai error
yang di hasilkan tinggi hal ini disebabkan ke akuratan dari sensor suhu inframerah
MLX90614 dalam pengukuran suhu tubuh hanya berjarak 5-10cm saja,
temperature suhu yang di hasilkan ketika melebihi jarak tersebut merupakan nilai
dari suhu lingkungan di sekitar, Berbeda dengan Thermogun jarak ke akuratan
Thermogun mencapai 30cm.
e) Pengukuran suhu tubuh berdasarkan suhu ruangan
Gambar 4.33 Pengukuran suhu tubuh pada bagian tangan dengan suhu
ruangan 26°C.
Gambar 4.34 Pengukuran suhu tubuh pada bagian tangan dengan suhu
ruangan 27°C.
Gambar 4.35 Pengukuran suhu tubuh pada bagian tangan dengan suhu
ruangan 28°C.
44
Gambar 4.36 Pengukuran suhu tubuh pada bagian tangan dengan suhu
ruangan 29°C.
Gambar 4.37 Pengukuran suhu tubuh pada bagian tangan dengan suhu
ruangan 30°C.
Table 4.3 Pengukuran suhu tubuh berdasarkan suhu ruangan.
Dapat dilihat pada tabel 4.3 pengukuran suhu tubuh pada bagian tangan
berdasarkan suhu ruangan yang terbilang normal, hanya saja semakin tingginya
temperatur suhu yang ada diruangan, temperatur suhu tubuh yang terukur juga
naik, artinya temperatur suhu yang ada diruangan berpengaruh ke temperatur suhu
tubuh.
BAB V
PENUTUP
No Temperature Ruangan Temperature
1 26°C 36,21°C
2 27°C 36,33°C
3 28°C 36,61°C
4 29°C 36,69°C
5 30°C 36,91°C
45
5.1 KESIMPULAN
Setelah melakukan perancangan, pengujian, dan analisa Alat Pendeteksi
Suhu Tubuh Dan Wajah Berbasis Raspberry Pi ini dapat diambil beberapa
kesimpulan secara keseluruhan dari kinerja dari sistem Alat Pendeteksi
Suhu Tubuh Dan Wajah Berbasis Raspberry Pi yakni sebagai berikut:
a) Pada sistem presensi Alat Pendeteksi Suhu Tubuh Dan Wajah Berbasis
Raspberry Pi ini mampu mendeteksi wajah dari jarak 30cm-100cm dari
WebCam ke akurasiannya secara akurat, sementara pada jarak 10cm
sistem tidak dapat mendeteksi dan mengidentifikasi wajah karena wajah
terlalu dekat dengan WebCam. Dan pada jarak 150cm sistem juga tidak
dapat mendeteksi dan mengidentifikasi wajah karena jarak wajah terlalu
jauh dari WebCam. Pada pendeteksian dan pengidentifikasian wajah
dengan intensitas cahaya haruslah dengan intensitas cahaya yang cukup
dan untuk ke akurasian pendeteksian dan pengidentifikasian wajah
dengan posisi wajah berbeda-beda, wajah dapat terdeteksi dengan baik.
b) Sistem presensi Alat Pendeteksi Suhu Tubuh Dan Wajah Berbasis
Raspberry Pi ini mampu meminimalisirkan tingkat kecurangan, karena
wajah akan terkirim pada DashBoard sistem Presensi.
c) Untuk pengukuran suhu tubuh yang akurat dengan jarak 5cm.
46
5.2. SARAN
Dari Proyek Akhir yang berjudul Alat Pendeteksi Suhu Tubuh Dan
Wajah Berbasis Raspberry Pi ini ada beberapa kekurangan yang nantinya
akan menjadi saran, agar dapat mengembangkan alat ini lebih baik lagi dari
sebelumnya diantaranya:
a) Dapat mendeteksi dan mengidentifikasi wajah yang menggunakan
masker.
b) Tidak bergantung kepada koneksi Internet karena hal ini berpengaruh
pada kinerja sistem presensinya.
c) Memperbaiki sistem agar dapat mendeteksi dan mengidentifikasi banyak
wajah sekaligus dan dapat mengirim sekaligus data wajah ke sistem
presensi di DashBoard.
d) Menggunakan sensor suhu tubuh yang yang dapat mengukur temperatur
suhu tubuh pada jarak jauh.
47
DAFTAR PUSTAKA
[1] Surya Semesta, "Apa itu Mesin Absensi, Jenis, Fungsi dan Kegunaan," 2010.
[Online]. Available: https://suryasemesta.com/apa-itu-mesin-absensi-jenis-fungsi-dan-kegunaan
[2] Surya Semesta, "Jenis- Jenis Abbsensi," 2010. [Online]. Available:
https://suryasemesta.com/jenis-jenis-mesin-absensi.html. [Accessed 20 06
2021].
[3] A. W. wibowol, A. Karima, W. A. Yobioktabera and S. Fahriah,
"Pendeteksian dan Pengenalan Wajah pada foto secara Real Time dengan
Haar Cascade dan Local Binary Pattern Histogram," vol. 9, no. 1, 2020.
[4] R. Purwati and G. Ariyanto, "Pengenalan Wajah Manusia Berbasis Algoritma
Local Binary Pattern," vol. 17, no. 2, 2017.
[5] N. M. Fahmi, "Sistem Absensi Wajah Dengan Menggunakan Algoritma Haar
Cascade dan Local Binary Pattern Histogram(LBPH)," repositori.usu.ac.id,
Sumatra Utara, 2020.
[6] M. Riadi, "Raspberry Pi" Kajian Pustaka, 17 Desember 2020. [Online].
Available: https://www.kajianpustaka.com/2020/12/Raspberry-Pi.html. [Accessed 10 mei 2021].
[7] I. D. Wijaya, U. Nurhasan and M. A. Barata, "Implementasi Raspberry Pi
untuk Rancang Bangun Sistem Keamanan Pintu Ruang Server Dengan
Pengenalan Wajah Menggunakan Metode Triangle Face," vol. 4, no. 1, 2017.
[8] A. Y. P, "Mengenal OpenCV (Open Source Computer Vision Library)" Devtrik, 21 Februari
2017. [Online]. Available: https://devtrik.com/opencv/mengenal-opencv-open-source computer-
vision-library/. [Accessed 16 Juni 2021].
[9] B. Santoso and R. P. Kristianto, "Implementasi Penggunaan OpenCV pada
Face Recognition untuk sistem Presensi Perkuliahan Mahasiswa," vol. 9, no.
2, 2020.
[10] T. C. A.-S. Zulkhaidi, E. Maria and Y. , "Pengenalan Pola Bentuk Wajah
dengan OpenCV," vol. 3, no. 2, 2019.
[11] S. R. Sokku and S. F. Harun, "Deteksi Sapi Sehat Berdasarkan Suhu Tubuh
48
Berbasis Sensor MLX90614 dan Mikrokontroller," vol. 2, no. 6, 2019.
[12] M. O. Sibuea, "PENGUKURAN SUHU DENGAN SENSOR SUHU
INFRAMERAH MLX90614 BERBASIS ARDUINO," respository.usd.ac.id,
Yogyakarta, 2018.
[13] Chaterine, "Pengertian Fungsi Speaker" audioengine, 25 maret 2015. [Online].
Available: https://www.audioengine.co.id/pengertian-fungsi-speaker/. [Accessed 26 juli
2021].
Lampiran 1: Daftar Riwayat Hidup (Perorangan)
DAFTAR RIWAYAT HIDUP
1. Data Pribadi
Nama Lengkap : Junialdi Saputra
Tempat & Tanggal Lahir : Sungailiat, 29 Juni 2000
Alamat Rumah : Lingkungan Jelutung, RT.04
Telp. : 083803050769
Email : [email protected]
Jenis Kelamin : Laki - laki
Agama : Islam
2. Riwayat Pendidikan
a. SD NEGERI 29 SUNGAILIAT
b. SMP NEGERI 03 SUNGAILIAT
c. SMK NEGERI 02 SUNGAILIAT
3. Pendidikan Non Formal
Sungailiat,10 Agustus 2021
……………………..
DAFTAR RIWAYAT HIDUP
1. Data Pribadi
Nama Lengkap : Puspita Desvirati
Tempat & Tanggal Lahir : Belinyu, 04 Desember 2000
Alamat Rumah : JL.Lurus Belinyu RT.002, RW. 002
Telp. : 0895605609306
Email : [email protected]
Jenis Kelamin : Perempuan
Agama : Islam
2. Riwayat Pendidikan
a. SD NEGERI 03 BELINYU
b. SMP NEGERI 01 BELINYU
c. SMK YPN BELINYU
3. Pendidikan Non Formal
Sungailiat, 10 Agustus 2021
……………………..
Lampiran 2 List Program
#Library
import cv2,os
import tkinter
from tkinter import *
import numpy as np
import requests
import json
import time
import pygame
import board
import busio as io
import adafruit_mlx90614
i2c = io.I2C(board.SCL, board.SDA, frequency=100000)
pygame.mixer.init()
pygame.mixer.music.load("/home/pi/junialdi/selamatdatang.mp3") pygame.mixer.music.set_volume(1.0)
pygame.mixer.music.play() // # while pygame.mixer.music.get_busy() == True:
# print("play mp3")
# pass
sourceCam = 0 #usb webcam index 0
#sourceCam = "http://192.168.43.51:8080/video"
iddev = "1" #id alat dari web
Server = "http://192.168.43.31"
url_absensi = Server+"/junialdi/api/absensi"
url_addFaceID = Server+"/junialdi/api/addfaceid"
url_delFaceID = Server+"/junialdi/api/delfaceid"
url_confirmFaceID = Server+"/junialdi/api/confirm"
url_name_user = Server+"/junialdi/api/listfaceid"
accuracy = 80 #semakin mendekati 0 semakin akurat
myScaleFactor = 1.5
myMinSize = 100
myMaxSize = 800
suhu_min = 35.0
suhu_max = 37.2
suhu_kalibrasi = 3.0 #penambahan suhu dr sensor
root = Tk()
root.title("Absensi Face Recognition")
root.geometry("480x640")
main = Label(root, text="Absensi Face Recognition", font=("arial",
20, "bold"), fg="steelblue").pack(pady=50)
def get_ID():
print("tambah Face ID")
flag = False
nama = ""
face_id = ""
img_name = ""
try:
addID = requests.post(url_addFaceID, data={"iddev":iddev},
timeout=2).json()
#print(json.dumps(addID, indent=4, sort_keys=True))
if addID['status'] == "ADD":
nama = addID['nama']
face_id = addID['face_id']
img_name = addID['image']
if addID['status'] == "-":
print("Tidak ada Face ID baru dari SERVER")
except Exception as e:
print(e)
if nama != "" and face_id != "":
print("Nama "+nama)
print("Face ID "+face_id)
cam = cv2.VideoCapture(sourceCam)
detector=cv2.CascadeClassifier('/home/pi/junialdi/include/face.xml
')
font = cv2.FONT_HERSHEY_SIMPLEX
i=0
offset=10
try:
print("Starting Capture...")
while True:
ret, im =cam.read()
gray=cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)
faces=detector.detectMultiScale(
gray,
scaleFactor=myScaleFactor,
minNeighbors=5,
minSize=(myMinSize, myMinSize),
maxSize = (myMaxSize, myMaxSize),
flags=cv2.CASCADE_SCALE_IMAGE
)
for(x,y,w,h) in faces:
i=i+1
label = "Capture foto "+nama+" "+str(i)
print(label)
cv2.imwrite("/home/pi/junialdi/face/face_"+img_name+"-"+face_id
+"."+ str(i) + ".jpg", gray[y-offset:y+h+offset,x-
offset:x+w+offset])
cv2.rectangle(im,(x-50,y-
50),(x+w+50,y+h+50),(225,0,0),2)
cv2.putText(im,label,(10,400),font,1,(255,255,255),2)
cv2.waitKey(100)
if i > 5:
flag = True
cv2.imshow('frame capture',im)
if cv2.waitKey(100) & 0xFF==ord('q'):
cam.release()
cv2.destroyAllWindows()
break
if i>=10:
cam.release()
cv2.destroyAllWindows()
break
except Exception as e:
print(e)
cam.release()
cv2.destroyAllWindows()
if flag:
try:
send_data_confirm = requests.post(url_confirmFaceID,
data={"iddev":iddev,"confirm_add":face_id}, timeout=2).json()
print(json.dumps(send_data_confirm, indent=4,
sort_keys=True))
pygame.mixer.init()
pygame.mixer.music.load("/home/pi/junialdi/tambahface.mp3")
pygame.mixer.music.set_volume(1.0)
pygame.mixer.music.play()
while pygame.mixer.music.get_busy() == True:
print("play mp3")
pass
except Exception as e:
print(e)
#########################################
def del_ID():
print("hapus Face ID")
nama = ""
face_id = ""
img_name = ""
id_face_table = ""
try:
delID = requests.post(url_delFaceID, data={"iddev":iddev},
timeout=2).json()
#print(json.dumps(delID, indent=4, sort_keys=True))
if delID['status'] == "DEL":
nama = delID['nama']
face_id = delID['face_id']
id_face_table = delID['id_face_table']
img_name = delID['image']
if delID['status'] == "-":
print("Tidak ada Face ID yang di hapus dari SERVER")
except Exception as e:
print(e)
if nama != "" and face_id != "":
print("Menghapus data")
print("Nama "+nama)
print("Face ID "+face_id)
pathx = "face"
nameFile = "face_"
image_paths = [os.path.join(pathx, f) for f in
os.listdir(pathx)]
for xi in image_paths:
#print(xi)
print()
if xi[5:len(nameFile)+len(img_name)+6+len(face_id)] ==
nameFile+img_name+"-"+face_id:
if os.path.exists(xi):
print("menghapus "+xi)
os.remove(xi)
try:
send_del_confirm = requests.post(url_confirmFaceID,
data={"iddev":iddev,"confirm_del":id_face_table}, timeout=2)
print(send_del_confirm.text)
except Exception as e:
print(e)
#########################################
def train(): #train foto from PIL import Image
def get_images_and_labels(path):
image_paths = [os.path.join(path, f) for f in
os.listdir(path)]
# images will contains face images
images = []
# labels will contains the label that is assigned to the
image
labels = []
for image_path in image_paths:
# Read the image and convert to grayscale
image_pil = Image.open(image_path).convert('L')
# Convert the image format into numpy array
image = np.array(image_pil, 'uint8')
# Get the label of the image
nbr = int(os.path.split(image_path)[1].split("-
")[1].split(".")[0])
#nbr=int(''.join(str(ord(c)) for c in nbr))
print (nbr)
# Detect the face in the image
faces = faceCascade.detectMultiScale(image)
# If face is detected, append the face to images and
the label to labels
for (x, y, w, h) in faces:
images.append(image[y: y + h, x: x + w])
labels.append(nbr)
cv2.imshow("Adding faces to traning set...",
image[y: y + h, x: x + w])
cv2.waitKey(10)
# return the images list and labels list
return images, labels
recognizer = cv2.face.LBPHFaceRecognizer_create()
cascadePath = "/home/pi/junialdi/include/face.xml"
faceCascade = cv2.CascadeClassifier(cascadePath);
try:
images, labels = get_images_and_labels("face")
cv2.imshow('train',images[0])
cv2.waitKey(1)
recognizer.train(images, np.array(labels))
recognizer.write('/home/pi/junialdi/include/trainer.yml')
print("Proses Train Face selesai")
cv2.destroyAllWindows()
except Exception as e:
print(e)
cv2.destroyAllWindows()
#########################################
def absensi(): #absensi
try:
data_FaceID = requests.post(url_name_user,
data={"iddev":iddev}).json()
print(json.dumps(data_FaceID, indent=4, sort_keys=True))
id_list = []
nama_list = []
for i in data_FaceID['id']:
print(i)
id_list.append(i)
for i in data_FaceID['nama']:
print(i)
nama_list.append(i)
except Exception as e:
print(e)
return
print(dir (cv2.face))
recognizer = cv2.face.LBPHFaceRecognizer_create()
recognizer.read('/home/pi/junialdi/include/trainer.yml')
cascadePath = "/home/pi/junialdi/include/face.xml"
faceCascade = cv2.CascadeClassifier(cascadePath);
Id = 0
face_id = 0
#cam = cv2.VideoCapture(0)
cam = cv2.VideoCapture(sourceCam)
font = cv2.FONT_HERSHEY_SIMPLEX
haveSend = False
while True:
ret, im = cam.read()
haveSend = False
flagAbsen = False
if ret == True :
try:
mlx = adafruit_mlx90614.MLX90614(i2c)
suhuTubuh =
"{:.2f}".format(mlx.object_temperature)
suhuTubuh = float(suhuTubuh) + suhu_kalibrasi
except Exception as e:
print(e)
suhuTubuh = "0.0"
cv2.putText(im,"Face Recognition",
(10,50),font,1,(255,0,0), 1)
nama="Unknown"
face_id = 0
gray = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)
faces = faceCascade.detectMultiScale(
gray,
scaleFactor = myScaleFactor,
minNeighbors = 5,
minSize = (myMinSize, myMinSize),
maxSize = (myMaxSize, myMaxSize),
flags = cv2.CASCADE_SCALE_IMAGE
)
for(x,y,w,h) in faces:
cv2.rectangle(im,(x,y),(x+w,y+h),(225,0,0),2)
cv2.putText(im,"suhu
"+str(suhuTubuh),(x+20,y+20),font,1,(0,255,0),2)
Id, conf = recognizer.predict(gray[y:y+h,x:x+w])
if(conf<=accuracy): #semakin mndekati nol
semakin akurat
for i in range(len(id_list)):
#print(i)
if Id == int(id_list[i]):
nama = nama_list[i]
print(nama)
face_id = int(id_list[i])
else:
print(nama)
face_id = 0
cv2.putText(im,nama, (x,y+h),font,1,(0,255,0), 2)
cv2.putText(im,"kecocokan "+str(round(conf,1)),
(x,y+h+20),font,1,(0,255,255), 2)
if face_id > 0 and nama != "Unknown":
print("Kirim data ke server...")
print("Nama : "+nama)
print("Face ID : "+str(face_id))
print(time.strftime("%d %B %Y %H:%M",
time.localtime(time.time())))
namaImgAbsensi = "absensi.jpg"
cv2.imwrite(namaImgAbsensi,im)
try:
files = {"foto":open(namaImgAbsensi, "rb")}
send_absen = requests.post(url_absensi,
data={"faceid":face_id, "iddev":iddev, "suhu":str(suhuTubuh)},
files=files, timeout=5).json()
print(json.dumps(send_absen, indent=4,
sort_keys=True))
if send_absen['status'] == "success":
cv2.putText(im,send_absen['waktu'],
(10,300),font,1,(0,255,0), 2)
flagAbsen = True
cv2.putText(im,send_absen['ket'],
(10,400),font,1,(0,0,255), 2)
haveSend = True
except Exception as e:
print(e)
print()
cv2.imshow('face recognition',im)
if cv2.waitKey(10) & 0xFF==ord('q'):
break
if haveSend:
cv2.waitKey(3)
if flagAbsen:
if suhuTubuh >= suhu_min and suhuTubuh <=
suhu_max:
fileMP3 = "/home/pi/junialdi/normal.mp3"
else:
fileMP3 = "/home/pi/junialdi/tidaknormal.mp3"
pygame.mixer.init()
pygame.mixer.music.load(fileMP3)
pygame.mixer.music.set_volume(1.0)
pygame.mixer.music.play()
while pygame.mixer.music.get_busy() == True:
print("play mp3")
pass
cam.release()
cam = cv2.VideoCapture(sourceCam)
else:
print("release cam and start again")
cam.release()
cam = cv2.VideoCapture(sourceCam)
cam.release()
cv2.destroyAllWindows()
##################################
def exitApps():
cv2.destroyAllWindows()
quit()
btnAdd = Button(root, text="Tambah Face ID", width=15, height=2,
bg="lightblue", fg="darkblue",
font=("arial", 13, "italic"),
command=get_ID).place(x=50,y=125)
btnDel = Button(root, text="Hapus Face ID", width=15, height=2,
bg="lightblue", fg="darkblue",
font=("arial", 13, "italic"),
command=del_ID).place(x=250,y=125)
btnTrain = Button(root, text="TRAIN FACE", width=15, height=3,
bg="lightblue", fg="darkblue",
font=("arial", 13, "bold"),
command=train).place(x=50,y=250)
btnFaceAbsen = Button(root, text="ABSEN FACE", width=15, height=3,
bg="lightblue", fg="darkblue",
font=("arial", 13, "bold"),
command=absensi).place(x=250,y=250)
btnExit = Button(root, text="EXIT", width=10, height=1,
bg="lightblue", fg="darkblue",
font=("arial", 12, "bold"),
command=exitApps).place(x=180,y=400)
Copyright = Label(root, text="Copyright Junialdi Saputra @ 2021",
font=("arial", 12, "bold"),
fg="red").place(x=110,y=500)
root.mainloop()
2
LAMPIRAN 1
Daftar Riwayat Hidup