Benutzer-Werkzeuge

Webseiten-Werkzeuge


nanopi_m4:kiosk

Verbesserte Anzeige für den Meisennistkasten mit Kamera und Terminal für Jitsi-Meet.

Hardware

  • Nanopi M4 V2 mit PSU-Modul
  • papalook HD 1080P Webcam AF925 (1bcf:2284)
  • Sharp LQ133M1JW15 13.3„ IPS LED Display FHD (1920 × 1080) matt
  • HDMI VGA Controller Board
  • Neonode AirBar 13.3“ (Windows) für Touchfunktion (1536:0101)
  • MEANWELL GST60A12-P1J SNT EXTERN 60W 12V Netzteil
  • PAM8406 Digital Stereo Verstärker Board
  • Lautsprecher 2 x TB-speaker T1-2121SD

Gehäuse

Um einen stabilen Aufbau und eine passive Kühlung zu ermöglichen wurde für den Nanopi M4 und die zusätzlich benötigte Hardwäre ein Gehäuse aus Aluminium mit Kupferkern gegossen. Der Kupferkern transportiert die Wärme schnell vom RK3399 zu den Kühlrippen an den Seiten des Gehäuses. Die Frontseite wurde mit einer Abdeckung aus Kirschholz verkleidet.

Zwischenstadium, Anguss verputzt. Gehäuse Nanopi M4, Aluminium mit eingegossenem Kupferkern Display und AirBar probehalber aufgelegt.  Komplett mit Display, Lautsprechern, Lautstärkeregler, Kamera Gehäuse mit allen Anbauteilen von vorn Rückseite komplett mit Nanopi M4, Display-Controller-Board, Verstärker und PSU-Modul. Dieses ist zum Aufstecken auf den Nanopi vorbereitet, da dies aber insgesamt zu hoch geworden wäre habe ich Kabel angelötet und es daneben montiert. Der Strom für das Display-Controller-Board geht auch von dort aus. So wird nur ein 12V-Netzteil benötigt. Die Buchse für dieses ist am unteren Rand zwischen den Lautsprechern. Rückseite mit Nanopi M4, Display-Controller, Spannungsregler, Audioverstärker

Kühlrippen am Gehäuse des Nanopi M4 Die Kühlrippen wurden auf der Kreissäge mit einem 2mm-Blatt gemacht. In der Holzabdeckung der Webcam ist ein Schalter, welcher direkt die 5V der Kamera unterbricht. Dies funktioniert nicht an allen Computern und eher an USB2-Anschlüssen als mit USB3. Einige können beim erneuten Einschalten der Kamera diese nicht mehr erkennen und der USB scheint blockiert zu sein. Am Nanopi funktioniert es. Das verwendete Betriebssystem könnte auch eine Rolle spielen.

Derzeit wird der Rechner am grünen Taster ein- und ausgeschalten. Öffnet man die Schiebeabdeckung vor der Webcam ruft der Chromium eine Jitsi-Konferenz auf. Wird die Abdeckung wieder geschlossen zeigt der Browser die Standardseite, derzeit mit der aktuellen Wettervorhersage, der Außentemperatur und einem Regenradar.

Leider macht die Airbar einen schrecklich lauten Ton wenn man oberhalb des Displays in dessen Nähe kommt. Also auch beim Öffnen und Schließen der Webcam. Das Gehäuse der Airbar aufzumachen war mir zu heikel, also viel der Piepser einem Dremel zum Opfer. Ohne die Membrane hört man fast nichts mehr.

Die Drehscheibe für die Lautstärke ist eine Scheibe aus 5mm Aluminium. Viele Löcher entlang des Kreisumfanges gebohrt ergeben eine griffige Rändelscheibe.

Komplettes Nanopi M4 Terminal mit Holzverkleidung

Software

Das Nanopi-Terminal verwendet als Betriebssystem Armbian.

Probleme mit Wifi: Manchmal erscheint die Konfiguration für Wifi nicht in armbian-config

  • brcmfmac4356-sdio.bin
  • brcmfmac4356-sdio.txt
  • BCM4356A2.hcd

passend ersetzen.

Test der Temperatur: armbianmonitor -m

  • sudo apt update
  • sudo apt upgrade
  • sudo apt dist-upgrade
  • sudo apt install xorg xserver-xorg-legacy openbox chromium xdotool unclutter lighttpd
  • sudo nano -w /etc/X11/Xwrapper.config
allowed_users=anybody 
needs_root_rights=yes
  • sudo nano /opt/kiosk.sh
#!/bin/sh
if ! ps ax | grep [/]opt/kiosk.sh
then 	
    pulseaudio --daemonize
    sleep 2
    xset -dpms
    xset s noblank
    xset s 300
    openbox-session &
    unclutter &
    if ! lsusb | grep "1bcf:2284" > /dev/null
    then 
        startadresse="https://www.kinasen.de/wetteruebersicht.php"
    else
        startadresse="JITSIURL"
    fi
    chromium --no-first-run --kiosk --agc-startup-min-volume=255 --disable-pinch --overscroll-history-navigation=0 --disable-translate --disable-suggestions-service --disable-save-password-bubble --start-maximized --disable-session-crashed-bubble --disk-cache-dir=/dev/null $startadresse
