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.1 Kamera¶
Einführung¶
Hier werden wir eine Kamera mit einem Auslöser bauen, bei deren Betätigung die Kamera ein Foto macht, während die LED blinkt.
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 |
GPIO18 |
Pin 12 |
1 |
18 |
Experimentelle Verfahren¶
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.1_Camera_zero.py
Nachdem der Code ausgeführt wurde, drücken Sie den Knopf, der Raspberry Pi wird die LED blinken lassen und ein Foto machen. Das Foto wird my_photo.jpg
genannt und im Verzeichnis ~
gespeichert.
Bemerkung
Sie können auch 4.1.1_Camera_zero.py
im Pfad ~/raphael-kit/python/
mit einer Python-IDE öffnen, den Ausführen-Button klicken, um es zu starten, und den Code mit dem Stop-Button beenden.
Wenn Sie das Foto auf Ihren PC herunterladen möchten, siehe Filezilla Software.
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
gehen. Nach der Änderung des Codes können Sie ihn direkt ausführen, um die Auswirkung zu sehen.
#!/usr/bin/env python3
von picamera2 import Picamera2, Preview
von gpiozero import LED, Button
import time
import os
# Den Login-Namen und das Home-Verzeichnis des aktuellen Benutzers abrufen
user = os.getlogin()
user_home = os.path.expanduser(f'~{user}')
# Die Kamera initialisieren
camera = Picamera2()
camera.start()
# Eine Variable initialisieren, um den Status der Kamera zu verfolgen
global status
status = False
# LED und Knopf mit ihren GPIO-Pinnummern einrichten
led = LED(17)
button = Button(18)
def takePhotos(pin):
"""Funktion, um den Kamerastatus auf True zu setzen, wenn der Knopf gedrückt wird."""
global status
status = True
try:
# Die Funktion zuweisen, die aufgerufen werden soll, wenn der Knopf gedrückt wird
button.when_pressed = takePhotos
# Hauptschleife
while True:
# Überprüfen, ob der Knopf gedrückt wurde
if status:
# Die LED fünfmal blinken lassen
for i in range(5):
led.on()
time.sleep(0.1)
led.off()
time.sleep(0.1)
# Ein Foto aufnehmen und speichern
camera.capture_file(f'{user_home}/my_photo.jpg')
print('Foto aufgenommen!')
# Den Status zurücksetzen
status = False
else:
# Die LED ausschalten, wenn nicht aufgenommen wird
led.off()
# Kurz warten, bevor der Knopfstatus erneut überprüft wird
time.sleep(1)
except KeyboardInterrupt:
# Die Kamera stoppen und die LED ausschalten, wenn ein KeyboardInterrupt auftritt
camera.stop_preview()
led.off()
pass
Code-Erklärung
Importiert die notwendigen Bibliotheken für Zeitsteuerung, Kamerasteuerung und GPIO-Komponentensteuerung.
#!/usr/bin/env python3 von picamera2 import Picamera2, Preview von gpiozero import LED, Button import time import os
Ruft den Login-Namen und das Home-Verzeichnis des aktuellen Benutzers ab, um Fotos zu speichern.
# Get 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()
Deklariert
status
als globale Variable und initialisiert sie mitFalse
.# Initialize a variable to track the camera's status global status status = False
Initialisiert eine LED, die mit dem GPIO-Pin 17 verbunden ist, und einen Knopf, der mit dem GPIO-Pin 18 verbunden ist.
# Set up LED and button with their GPIO pin numbers led = LED(17) button = Button(18)
Definiert eine Funktion
takePhotos
, die die globale Variablestatus
aufTrue
setzt, wenn der Knopf gedrückt wird.def takePhotos(pin): """Function to set the camera's status to True when the button is pressed.""" global status status = True
Weist die Funktion
takePhotos
zu, die aufgerufen werden soll, wenn der Knopf gedrückt wird.try: # Assign the function to be called when the button is pressed button.when_pressed = takePhotos ...
Überprüft kontinuierlich, ob der
status
True
ist. Wenn ja, lässt es die LED fünfmal blinken, macht ein Foto und setztstatus
zurück. Wenn nicht, bleibt die LED aus. Es gibt eine 1-Sekunden-Verzögerung zwischen den Iterationen der Schleife.try: ... # Main loop while True: # Check if the button has been pressed if status: # Blink the LED five times for i in range(5): led.on() time.sleep(0.1) led.off() time.sleep(0.1) # Capture and save a photo camera.capture_file(f'{user_home}/my_photo.jpg') print('Take a photo!') # Reset the status status = False else: # Turn off the LED if not capturing led.off() # Wait for a short period before checking the button status again time.sleep(1)
Fängt ein KeyboardInterrupt (wie Ctrl+C) ab und stoppt die Kameravorschau und schaltet die LED aus, bevor das Programm beendet wird.
except KeyboardInterrupt: # Stop the camera and turn off the LED if a KeyboardInterrupt occurs camera.stop_preview() led.off() pass