image

2., aktualisierte und erweiterte Auflage

Raspberry-Pi-Kochbuch

Simon Monk

Deutsche Übersetzung von Peter Klicman

image

Simon Monk

Lektorat: Dr. Michael Barabas

Übersetzung: Peter Klicmann

Aktualisierungen: Maik Schmidt

Korrektorat: Ursula Zimpfer

Satz: III-satz, www.drei-satz.de

Herstellung: Susanne Bröckelmann

Umschlaggestaltung: Michael Oréal, www.oreal.de

Druck und Bindung: M.P. Media-Print Informationstechnologie GmbH, 33100 Paderborn

Bibliografische Information Der Deutschen Nationalbibliothek Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.d-nb.de abrufbar.

ISBN:

Print 978-3-96009-033-5

PDF 978-3-96010-117-8

ePub 978-3-96010-118-5

mobi 978-3-96010-119-2

2. Auflage 2017

Dieses Buch erscheint in Kooperation mit O’Reilly Media, Inc. unter dem Imprint »O’REILLY«. O’REILLY ist ein Markenzeichen und eine eingetragene Marke von O’Reilly Media, Inc. und wird mit Einwilligung des Eigentümers verwendet.

Copyright © 2017 dpunkt.verlag GmbH

Wieblinger Weg 17

69123 Heidelberg

Authorized German translation of the English edition of Raspberry Pi Cookbook, 2nd Edition, ISBN 9781491939109 © 2016 Simon Monk

This translation is published and sold by permission of O’Reilly Media, Inc., which owns or controls all rights to sell the same.

Die vorliegende Publikation ist urheberrechtlich geschützt. Alle Rechte vorbehalten. Die Verwendung der Texte und Abbildungen, auch auszugsweise, ist ohne die schriftliche Zustimmung des Verlags urheberrechtswidrig und daher strafbar. Dies gilt insbesondere für die Vervielfältigung, Übersetzung oder die Verwendung in elektronischen Systemen.

Es wird darauf hingewiesen, dass die im Buch verwendeten Soft- und Hardware-Bezeichnungen sowie Markennamen und Produktbezeichnungen der jeweiligen Firmen im Allgemeinen warenzeichen-, marken- oder patentrechtlichem Schutz unterliegen.

Die Informationen in diesem Buch wurden mit größter Sorgfalt erarbeitet. Dennoch können Fehler nicht vollständig ausgeschlossen werden. Verlag, Autoren und Übersetzer übernehmen keine juristische Verantwortung oder irgendeine Haftung für eventuell verbliebene Fehler und deren Folgen. Alle Warennamen werden ohne Gewährleistung der freien Verwendbarkeit benutzt und sind möglicherweise eingetragene Warenzeichen. Der Verlag richtet sich im Wesentlichen nach den Schreibweisen der Hersteller. Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen. Kommentare und Fragen können Sie gerne an uns richten:

5 4 3 2 1 0

Inhalt

Vorwort zur zweiten Auflage

1Setup und Betrieb

1.1Ein Raspberry-Pi-Modell wählen

1.2Ein Gehäuse für den Raspberry Pi

1.3Auswahl eines Netzteils

1.4Eine Betriebssystem-Distribution wählen

1.5Eine MicroSD-Karte mit NOOBS beschreiben

1.6Das System anschließen

1.7Einen DVI- oder VGA-Monitor anschließen

1.8Einen Composite-Monitor oder Fernseher verwenden

1.9Die Bildgröße auf Ihrem Monitor anpassen

1.10Die Leistung maximieren

1.11Das Passwort ändern

1.12Den Pi direkt in ein Terminal booten

1.13Den Raspberry Pi herunterfahren

1.14Ein Raspberry-Pi-Kameramodul installieren

1.15Bluetooth nutzen

2Vernetzung

2.1Kabelgebundener Anschluss an ein Netzwerk

2.2Die IP-Adresse ermitteln

2.3Eine statische IP-Adresse einstellen

2.4Den Netzwerknamen eines Raspberry Pi einstellen

2.5Eine WLAN-Verbindung einrichten

2.6Anschluss per Konsolenkabel

2.7Den Pi entfernt über SSH steuern

2.8Den Pi entfernt per VNC steuern

2.9Den Pi entfernt per RDP steuern

2.10Filesharing in einem Mac-Netzwerk

2.11Den Pi-Screen auf dem Mac nutzen

2.12Einen Raspberry Pi als NAS (Network Attached Storage) nutzen

2.13Im Netzwerk drucken

3Betriebssystem

3.1Dateien grafisch verschieben

3.2Eine Terminal-Session starten

3.3In einem Terminal durch das Dateisystem navigieren

3.4Dateien oder Ordner kopieren

3.5Dateien oder Ordner umbenennen

3.6Eine Datei editieren

3.7Den Inhalt einer Datei ansehen

3.8Eine Datei ohne Editor erzeugen

3.9Ein Verzeichnis anlegen

3.10Dateien oder Verzeichnisse löschen

3.11Befehle mit Superuser-Rechten ausführen

3.12Dateizugriffsrechte verstehen

3.13Dateizugriffsrechte ändern

3.14Den Eigentümer einer Datei ändern

3.15Einen Screenshot erzeugen

3.16Software installieren mit apt-get

3.17Installierte Software mit apt-get löschen

3.18Python-Pakete per pip installieren

3.19Dateien über die Kommandozeile herunterladen

3.20Quellcode mit Git herunterladen

3.21Ein Programm oder Skript beim Booten automatisch ausführen

3.22Ein Programm oder Skript beim Booten automatisch als Service ausführen

3.23Ein Programm oder Skript in regelmäßigen Abständen automatisch ausführen

3.24Das Verzeichnissystem durchsuchen

3.25Die Kommandozeilen-Historie nutzen

3.26Die Prozessoraktivität überwachen

3.27Mit Archivdateien arbeiten

3.28Angeschlossene USB-Geräte auflisten

3.29Ausgaben der Befehlszeile in eine Datei umleiten

