Der wird aktiviert, wenn wir im OPTION_REG die steigende Flanke gewählt haben und im INTCON-Register das Interrupt-Flag INTF gelöscht und das Interrupt-Enable-Bit INTE auf 1 gesetzt wurde. Danach wird der PIC mit dem SLEEP-Befehl in den Ruhezustand geschickt.
Er wartet nun auf das oben genannte Ereignis, das ihn wieder aufweckt und die Befehle nach SLEEP abarbeitet. Das macht er aber nur, wenn der Global-Interrupt abgeschaltet ist (GIE=0). Nun erfolgt das Einschalten des RasPi mit Ausgabe GP5=Low an das Gate des Mosfets T1 (Si4463).
Im Ablaufplan an der Stelle Zustand 2 (Z2) wartet der PIC auf die Meldung des RasPi, dass er heruntergefahren wurde, um dann die Stromversorgung wieder auszuschalten.
Dazu benötigen wir wieder einen INT wie in Z1, den es aber nur einmal je PIC gibt. Die Lösung ist das Überwachen von GPIO4 des RasPi an GP4 des PIC mithilfe des Interrupt-On-Change, kurz I-O-C genannt. Um diesen für GP4 zu nutzen, müssen Sie im INTCON-Register diesmal das GPIF-Bit löschen und das GPIE-Bit setzen; dann folgt wieder der SLEEP-Befehl. Tritt das Ereignis GPIO4=1 auf, wacht der PIC auf, setzt seine Arbeit fort und schaltet über GP5=High den T1 ab. Nach einer Wartezeit, die genügt, um den Erfassungsbereich des IR-Sensors zu verlassen, springt der PIC im Programm aus Zustand 2 wieder nach Zustand 1 zurück. Nun beginnt alles von Neuem.
Das Anwendungsprogramm
Die bisher besprochene Software auf dem RasPi und PIC kümmert sich rein um das Steuern der Hardware. Für den Infoscreen selbst kommen diverse Software-Projekte infrage – eine Google-Suche liefert hier viele Treffer. Allerdings eignen sich die meisten Lösungen nicht wirklich für den Heimeinsatz, denn ein ausgefeiltes Management der Inhalte spielt in diesem Projekt ebenso wenig eine Rolle wie ein Multiscreen-Betrieb.
Aus diesem Grund kommt ein viel einfacheres Verfahren zum Einsatz: Der Raspbian-Standardbrowser Chromium ruft eine kleine, lokal vorliegende HTML-Seite auf. Sie besteht nur aus einem leeren Iframe, einer Liste von Webseiten und etwas Javascript-Logik. Timer-gesteuert lädt der Javascript-Code die Seiten nacheinander im Wechsel in den Iframe. Zusätzliche Schalter erlauben das Unterbrechen oder die direkte Anwahl einer Webseite (Abbildung 7).

Abbildung 7: Der Infoscreen zeigt Webseiten im Kioskmodus an. Als Unterbau dient Googles Chromium-Browser.
Das Laden der Webseite erfolgt beim Systemstart über den Autostart-Mechanismus von LXDE (Pixel-Desktop). Dazu ersetzen Sie den Inhalt der Datei /home/pi/.config/lxsession/LXDE-pi/autostart durch die Zeilen aus Listing 5. Nach einer Neuanmeldung startet dann der Webbrowser mit der angegebenen Seite automatisch.
Listing 5
@lxpanel --profile LXDE-pi @pcmanfm --desktop --profile LXDE-pi @/usr/bin/chromium-browser --kiosk -app=file:///usr/local/lib/iscreen/web/index.html @unclutter @xset s off @xset dpms force off
Ein ganze Reihe von Maßnahmen sorgt für eine möglichst optimale Nutzung des knappen Bildschirmplatzes für die geladene Webseite. Die Anwendung selbst legt die blaue Navigationsleiste schwebend am oberen Rand über die angezeigte Webseite – oben zeigen viele Webseiten sowieso inhaltslose Banner an.
Die Option -app= in Zeile 3 sorgt beim Programmstart dafür, dass Chromium die Menüs und die Adresszeile ausblendet. Die Option --kiosk startet den Webbrowser im Vollbildmodus. Dadurch gelangen Sie aber auch nicht mehr in das Anwendungsmenü, der manuelle Start weiterer Applikationen oder ein Shutdown gelingt dann nicht mehr. Als Alternative verwenden Sie --start-maximized. Im letzteren Fall ergibt es auch Sinn, das horizontale Panel vertikal am rechten Bildschirmrand zu platzieren.
Damit die Darstellung noch besser zum kleinen Bildschirm passt, installieren Sie aus dem Chrome-Webstore einen User-Agent-Switcher. Er ermöglicht, dass sich Chromium beim Webserver zum Beispiel als iPhone 6 ausgibt und der Webserver dann eine für kleine Bildschirme optimierte Variante des Inhalts ausliefert. Allerdings unterstützen nicht alle Webserver diese Funktion.
Fazit
Mit wenig Aufwand bauen Sie Ihren eigenen maßgeschneiderten Infoscreen. Das Ganze funktioniert im Prinzip auch ohne Mikrocontroller und intelligente Schaltung – Sie müssen den RasPi dann morgens manuell booten. Herunterfahren könnte man statt via PIR ganz ohne Sensor einfach zeitgesteuert, wobei ohne Schaltungslogik der unverhältnismäßige Standby-Stromverbrauch mit der Zeit ins Geld geht. Dank Touchscreen wäre aber auch ein manuelles Herunterfahren mit anschließendem Ziehen des Steckers vertretbar.
Die angezeigten Inhalte beschränken sich nicht auf die Präsentation von Webseiten. Binden Sie statt des Webbrowser-Aufrufs ein kleines Skript in die Autostart-Datei ein, lassen sich Inhalte auch abhängig von der Tageszeit anzeigen – am Abend zum Beispiel eine Liste der eingetroffenen Mails oder einfach nur eine Diashow.
Die Autoren
Bernhard Bablok (mailto:[email protected]) arbeitet bei der Allianz Technology SE als SAP-HR-Entwickler. Hört er nicht Musik oder ist mit dem Rad oder zu Fuß unterwegs, beschäftigt er sich mit Themen rund um Linux, Programmierung und Mini-Rechner.
Bei Lothar Hiller, einem Ingenieur für Nachrichtenbetriebsdienst im Ruhestand und leidenschaftlichen Elektronikbastler, geht der Lötkolben fast nie aus. Er programmiert Mikrocomputer wie PICs in Assembler und beschäftigt sich seit 2015 auch mit dem Raspberry Pi im Heimbereich.





