Bemerkung

Hallo und willkommen in der SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasten-Gemeinschaft auf Facebook! Tauchen Sie tiefer ein in die Welt von Raspberry Pi, Arduino und ESP32 mit anderen Enthusiasten.

Warum beitreten?

  • Expertenunterstützung: Lösen Sie Nachverkaufsprobleme und technische Herausforderungen mit Hilfe unserer Gemeinschaft und unseres Teams.

  • Lernen & Teilen: Tauschen Sie Tipps und Anleitungen aus, um Ihre Fähigkeiten zu verbessern.

  • Exklusive Vorschauen: Erhalten Sie frühzeitigen Zugang zu neuen Produktankündigungen und exklusiven Einblicken.

  • Spezialrabatte: Genießen Sie exklusive Rabatte auf unsere neuesten Produkte.

  • Festliche Aktionen und Gewinnspiele: Nehmen Sie an Gewinnspielen und Feiertagsaktionen teil.

👉 Sind Sie bereit, mit uns zu erkunden und zu erschaffen? Klicken Sie auf [hier] und treten Sie heute bei!

4.1.2 Automatische Erfassungskamera

Einführung

Wenn Sie unterwegs sind, könnten die kleinen Eichhörnchen im Wald Ihren Fenstersims besuchen. Lassen Sie uns eine automatische Erfassungskamera bauen, um Bilder dieser kleinen Süßen festzuhalten!

Benötigte Komponenten

Für dieses Projekt benötigen wir folgende Komponenten.

../_images/4.1.4_automatic_capture_list.png

Es ist definitiv praktisch, ein ganzes Kit zu kaufen, hier ist der Link:

Name

ARTIKEL IN DIESEM KIT

LINK

Raphael Kit

337

Raphael Kit

Sie können diese auch separat über die untenstehenden Links kaufen.

KOMPONENTENVORSTELLUNG

KAUF-LINK

GPIO-Erweiterungsplatine

BUY

Steckbrett

BUY

Jumper-Kabel

BUY

Widerstand

BUY

Kameramodul

BUY

PIR Bewegungssensormodul

-

Schaltplan

T-Board Name

physical

wiringPi

BCM

GPIO17

Pin 11

0

17

../_images/4.1.4_automatic_capture_schematic.png

Experimentelle Verfahren

Vor diesem Projekt sollten Sie sicherstellen, dass Sie 3.1.1 Fotografiemodul abgeschlossen haben.

Schritt 1: Bauen Sie den Schaltkreis.

../_images/4.1.4_automatic_capture_circuit.png

Schritt 2: Um das Kameramodul anzuschließen und die Konfiguration abzuschließen, siehe: Kameramodul.

Schritt 3: Gehen Sie zum Raspberry Pi Desktop. Für ein besseres Erlebnis benötigen Sie möglicherweise einen Bildschirm, siehe: Verbinden Sie Ihren Raspberry Pi. Oder greifen Sie remote auf den Raspberry Pi Desktop zu, für eine detaillierte Anleitung siehe Remote-Desktop.

Schritt 4: Öffnen Sie ein Terminal und wechseln Sie in den Ordner des Codes.

cd ~/raphael-kit/python-pi5

Schritt 5: Ausführen.

sudo python3 4.1.4_AutomaticCaptureCamera_zero.py

Nachdem der Code ausgeführt wurde, wird der PIR die Umgebung erkennen, und wenn er das kleine Eichhörnchen vorbeikommen spürt, wird die Kamera ein Foto machen. Das Foto-Intervall beträgt 3 Sekunden, und die Gesamtzahl der aufgenommenen Fotos wird durch das Druckfenster angezeigt.

Es gibt zwei Potentiometer am PIR-Modul: eines zur Einstellung der Empfindlichkeit und das andere zur Einstellung der Erkennungsdistanz. Um das PIR-Modul besser zu nutzen, sollten Sie beide gegen den Uhrzeigersinn bis zum Anschlag drehen.

../_images/4.1.4_PIR_TTE.png

Bemerkung

Sie können auch 4.1.4_AutomaticCaptureCamera_zero.py im Pfad ~/raphael-kit/python-pi5/ mit einer Python-IDE öffnen, den Ausführen-Button klicken, um es zu starten, und den Code mit dem Stop-Button beenden.