3.30Dateien verketten

3.31Pipes nutzen

3.32Die Ausgabe im Terminal unterbinden

3.33Programme im Hintergrund ausführen

3.34Befehls-Aliase anlegen

3.35Datum und Uhrzeit setzen

3.36Freien Speicherplatz auf der SD-Karte ermitteln

4Software

4.1Ein Mediacenter einrichten

4.2Office-Software auf dem Raspi nutzen

4.3Andere Browser installieren

4.4Einen Webcam-Server einrichten

4.5Einen Emulator für klassische Spielekonsolen ausführen

4.6Minecraft Pi Edition ausführen

4.7Einen Minecraft-Server ausführen

4.8Raspberry-Pi-Radiosender

4.9GIMP ausführen

4.10Internetradio

5Python-Grundlagen

5.1Zwischen Python 2 und Python 3 wählen

5.2Python-Programme mit IDLE editieren

5.3Die Python-Konsole nutzen

5.4Python-Programme über das Terminal ausführen

5.5Variablen

5.6Werte ausgeben

5.7Benutzereingaben einlesen

5.8Arithmetik

5.9Strings erzeugen

5.10Strings verketten (verbinden)

5.11Zahlen in Strings umwandeln

5.12Strings in Zahlen umwandeln

5.13Die Länge eines Strings bestimmen

5.14Die Position eines Strings in einem anderen String suchen

5.15Einen Teilstring extrahieren

5.16Einen Teilstring durch einen anderen ersetzen

5.17Einen String in Groß- oder Kleinbuchstaben umwandeln

5.18Befehle bedingt ausführen

5.19Werte vergleichen

5.20Logische Operatoren

5.21Anweisungen genau x-mal ausführen

5.22Befehle wiederholen, bis sich eine Bedingung ändert

5.23Aus einer Schleife ausbrechen

5.24Eine Funktion in Python definieren

6Python-Listen und -Dictionaries

6.1Eine Liste erzeugen

6.2Auf Elemente einer Liste zugreifen

6.3Die Länge einer Liste ermitteln

6.4Elemente zu einer Liste hinzufügen

6.5Elemente aus einer Liste entfernen

6.6Eine Liste durch Parsing eines Strings erzeugen

6.7Iteration über eine Liste

6.8Eine Liste durchzählen

6.9Eine Liste sortieren

6.10Eine Liste zerlegen

6.11Eine Funktion auf eine Liste anwenden

6.12Ein Dictionary anlegen

6.13Auf ein Dictionary zugreifen

6.14Elemente aus einem Dictionary entfernen

6.15Iteration über Dictionaries

7Python für Fortgeschrittene

7.1Zahlen formatieren

7.2Datum & Uhrzeit formatieren

7.3Mehrere Werte zurückliefern

7.4Eine Klasse definieren

7.5Eine Methode definieren

7.6Vererbung

7.7In eine Datei schreiben

7.8Aus einer Datei lesen

7.9Pickling

7.10Ausnahmebehandlung

7.11Module nutzen

7.12Zufallszahlen

7.13Webanfragen aus Python versenden

7.14Kommandozeilenargumente in Python

7.15Linux-Befehle aus Python heraus ausführen

7.16E-Mail aus Python heraus versenden

7.17Einen einfachen Webserver in Python entwickeln

7.18Mehrere Dinge gleichzeitig tun

7.19Nichts tun mit Python

7.20Python mit der Minecraft Pi Edition nutzen

8Computer Vision

8.1SimpleCV installieren

8.2Eine USB-Kamera für Computer Vision einrichten

8.3Das Raspberry-Pi-Kameramodul für Computer Vision nutzen

8.4Münzen zählen

8.5Gesichtserkennung

8.6Bewegungserkennung

8.7Optische Zeichenerkennung

9GPIO-Grundlagen

9.1Den GPIO-Anschluss verstehen

9.2Den Raspberry Pi bei der Arbeit mit dem GPIO-Anschluss schützen

9.3I2C einrichten

9.4Die I2C-Tools nutzen

9.5SPI einrichten

9.6PySerial installieren, um aus Python heraus auf den seriellen Port zuzugreifen

9.7Minicom zum Testen des seriellen Ports installieren

9.8Ein Steckbrett mit Schaltdrähten nutzen

9.9Ein Steckbrett mit einem Pi-Cobbler nutzen

9.10Einen Raspberry Squid nutzen

9.11Einen Raspberry-Pi-Squid-Button nutzen

9.125-V-Signale mit zwei Widerständen in 3,3V umwandeln

9.135-V-Signale mit einem Pegelwandler-Modul in 3,3V umwandeln

9.14Den Raspberry Pi mit Batterien betreiben

9.15Einen Raspberry Pi mit einem LiPo-Akku betreiben

9.16Erste Schritte mit dem Sense HAT

9.17Erste Schritte mit dem Explorer HAT Pro

9.18Erste Schritte mit dem RasPiRobot-Board

9.19Erste Schritte mit einem Pi-Plate-Prototyping-Board

9.20Ein HAT-Modul (Hardware At Top) entwickeln

9.21Das Pi Compute Module

9.22Der Pi Zero

10Hardware steuern

10.1Eine LED anschließen

10.2Die GPIO-Pins in sicherem Zustand verlassen

10.3Die Helligkeit einer LED steuern

10.4Einen Summton erzeugen

10.5Hochleistungs-Gleichstromgeräte mit einem Transistor schalten

10.6Ein Hochleistungsgerät mit einem Relais schalten

10.7Ein Hochspannungs-Wechselstromgerät steuern

10.8Eine Benutzerschnittstelle zum Ein- und Ausschalten von Komponenten

10.9Eine Benutzerschnittstelle für die PWM-Steuerung von LEDs und Motoren

10.10Die Farbe einer RGB-LED ändern

10.11Mit vielen LEDs arbeiten (Charlieplexing)

10.12Ein Analoginstrument als Anzeige nutzen

