Skip to content
Springe zum Hauptinhalt
Toni Schlack Fachinformatiker für Systemintegration (IHK) Villingen-Schwenningen, Tuttlingen, Seitingen-Oberflacht Oberkassel Königsfeld Möhringen
three different colored eggs sitting next to each other

Smartes Osterei

Smartes Osterei: Der „Eierscanner 3000“ mit Gesichtserkennung & Belohnungssystem

? Projektidee in einem Satz:

Ein Raspberry Pi erkennt per Kamera, wer vor dem Gerät steht (z. B. Kind oder Familienmitglied), begrüßt die Person per Lautsprecher, und gibt ein Oster-Ei frei, wenn die Person erkannt wurde – natürlich nur einmal pro Tag ?


? Was brauchst du?

  • Raspberry Pi 4 (mit WLAN)
  • Kamera-Modul (Pi Cam oder USB-Cam)
  • Lautsprecher (z. B. USB oder Bluetooth)
  • Servo-Motor (zum Öffnen eines Ei-Behälters)
  • Kleiner 3D-gedruckter oder gebastelter „Eierspender“
  • Python mit OpenCV (für Gesichtserkennung)
  • Optional: Display oder LED-Anzeige

? Wie funktioniert’s?

  1. Gesichtserkennung via Kamera:
    Der Pi scannt das Gesicht. Wenn ein bekanntes Gesicht erkannt wird → nächster Schritt.
  2. Sprachausgabe:
    Z. B. „Hallo Felix! Frohe Ostern! Hol dir dein Ei!“
  3. Servo steuert Eierspender:
    Ein kleiner Servo öffnet eine Klappe oder schiebt ein Ei in eine Rinne.
  4. Tageszähler pro Person:
    Das Skript merkt sich, ob die Person an dem Tag schon ein Ei bekommen hat (z. B. via Timestamp in JSON-Datei oder SQLite).

? Optionaler Nerd-Boost:

  • Telegram- oder Discord-Bot → Pi schickt dir jedes Mal ein Bild, wenn ein Ei geholt wird.
  • NFC oder QR-Code als „Alternative Authentifizierung“
  • Admin-Webinterface für Eltern, um neue Gesichter hinzuzufügen oder die Tageslimits zurückzusetzen.

? Fazit:

Ein lustiges, praktisches und „nerdy“ Osterprojekt, das Kinder (oder Erwachsene ?) begeistert – und gleichzeitig Face Recognition, Hardwaresteuerung und etwas Bastelarbeit vereint.

Geil! Dann kriegst du jetzt das Grundgerüst für deinen „Eierspender 3000“ – ein Raspberry-Pi-Projekt mit Gesichtserkennung, Tageslimit und Servosteuerung.


? Voraussetzungen

Du brauchst:

  • Raspberry Pi mit Raspbian OS (aktualisiert)
  • PiCam oder USB-Cam
  • Servo (z. B. SG90)
  • Python 3
  • Bibliotheken: opencv-pythonnumpyRPi.GPIOplaysound oder pygame für Audio

? Installation vorbereiten (Terminal)

sudo apt update && sudo apt upgrade
sudo apt install python3-pip python3-opencv python3-pygame
pip3 install numpy face-recognition

Für GPIO und Servo:

sudo apt install python3-rpi.gpio

? Projektstruktur

 eierspender/
├── faces/ # Gespeicherte Gesichter als Bilddateien
│ ├── toni.jpg
│ └── max.jpg
├── known_faces.py # Gesichtsdaten laden
├── eierspender.py # Hauptskript
├── log.json # Wer hat heute schon ein Ei bekommen?
├── sound.mp3 # Sprachausgabe (z. B. „Frohe Ostern!“)

? known_faces.py – Gesichter vorbereiten

 import face_recognition
import os

def load_known_faces(path="faces"):
known_encodings = []
known_names = []

