Raspberry Pi im Kioskmodus mit HD-Camera und Touchscreen

Raspbian mit Minimal Desktop installieren
Pi aktualisieren:

sudo apt-get update 
sudo apt-get upgrade

Installation von xdtool und unclutter.
xdotool: Dieses Tool ermöglicht es Bash-Skripten, Tastendrücke auszuführen
unclutter: Ermöglicht es den Mauszeiger zu verstecken.

sudo apt-get install xdotool unclutter sed chromium-browser

Raspberry Pi Autologin konfigurieren

sudo raspi-config

Im Tool folgende Schritte ausführen:

3 Boot Options -> B1 Desktop / CLI -> B4 Desktop Autologin

Kiosk-Script erstellen

mkdir kiosk
cd kiosk
nano kiosk.sh
#!/bin/bash
xset s noblank
xset s off
xset -dpms
unclutter -idle 1.5 -root &
sed -i 's/"exited_cleanly":false/"exited_cleanly":true/' /home/pi/.config/chromium/Default/Preferences
sed -i 's/"exit_type":"Crashed"/"exit_type":"Normal"/' /home/pi/.config/chromium/Default/Preferences
/usr/bin/chromium-browser --noerrdialogs --disable-infobars --kiosk http://localhost &
while true; do
xdotool keydown ctrl+Tab; xdotool keyup ctrl+Tab;
sleep 10
done

Jetzt noch nen kleinen Dienst schreiben, der automatisch startet:

sudo nano /lib/systemd/system/kiosk.service

geht auch mit der crontab

@reboot /bin/bash /home/pi/kiosk/kiosk.sh

Aber ’n Service is schon sauberer also:

Display herausfinden:

Zuerst kurz auslesen, wo das Display hängt

echo $DISPLAY

neuen Service schreiben:

sudo nano /lib/systemd/system/kiosk.service
[Unit]
Description=Chromium Kiosk
Wants=graphical.target
After=graphical.target
[Service]
Environment=DISPLAY=:11.0
#hier echo $DISPLAY eintragen
Environment=XAUTHORITY=/home/pi/.Xauthority
Type=simple
ExecStart=/bin/bash /home/pi/kiosk/kiosk.sh
Restart=on-abort
User=pi
Group=pi
[Install]
WantedBy=graphical.target

Den Service einschalten

sudo systemctl enable kiosk.service
sudo reboot

Jetzt brauchen wir noch das Display:

cd ~
mkdir display
cd display
wget https://raw.githubusercontent.com/adafruit/Raspberry-Pi-Installer-Scripts/master/$
chmod +x adafruit-pitft.sh
sudo ./adafruit-pitft.sh

Die Ausgabe und die nötigen Eingaben.

This script downloads and installs
PiTFT Support using userspace touch
controls and a DTO for display drawing.
one of several configuration files.
Run time of up to 5 minutes. Reboot required!
Select configuration:
PiTFT 2.4", 2.8" or 3.2" resistive (240x320)
PiTFT 2.0" no touch (240x320)
PiTFT 2.2" no touch (240x320)
PiTFT 2.8" capacitive touch (240x320)
PiTFT 3.5" resistive touch (320x480)
PiTFT Mini 1.3" or 1.54" display (240x240)
MiniPiTFT 1.14" display (240x135) - WARNING! CUTTING EDGE! WILL UPGRADE YOUR KERNEL TO LATEST
Uninstall PiTFT
Quit without installing
SELECT 1-9: 4
Select rotation:
90 degrees (landscape)
180 degrees (portait)
270 degrees (landscape)
0 degrees (portait)
SELECT 1-4: 1
[PITFT] Checking init system…
Found systemd
/boot is mounted
[PITFT] System update
Updating apt indexes…
…
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
……
Reading package lists…
………
[PITFT] Installing Python libraries & Software…
Installing Pre-requisite Software…This may take a few minutes!
[PITFT] Updating /boot/config.txt…
Already have an adafruit-pitft-helper section in /boot/config.txt.
Removing old section…
[PITFT] Updating SysFS rules for Touchscreen…
[PITFT] Updating TSLib default calibration…
Would you like the console to appear on the PiTFT display? [y/n] n
[PITFT] Making sure console doesn't use PiTFT
Removing console fbcon map from /boot/cmdline.txt
Screen blanking time reset to 10 minutes
Would you like the HDMI display to mirror to the PiTFT display? [y/n] y
[PITFT] Adding FBCP support…
Installing cmake…
W: --force-yes ist veraltet, verwenden Sie stattdessen eine der Optionen, die mit --allow beginnen.
Downloading rpi-fbcp…
Uncompressing rpi-fbcp…
Building rpi-fbcp…
Installing rpi-fbcp…
Remove fbcp from /etc/rc.local, if it's there…
We have systemd, so install fbcp systemd unit…
Created symlink /etc/systemd/system/multi-user.target.wants/fbcp.service → /etc/systemd/system/fbcp.service.
Setting raspi-config to boot to desktop w/o login…
Removed /etc/systemd/system/default.target.
Created symlink /etc/systemd/system/default.target → /lib/systemd/system/graphical.target.
Configuring boot/config.txt for forced HDMI
Using x2 resolution
[PITFT] Updating X11 default calibration…
[PITFT] Success!
Settings take effect on next boot.
REBOOT NOW? [y/N] y

Soweit so gut. Jetzt hoch kurz ne Webseite für die Kamera bauen.
Mit dem Layout Builder von https://www.layoutit.com/ geht das sehr fix und angenehm. Immer daran denken große Knöpfe zu bauen für den kleinen Touchscreen.

So, jetzt brauchen wir noch das Bild um die Kamera scharf stellen zu können. Zum Glück gibt es unter https://picamera.readthedocs.io/en/latest/recipes2.html#web-streaming einen Referenzcode den wir anpassen können.

0 Kommentare

Hinterlasse einen Kommentar

An der Diskussion beteiligen?
Hinterlasse uns deinen Kommentar!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert