Der PIC alleine genügt für die Schaltung aber noch nicht. Ein weiteres kritisches Bauteil stellt der Boost-Konverter dar (Abbildung 5), der aus der Akkuspannung von 3,0 bis 4,2 Volt die für den RasPi notwendigen 5 Volt erzeugt. Zuerst war das Schaltreglermodul XL6009 (bis 4A) im Einsatz. Da dieses jedoch im unteren Spannungsbereich von 3 bis 3,5 Volt nicht mehr zuverlässig genug arbeitete, bekam das Modul ML8205 (2A) den Vorzug, das auch bis 3 Volt klaglos läuft. Zu Testzwecken ersetzt ein per regelbarem Step-Up-Konverter angeschlossenes Schaltnetzteil den LiPo-Akku. Damit lässt sich auch Unterspannung ohne Probleme simulieren.
Als besondere Herausforderung entpuppten sich die in den RasPi integrierten Pullup/Pulldown-Widerstände. Sie scheinen zu den am wenigsten bekannten Komponenten des Mini-Rechners zu gehören: Es gibt zwar viele Informationen zu den GPIOs und zahlreiche Tutorials zum Beschalten mit externen Pullup- oder Pulldown-Widerständen, aber kaum ein Artikel beleuchtet die internen Widerstände.
Konfigurieren lassen sich diese Pullups über die WiringPi-Bibliothek. Einmal eingerichtet, speichert der RasPi zwar den Zustand, aber er lässt sich nicht mehr auslesen. Wahrscheinlich erfolgt das Speichern in einer EEPROM-artigen Zelle, die nicht beliebig viele Schreibvorgänge verkraftet. Allerdings ist das alles nicht dokumentiert. Hier rächt sich, dass die Hardware des RasPi nicht komplett offenliegt.
Die Aufgaben des RasPi
Schaltet der PIC den Strom ein, dann bootet der RasPi und arbeitet direkt seine Aufgaben ab: GPIOs auslesen, Modem suchen, PIN-Code setzen, SMS versenden, den PIC informieren und wieder herunterfahren. Das dauert im Idealfall nicht länger als zwei Minuten. Die Implementierung muss dabei allerdings diverse Fehlersituationen abfangen.
Die Datei /etc/rc.local startet am Ende des Boot-Prozesses das eigentliche Verarbeitungsskript /usr/local/sbin/fuchsfalle.sh. Anschließend überwacht sie in einer Schleife, ob sich das Skript auch wieder beendet. Nach einer konfigurierbaren Zeit beendet sie es unabhängig vom Status, informiert den PIC über das Scheitern und fährt das System herunter. Der RasPi versucht damit, dem harten Shutdown durch den PIC zuvorzukommen.
Sowohl die Suche nach dem Modem als auch das Setzen des PIN-Codes und der SMS-Versand laufen in einer Schleife mit mehreren Versuchen. Das erwies sich in der Praxis als sinnvolle Vorsichtsmaßnahme. So dauert es manchmal eine Weile, bis das Modem des UMTS-Sticks tatsächlich bereitsteht. Auch das Setzen der PIN oder der SMS-Versand benötigen hin und wieder mehrere Versuche.
Das Verhalten des RasPi steuert die zentrale Konfigurationsdatei /boot/fuchsfalle.cfg. Der Speicherort wurde deswegen gewählt, weil er sich in der ersten, FAT-formatierten Partition befindet und sich deshalb auch von Windows aus erreichen lässt. Auf Windows-Seite benötigen Sie allerdings noch einen Editor, der die Datei auch im unter Linux üblichen UTF8-Format speichert. Hier leistet etwa Notepad++ gute Dienste.
Besonderheiten
Für die Konfiguration sowie das Lesen und Schreiben der GPIOs kam ursprünglich das Sysfs-Interface unterhalb von /sys/class/gpio zum Einsatz. Als die oben beschriebenen Probleme mit den internen Pullups auftraten, erfolgte allerdings ein Umstieg auf das WiringPi-Paket. Es stellt ein Kommandozeilentool bereit und erfüllt so ohne Probleme aus Skripten heraus alle Aufgaben. Die Konfiguration der Pullups erfolgt über folgende Kommandos:
$ sudo gpio -g mode 17 up $ sudo gpio -g mode 27 up
Neben up gibt es noch die Schalter down und tri. Letzteres steht wohl für “Trigger” und schaltet die internen Widerstände ab. Es besteht jedoch keine Möglichkeit, den Status per Software auszulesen.
Neben den GPIOs gibt es noch weitere Herausforderungen, die es per Software zu lösen gilt. So soll das System, selbst wenn es nur ein paar Minuten läuft, möglichst stromsparend arbeiten. Der RasPi Zero gilt in dieser Disziplin als unschlagbar. Da UMTS-Sticks relativ viel Strom ziehen, ist hier aber nicht garantiert, dass das mit allen Sticks funktioniert. Bei allen RasPis hilft das Abschalten des Bildschirms und des Netzwerks. Für den produktiven Einsatz stellt solch ein schnittstellenloser SoC auch kein Problem dar, weil die Kommunikation mit dem PIC ja über GPIOs erfolgt.
Realisiert wurden die verschiedenen Stromspartechniken mit einem eigenen Systemd-Dienst, wieder konfiguriert über die zentrale Konfigurationsdatei. Das bietet den Vorteil, dass sich die einzelnen Techniken bei Bedarf ein- und ausschalten lassen.
Ein weiteres Feature stellt ein konsequentes Logging dar. Damit im Fall eines Strom-aus-Szenarios möglichst wenig Informationen verloren gehen, sorgt ein Sync nach jedem geschriebenen Satz für ein sicheres Schreiben auf die SD-Karte. Das verringert auch die Wahrscheinlichkeit einer Korruption des Dateisystems.
Installation
Im Grunde genügt als System ein Raspbian Lite mit einer Reihe von Zusatzpaketen wie wiringPi für die GPIOs oder gammu für den SMS-Versand. Da aber die Installation doch eine ganze Reihe von manuellen Schritten umfasst, kommt der Raspbian-Netinstaller [3] ins Spiel. Er automatisiert den gesamten Installationsprozess und sorgt für einheitliche, reproduzierbare und konsistente Systeme.