10.13Mit Interrupts programmieren

11Motoren

11.1Servomotoren steuern

11.2Servomotoren präzise steuern

11.3Eine große Anzahl von Servomotoren steuern

11.4Die Geschwindigkeit eines Gleichstrommotors steuern

11.5Die Drehrichtung eines Gleichstrommotors steuern

11.6Einen unipolaren Schrittmotor nutzen

11.7Einen bipolaren Schrittmotor nutzen

11.8Einen bipolaren Schrittmotor mit einem Schrittmotor-HAT steuern

11.9Ein RasPiRobot-Board zur Steuerung eines bipolaren Schrittmotors nutzen

11.10Einen einfachen Robot-Rover bauen

12Digitale Eingänge

12.1Einen Taster anschließen

12.2Etwas per Taster umschalten

12.3Einen Wipp- oder Schiebeschalter nutzen

12.4Einen Drei-Wege-Schalter nutzen

12.5Eine Taste entprellen

12.6Einen externen Pull-up-Widerstand nutzen

12.7Einen Drehgeber nutzen

12.8Eine Matrixtastatur nutzen

12.9Bewegungen erkennen

12.10Den Raspberry Pi um GPS erweitern

12.11Tastendruck abfangen

12.12Bewegungen der Maus abfangen

12.13Eine Echtzeituhr nutzen

13Sensoren

13.1Ohmsche Widerstände nutzen

13.2Licht messen

13.3Temperatur mit Thermistor messen

13.4Methan erkennen

13.5Eine Spannung messen

13.6Spannungen zu Messzwecken reduzieren

13.7Ohmsche Sensoren mit einem A/D-Wandler nutzen

13.8Temperatur mit einem A/D-Wandler messen

13.9Die CPU-Temperatur des Raspberry Pi messen

13.10Temperatur, Luftfeuchtigkeit und Luftdruck mit einem Sense HAT messen

13.11Temperatur messen per digitalem Sensor

13.12Beschleunigung messen

13.13Die IMU des Sense HAT nutzen

13.14Den magnetischen Norden mit dem Sense HAT bestimmen

13.15Magneten mit einem Reedschalter aufspüren

13.16Magneten mit dem Sense HAT aufspüren

13.17Entfernungen messen

13.18Berührungssensoren nutzen

13.19Sensorwerte ausgeben

13.20Daten auf einem USB-Flash-Laufwerk speichern

14Displays

14.1Ein vierstelliges LED-Display nutzen

14.2Nachrichten auf einer I2C-LED-Matrix ausgeben

14.3Das Matrix-Display des Sense HAT nutzen

14.4Nachrichten auf einem alphanumerischen LCD HAT ausgeben

14.5Nachrichten auf einem alphanumerischen LC-Display ausgeben

14.6Ein grafisches OLED-Display nutzen

14.7Adressierbare RGB-LED-Streifen nutzen

15Das Internet der Dinge

15.1GPIO-Ausgänge über eine Webschnittstelle steuern

15.2Sensorwerte auf einer Webseite ausgeben

15.3E-Mails und andere Nachrichten per IFTTT versenden

15.4Tweets senden per ThinkSpeak

15.5CheerLights

15.6Sensordaten an ThingSpeak senden

15.7Mit Dweet und IFTTT auf Tweets reagieren

16Arduino und Raspberry Pi

16.1Einen Arduino per Raspberry Pi programmieren

16.2Mit dem Arduino über den seriellen Monitor kommunizieren

16.3PyFirmata einrichten und einen Arduino von einem Raspberry Pi steuern

16.4Digitale Ausgänge des Arduino vom Raspberry Pi steuern

16.5PyFirmata mit der seriellen Schnittstelle (TTL-Pegel) nutzen

16.6Digitale Eingänge des Arduino mit PyFirmata einlesen

16.7Analoge Eingänge des Arduino mit PyFirmata einlesen

16.8Digitale Ausgänge (PWM) mit PyFirmata nutzen

16.9Einen Servo mit PyFirmata steuern

16.10Maßgeschneiderte serielle Kommunikation mit dem Arduino

16.11Maßgeschneiderte Kommunikation mit dem Arduino über I2C

16.12Kleine Arduinos mit dem Raspberry Pi nutzen

16.13Erste Schritte mit dem aLaMode-Board und einem Raspberry Pi

16.14Ein Arduino-Shield mit einem aLaMode-Board und einem Raspberry Pi nutzen

ATeile und Lieferanten

BPin-Belegungen

Index

Vorwort zur zweiten Auflage

Seit seiner Einführung im Jahre 2011 hat sich der Raspberry Pi gleichermaßen als sehr günstiger, Linux-basierter Computer sowie als Plattform für das Embedded-Computing etabliert. Er ist im Ausbildungsbereich ebenso beliebt wie bei Bastlern.

Seit der ersten Auflage dieses Buches wurden mehrere Millionen Raspberry Pi verkauft und eine Reihe neuer Raspberry Pis entwickelt. Einige Modelle wie das B+, A+ und das Pi 2 B+ verbessern den Leistungsumfang des Gerätes. Den Höhepunkt dieser Entwicklung bildet der Raspberry Pi 3 mit Vierkernprozessor sowie das Raspberry-Pi-Compute-Modul.

Diese Auflage wurde sorgfältig um die neuen Modelle des Raspberry Pi ergänzt sowie um die vielen Änderungen und Verbesserungen am Raspbian-Betriebssystem.

Darüber hinaus umfasst diese Auflage ein neues Kapitel zu Computer Vision und ein Kapitel mit Rezepten zum Internet der Dinge mit dem Raspberry Pi.

Sie können dieses Buch (wie jedes andere Buch auch) von vorne bis hinten durchlesen. Alternativ können Sie aber auch im Inhaltsverzeichnis oder im Index nach einem bestimmten Rezept suchen und sich diesem direkt widmen. Wenn Sie bei einem Rezept zusätzliche Dinge wissen müssen, finden Sie Verweise auf weiterführende Rezepte, genau wie bei einem normalen Kochbuch, in dem das Zubereiten einfacher Saucen beschrieben wird, die dann für aufwendigere Gerichte erforderlich sind.

