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 — sistem kunci pintu otomatis yang akan terbuka hanya jika wajah yang dikenali sesuai dengan data yang sudah tersimpan.
Tutorial ini ditujukan untuk pemula. Artinya, meskipun kamu belum pernah menggunakan Raspberry Pi sebelumnya, kamu tetap bisa mengikuti langkah demi langkah yang disediakan di sini.
Langkah 1 – Persiapan Alat dan Bahan
Sebelum memulai, pastikan semua kebutuhan perangkat keras dan perangkat lunak sudah siap. Tanpa alat yang lengkap, sistem tidak bisa berjalan sempurna.
Alat yang dibutuhkan
Raspberry Pi 4 (disarankan) + microSD 16/32 GB
Adaptor power Raspberry Pi
Kamera (Pi Camera Module atau USB Webcam)
Modul relay (untuk mengendalikan kunci pintu elektrik)
Kunci pintu elektrik (solenoid lock atau magnetic lock)
Kabel jumper
Breadboard (opsional untuk prototyping)
Monitor + keyboard + mouse (untuk setup awal)
Software
Raspberry Pi OS (diinstal via Raspberry Pi Imager)
Python 3 (sudah bawaan Raspberry Pi)
OpenCV (untuk pengolahan gambar)
Face Recognition library (berbasis dlib)
Langkah 2 – Instalasi Raspberry Pi
Raspberry Pi menggunakan sistem operasi berbasis Linux. Kita perlu menyiapkan OS ke dalam microSD agar Pi bisa digunakan.
Download Raspberry Pi Imager dari situs resmi.
Masukkan microSD ke laptop/PC.
Jalankan Raspberry Pi Imager → pilih OS: Raspberry Pi OS (Lite atau Desktop).
Pilih microSD target → klik Write.
Setelah selesai, masukkan microSD ke Raspberry Pi.
Sambungkan monitor, keyboard, mouse → nyalakan Pi.
Langkah 3 – Update dan Instalasi Library
Agar Raspberry Pi siap digunakan untuk pengolahan wajah, kita perlu mengupdate sistem dan memasang beberapa library Python.
sudo apt update && sudo apt upgrade -y
sudo apt install python3-pip python3-opencv -y
pip3 install face_recognition
Langkah 4 – Menangkap dan Menyimpan Dataset Wajah
Sistem face recognition membutuhkan data wajah yang sudah dikenali sebelumnya. Jadi kita buat program Python untuk mengambil gambar wajah lalu menyimpannya sebagai dataset.
import cv2
import os
cam = cv2.VideoCapture(0)
cv2.namedWindow("Capture Face")
user_name = input("Masukkan nama pengguna: ")
path = "dataset/" + user_name
if not os.path.exists(path):
os.makedirs(path)
count = 0
while True:
ret, frame = cam.read()
if not ret:
break
cv2.imshow("Capture Face", frame)
k = cv2.waitKey(1)
if k%256 == 27: # ESC untuk keluar
print("Escape ditekan, keluar...")
break
elif k%256 == 32: # SPACE untuk capture
img_name = f"{path}/face_{count}.jpg"
cv2.imwrite(img_name, frame)
print(f"{img_name} tersimpan!")
count += 1
cam.release()
cv2.destroyAllWindows()
Langkah 5 – Pengenalan Wajah
Setelah dataset wajah tersimpan, sekarang kita buat program pengenalan wajah yang membandingkan wajah di depan kamera dengan dataset.
import face_recognition
import cv2
import os
import numpy as np
known_encodings = []
known_names = []
dataset_dir = "dataset"
# Load semua wajah di dataset
for user_name in os.listdir(dataset_dir):
user_folder = os.path.join(dataset_dir, user_name)
for file in os.listdir(user_folder):
img_path = os.path.join(user_folder, file)
image = face_recognition.load_image_file(img_path)
encoding = face_recognition.face_encodings(image)[0]
known_encodings.append(encoding)
known_names.append(user_name)
video = cv2.VideoCapture(0)
while True:
ret, frame = video.read()
rgb_frame = frame[:, :, ::-1]
face_locations = face_recognition.face_locations(rgb_frame)
face_encodings = face_recognition.face_encodings(rgb_frame, face_locations)
for (top, right, bottom, left), face_encoding in zip(face_locations, face_encodings):
matches = face_recognition.compare_faces(known_encodings, face_encoding)
name = "Unknown"
face_distances = face_recognition.face_distance(known_encodings, face_encoding)
best_match_index = np.argmin(face_distances)
if matches[best_match_index]:
name = known_names[best_match_index]
cv2.rectangle(frame, (left, top), (right, bottom), (0, 255, 0), 2)
cv2.putText(frame, name, (left, top-10), cv2.FONT_HERSHEY_SIMPLEX, 1, (0,255,0), 2)
cv2.imshow("Face Recognition", frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
video.release()
cv2.destroyAllWindows()
Langkah 6 – Integrasi dengan Door Lock
Sekarang kita hubungkan hasil pengenalan wajah dengan modul relay untuk membuka kunci pintu.
import RPi.GPIO as GPIO
import time
RELAY_PIN = 17
GPIO.setmode(GPIO.BCM)
GPIO.setup(RELAY_PIN, GPIO.OUT)
def open_door():
GPIO.output(RELAY_PIN, GPIO.HIGH) # aktifkan relay
print("Pintu terbuka!")
time.sleep(5)
GPIO.output(RELAY_PIN, GPIO.LOW) # matikan relay
print("Pintu terkunci kembali!")
Jika wajah dikenali, cukup panggil fungsi:
open_door()
Penutup
Dengan mengikuti tutorial ini, kamu telah berhasil membuat sistem Face Recognition Door Lock menggunakan Raspberry Pi. Mulai dari instalasi OS, instalasi library, pembuatan dataset wajah, hingga integrasi dengan modul relay.
Proyek ini bisa dikembangkan lebih jauh, misalnya dengan:
Menambahkan sistem logging (catatan siapa yang membuka pintu)
Mengirim notifikasi ke HP
Mengontrol pintu lewat aplikasi web atau mobile
