Schweitzer Fachinformationen
Wenn es um professionelles Wissen geht, ist Schweitzer Fachinformationen wegweisend. Kunden aus Recht und Beratung sowie Unternehmen, öffentliche Verwaltungen und Bibliotheken erhalten komplette Lösungen zum Beschaffen, Verwalten und Nutzen von digitalen und gedruckten Medien.
Egal ob manuell oder autonom - ein Fahrzeug besteht in der Regel aus mindestens einem Motor, der für die Bewegung zuständig ist. Meist sorgt ein zweiter Motor für die Richtungsänderung, und damit lässt sich schon mal experimentell starten. Für das Umsetzen einer ersten Motorschaltung über die GPIO-Schnittstelle des Raspberry Pi ist es empfehlenswert, diese Motoranschlüsse mithilfe eines Steckboards zunächst über einfache LEDs sozusagen zu emulieren, um etwaige Fehler im Schaltungsdesign von vornherein aufzuspüren. Auch ist so eine Motorersatzschaltung verhältnismäßig schnell aufgebaut, um mal schnell das Shell-Skript oder Python-Code mithilfe der GPIO-Schnittstelle zu testen, ohne den teuren Steppermotor zu beschädigen.
Zum Einstieg in dieses Projekt wird die erste Schaltung zunächst auf dem Steckboard umgesetzt, was gerade für Einsteiger recht bequem ist, da es erst einmal ohne löten geht. In diesem Schritt wird ein GPIO-Anschluss auf die Plusleitung des Steckboards gelegt, der sich anschließend per Shell-Befehl schalten lässt. Sie haben damit einen einfachen Lichtschalter per Software realisiert.
Welcher GPIO-Anschluss ist der richtige? Grundsätzlich sind sämtliche Anschlüsse schaltbar, doch um beispielsweise das Skript oder das Programm so flexibel wie möglich zu halten, sollten Sie primär GPIO-Pins nutzen, die auf allen Raspberry-Pi-Modellen gleich implementiert sind. Dies gilt umso mehr, wenn Sie daran denken, den Quelltext für Ihre Skripte und Programme im Internet weiterzugeben oder selbst unterschiedliche Raspberry-Pi-Revisionen zu betreiben.
Achtung -Vorwiderstand für LED-Einsatz zwingend notwendig!
LEDs (Licht emittierende Dioden) dürfen nie direkt an die Stromversorgung angeschlossen werden. Bei einem direkten Anschluss sollte immer mindestens ein Vorwiderstand von 200 bis 300 O vorgeschaltet werden, damit der Strom auf einen zulässigen Wert begrenzt ist und die LED auch funktionsfähig bleibt.
Da für die Steuerung der Motoren in einem späteren Projekt ein ULN2803A-IC (NPN Darlington-Array) zum Einsatz kommt, weil es intern bereits die nötigen Widerstände in seiner Transistorschaltung integriert hat, wird dieser IC auch in diesem Beispiel für die LED-Lampen verwendet. Liegt bei dem ULN2803A-IC an den einzelnen acht Eingängen ein Signal an, wird der Schaltkreis mit der Masse geschlossen und nach dem entsprechenden Ausgang geschaltet.
Hierbei müssen Sie nur beachten, dass Sie die Masse von Eingang und Ausgang zusammenlegen, falls Eingang und Ausgang mal unterschiedliche Versorgungsspannungen verwenden. In der schematischen Darstellung sind vier LED-Dioden an den ULN2803-NPN angeschlossen, die sich jeweils per GPIO schalten lassen.
Bild 2.1: Schematische Darstellung der Schaltung mit der Steckboard-Emulation Fritzing.
Im nächsten Schritt setzen Sie die Schaltung auf dem Steckboard um. Dabei merken Sie schnell, dass das Steckboard zwar groß wirkt, es aber beim Bestücken der Widerstände und LEDs schnell eng zugeht. Der Grund ist der praktische Umstand, dass jede Leiterbahn schon mit den Nachbarpins verdrahtet ist. Wenn Sie eine Diode oder einen Widerstand mit beiden Beinchen in eine Reihe stecken, passiert erst mal gar nichts, da kein bzw. ein geringer Stromfluss durch die Diode fließt.
Das Ziel ist, auf dem Steckboard einen Stromkreis zu kreieren. Die fertige Schaltung haben wir auf dem Steckboard aus Platzgründen mit zwei LEDs an zwei Eingängen realisiert, was für Demonstrationszwecke völlig ausreicht.
Bild 2.2: Erfolgreich: Die beiden LEDs lassen sich erfolgreich mit dem IC gekoppelt über die beiden GPIO-Anschlüsse steuern.
In dieser Beispielschaltung wird das Steckboard wie folgt mit dem Raspberry Pi verbunden:
Die Ausgänge des ULN2803A werden jeweils mit einem Widerstand verbunden (200 O), das zweite Beinchen des Widerstands geht an die Kathode der LED. Wie herum der Widerstand aufgesteckt wird, ist egal, die Polung spielt bei Widerständen keine Rolle.
Die Anode der beiden LEDs wird mit der 5-V-Stromversorgung sowie mit Pin 15 des ULN2803 verbunden. Nun ist die Schaltung komplett, auf dem Schaltplan stellt sich diese wie folgt dar:
Bild 2.3: Schaltplan: Hier werden nur zwei der verfügbaren acht Eingänge genutzt, um die beiden LEDs unabhängig voneinander schalten zu können.
Im nächsten Schritt können Sie die Schaltung in der Praxis testen. Dafür nehmen Sie per SSH mit dem Raspberry Pi Verbindung auf und prüfen auf der Konsole die beiden GPIO-Anschlüsse, die Sie für die LEDs reserviert haben. In diesem Beispiel wurden dafür GPIO23 und GPIO24 verwendet.
Grundsätzlich werden die GPIO-Ausgänge des Raspberry Pi über virtuelle Dateien bzw. über deren Dateimanipulation gesteuert. Vereinfacht bedeutet dies: Steht in einer solchen Steuerdatei der Wert 0, ist der Schalter geschlossen, und es fließt kein Strom, steht hingegen dort der Wert 1, ist der Stromkreis geschlossen, und die angeschlossene Schaltung wird aktiviert.
0
1
Bild 2.4: Nach dem »Aktivieren« des GPIO-Pins steht im Verzeichnis /sys/class/gpio die entsprechende Steuerdatei zur Verfügung.
/sys/class/gpio
Die virtuellen Dateien für den GPIO-Pfostenstecker finden Sie im Verzeichnis /sys/class/gpio. Mit dem Kommando
ls /sys/class/gpio
stellen Sie fest, dass sich dort die Dateien export und unexport befinden. Der Trick ist hier zunächst, den oder die gewünschten GPIO-Pins auf dem Raspberry Pi zu aktivieren, dies erledigen Sie mit dem Eintragen der entsprechenden GPIO-Nummer in die export-Datei. Dadurch wird beispielsweise GPIO24 und GPIO23 mitgeteilt, dass sie womöglich bald genutzt werden:
export
unexport
sudo echo "24" > /sys/class/gpio/export
sudo echo "23" > /sys/class/gpio/export
Nun verwenden wir die vorhandene Schaltung mit den beiden LEDs an GPIO23 und GPIO24, die an Pin 17 und Pin 18 auf dem Raspberry Pi gekoppelt sind.
Grundsätzlich kann ein GPIO-Anschluss auf dem Raspberry als Ausgang, aber auch als Eingang genutzt werden. In diesem Fall ist der Raspberry der Aktor, denn wir wollen etwas einschalten: Um die erste Diode dauerhaft einzuschalten, müssen Sie beide GPIO-Pins zunächst als Ausgang definieren:
sudo echo "out" > /sys/class/gpio/gpio23/direction
sudo echo "out" > /sys/class/gpio/gpio24/direction
Im umgekehrten Fall - beispielsweise wenn an dem GPIO-Anschluss ein Sensor angebracht wäre und Sie den Wert im Raspberry Pi weiterverarbeiten wollten - würden Sie den Anschluss als Eingang definieren und stattdessen
sudo echo "in" > /sys/class/gpio/gpio23/direction
in die Konsole eingeben. Die oben definierten GPIO-Anschlüsse 23 und 24 liegen auf 0 V, der Stromkreis ist also noch nicht geschlossen, und die gekoppelten LEDs leuchten nicht. Um diese zu schalten, nutzen Sie die Befehle:
sudo echo "1" > /sys/class/gpio/gpio23/value
sudo echo "1" > /sys/class/gpio/gpio24/value
Hier tragen Sie jeweils den Wert 1 in die Datei mit der Bezeichnung value ein. In diesem Fall werden nun sowohl Pin 16 als auch Pin 18 mit Strom versorgt, die beiden LEDs sollten jetzt dauerhaft leuchten. Um die LEDs wieder abzuschalten, setzen Sie den Pegel von HIGH auf LOW. Dies erledigen Sie, indem Sie einfach statt der "1" den Wert "0" in die value-Datei des entsprechenden GPIO-Verzeichnisses schreiben:
value
"1"
"0"
sudo echo "0" > /sys/class/gpio/gpio23/value
sudo echo "0" > /sys/class/gpio/gpio24/value
Für das einmalige Experimentieren auf der Kommandozeile macht dies eine Zeit lang Spaß, auf Dauer jedoch sind lange Kommandozeilenbefehle lästig und fehleranfällig.
Bild 2.5: Vier Befehle pro genutztem GPIO-Anschluss sind notwendig, um diesen für die Schaltung ordnungsgemäß zu präparieren.
Deshalb ist es sinnvoll, sämtliche bzw. zumindest die benötigten virtuellen Dateien der entsprechenden GPIOs bereits beim Systemstart des Raspberry Pi automatisch zu starten. Erstellen Sie einfach ein Shell-Skript mit der Bezeichnung gpiostart.sh mit folgendem Inhalt:
gpiostart.sh
#!/bin/sh
# Roboter mit Raspberry Pi
echo "23" > /sys/class/gpio/export
echo "24" > /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio23/direction
echo "out" > /sys/class/gpio/gpio24/direction
chmod 666 /sys/class/gpio/gpio23/value
chmod...
Dateiformat: ePUBKopierschutz: Wasserzeichen-DRM (Digital Rights Management)
Systemvoraussetzungen:
Das Dateiformat ePUB ist sehr gut für Romane und Sachbücher geeignet - also für „fließenden” Text ohne komplexes Layout. Bei E-Readern oder Smartphones passt sich der Zeilen- und Seitenumbruch automatisch den kleinen Displays an. Mit Wasserzeichen-DRM wird hier ein „weicher” Kopierschutz verwendet. Daher ist technisch zwar alles möglich – sogar eine unzulässige Weitergabe. Aber an sichtbaren und unsichtbaren Stellen wird der Käufer des E-Books als Wasserzeichen hinterlegt, sodass im Falle eines Missbrauchs die Spur zurückverfolgt werden kann.
Weitere Informationen finden Sie in unserer E-Book Hilfe.
Dateiformat: PDFKopierschutz: Wasserzeichen-DRM (Digital Rights Management)
Das Dateiformat PDF zeigt auf jeder Hardware eine Buchseite stets identisch an. Daher ist eine PDF auch für ein komplexes Layout geeignet, wie es bei Lehr- und Fachbüchern verwendet wird (Bilder, Tabellen, Spalten, Fußnoten). Bei kleinen Displays von E-Readern oder Smartphones sind PDF leider eher nervig, weil zu viel Scrollen notwendig ist. Mit Wasserzeichen-DRM wird hier ein „weicher” Kopierschutz verwendet. Daher ist technisch zwar alles möglich – sogar eine unzulässige Weitergabe. Aber an sichtbaren und unsichtbaren Stellen wird der Käufer des E-Books als Wasserzeichen hinterlegt, sodass im Falle eines Missbrauchs die Spur zurückverfolgt werden kann.