Zamek szyfrowy z rozpoznawaniem twarzy (offline)

🎯 Co zbudujesz?

W tym projekcie zbudujesz inteligentny zamek drzwiowy, który otwiera się tylko po rozpoznaniu twarzy właściciela — bez potrzeby internetu. Wszystko działa lokalnie, dzięki Raspberry Pi i sztucznej inteligencji.


🧰 Komponenty

  • Raspberry Pi (rekomendowany: 3B+, 4 lub Zero 2 W)
  • Kamera kompatybilna z Raspberry Pi (np. Kamera v2 lub USB)
  • Moduł przekaźnika 5V (do sterowania elektrozaczepem)
  • Elektrozaczep 12V (lub serwomechanizm do testów)
  • Zasilacz 12V i/lub powerbank
  • Obudowa (np. plastikowa skrzynka lub druk 3D)
  • Przewody, złącza, śrubki

📷 Schemat działania

  1. Kamera rejestruje obraz.
  2. Algorytm rozpoznaje twarz na podstawie wcześniej zapisanych wzorców.
  3. Jeśli twarz pasuje – Raspberry Pi aktywuje przekaźnik, odblokowując zamek.

💻 Oprogramowanie i biblioteki

Zainstaluj na Raspberry Pi:

sudo apt update
sudo apt install python3-opencv python3-pip
pip3 install face-recognition imutils

Opcjonalnie (do uruchamiania przy starcie):

sudo apt install screen

🧠 Kod – rozpoznawanie twarzy

Plik: face_lock.py

import face_recognition
import cv2
import numpy as np
import RPi.GPIO as GPIO
import time

# Ustawienia GPIO
RELAY_PIN = 17
GPIO.setmode(GPIO.BCM)
GPIO.setup(RELAY_PIN, GPIO.OUT)
GPIO.output(RELAY_PIN, GPIO.HIGH) # Zamek zamknięty

# Załaduj znane twarze
known_image = face_recognition.load_image_file("known/owner.jpg")
known_encoding = face_recognition.face_encodings(known_image)[0]

video_capture = cv2.VideoCapture(0)

print("Uruchomiono system rozpoznawania twarzy...")

while True:
ret, frame = video_capture.read()
rgb_frame = frame[:, :, ::-1]

face_locations = face_recognition.face_locations(rgb_frame)
face_encodings = face_recognition.face_encodings(rgb_frame, face_locations)

for face_encoding in face_encodings:
matches = face_recognition.compare_faces([known_encoding], face_encoding)
if True in matches:
print("Twarz rozpoznana – otwieram zamek!")
GPIO.output(RELAY_PIN, GPIO.LOW) # Otwórz zamek
time.sleep(5)
GPIO.output(RELAY_PIN, GPIO.HIGH) # Zamknij zamek
break

time.sleep(0.2)

🛠️ Montaż krok po kroku

  1. Zamontuj Raspberry Pi i kamerę w obudowie przy drzwiach.
  2. Podłącz kamerę i przekaźnik (do GPIO17).
  3. Podłącz elektrozaczep przez przekaźnik i zasilacz 12V.
  4. Stwórz folder known/ i umieść tam zdjęcie właściciela jako owner.jpg.
  5. Wgraj kod face_lock.py i uruchom: bashKopiujEdytujpython3 face_lock.py
  6. System rozpoznaje twarz i odblokowuje drzwi na 5 sekund po pozytywnej weryfikacji.

🔧 Możliwe rozszerzenia

  • Obsługa wielu użytkowników (więcej zdjęć i identyfikacja po imieniu)
  • Interfejs webowy lub przycisk do manualnego otwierania
  • Wersja z czujnikiem ruchu – oszczędność energii
  • Integracja z domofonem lub systemem smart home (np. Home Assistant)
  • Zastosowanie maskowania tła i ochrony antyspoofingowej (np. detekcja 3D)

🧠 Wersja z AI

Jeśli chcesz ulepszyć rozpoznawanie:

  • Trenuj model lokalnie z użyciem np. MediaPipe, OpenCV lub ONNX
  • Możesz użyć TinyML + Edge Impulse + kamery USB do rozpoznania twarzy offline nawet na ESP32-S3 (bardziej zaawansowana wersja)

✅ Podsumowanie

To projekt, który daje nie tylko satysfakcję z działania – ale i realne poczucie bezpieczeństwa. Idealny do nauki AI w praktyce oraz wykorzystania Raspberry Pi. Zamek na twarz? Teraz to możliwe — i całkowicie offline.

Zostaw komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Przewijanie do góry