Code

Bemerkung

Sie können den untenstehenden Code modifizieren/zurücksetzen/kopieren/ausführen/stoppen. Bevor Sie dies tun, müssen Sie zum Quellcodepfad wie raphael-kit/python-pi5 gehen. Nach der Änderung des Codes können Sie ihn direkt ausführen, um die Auswirkung zu sehen.

#!/usr/bin/env python3
from picamera2 import Picamera2, Preview
from gpiozero import MotionSensor
import time
import os

# Retrieve the current user's login name and home directory
user = os.getlogin()
user_home = os.path.expanduser(f'~{user}')

# Initialize the camera
camera = Picamera2()
camera.start()

# Initialize the motion sensor on GPIO pin 17
pir = MotionSensor(17)

try:
    i = 1  # Initialize the image count
    while True:
        if pir.motion_detected:
            # Capture an image when motion is detected and save it with a unique number
            camera.capture_file(f'{user_home}/capture%s.jpg' % i)
            print('The number is %s' % i)  # Print the image count
            time.sleep(3)  # Wait for 3 seconds before next detection
            i += 1  # Increment the image count
        else:
            print('waiting')  # Print 'waiting' when no motion is detected
            time.sleep(0.5)  # Check for motion every 0.5 seconds

except KeyboardInterrupt:
    # Stop the camera and turn off the LED if a KeyboardInterrupt occurs
    camera.stop_preview()
    pass

Code-Erklärung

  1. Importiert die Klassen Picamera2 und Preview für die Kamerasteuerung, die Klasse MotionSensor für die Bewegungserkennung und die Standardbibliotheken time und os für die Zeitsteuerung und Interaktionen mit dem Betriebssystem.

    #!/usr/bin/env python3
    von picamera2 import Picamera2, Preview
    von gpiozero import MotionSensor
    import time
    import os
    
  2. Ruft den Login-Namen und das Home-Verzeichnis des aktuellen Benutzers ab, um die aufgenommenen Bilder zu speichern.

    # Retrieve the current user's login name and home directory
    user = os.getlogin()
    user_home = os.path.expanduser(f'~{user}')
    
  3. Initialisiert die Kamera und startet sie.

    # Initialize the camera
    camera = Picamera2()
    camera.start()
    
  4. Initialisiert einen PIR-Bewegungssensor, der mit dem GPIO-Pin 17 verbunden ist.

    # Initialize the motion sensor on GPIO pin 17
    pir = MotionSensor(17)
    
  5. Initialisiert einen Zähler i, um die Anzahl der aufgenommenen Bilder zu verfolgen. In einer Endlosschleife wird überprüft, ob eine Bewegung erkannt wurde. Wenn eine Bewegung erkannt wird, wird ein Bild aufgenommen, dieses mit einem einzigartigen Namen basierend auf dem Zähler i gespeichert, die Bildnummer ausgedruckt und 3 Sekunden gewartet, bevor erneut auf Bewegung geprüft wird. Der Zähler i wird nach jeder Aufnahme erhöht.

    try:
        i = 1  # Initialize the image count
        while True:
            if pir.motion_detected:
                # Capture an image when motion is detected and save it with a unique number
                camera.capture_file(f'{user_home}/capture%s.jpg' % i)
                print('The number is %s' % i)  # Print the image count
                time.sleep(3)  # Wait for 3 seconds before next detection
                i += 1  # Increment the image count
    
  6. Wenn keine Bewegung erkannt wird, wird warte ausgedruckt und alle 0,5 Sekunden erneut auf Bewegung geprüft.

    try:
        ...
    
        while True:
            ...
    
            else:
                print('waiting')  # Print 'waiting' when no motion is detected
                time.sleep(0.5)  # Check for motion every 0.5 seconds
    
  7. Fängt ein KeyboardInterrupt (wie Ctrl+C) ab, um die Kameravorschau zu stoppen und das Skript ordentlich zu beenden.

    except KeyboardInterrupt:
        # Stop the camera and turn off the LED if a KeyboardInterrupt occurs
        camera.stop_preview()
        pass