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.
Es ist definitiv praktisch, ein ganzes Kit zu kaufen, hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
Raphael Kit |
337 |
Sie können diese auch separat über die untenstehenden Links kaufen.
KOMPONENTENVORSTELLUNG |
KAUF-LINK |
---|---|
- |
Schaltplan¶
T-Board Name |
physical |
wiringPi |
BCM |
GPIO17 |
Pin 11 |
0 |
17 |
Experimentelle Verfahren¶
Vor diesem Projekt sollten Sie sicherstellen, dass Sie 3.1.1 Fotografiemodul abgeschlossen haben.
Schritt 1: Bauen Sie den Schaltkreis.
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.
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
Importiert die Klassen
Picamera2
undPreview
für die Kamerasteuerung, die KlasseMotionSensor
für die Bewegungserkennung und die Standardbibliothekentime
undos
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
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}')
Initialisiert die Kamera und startet sie.
# Initialize the camera camera = Picamera2() camera.start()
Initialisiert einen PIR-Bewegungssensor, der mit dem GPIO-Pin 17 verbunden ist.
# Initialize the motion sensor on GPIO pin 17 pir = MotionSensor(17)
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ähleri
gespeichert, die Bildnummer ausgedruckt und 3 Sekunden gewartet, bevor erneut auf Bewegung geprüft wird. Der Zähleri
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
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
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