Die Welt des Raspberry Pi dreht sich sehr schnell. In der sehr großen und aktiven Community werden ständig neue Interface-Boards und Softwarebibliotheken entwickelt. Neben vielen Beispielen, bei denen konkrete Interface-Boards genutzt werden oder spezielle Software zum Einsatz kommt, werden in diesem Buch auch Grundlagen erläutert, damit Sie besser verstehen, wie Sie neue Techniken nutzen können, wenn sich das Raspberry-Pi-Ökosystem weiterentwickelt.

Wie Sie sich denken können, enthält das Buch sehr viel Programmcode (meist in Form von Python-Programmen). Diese Programme sind alle Open Source und auf GitHub verfügbar. Einen entsprechenden Link finden Sie auf der Website zum Buch (http://www.oreilly.de/raspberrykochbuch).

Für die meisten softwarebasierten Rezepte benötigen Sie nur einen Raspberry Pi. Ich empfehle einen Raspberry Pi Modell 2 oder 3. Bei Rezepten, in denen zusätzliche Hardware mit dem Raspberry Pi gekoppelt wird, habe ich versucht, bereits vorhandene Module zu nutzen und mit Steckbrettern und Drahtbrücken zu arbeiten, um Lötarbeiten zu vermeiden.

Wer steckbrettbasierte Projekte dauerhaft nutzen will, dem empfehle ich Prototyping-Boards mit dem Layout von kleinen Steckbrettern, wie sie z.B. von Adafruit vertrieben werden. Auf diese Weise können Sie den Entwurf recht einfach in eine fest verlötete Lösung überführen.

Verwendete Konventionen

In diesem Buch werden die folgenden typografischen Konventionen verwendet:

Kursivschrift

Wird für neue Begriffe, URLs, E-Mail-Adressen, Dateinamen und Dateierweiterungen verwendet.

Nichtproportionalschrift

Wird für Programmlistings verwendet. Im normalen Fließtext werden damit Programmelemente wie Variablen- oder Funktionsnamen, Datenbanken, Datentypen, Umgebungsvariablen, Anweisungen und Schlüsselwörter hervorgehoben.

Nichtproportionalschrift fett

Wird für Befehle oder andere Eingaben verwendet, die Sie wortwörtlich eingeben müssen.

Nichtproportionalschrift kursiv

Wird für Text verwendet, der durch benutzereigene oder durch den Kontext bestimmte Werte ersetzt wird.

image

Mit diesem Symbol wird ein Tipp, ein Vorschlag oder ein allgemeiner Hinweis angezeigt.

image

Hiermit wird eine Warnung angezeigt.

image

Mit diesem Symbol wird auf ein Video zum betreffenden Abschnitt verwiesen.

Codebeispiele

Ergänzendes Material (Codebeispiele, Übungen etc.) steht unter http://www.oreilly.de/raspberrykochbuch zum Download bereit.

Dieses Buch soll Ihnen bei Ihrer Arbeit helfen. Den Code, den wir hier zeigen, dürfen Sie generell in Ihren Programmen und Dokumentationen verwenden. Sie müssen uns nicht um Genehmigung bitten, sofern Sie nicht große Teile des Codes reproduzieren. Wenn Sie zum Beispiel ein Programm schreiben, in dem mehrere Codeabschnitte aus diesem Buch genutzt werden, benötigen Sie dazu nicht unser Einverständnis. Falls Sie allerdings eine CD-ROM mit Codebeispielen aus O’Reilly-Büchern verkaufen oder verteilen möchten, müssen Sie sehr wohl eine entsprechende Erlaubnis einholen. Wenn Sie eine Frage mit einem Zitat aus diesem Buch und seinen Codebeispielen beantworten möchten, ist dazu keine Erlaubnis erforderlich, aber es ist nicht ohne Weiteres gestattet, große Teile unseres Textes oder Codes in eine eigene Produktdokumentation aufzunehmen.

Wir freuen uns über eine Quellenangabe, verlangen sie aber nicht unbedingt. Zu einer Quellenangabe gehören normalerweise der Titel, der Autor, der Verlag und die ISBN. Zum Beispiel: »Raspberry Pi Kochbuch, 2. Auflage, von Simon Monk (O’Reilly). Copyright 2017 Simon Monk, 978-3-96009-033-5.«

Wenn Sie das Gefühl haben, dass Sie unsere Codebeispiele über die Grenzen des Erlaubten hinaus einsetzen, schreiben Sie uns bitte eine E-Mail an permissions@oreilly.de.

Danksagungen

Wie immer danke ich meiner Frau Linda für ihre Geduld und Unterstützung.

Ich danke auch dem technischen Korrektor Duncan Amos für sein scharfes Auge, seinen Humor und seine Empfehlungen, die ohne Frage deutlich zur Qualität dieses Buches beigetragen haben.

Danke auch an das gesamte O’Reilly-Team, insbesondere für die Gastfreundlichkeit bei meinem Besuch im Büro in Cambridge. Und natürlich geht auch ein Dank an Nan Reinhardt für ihre Korrekturen.

KAPITEL 1

Setup und Betrieb

1.0Einführung

Wenn Sie einen Raspberry-Pi kaufen, erwerben Sie nur eine fertig bestückte Platine. Es ist weder ein Netzteil noch ein Betriebssystem enthalten.

In den Rezepten in diesem Kapitel wird beschrieben, wie Sie Ihren Raspberry Pi einrichten und einsatzbereit machen.

Da beim Raspberry Pi normale USB-Tastaturen und -Mäuse zum Einsatz kommen, ist der Großteil des Setups recht einfach, weshalb wir uns auf die Eigenheiten des Raspberry Pi konzentrieren wollen.

1.1Ein Raspberry-Pi-Modell wählen

Problem

Es gibt mehrere Modelle des Raspberry Pi und Sie sind nicht sicher, welches Sie nutzen sollen.

Lösung

Wenn Sie einen Raspberry Pi für den allgemeinen Gebrauch benötigen, sollten Sie einen Raspberry Pi 3 oder Pi 2 Modell B kaufen. Mit viermal so viel Speicher und einem Vierkernprozessor sind diese beiden für die meisten Aufgaben wesentlich besser geeignet als ein Pi Zero oder das Modell A+ mit ihren Einkernprozessoren. Raspberry Pi 3 Modell B hat den großen Vorteil eines integrierten WLAN-Adapters, sodass man keinen zusätzlichen USB-WLAN-Adapter benötigt.

Wenn Sie andererseits einen Raspberry Pi in einem Projekt nur für einen bestimmten Zweck einsetzen möchten, ist eventuell auch der Einsatz des Modell A+ oder Pi Zero durchaus eine Option, bei der Sie einige Euro sparen können.

Diskussion

In Abbildung 1-1 sind der Pi Zero, der A+ sowie der Pi 2 Modell B nebeneinander abgebildet.

image

Abbildung 1-1: Raspberry Pi Zero (links), A+ (Mitte) und Pi 2 Modell B (rechts)

Wie Sie in Abbildung 1-1 sehen, ist das Modell A+ kleiner als das Raspberry Pi 2 Modell B und verfügt über nur einen einzelnen USB-Anschluss und hat keinen Ethernetanschluss. Der Pi Zero spart Platz durch die Verwendung eines Mini-HDMI- sowie eines Micro-USB-Anschlusses und ist sogar noch kleiner. Wenn Sie Tastatur, Monitor und Maus an den Pi Zero anschließen wollen, benötigen Sie entsprechende Adapter.

Die Unterschiede zwischen den bisherigen Modellen sind in Tabelle 1-1 zusammengefasst.

Tabelle 1-1: Raspberry-Pi-Modelle

image

Ältere (abgekündigte) Raspberry-Pi-Modelle sind immer noch nützlich. Sie besitzen zwar nicht die Leistung des neuesten Raspberry Pi 3 Modell B, doch in vielen Fällen spielt das keine Rolle.

In Rezept 9.21 lernen wir das Raspberry Pi Compute-Modul kennen, das speziell dafür entwickelt wurde, den Raspberry Pi in ein Produkt zu integrieren.

Siehe auch

Weitere Informationen zu den Raspberry-Pi-Modellen finden Sie unter http://de.wikipedia.org/wiki/Raspberry_PI. Die geringen Kosten des Pi Zero machen ihn ideal geeignet, um ihn in Elektronikprojekten zu verwenden (Rezept 9.22).

1.2Ein Gehäuse für den Raspberry Pi

Problem

Sie benötigen ein Gehäuse für Ihren Raspberry Pi.

Lösung

Der Raspberry Pi wird normalerweise ohne ein Gehäuse geliefert. Dadurch wird er anfälliger für Beschädigungen, denn auf der Unterseite der Platine liegen verschiedene Leitungen frei, die schnell zu einem Kurzschluss führen können, wenn der Raspberry Pi mit Metall in Berührung kommt.

Es ist daher eine gute Idee, Ihren Raspberry Pi durch ein Gehäuse zu schützen. Wenn Sie die GPIO-Pins des Raspberry Pi nutzen wollen, bietet das PiBow Coupé (Abbildung 1-2) ein schönes und praktisches Design.

image

Abbildung 1-2: Raspberry Pi 2 in einem PiBow Coupé

Diskussion

Sie können aus einer Vielzahl von Gehäusevarianten wählen:

Welches Gehäuse Sie kaufen, ist im Wesentlichen eine Frage des persönlichen Geschmacks. Dennoch sollten Sie zwei Dinge beachten:

Siehe auch

Bei Adafruit findet sich eine schöne Auswahl an Raspberry-Pi-Gehäusen (http://bit.ly/1aDT3qm).

Viele verschiedene Gehäusedesigns finden Sie auch bei den anderen Raspberry-Pi-Anbietern und bei eBay.

1.3Auswahl eines Netzteils

Problem

Sie müssen ein Netzteil für Ihren Raspberry Pi auswählen.

Lösung

Ein für den Raspberry Pi geeignetes Netzteil muss laut Spezifikation eine stabilisierte Gleichspannung von 5V liefern. Wie viel Strom das Netzteil liefern muss, hängt sowohl vom Raspberry-Pi-Modell, als auch von den angeschlossenen Peripheriegeräten ab. Sie sollten ein Netzteil wählen, das die Anforderungen des Raspberry Pi problemlos meistert, wobei 700mA das Minimum ist.

Wenn Sie das Netzteil von der gleichen Quelle beziehen wie den Raspberry Pi, sollte Ihnen der Anbieter Auskunft darüber geben können, ob es für den Raspberry Pi geeignet ist.

Wenn Sie einen WLAN-Adapter oder andere USB-Geräte nutzen möchten, die deutlich mehr Strom verbrauchen, sollten Sie ein Netzteil mit 1,5A oder sogar 2A verwenden. Meiden Sie außerdem billige Netzteile, die die 5V nicht zuverlässig oder genau bereitstellen.

Diskussion

Wenn Ihr Smartphone ein Ladegerät mit einem Micro-USB-Anschluss hat, liefert es höchstwahrscheinlich auch 5V (was Sie allerdings prüfen sollten). Die einzige Frage ist die, ob auch genügend Strom bereitgestellt wird.

Wenn dies nicht der Fall ist, kann das unangenehme Folgen haben:

Suchen Sie also nach einem Netzteil, das 700 mA (oder mehr) liefert. Falls die Leistung in Watt (W) statt mA angegeben wird, teilen Sie diesen Wert durch 5, um den mA-Wert zu ermitteln. Ein Netzteil mit 5V/10Wkann also bis zu 2A (2.000 mA) liefern.

Ein Netzteil mit einem Maximalstrom von z.B. 2A verbraucht nicht mehr Elektrizität als ein 700mA-Netzteil. Der Raspberry Pi zieht sich einfach genau so viel Strom, wie er benötigt.

In Abbildung 1-3 habe ich den Strom gemessen, den ein Raspberry Pi Modell B Revision 2 im Vergleich zu einem Raspberry Pi 2 Modell B benötigt.

Die neueren Raspberry Pis (A+, B+ oder Raspberry Pi 2) sind wesentlich energieeffizienter als die älteren Modelle, doch unter hoher Last und mit vielen angeschlossenen Peripheriegeräten bleibt die Stromaufnahme ähnlich hoch.

Wie Sie sehen können, steigt der Stromverbrauch nur selten über 500mA an. Allerdings ist der Prozessor hier auch nicht wirklich ausgelastet. Wenn Sie ein HD-Video abspielen, steigt der Stromverbrauch deutlich an. Bei Netzteilen sorgt man also besser für ausreichende Reserven.

image

Abbildung 1-3: Stromverbrauch des Raspberry Pi während des Bootens

Siehe auch

Auf http://www.pi-supply.com/ können Sie ein Netzteil kaufen, das sich ausschaltet, wenn der Raspberry Pi heruntergefahren wird.

1.4Eine Betriebssystem-Distribution wählen

Problem

Für den Raspberry Pi stehen zahlreiche verschiedene Distributionen zur Verfügung. Sie sind nicht sicher, welche Sie wählen sollen.

Lösung

Die Antwort auf diese Frage hängt davon ab, für welchen Zweck Sie Ihren Raspberry Pi nutzen möchten.

Bei einer allgemeinen Nutzung als Computer oder beim Einsatz in Hardwareprojekten sollten Sie Raspbian, die offizielle Standarddistribution für den Raspberry Pi, nutzen.

Wenn Sie den Raspberry Pi als Mediacenter nutzen möchten, können Sie aus einer Reihe von Distributionen wählen, die speziell für diesen Zweck entwickelt wurden (Rezept 4.1).

In diesem Buch nutzen wir fast ausschließlich die Raspbian-Distribution, auch wenn die meisten Rezepte mit jeder Debian-basierten Distribution funktionieren.

Diskussion

MicroSD-Karten sind nicht besonders teuer, also besorgen Sie sich mehrere und probieren Sie verschiedene Distributionen aus. Dazu sollten Sie eigene Dateien auf einem USB-Stick vorhalten, damit Sie diese nicht ständig auf jede MicroSD-Karte kopieren müssen.

Beachten Sie, dass Sie bei den folgenden Rezepten, bei denen eine SD-Karte beschrieben wird, einen Computer mit SD-Kartenleser benötigen (er ist bei vielen Laptops bereits vorhanden) oder einen günstigen USB-SD-Kartenleser kaufen müssen.

Siehe auch

Liste der bekanntesten Raspberry-Pi-Distributionen (http://www.raspberrypi.org/downloads).

1.5Eine MicroSD-Karte mit NOOBS beschreiben

Problem

Sie möchten eine MicroSD-Karte mit NOOBS (»New Out of the Box Software«) beschreiben.

Lösung

NOOBS ist die mit Abstand einfachste Möglichkeit, Ihren Raspberry Pi mit einem Betriebssystem zu versorgen

Laden Sie die NOOBS-Archivdatei von http://www.raspberrypi.org/downloads herunter.

Anschließend entpacken Sie die Datei und kopieren den Inhalt des entpackten Ordners auf die SD-Karte. Beachten Sie, dass das Archiv in einen Ordner namens NOOBS_v1_9_2 (oder mit einem ähnlichen Namen) extrahiert wird. Der Inhalt dieses Ordners muss in das Stammverzeichnis der MicroSD-Karte kopiert werden, nicht der Ordner selbst.

Legen Sie die SD-Karte mit den extrahierten NOOBS-Dateien in den Raspberry Pi ein und schalten Sie den Rechner an. Während des Bootens erscheint das Fenster aus Abbildung 1-4. In diesem Fenster wählen Sie Raspbian und klicken dann auf den Install-Button.

Wenn Sie NOOBS auf einem Modell A+ verwenden, erhalten Sie eine kürzere Liste von Auswahlmöglichkeiten, da nur die Distributionen für diese vereinfachte Plattform angezeigt werden.

image

Abbildung 1-4: NOOBS-Startseite

Sie erhalten eine Warnung, dass die SD-Karte überschrieben wird (und das ist auch gut so), und während die Distribution auf der SD-Karte installiert wird, wird eine Fortschrittsanzeige mit hilfreichen Informationen über die Distribution (Abbildung 1-5) angezeigt.

Sobald das Kopieren der Dateien abgeschlossen ist, wird die Erfolgsmeldung Image applied successfully ausgegeben. Wenn Sie die Return-Taste drücken, wird automatisch die grafische Oberfläche LXDE gestartet, und Sie können die neue Installation konfigurieren.

Sobald der Rechner läuft, sollten Sie als Erstes über das Internet eine Verbindung mit dem Raspberry Pi herstellen (Rezept 2.1 und Rezept 2.5) und Ihr System auf den neuesten Stand bringen. Öffnen Sie dazu ein Terminal und geben Sie die folgenden Befehle ein:

$ sudo apt-get update

$ sudo apt-get upgrade

Das kann einige Zeit dauern. Das Terminal können Sie unter LXDE über das kleine Bildschirm-Icon, das Sie am linken oberen Bildschirmrand finden, starten.

image

Abbildung 1-5: NOOBS überschreibt die MicroSD-Karte

Diskussion

Damit NOOBS auf einer MicroSD-Karte installiert werden kann, muss diese im FAT32-Format formatiert sein. Die meisten SD- und MicroSD-Karten werden FAT32-formatiert ausgeliefert. Wenn Sie eine alte Karte wiederverwenden, müssen Sie die betriebssystemeigenen Tools zur Formatierung von Wechselmedien nutzen.

Der Typ der verwendeten MicroSD-Karte bestimmt auch, wie schnell Ihr Raspberry Pi läuft, sobald das Betriebssystem installiert ist. Halten Sie nach MicroSD-Karten vom Typ »Class 10« Ausschau.

Siehe auch

Weitere Informationen zur Installation eines Betriebssystems mit NOOBS sowie weiterführende Informationen zu den verschiedenen verfügbaren Distributionen finden Sie auf http://www.raspberrypi.org/help/videos.

1.6Das System anschließen

Problem

Sie haben alles, was Sie für Ihren Raspberry Pi benötigen, und möchten ihn nun endlich anschließen.

Lösung

Solange Sie Ihren Raspberry Pi nicht in ein Projekt einbetten oder als Mediacenter nutzen, müssen Sie eine Tastatur, eine Maus, einen Monitor und, wenn Sie keinen Raspberry Pi 3 nutzen, möglicherweise einen WLAN-Adapter anschließen.

Abbildung 1-6 zeigt ein typisches Raspberry-Pi-System.

image

Abbildung 1-6: Ein typisches Raspberry-Pi-System

Diskussion

Der Raspberry Pi kann mit nahezu jeder Tastatur und jeder Maus arbeiten, ganz egal ob mit Kabel oder drahtlos. Die Ausnahme sind manche drahtlose Bluetooth-Tastaturen und -Mäuse, die mit dem Raspberry Pi nicht funktionieren.

Wenn Sie einen älteren Raspberry Pi oder ein Modell A oder A+ besitzen oder Ihnen aus anderen Gründen die USB-Anschlüsse ausgehen, benötigen Sie zusätzlich noch einen USB-Hub.

Siehe auch

Der offizielle Raspberry Pi Quick Start Guide (http://bit.ly/1ju8usM).

1.7Einen DVI- oder VGA-Monitor anschließen

Problem

Ihr Monitor besitzt keinen HDMI-Anschluss, aber Sie möchten ihn mit Ihrem Raspberry Pi nutzen.

Lösung

Viele Nutzer stehen vor eben diesem Problem. Glücklicherweise gibt es Adapter für Monitore zu kaufen, die einen DVI- oder VGA-Eingang, aber keinen HDMI-Anschluss besitzen.

DVI-Adapter sind die einfachsten und günstigsten. Man findet sie für weniger als 5 Euro, wenn man nach »HDMI DVI Adapter« sucht.

Diskussion

Die Verwendung von VGA-Adaptern ist schwieriger, da hierfür eine Elektronik benötigt wird, die die Signale von digital in analog umwandelt. Der offizielle Adapter heißt Pi-View und ist überall dort erhältlich, wo auch der Raspberry Pi vertrieben wird. Pi-View hat den Vorteil, dass er getestet wurde und tatsächlich mit dem Raspberry Pi genutzt werden kann. Im Internet findet man günstigere Alternativen, die aber häufig nicht funktionieren.

Siehe auch

Das Embedded Linux Wiki (http://elinux.org/Main_Page) gibt Tipps, worauf man bei einem Adapter achten muss.

1.8Einen Composite-Monitor oder Fernseher verwenden

Problem

Der Text auf Ihrem niedrig auflösenden Composite-Monitor ist kaum lesbar. Sie müssen die Auflösung des Raspberry Pi für den kleinen Bildschirm anpassen.

Lösung

Der Raspberry Pi besitzt zwei Arten von Videoausgängen: HDMI und Composite Video. Ältere Modelle hatten separate Ausgänge für Audio und Composite Video. Neuere Modelle haben einen kombinierten Ausgang, für den Sie ein spezielles Kabel benötigen. HDMI bietet dabei die deutlich bessere Qualität. Wenn Sie den Composite-Anschluss als Hauptbildschirm nutzen möchten, sollten Sie das vielleicht noch mal überdenken.

Falls Sie einen solchen Bildschirm nutzen, z.B. weil Sie einen wirklich kleinen Bildschirm benötigen, müssen Sie einige Anpassungen vornehmen, damit die Videoausgabe auf den Bildschirm passt. Dazu sind einige Änderungen in der Datei /boot/config.txt erforderlich. Sie können diese Datei auf dem Raspberry Pi ändern, indem Sie in einem Terminal den folgenden Befehl eingeben:

$ sudo nano /boot/config.txt

Wenn Sie den Text nicht lesen können oder keinen HDMI-Monitor besitzen, können Sie die SD-Karte auch aus dem Raspberry Pi nehmen, sie in Ihren Computer stecken und dort editieren. Die Datei befindet sich im Stammverzeichnis der SD-Karte und Sie können sie mit dem Texteditor Ihres PCs bearbeiten.

Sie müssen die Auflösung Ihres Bildschirms kennen. Bei vielen kleinen Bildschirmen liegt sie bei 320x320 Pixeln. Suchen Sie in der Datei nach den folgenden beiden Zeilen:

#framebuffer_width=1280

#framebuffer_height=720

Entfernen Sie die beiden #-Zeichen am Anfang der Zeilen und ändern Sie die beiden Werte für die Breite (framebuffer_width) und Höhe (framebuffer_height) Ihres Bildschirms. Im folgenden Beispiel wurden die Zeilen für eine Auflösung von 320 x 320 angepasst:

framebuffer_width=320

framebuffer_height=240

Speichern Sie die Datei und starten Sie den Raspberry Pi neu. Nun sollten Sie alles wesentlich besser lesen können. Wahrscheinlich werden Sie nun aber einen großen Rahmen auf dem Bildschirm sehen. Wie man dies korrigiert, wird in Rezept 1.9 erläutert.

Diskussion

Es sind viele günstige Überwachungsmonitore erhältlich, die eine ideale Ergänzung zum Raspberry Pi darstellen können, z.B. beim Herstellen einer Retro-Spielekonsole (Rezept 4.5). Allerdings verfügen diese Monitore häufig nur über eine sehr geringe Auflösung.

Siehe auch

Eine weitere Anleitung zur Nutzung von Composite-Monitoren finden Sie in diesem Adafruit-Tutorial (http://bit.ly/adafruit-learning).

Rezept 1.7 und Rezept 1.9 zeigen außerdem, wie das Bild eingestellt werden kann, wenn der HDMI-Ausgang zum Einsatz kommt.

1.9Die Bildgröße auf Ihrem Monitor anpassen

Problem

Wenn Sie einen Raspberry Pi zum ersten Mal an einen Monitor anschließen, ist ein Teil des Textes möglicherweise nicht lesbar, weil er über die Grenzen des Bildschirms hinausragt, oder es kann passieren, dass beim Bild nicht der gesamte Platz auf dem Bildschirm genutzt wird.

Lösung

Wenn der Text über den Bildschirm hinausragt, nutzen Sie raspi-config, um den overscan abzuschalten.

Dazu öffnen Sie ein Terminal und starten raspi-config mit dem folgenden Befehl:

$ sudo raspi-config

Scrollen Sie mit den Cursortasten bis zur Option overscan und deaktivieren Sie den Overscan (Abbildung 1-7).

Falls Ihr Problem in einem großen schwarzen Rand rund um das Bild besteht, können Sie diesen reduzieren (und vielleicht auch ganz eliminieren), indem Sie die Datei /boot/config.txt mit dem folgenden Befehl editieren:

$ sudo nano /boot/config.txt

image

Abbildung 1-7: Wahl der Overscan-Option

Suchen Sie nach dem Abschnitt, der dem Overscan gewidmet ist. Die vier Zeilen, die Sie ändern müssen, befinden sich in der Mitte von Abbildung 1-8.

image

Abbildung 1-8: Overscan anpassen

Damit diese Zeilen wirksam werden, müssen Sie zuerst das Kommentarzeichen # am Anfang jeder Zeile entfernen.

Dann müssen Sie die Einstellungen so lange testen, bis der Bildschirm des Monitors optimal genutzt wird. Beachten Sie, dass es sich bei den vier Zahlen um negative Zahlen handeln muss. Beginnen Sie damit, alle Werte auf -20 zu setzen. Das erhöht den genutzten Bildschirmbereich.

Diskussion

Den Raspberry Pi immer wieder neu starten zu müssen, damit die Änderungen angezeigt werden, ist etwas lästig. Glücklicherweise werden Sie diese Prozedur nur einmal durchführen müssen. Viele Monitore und Fernseher funktionieren aber auch ohne Anpassungen ausgezeichnet.

Siehe auch

Wesentlich umfassendere Informationen zu raspi-config finden Sie unter http://elinux.org/RPi_raspi-config.

1.10Die Leistung maximieren

Problem

Ihr Raspberry Pi scheint sehr langsam zu sein. Sie wollen ihn daher übertakten, um ihn zu beschleunigen.

Lösung

Einen Raspberry Pi 2 oder 3 mit Vierkernprozessor werden Sie sehr wahrscheinlich nicht als besonders langsam empfinden, aber die älteren Raspberry Pis mit nur einem Kern sind schon recht träge.

Sie können die Taktfrequenz eines Raspberry Pi erhöhen, damit er etwas schneller läuft. Dadurch erhöht sich aber der Stromverbrauch ein wenig und er wird auch etwas wärmer (siehe die nachfolgende Diskussion).

Die hier beschriebene Übertaktungsmethode wird dynamisches Übertakten genannt, weil sie die Temperatur des Raspberry Pi überwacht und den Takt automatisch wieder verringert, wenn er zu heiß wird.

Um Ihren Pi zu übertakten, öffnen Sie ein Terminal und starten raspi-config wie folgt:

$ sudo raspi-config

Wählen Sie die Option overclock im Menü und es erscheinen die Übertaktungsoptionen wie in Abbildung 1-9.

image

Abbildung 1-9: Übertaktungsoptionen

Wählen Sie die gewünschte Option. Wenn Sie feststellen, dass der Raspberry Pi instabil wird und sich unerwartet aufhängt, müssen Sie zu einer konservativeren Option wechseln oder die Übertaktung über die Option None wieder ganz deaktivieren. Zur Drucklegung des Buches war es noch nicht möglich, den Raspberry Pi 3 mittels raspi-config zu übertakten.

Diskussion

Die Leistungssteigerung durch Übertaktung kann beachtlich sein. Um diese zu messen, habe ich einen Raspberry Pi Modell B Revision 2 ohne Gehäuse bei einer Umgebungstemperatur von 15 Grad Celsius verwendet.

Als Testprogramm habe ich das folgende Python-Skript genutzt. Es bringt nur den Prozessor an seine Grenzen, ist für andere Dinge, die sich auf dem Computer abspielen (Beschreiben der SD-Karte, Grafik usw.), aber nicht repräsentativ. Doch es bietet einen guten Anhaltspunkt für die reine CPU-Performance, wenn die Auswirkungen des Übertaktens auf dem Raspberry Pi getestet werden sollen.

import time

def factorial(n):

if n == 0:

return 1

else:

return n * factorial(n-1)

before_time = time.clock()

for i in range(1, 10000):

factorial(200)

after_time = time.clock()

print(after_time - before_time)

Die Ergebnisse dieses Tests sehen Sie in Tabelle 1-2.

Tabelle 1-2: Übertakten

image

Wie Sie sehen, erhöht sich die Performance um 33%, was aber mit einem höheren Stromverbrauch und einer geringfügig höheren Temperatur bezahlt werden muss.

Ein gut belüftetes Gehäuse hilft, den Raspberry Pi mit Höchstgeschwindigkeit laufen zu lassen. Es gab auch Bemühungen, den Raspberry Pi mit einer Wasserkühlung auszustatten, was ich aber ehrlich gesagt albern finde.

Siehe auch

Weitere Informationen zu raspi-config finden Sie unter http://elinux.org/RPi_raspi-config.

1.11