{"id":2581,"date":"2025-09-14T15:34:08","date_gmt":"2025-09-14T15:34:08","guid":{"rendered":"https:\/\/kuliahrobot.com\/krc\/?p=2581"},"modified":"2025-09-14T15:42:08","modified_gmt":"2025-09-14T15:42:08","slug":"face-recognition-doorlock-with-raspberry-pi","status":"publish","type":"post","link":"https:\/\/kuliahrobot.com\/krc\/face-recognition-doorlock-with-raspberry-pi\/","title":{"rendered":"Face recognition doorlock with raspberry pi"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"2581\" class=\"elementor elementor-2581\" data-elementor-post-type=\"post\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e1592c1 e-flex e-con-boxed e-con e-parent\" data-id=\"e1592c1\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e21ff1a elementor-widget elementor-widget-text-editor\" data-id=\"e21ff1a\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p data-start=\"251\" data-end=\"608\">Raspberry Pi adalah mini komputer seukuran kartu kredit yang sangat populer untuk proyek IoT, otomasi, dan pembelajaran pemrograman.<br data-start=\"383\" data-end=\"386\" \/>Salah satu proyek menarik yang bisa dibuat dengan Raspberry Pi adalah <strong data-start=\"456\" data-end=\"486\">Face Recognition Door Lock<\/strong> \u2014 sistem kunci pintu otomatis yang akan terbuka hanya jika wajah yang dikenali sesuai dengan data yang sudah tersimpan.<\/p><p data-start=\"610\" data-end=\"797\">Tutorial ini ditujukan untuk <strong data-start=\"639\" data-end=\"649\">pemula<\/strong>. Artinya, meskipun kamu belum pernah menggunakan Raspberry Pi sebelumnya, kamu tetap bisa mengikuti langkah demi langkah yang disediakan di sini.<\/p><hr data-start=\"799\" data-end=\"802\" \/><h2 data-start=\"804\" data-end=\"847\"><strong data-start=\"807\" data-end=\"847\">Langkah 1 \u2013 Persiapan Alat dan Bahan<\/strong><\/h2><p data-start=\"848\" data-end=\"1001\">Sebelum memulai, pastikan semua kebutuhan perangkat keras dan perangkat lunak sudah siap. Tanpa alat yang lengkap, sistem tidak bisa berjalan sempurna.<\/p><h3 data-start=\"1003\" data-end=\"1031\"><strong data-start=\"1007\" data-end=\"1031\">Alat yang dibutuhkan<\/strong><\/h3><ul data-start=\"1032\" data-end=\"1389\"><li data-start=\"1032\" data-end=\"1082\"><p data-start=\"1034\" data-end=\"1082\">Raspberry Pi 4 (disarankan) + microSD 16\/32 GB<\/p><\/li><li data-start=\"1083\" data-end=\"1113\"><p data-start=\"1085\" data-end=\"1113\">Adaptor power Raspberry Pi<\/p><\/li><li data-start=\"1114\" data-end=\"1159\"><p data-start=\"1116\" data-end=\"1159\">Kamera (Pi Camera Module atau USB Webcam)<\/p><\/li><li data-start=\"1160\" data-end=\"1218\"><p data-start=\"1162\" data-end=\"1218\">Modul relay (untuk mengendalikan kunci pintu elektrik)<\/p><\/li><li data-start=\"1219\" data-end=\"1278\"><p data-start=\"1221\" data-end=\"1278\">Kunci pintu elektrik (solenoid lock atau magnetic lock)<\/p><\/li><li data-start=\"1279\" data-end=\"1295\"><p data-start=\"1281\" data-end=\"1295\">Kabel jumper<\/p><\/li><li data-start=\"1296\" data-end=\"1339\"><p data-start=\"1298\" data-end=\"1339\">Breadboard (opsional untuk prototyping)<\/p><\/li><li data-start=\"1340\" data-end=\"1389\"><p data-start=\"1342\" data-end=\"1389\">Monitor + keyboard + mouse (untuk setup awal)<\/p><\/li><\/ul><h3 data-start=\"1391\" data-end=\"1407\"><strong data-start=\"1395\" data-end=\"1407\">Software<\/strong><\/h3><ul data-start=\"1408\" data-end=\"1585\"><li data-start=\"1408\" data-end=\"1462\"><p data-start=\"1410\" data-end=\"1462\">Raspberry Pi OS (diinstal via Raspberry Pi Imager)<\/p><\/li><li data-start=\"1463\" data-end=\"1503\"><p data-start=\"1465\" data-end=\"1503\">Python 3 (sudah bawaan Raspberry Pi)<\/p><\/li><li data-start=\"1504\" data-end=\"1540\"><p data-start=\"1506\" data-end=\"1540\">OpenCV (untuk pengolahan gambar)<\/p><\/li><li data-start=\"1541\" data-end=\"1585\"><p data-start=\"1543\" data-end=\"1585\">Face Recognition library (berbasis dlib)<\/p><\/li><\/ul><hr data-start=\"1587\" data-end=\"1590\" \/><h2 data-start=\"1592\" data-end=\"1633\"><strong data-start=\"1595\" data-end=\"1633\">Langkah 2 \u2013 Instalasi Raspberry Pi<\/strong><\/h2><p data-start=\"1634\" data-end=\"1757\">Raspberry Pi menggunakan sistem operasi berbasis Linux. Kita perlu menyiapkan OS ke dalam microSD agar Pi bisa digunakan.<\/p><ol data-start=\"1759\" data-end=\"2089\"><li data-start=\"1759\" data-end=\"1814\"><p data-start=\"1762\" data-end=\"1814\">Download <strong data-start=\"1771\" data-end=\"1794\">Raspberry Pi Imager<\/strong> dari situs resmi.<\/p><\/li><li data-start=\"1815\" data-end=\"1850\"><p data-start=\"1818\" data-end=\"1850\">Masukkan microSD ke laptop\/PC.<\/p><\/li><li data-start=\"1851\" data-end=\"1935\"><p data-start=\"1854\" data-end=\"1935\">Jalankan Raspberry Pi Imager \u2192 pilih OS: <em data-start=\"1895\" data-end=\"1932\">Raspberry Pi OS (Lite atau Desktop)<\/em>.<\/p><\/li><li data-start=\"1936\" data-end=\"1977\"><p data-start=\"1939\" data-end=\"1977\">Pilih microSD target \u2192 klik <em data-start=\"1967\" data-end=\"1974\">Write<\/em>.<\/p><\/li><li data-start=\"1978\" data-end=\"2033\"><p data-start=\"1981\" data-end=\"2033\">Setelah selesai, masukkan microSD ke Raspberry Pi.<\/p><\/li><li data-start=\"2034\" data-end=\"2089\"><p data-start=\"2037\" data-end=\"2089\">Sambungkan monitor, keyboard, mouse \u2192 nyalakan Pi.<\/p><\/li><\/ol><hr data-start=\"2091\" data-end=\"2094\" \/><h2 data-start=\"2096\" data-end=\"2143\"><strong data-start=\"2099\" data-end=\"2143\">Langkah 3 \u2013 Update dan Instalasi Library<\/strong><\/h2><p data-start=\"2144\" data-end=\"2269\">Agar Raspberry Pi siap digunakan untuk pengolahan wajah, kita perlu mengupdate sistem dan memasang beberapa library Python.<\/p><div class=\"contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary\"><div class=\"sticky top-9\"><div class=\"absolute end-0 bottom-0 flex h-9 items-center pe-2\"><div class=\"bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs\">\u00a0<\/div><\/div><\/div><div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"whitespace-pre! language-bash\">sudo apt update &amp;&amp; sudo apt upgrade -y\nsudo apt install python3-pip python3-opencv -y\npip3 install face_recognition\n<\/code><\/div><\/div><hr data-start=\"2400\" data-end=\"2403\" \/><h2 data-start=\"2405\" data-end=\"2461\"><strong data-start=\"2408\" data-end=\"2461\">Langkah 4 \u2013 Menangkap dan Menyimpan Dataset Wajah<\/strong><\/h2><p data-start=\"2462\" data-end=\"2636\">Sistem face recognition membutuhkan data wajah yang sudah dikenali sebelumnya. Jadi kita buat program Python untuk mengambil gambar wajah lalu menyimpannya sebagai dataset.<\/p><div class=\"contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary\"><div class=\"sticky top-9\"><div class=\"absolute end-0 bottom-0 flex h-9 items-center pe-2\"><div class=\"bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs\">\u00a0<\/div><\/div><\/div><div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"whitespace-pre! language-python\"><span class=\"hljs-keyword\">import<\/span> cv2\n<span class=\"hljs-keyword\">import<\/span> os\n\ncam = cv2.VideoCapture(<span class=\"hljs-number\">0<\/span>)\ncv2.namedWindow(<span class=\"hljs-string\">\"Capture Face\"<\/span>)\n\nuser_name = <span class=\"hljs-built_in\">input<\/span>(<span class=\"hljs-string\">\"Masukkan nama pengguna: \"<\/span>)\npath = <span class=\"hljs-string\">\"dataset\/\"<\/span> + user_name\n\n<span class=\"hljs-keyword\">if<\/span> <span class=\"hljs-keyword\">not<\/span> os.path.exists(path):\n    os.makedirs(path)\n\ncount = <span class=\"hljs-number\">0<\/span>\n<span class=\"hljs-keyword\">while<\/span> <span class=\"hljs-literal\">True<\/span>:\n    ret, frame = cam.read()\n    <span class=\"hljs-keyword\">if<\/span> <span class=\"hljs-keyword\">not<\/span> ret:\n        <span class=\"hljs-keyword\">break<\/span>\n    cv2.imshow(<span class=\"hljs-string\">\"Capture Face\"<\/span>, frame)\n\n    k = cv2.waitKey(<span class=\"hljs-number\">1<\/span>)\n    <span class=\"hljs-keyword\">if<\/span> k%<span class=\"hljs-number\">256<\/span> == <span class=\"hljs-number\">27<\/span>:  <span class=\"hljs-comment\"># ESC untuk keluar<\/span>\n        <span class=\"hljs-built_in\">print<\/span>(<span class=\"hljs-string\">\"Escape ditekan, keluar...\"<\/span>)\n        <span class=\"hljs-keyword\">break<\/span>\n    <span class=\"hljs-keyword\">elif<\/span> k%<span class=\"hljs-number\">256<\/span> == <span class=\"hljs-number\">32<\/span>:  <span class=\"hljs-comment\"># SPACE untuk capture<\/span>\n        img_name = <span class=\"hljs-string\">f\"<span class=\"hljs-subst\">{path}<\/span><\/span>\/face_<span class=\"hljs-subst\">{count}<\/span>.jpg\"\n        cv2.imwrite(img_name, frame)\n        <span class=\"hljs-built_in\">print<\/span>(<span class=\"hljs-string\">f\"<span class=\"hljs-subst\">{img_name}<\/span><\/span> tersimpan!\")\n        count += <span class=\"hljs-number\">1<\/span>\n\ncam.release()\ncv2.destroyAllWindows()\n<\/code><\/div><\/div><hr data-start=\"3328\" data-end=\"3331\" \/><h2 data-start=\"3333\" data-end=\"3368\"><strong data-start=\"3336\" data-end=\"3368\">Langkah 5 \u2013 Pengenalan Wajah<\/strong><\/h2><p data-start=\"3369\" data-end=\"3504\">Setelah dataset wajah tersimpan, sekarang kita buat program pengenalan wajah yang membandingkan wajah di depan kamera dengan dataset.<\/p><div class=\"contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary\"><div class=\"sticky top-9\"><div class=\"absolute end-0 bottom-0 flex h-9 items-center pe-2\"><div class=\"bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs\">\u00a0<\/div><\/div><\/div><div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"whitespace-pre! language-python\"><span class=\"hljs-keyword\">import<\/span> face_recognition\n<span class=\"hljs-keyword\">import<\/span> cv2\n<span class=\"hljs-keyword\">import<\/span> os\n<span class=\"hljs-keyword\">import<\/span> numpy <span class=\"hljs-keyword\">as<\/span> np\n\nknown_encodings = []\nknown_names = []\n\ndataset_dir = <span class=\"hljs-string\">\"dataset\"<\/span>\n\n<span class=\"hljs-comment\"># Load semua wajah di dataset<\/span>\n<span class=\"hljs-keyword\">for<\/span> user_name <span class=\"hljs-keyword\">in<\/span> os.listdir(dataset_dir):\n    user_folder = os.path.join(dataset_dir, user_name)\n    <span class=\"hljs-keyword\">for<\/span> file <span class=\"hljs-keyword\">in<\/span> os.listdir(user_folder):\n        img_path = os.path.join(user_folder, file)\n        image = face_recognition.load_image_file(img_path)\n        encoding = face_recognition.face_encodings(image)[<span class=\"hljs-number\">0<\/span>]\n        known_encodings.append(encoding)\n        known_names.append(user_name)\n\nvideo = cv2.VideoCapture(<span class=\"hljs-number\">0<\/span>)\n\n<span class=\"hljs-keyword\">while<\/span> <span class=\"hljs-literal\">True<\/span>:\n    ret, frame = video.read()\n    rgb_frame = frame[:, :, ::-<span class=\"hljs-number\">1<\/span>]\n    face_locations = face_recognition.face_locations(rgb_frame)\n    face_encodings = face_recognition.face_encodings(rgb_frame, face_locations)\n\n    <span class=\"hljs-keyword\">for<\/span> (top, right, bottom, left), face_encoding <span class=\"hljs-keyword\">in<\/span> <span class=\"hljs-built_in\">zip<\/span>(face_locations, face_encodings):\n        matches = face_recognition.compare_faces(known_encodings, face_encoding)\n        name = <span class=\"hljs-string\">\"Unknown\"<\/span>\n\n        face_distances = face_recognition.face_distance(known_encodings, face_encoding)\n        best_match_index = np.argmin(face_distances)\n        <span class=\"hljs-keyword\">if<\/span> matches[best_match_index]:\n            name = known_names[best_match_index]\n\n        cv2.rectangle(frame, (left, top), (right, bottom), (<span class=\"hljs-number\">0<\/span>, <span class=\"hljs-number\">255<\/span>, <span class=\"hljs-number\">0<\/span>), <span class=\"hljs-number\">2<\/span>)\n        cv2.putText(frame, name, (left, top-<span class=\"hljs-number\">10<\/span>), cv2.FONT_HERSHEY_SIMPLEX, <span class=\"hljs-number\">1<\/span>, (<span class=\"hljs-number\">0<\/span>,<span class=\"hljs-number\">255<\/span>,<span class=\"hljs-number\">0<\/span>), <span class=\"hljs-number\">2<\/span>)\n\n    cv2.imshow(<span class=\"hljs-string\">\"Face Recognition\"<\/span>, frame)\n    <span class=\"hljs-keyword\">if<\/span> cv2.waitKey(<span class=\"hljs-number\">1<\/span>) &amp; <span class=\"hljs-number\">0xFF<\/span> == <span class=\"hljs-built_in\">ord<\/span>(<span class=\"hljs-string\">'q'<\/span>):\n        <span class=\"hljs-keyword\">break<\/span>\n\nvideo.release()\ncv2.destroyAllWindows()\n<\/code><\/div><\/div><hr data-start=\"5052\" data-end=\"5055\" \/><h2 data-start=\"5057\" data-end=\"5102\"><strong data-start=\"5060\" data-end=\"5102\">Langkah 6 \u2013 Integrasi dengan Door Lock<\/strong><\/h2><p data-start=\"5103\" data-end=\"5197\">Sekarang kita hubungkan hasil pengenalan wajah dengan modul relay untuk membuka kunci pintu.<\/p><div class=\"contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary\"><div class=\"sticky top-9\"><div class=\"absolute end-0 bottom-0 flex h-9 items-center pe-2\"><div class=\"bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs\">\u00a0<\/div><\/div><\/div><div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"whitespace-pre! language-python\"><span class=\"hljs-keyword\">import<\/span> RPi.GPIO <span class=\"hljs-keyword\">as<\/span> GPIO\n<span class=\"hljs-keyword\">import<\/span> time\n\nRELAY_PIN = <span class=\"hljs-number\">17<\/span>\nGPIO.setmode(GPIO.BCM)\nGPIO.setup(RELAY_PIN, GPIO.OUT)\n\n<span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title function_\">open_door<\/span>():\n    GPIO.output(RELAY_PIN, GPIO.HIGH)  <span class=\"hljs-comment\"># aktifkan relay<\/span>\n    <span class=\"hljs-built_in\">print<\/span>(<span class=\"hljs-string\">\"Pintu terbuka!\"<\/span>)\n    time.sleep(<span class=\"hljs-number\">5<\/span>)\n    GPIO.output(RELAY_PIN, GPIO.LOW)   <span class=\"hljs-comment\"># matikan relay<\/span>\n    <span class=\"hljs-built_in\">print<\/span>(<span class=\"hljs-string\">\"Pintu terkunci kembali!\"<\/span>)\n<\/code><\/div><\/div><p data-start=\"5533\" data-end=\"5575\">Jika wajah dikenali, cukup panggil fungsi:<\/p><div class=\"contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary\"><div class=\"sticky top-9\"><div class=\"absolute end-0 bottom-0 flex h-9 items-center pe-2\"><div class=\"bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs\">\u00a0<\/div><\/div><\/div><div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"whitespace-pre! language-python\">open_door()\n<\/code><\/div><\/div><hr data-start=\"5603\" data-end=\"5606\" \/><h2 data-start=\"5608\" data-end=\"5622\"><strong data-start=\"5611\" data-end=\"5622\">Penutup<\/strong><\/h2><p data-start=\"5623\" data-end=\"5853\">Dengan mengikuti tutorial ini, kamu telah berhasil membuat sistem <strong data-start=\"5689\" data-end=\"5719\">Face Recognition Door Lock<\/strong> menggunakan Raspberry Pi. Mulai dari instalasi OS, instalasi library, pembuatan dataset wajah, hingga integrasi dengan modul relay.<\/p><p data-start=\"5855\" data-end=\"5914\">Proyek ini bisa dikembangkan lebih jauh, misalnya dengan:<\/p><ul data-start=\"5915\" data-end=\"6062\"><li data-start=\"5915\" data-end=\"5980\"><p data-start=\"5917\" data-end=\"5980\">Menambahkan sistem logging (catatan siapa yang membuka pintu)<\/p><\/li><li data-start=\"5981\" data-end=\"6010\"><p data-start=\"5983\" data-end=\"6010\">Mengirim notifikasi ke HP<\/p><\/li><li data-start=\"6011\" data-end=\"6062\"><p data-start=\"6013\" data-end=\"6062\">Mengontrol pintu lewat aplikasi web atau mobile<\/p><\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Raspberry Pi adalah mini komputer seukuran kartu kredit yang sangat populer untuk proyek IoT, otomasi, dan pembelajaran pemrograman.Salah satu proyek menarik yang bisa dibuat dengan Raspberry Pi adalah Face Recognition Door Lock \u2014 sistem kunci pintu otomatis yang akan terbuka hanya jika wajah yang dikenali sesuai dengan data yang sudah tersimpan. Tutorial ini ditujukan untuk [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-2581","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/kuliahrobot.com\/krc\/wp-json\/wp\/v2\/posts\/2581","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kuliahrobot.com\/krc\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kuliahrobot.com\/krc\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kuliahrobot.com\/krc\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/kuliahrobot.com\/krc\/wp-json\/wp\/v2\/comments?post=2581"}],"version-history":[{"count":4,"href":"https:\/\/kuliahrobot.com\/krc\/wp-json\/wp\/v2\/posts\/2581\/revisions"}],"predecessor-version":[{"id":2594,"href":"https:\/\/kuliahrobot.com\/krc\/wp-json\/wp\/v2\/posts\/2581\/revisions\/2594"}],"wp:attachment":[{"href":"https:\/\/kuliahrobot.com\/krc\/wp-json\/wp\/v2\/media?parent=2581"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kuliahrobot.com\/krc\/wp-json\/wp\/v2\/categories?post=2581"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kuliahrobot.com\/krc\/wp-json\/wp\/v2\/tags?post=2581"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}