Bemerkung
Hallo und herzlich willkommen in der SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasten-Community auf Facebook! Tauchen Sie gemeinsam mit anderen Technikbegeisterten tiefer in die Welt von Raspberry Pi, Arduino und ESP32 ein.
Warum beitreten?
Expertenunterstützung: Lösen Sie technische Probleme und Herausforderungen nach dem Kauf mit Unterstützung unserer Community und unseres Teams.
Lernen & Teilen: Tauschen Sie Tipps und Anleitungen aus, um Ihre Fähigkeiten zu erweitern.
Exklusive Vorschauen: Erhalten Sie vorab Einblicke in neue Produkte und Ankündigungen.
Sonderrabatte: Profitieren Sie von exklusiven Rabatten auf unsere neuesten Produkte.
Feiertagsaktionen & Verlosungen: Nehmen Sie an spannenden Verlosungen und saisonalen Aktionen teil.
👉 Bereit, mit uns gemeinsam zu entdecken und zu gestalten? Klicken Sie auf [here] und treten Sie noch heute bei!
Pan-Tilt-Kameramodul
Bemerkung
Die Pironman-5-Serie enthält kein Kameramodul. Sie müssen eines selbst vorbereiten oder auf unserer offiziellen Website erwerben:
In diesem Abschnitt lernen Sie, wie Sie ein Pan-Tilt-Kameramodul mit zwei SG90-Servos einrichten und steuern, die direkt mit den GPIO-Pins verbunden werden. Am Ende dieses Abschnitts haben Sie ein vollständig installiertes und funktionsfähiges Pan-Tilt-Modul, das für Ihre Projekte bereit ist.
Hardware-Verbindung
Stellen Sie vor dem Start sicher, dass Ihr Raspberry Pi ausgeschaltet ist.
Verbindungsdiagramm:
Gerät |
GPIO-Pin |
Physischer Pin |
|---|---|---|
Pan-Servo (Orange) |
GPIO17 |
Pin 11 |
Tilt-Servo (Orange) |
GPIO18 |
Pin 12 |
VCC (Rot) |
5V |
Pin 2 oder 4 |
GND (Braun) |
GND |
Pin 6, 9, 14, 20, 25, 30, 34, 39 |
Kameramodul |
CSI-Schnittstelle |
An Kameraanschluss anschließen |
Warnung
Während SG90-Servos während des Tests direkt vom 5V-Pin des Raspberry Pi mit Strom versorgt werden können, können längere Verwendung oder gleichzeitige Bewegung beider Servos zu Spannungsabfällen und Systeminstabilität führen. Erwägen Sie für längerfristige Projekte die Verwendung einer externen 5V-Stromversorgung (gemeinsame Masse mit dem Raspberry Pi sicherstellen).
Schritt-für-Schritt-Verbindung:
Servos anschließen:
Verbinden Sie das orangefarbene Signalkabel des Pan-Servos mit GPIO17 (physischer Pin 11)
Verbinden Sie das orangefarbene Signalkabel des Tilt-Servos mit GPIO18 (physischer Pin 12)
Verbinden Sie die roten VCC-Kabel beider Servos mit einem 5V-Pin (physischer Pin 2 oder 4)
Verbinden Sie die braunen GND-Kabel beider Servos mit einem beliebigen GND-Pin (z.B. physischer Pin 6)
Kamera anschließen:
Hebeln Sie vorsichtig die Plastikklammer des CSI-Kameraanschlusses hoch
Führen Sie das Kamera-Flachbandkabel mit den Metallkontakten vom Ethernet-Anschluss weg zeigend ein
Drücken Sie die Plastikklammer wieder herunter, um das Kabel zu sichern
Servo testen
Bevor Sie das vollständige Pan-Tilt-Beispiel ausführen, testen wir jeden Servo einzeln, um sicherzustellen, dass sie korrekt funktionieren.
1. GPIO und I2C aktivieren (falls erforderlich):
sudo raspi-config
# Navigieren Sie zu: Schnittstellenoptionen -> I2C -> Aktivieren
# Nach der Aktivierung neu starten
2. Einfaches Servo-Testskript:
Erstellen Sie eine Testdatei servo_test.py:
#!/usr/bin/env python3
# servo_test.py - Einfacher Servo-Test
from gpiozero import Servo
import time
# Pan-Servo an GPIO17 testen
pan = Servo(17, min_pulse_width=0.5/1000, max_pulse_width=2.5/1000)
print("Teste Pan-Servo (GPIO17)...")
print("Bewege in 0°-Position...")
pan.value = -1 # 0°
time.sleep(2)
print("Bewege in 90°-Position...")
pan.value = 0 # 90°
time.sleep(2)
print("Bewege in 180°-Position...")
pan.value = 1 # 180°
time.sleep(2)
pan.close()
print("Pan-Servo-Test abgeschlossen")
3. Test ausführen:
python3 servo_test.py
Wenn sich der Servo gleichmäßig durch alle Positionen bewegt, wiederholen Sie den Test für den Tilt-Servo, indem Sie die Pinnummer auf 18 ändern.
Kamera testen
1. Kameraschnittstelle aktivieren:
sudo raspi-config
# Navigieren Sie zu: Schnittstellenoptionen -> Kamera -> Aktivieren
# Oder für neuere Systeme: Schnittstellenoptionen -> Legacy-Kamera -> Aktivieren
sudo reboot
2. Kameraaufnahme testen:
Für Raspberry Pi OS Bullseye und neuer (mit libcamera):
# Testfoto aufnehmen
libcamera-jpeg -o test.jpg -t 2000 --width 640 --height 480
# Kamerabildvorschau anzeigen
libcamera-hello -t 0
Für ältere Systeme (mit raspistill):
# Testfoto aufnehmen
raspistill -o test.jpg -t 2000 -w 640 -h 480
# Kamerabildvorschau anzeigen
raspivid -t 0
3. Foto überprüfen:
ls -l test.jpg
# Bild öffnen (falls Sie eine GUI haben)
xdg-open test.jpg
Pan-Tilt-Beispiel
Kombinieren wir nun sowohl die Servosteuerung als auch die Kamerafunktionalität in einem vollständigen Pan-Tilt-Steuerungsprogramm. Dieses Beispiel ermöglicht es Ihnen, die Kamerarichtung mit den WSAD-Tasten zu steuern und mit der T-Taste Fotos aufzunehmen.
1. Pan-Tilt-Steuerungsskript erstellen:
nano ptz_wsad_simple.py
Kopieren Sie den folgenden Code:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# ptz_wsad_simple.py - Steuerung von PTZ mit WSAD-Tasten, ultraviolett einfache Version
from gpiozero import Servo
import os
from datetime import datetime
# Servos initialisieren
# SG90-Parameter: min. Pulsbreite 0.5ms (0°), max. Pulsbreite 2.5ms (180°)
pan = Servo(17, min_pulse_width=0.5/1000, max_pulse_width=2.5/1000)
tilt = Servo(18, min_pulse_width=0.5/1000, max_pulse_width=2.5/1000)
# Startposition (Mitte)
pan.value = 0
tilt.value = 0
print("\n=== SG90 PTZ-Steuerung ===")
print("W: Hoch")
print("S: Runter")
print("A: Links")
print("D: Rechts")
print("T: Foto aufnehmen")
print("C: Zentrieren")
print("Q: Beenden")
print("-" * 30)
def take_photo():
"""Fotoaufnahmefunktion"""
# Fotoverzeichnis erstellen, falls es nicht existiert
photo_dir = "/home/pi/Pictures/ptz"
os.makedirs(photo_dir, exist_ok=True)
# Dateinamen mit Zeitstempel generieren
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
filename = f"{photo_dir}/ptz_{timestamp}.jpg"
# Foto mit libcamera aufnehmen (für Raspberry Pi Bullseye und höher)
# Alternative für ältere Systeme: raspistill verwenden
os.system(f"libcamera-jpeg -o {filename} -t 1 --width 640 --height 480")
# Alternativer Befehl für ältere Systeme:
# os.system(f"raspistill -o {filename} -t 1 -w 640 -h 480")
print(f"Foto gespeichert: {filename}")
try:
while True:
# Benutzereingabe abfragen
cmd = input("Befehl eingeben: ").lower().strip()
if cmd == 'w':
# Hoch bewegen (Tilt-Winkel erhöhen)
tilt.value = min(1.0, tilt.value + 0.2)
print(f"↑ Hoch ({tilt.value:.1f})")
elif cmd == 's':
# Runter bewegen (Tilt-Winkel verringern)
tilt.value = max(-1.0, tilt.value - 0.2)
print(f"↓ Runter ({tilt.value:.1f})")
elif cmd == 'a':
# Links bewegen (Pan-Winkel verringern)
pan.value = max(-1.0, pan.value - 0.2)
print(f"← Links ({pan.value:.1f})")
elif cmd == 'd':
# Rechts bewegen (Pan-Winkel erhöhen)
pan.value = min(1.0, pan.value + 0.2)
print(f"→ Rechts ({pan.value:.1f})")
elif cmd == 't':
# Foto aufnehmen
take_photo()
elif cmd == 'c':
# PTZ zentrieren
pan.value = 0
tilt.value = 0
print("PTZ zentriert")
elif cmd == 'q':
# Programm beenden
print("Programm wird beendet")
break
else:
print("Ungültiger Befehl, bitte W/S/A/D/T/C/Q verwenden")
except KeyboardInterrupt:
print("\nProgramm durch Benutzer unterbrochen")
finally:
# GPIO-Ressourcen freigeben
pan.close()
tilt.close()
print("GPIO bereinigt")
2. Skript ausführbar machen:
chmod +x ptz_wsad_simple.py
3. Pan-Tilt-Controller ausführen:
python3 ptz_wsad_simple.py
4. Kamera steuern:
Drücken Sie W/S, um nach oben/unten zu neigen
Drücken Sie A/D, um nach links/rechts zu schwenken
Drücken Sie T, um ein Foto aufzunehmen (gespeichert unter /home/pi/Pictures/ptz/)
Drücken Sie C, um die Kamera zu zentrieren
Drücken Sie Q, um zu beenden
Kameraaufnahme:
Das Skript verwendet libcamera-jpeg (für neuere Raspberry Pi OS-Versionen) zur Aufnahme von Fotos. Fotos werden automatisch mit Zeitstempeln gespeichert, um Überschreiben zu verhindern.