fi
  • sudo chmod 755 /opt/kiosk.sh
  • sudo nano /etc/systemd/system/kiosk.service
[Unit]
Description=Kiosk

[Service]
Type=oneshot
User=USER
ExecStart=/usr/bin/startx /etc/X11/Xsession /opt/kiosk.sh

[Install]
WantedBy=multi-user.target
  • sudo systemctl daemon-reload
  • sudo systemctl enable kiosk
  • sudo reboot

dbus-x11

Steuerung der Kiosk-Anzeige

Um die von Chromium im Kiosk-Mode (keine Adresszeile) dargestellte URL wechseln zu können musste etwas improvisiert werden. Alle genutzten Webseiten binden Javascript ein, welches die neu URL nach Eingabe einer Tastenkombination aufruft. Diese Javascriptdatei und einige der anzeigbaren Seiten werden vom lokalen Webserver (lighttpd, localhost) geliefert.

var tasten=-1;
function keys(key) {
   if (!key){
      key = event;
      key.which = key.keyCode;
   }
   switch(key.which){
      // Taste y:
      case 89:tasten=0; break;
//taste 1:
     case 49:if(tasten==0){ tasten=1;} break;
      // Taste 2:
      case 50:if(tasten==0){ tasten=2;} break;
     // Taste 3:
      case 51:if(tasten==0){ tasten=3;} break;
      // Taste 6:
      case 54:
        if(tasten==1) {location.href = "https://www.kinasen.de/wetteruebersicht.php";}
        if(tasten==2) {location.href = "JITSIURL";}
        if(tasten==3) {
                var path=window.location.pathname;
                if(path=="/lexikon.php")
                {
                        location.href = "https://www.kinasen.de/wetteruebersicht.php";
                }
                else
                {
                        location.href = "http://localhost/lexikon.php";
                }
        }
        break;
      default: tasten=-1;
   }
}
document.onkeyup = keys;

Soll ein Jitsi-Server eingebunden werden so muss nach fast jedem Update auf diesem das Javascript neu eingebunden werden.

/usr/share/jitsi-meet/index.html

Da an der Anzeige keine Tastatur verbaut wurde erfolgt die Umschaltung der Seiten durch Taster. Diese rufen jeweils ein Script auf, welches die Tastatureingabe im Chromium mittels xdotool simuliert. Um direkt in die festgelegte Jitsi-Konferenz zu schalten wird das entsprechende Script durch eine UDEV-Regel beim Anstecken oder Entfernen der Kamera ausgelöst.

/opt/switch_1.sh

#!/bin/bash

export DISPLAY=":0"
export XAUTHORITY=/home/kiosk/.Xauthority
xdotool getactivewindow
xdotool key y
xdotool key 1 
xdotool key 6

UDEV Rule für Kamera

/etc/udev/rules.d/80-jitsi.rules

ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="1bcf", ATTRS{idProduct}=="2284", RUN+="/bin/su USER -c '/bin/sh /opt/switch_2.sh'"
ACTION=="remove", SUBSYSTEM=="usb", ATTRS{idVendor}=="1bcf", ATTRS{idProduct}=="2284", RUN+="/bin/su USER -c '/bin/sh /opt/switch_1.sh'"

GPIO für Tasten

GPIO 150, entspricht Pin 23 der Pinleiste GPIO2(GPIO4_C6/PWM1(3V))

Pullup 10k nach 3,3V Pin 1 Pinleiste GPIO1

Zur Abfrage des Tasters läuft ein Programm (C) und ruft bei Flankenerkennung ein Bash-Script (/opt/switch_3.sh) auf. Dieses simuliert wiederum eine Tastatureingabe (y 3 6) im Browser.

Telefonfunktion

twinkle

twinkle -c -f profilname

twinkle –cmd answer

Start der benötigten Dienste

Das Programm zum Überwachen der Tasten-GPIOs und das Ausschalten der blinkenden grünen LED geschieht über /etc/rc.local

echo 0 > /sys/class/leds/status_led/brightness 
echo none > /sys/class/leds/status_led/trigger
/home/USER/gpio_buttontest 150 > /dev/null 2>&1 &

Fazit

Während der wahrscheinlich anspruchsvollsten Nutzung mit Jitsi-Meet geht die Temperatur des Prozessors nicht über 43°C hinaus. Die Lautsprecher haben einen guten Klang und sind absolut nicht zu vergleichen mit den Lautsprechern eines Laptops oder Tablets. Besonders bei Kinderstimmen ist der Unterschied groß. Die Airbar funktioniert für größere Buttons und als Notersatz für eine fehlende Maus recht gut. Es muss jedoch beachtet werden, dass z.B. ein zu dicker Rahmen um das Display die Toucherkennung stören kann. „Toucht“ man außerhalb des Bildschirmbereiches (z.B. Ausrichtung der oberhalb angebrachten Kamera) fängt die Airbar sehr laut und nervig zu piepen an. Dies hört manchmal leider auch nicht wieder von alleine auf. Der Piepser wurde „weggedremelt“.

nanopi_m4/kiosk.txt · Zuletzt geändert: 2020/10/25 12:58 von andmin