for filename in os.listdir(path):
if filename.endswith(".jpg"):
image_path = os.path.join(path, filename)
image = face_recognition.load_image_file(image_path)
encoding = face_recognition.face_encodings(image)
if encoding:
known_encodings.append(encoding[0])
known_names.append(os.path.splitext(filename)[0])

return known_encodings, known_names

? eierspender.py – Hauptskript

import cv2
import face_recognition
import numpy as np
import datetime
import json
import RPi.GPIO as GPIO
import time
import pygame
from known_faces import load_known_faces

# Setup
SERVO_PIN = 18
ANGLE_OPEN = 7.5 # Justieren je nach Servo
ANGLE_CLOSE = 2.5
LOG_FILE = "log.json"
AUDIO_FILE = "sound.mp3"

# Init GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(SERVO_PIN, GPIO.OUT)
servo = GPIO.PWM(SERVO_PIN, 50) # 50 Hz
servo.start(ANGLE_CLOSE)

# Init Sound
pygame.mixer.init()

# Laden der bekannten Gesichter
known_encodings, known_names = load_known_faces()

# Logik für Tageslimit
def load_log():
try:
with open(LOG_FILE, "r") as f:
return json.load(f)
except:
return {}

def save_log(log):
with open(LOG_FILE, "w") as f:
json.dump(log, f)

def has_received_today(name, log):
today = datetime.date.today().isoformat()
return log.get(name) == today

def update_log(name, log):
today = datetime.date.today().isoformat()
log[name] = today
save_log(log)

def play_audio():
pygame.mixer.music.load(AUDIO_FILE)
pygame.mixer.music.play()
while pygame.mixer.music.get_busy():
time.sleep(0.1)

def open_ei_klappe():
print("☀️ Klappe öffnet…")
servo.ChangeDutyCycle(ANGLE_OPEN)
time.sleep(1.5)
servo.ChangeDutyCycle(ANGLE_CLOSE)

# Kamera starten
cap = cv2.VideoCapture(0)
log = load_log()

print("? Warte auf bekannte Gesichter… Drücke STRG+C zum Beenden.")

try:
while True:
ret, frame = cap.read()
if not ret:
continue

rgb_frame = frame[:, :, ::-1] # BGR -> RGB
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_encodings, face_encoding)
face_distances = face_recognition.face_distance(known_encodings, face_encoding)
best_match = np.argmin(face_distances)

if matches[best_match]:
name = known_names[best_match]
print(f"? {name} erkannt!")

if not has_received_today(name, log):
update_log(name, log)
play_audio()
open_ei_klappe()
else:
print(f"⚠️ {name} hat heute schon ein Ei bekommen.")

time.sleep(2)

except KeyboardInterrupt:
print("? Beende Eierspender.")
cap.release()
GPIO.cleanup()
pygame.quit()

? Was du noch tun musst:

  • Lege ein paar .jpg-Dateien mit den Gesichtern in faces/ an (z. B. toni.jpg)
  • Besorge eine nette MP3-Datei, z. B. „Frohe Ostern!“
  • Justiere den Servo-Winkel ggf. nach, je nach Hardware

Inhalt:

  • eierspender.py: Hauptskript für Gesichtserkennung und Eierausgabe
  • known_faces.py: Lädt bekannte Gesichter aus dem faces/-Ordner
  • log.json: Log-Datei zur Tagesüberwachung
  • sound.mp3: Platzhalter für die Abspiel-Audio-Datei
  • faces/: Hier kommen deine JPG-Bilder rein (eine pro Person, Dateiname = Name)

Stell sicher, dass du:

  • sound.mp3 durch eine echte MP3-Datei ersetzt
  • Bilder deiner bekannten Gesichter in den faces/-Ordner legst
  • Das Ganze auf einem Pi mit Kamera und Servo (an GPIO 18) laufen lässt
three different colored eggs sitting next to each other
Photo by Darren Coleshill on Unsplash
Werbung
WP Twitter Auto Publish Powered By : XYZScripts.com