Eine Station, auf der einfach nur ein Video abgespielt werden soll, lässt sich sehr einfach mit einem Raspberry Pi verwirklichen. Wir brauchen:
- Raspberry Pi (z.B. Modell 4)
- Mikro-SD-Karte mit Raspberry Pi OS (Desktop-Version empfohlen)
- Taster oder Schalter
- Kabel zur Verbindung mit den GPIO-Pins
- Ein Video und eine Bilddatei
Zuerst stellen wir sicher, dass der Raspberry Pi aktuell und alle nötigen Pakete installiert sind. Wir nutzen feh und vlc, diese müssen ggf. seperat installiert werden. Dazu geben wir in den bash die folgenden Befehle ein:
sudo apt update && sudo apt upgrade -y
Dann installieren wir die benötigten Tools:
sudo apt install vlc feh python3-rpi.gpio
Dann aktivieren wir die GPIO-Schnittstelle:
sudo raspi-config
„Interface Options“ → „GPIO“ → „Enable“
Den Raspberry Pi danach einmal neu starten:
sudo reboot
Wir verbinden den Taster folgendermaßen mit den GPIO-Pins:
Schalter | Pin am Raspberry Pi |
---|---|
Eine Seite | GPIO17 (Pin 11) |
Andere Seite | GND (Pin 9) |
Jeder andere GPIO ist auch möglich, im Netz sind viele Pinouts zu finden. Wichtig ist, dass wir den GPIO durch den Taster gegen GND schalten, um dem Rechner das Signal zu geben.
Jetzt erstellen wir das Script. Dieses steuert unsere Videostation. Wir geben in der bash ein:
nano start_video.py
Und fügen den folgenden Code ein:
import RPi.GPIO as GPIO
import os
import time
import subprocess
BUTTON_PIN = 17
IMAGE_PATH = "/Pfad/zum/Standbild.png"
VIDEO_PATH = "/Pfad/zum/Video.mp4"
# GPIO-Setup
GPIO.setmode(GPIO.BCM)
GPIO.setup(BUTTON_PIN, GPIO.IN, pull_up_down=GPIO.PUD_UP)
def show_image():
print("Zeige Standbild mit feh...")
os.system(f"feh --fullscreen --hide-pointer {IMAGE_PATH} &")
def start_video():
print("Starte Video...")
os.system(f"cvlc --fullscreen --no-video-title-show --loop {VIDEO_PATH} &")
def stop_video():
print("Beende Video...")
os.system("pkill vlc")
def toggle_video():
if subprocess.run(["pgrep", "-x", "vlc"]).returncode == 0:
stop_video()
else:
start_video()
try:
# Zeige Standbild beim Start
show_image()
print("Warte auf Tastendruck...")
button_pressed = False
while True:
if GPIO.input(BUTTON_PIN) == GPIO.LOW:
if not button_pressed:
print("Schalter gedrückt!")
toggle_video()
button_pressed = True
else:
button_pressed = False
time.sleep(0.1)
except KeyboardInterrupt:
print("\nBeende Skript...")
GPIO.cleanup()
stop_video()
Dabei müssen die Pfade zu Bild und Video sowie ggf. der GPIO angepasst werden. Durch
python3 start_video.py
wird die Station gestartet. Dieses kann man auch in den Autostart packen, dann muss man nach einem Neustart nichts weiter tun! Viel Erfolg!