Raspberry Pi 3

05.04.2018

Der Raspberry Pi bietet vielfältige Einsatzmöglichkeiten und eignet sich hervorragend zum Experimentieren. Ich habe mir den Raspberry Pi beschafft, um Funkmodule auf 433 MHz Basis auslesen zu können. Bis zur Realisierung dieses Zieles müssen allerdings einige Hürden gemeistert werden, die ich in diesem Artikel am Beispiele einer LED Steuerung beschreibe.

Hinweise:
  • Preisangaben Stand April 2018. Bezugsquellen gibt es reichlich im Internet. Vergleichen lohnt sich.
  • Diese Dokumentation bezieht sich auf das Modell Raspberry Pi 3 B (ca. 32 Euro). Das aktuelle Modell B+ kostet ca. 2 Euro mehr
  • Wikipedia Eintrag mit vielen Details

Die Platinengröße des Raspberry Pi beträgt 56x85 mm

Was wird benötigt?
  • Raspberry Pi 3 B (ca. 32 Euro) oder Raspberry Pi Modell B+ (ca. 34 Euro).
    Auch die älteren Modelle können eingesetzt werden. Auf die Unterschiede gehe ich aber nicht ein.
  • Geeignetes Netzteil (Anschluss über MicroUSB Kabel).
    Beispiel: Rydges SpeedPower High-Quality PC Netzteil 5V 2,5A / 2500 mAh (ca. 8 Euro)
  • Monitor mit HDMI Anschluss
  • HDMI Kabel
  • microSD Karte mit mindestens 4 GB Kapazität (ohne Desktop). Beispiel: SanDisk Ultra 16GB microSDHC Speicherkarte mit Adapter (ca. 10 Euro, Vorsicht vor billigen Fälschungen!).
  • USB Maus
  • USB Tastatur
  • Breadboard - eine Steckplatine für Versuchsaufbauten (Details unten)
  • LED (Farbe beliebig)
  • Widerstand
  • Steckbrücken/Drahtbrücken, auch Jumper Wire genannt. Für diesen Versuchsaufbau werden lediglich zwei Steckbrücken männlich/weiblich (male/female) benötigt. Eine Länge von 10 cm ist ausreichend. Möchte man tiefer einsteigen empfiehlt sich ein Set von Drahtbrücken (male/male, female/female, male/female)

Vor der erstmaligen Inbetriebnahme des Raspberry Pi wird noch ein geeignetes Betriebssystem benötigt. Auch wenn es inzwischen möglich ist Windows 10 zu installieren, bietet sich eine optimierte Linux Version an. Es gibt viele Quellen für den Download im Internet. Empfehlen kann ich den Download von der raspberrypi.org Seite.

Auf der Download Seite werden zwei Varianten angeboten: NOOBS (New Out Of the Box Software) und RASPIAN. NOOBS hilft dem unerfahrenen Anwender das Betriebssystem auf der microSD Karte zu installieren, ich beschreibe hier den klassischen Weg: eine Image Datei (Speicherabbild) herunterladen und mit einer Zusatzsoftware auf die microSD Karte kopieren. Wer sich die Mühe sparen will, kann auch eine microSD Karte mit installiertem RASPIAN Betriebssystem im Internet kaufen.

RASPIAN ist das offiziell unterstützte Betriebssystem für den Raspberry Pi und es steht in zwei Varianten zur Verfügung: mit grafischem Desktop und einer Minimalversion ohne grafischen Desktop. Diese Beschreibung nutzt die Minimalversion:



Auf Download ZIP klicken:



Nach Klick auf OK wird die ZIP Datei (ca. 348 MB) im Download Verzeichnis abgelegt.
In das Download Verzeichnis wechseln und mit [rechte Maustaste] Alle extrahieren die ZIP Datei entpacken:



Das Zielverzeichnis kann nach Belieben geändert werden.
Auf Extrahieren klicken. In diesem Beispiel wird das Verzeichnis 2018-03-13-raspbian-stretch-lite angelegt und das Speicherabbild hineinkopiert: 2018-03-13-raspbian-stretch-lite.img
Dieses Image besitzt eine Größe von 1,73 GByte.

Wie kommt das Speicherabbild auf die microSD Karte?

Auch dafür gibt es viele kostenlose Tools im Internet. Ich nutze dafür den open source Win32 Disk Imager (Link). microSD Karte über entsprechenden Adapter mit PC verbinden. Nach Download, Installation und Start:



Image Datei und Datenträger auswählen und auf Schreiben klicken.



Sicherheitswarnung mit Yes bestätigen.

Nach ca. zwei Minuten ist der Vorgang abgeschlossen. Der Disk Imager kann geschlossen und die microSD Karte aus dem PC entfernt werden.

microSD Karte auf der Unterseite des Raspberry Pi 3 einschieben und entsprechende Peripherie (Monitor, Maus, Tastatur und zuletzt das Netzteil) anschließen. Sobald der Raspberry Pi mit Strom versorgt ist, sollte Linux (basierend auf Debian) booten.


Die wichtigsten Anschlüsse des Raspberry Pi. Zwischen HDMI und Sound befindet sich noch der Anschluss für eine Raspberry Camera

Die Anmeldung erfolgt mit dem Benutzer pi und dem Passwort raspberry.
Wichtig: bei deutscher Tastatur ist an Stelle von 'y' die Taste 'z' zu drücken, da noch keine deutsche Tastatur hinterlegt ist.

Anschließend sollte sich das Betriebssystem mit der Eingabeaufforderung pi@raspberrypi:~ $ melden:



Hinweis: Dieser und die folgenden Screenshots wurden mit einem SSH Tool erstellt. Mit diesem Tool kann man auf den Raspberry zugreifen, ohne dass Monitor, Maus und Tastatur angeschlossen sein müssen. Dazu später mehr.

Deutsches Tastatur Layour einstellen

sudo raspi-config

Hinweis:auf der deutschen Tastatur entspricht 'ß' dem Bindestrich



Select 4 Localisation Options, I1 Change Locale, de-DE.UTF-8 UTF-8
Select 4 Localisation Options, I3 Change Keyboard Layout, German

Es wird empfohlen das Passwort zu ändern: Select 1 Change User Password

Netzwerk

Der Raspberry_Pi verfügt sowohl über eine Netzwerk Schnittstelle (Ethernet) sowie über ein WLAN Interface. Dieses lässt sich über 2 Network Options konfigurieren.

Nach erfolgreicher Netzwerk Anbindung muss noch die IP Adresse ermittelt werden:

ip a oder ifconfig

Abhängig von der Netzwerkanbindung (Ethernet oder WLAN) ist die IP Adresse unter eth0 oder wlan0 zu finden. Im Heimnetzwerk beginnt diese üblicherweise mit 192.168.x.x. Diese IP Adresse merken/notieren.

Zugriff über SSH Client erlauben

sudo raspi-config

Select 5 Interfacing Options, P2 SSH, Ja (Would you like the SSH server to be enabled?)

Danach ist der Zugriff über SSH möglich. Ein beliebtes Tool ist PUTTY, das es auch als portable Version gibt. Suche im Internet nach "Download PUTTY". Nach Herunterladen, Installation (nicht bei portabler Version) und Start:



IP Adresse eingeben und auf Open klicken. Die SSH Verbindung zum Raspberry Pi wird aufgebaut.



Nach der Anmeldung ist der Zugriff auf den Raspberry Pi ohne angeschlossene Tastatur, Maus und Monitor möglich.

Damit ist die Basiskonfiguration abgeschlossen.

LED über GPIO ein- und ausschalten


GPIO steht für General Purpose Input Output und bietet die Möglichkeit, über Ein- und Ausgangskanäle an den Raspberry angeschlossene Hardware zu steuern. Das Ein- und Ausschalten einer LED ist für die ersten Tests die einfachste Variante.

Für den Versuchsaufbau ist ein Breadboard sehr hilfreich, da die erforderlichen Bauteile nur gesteckt und nicht verlötet werden müssen.

Breadboards gibt es in unterschiedlichen Ausführungen. Eine größere Variante (165 x 55 mm) sieht z.B. so aus:



Bei diesen Steckboards ist es wichtig zu wissen, dass bestimmte Kontakte miteinander verbunden sind. Im folgenden Bild mit roten Strichen verdeutlicht:



Für den Versuchsaufbau mit einer LED und einem Widerstand reicht auch ein kleines Breadboard (47 x 35 mm):

  

Welche LED?

Jede handelsübliche LED kann eingesetzt werden. Die LED wird über einen Vorwiderstand betrieben. Um diesen zu berechnen, benötigt man im Idealfall das Datenblatt der LED. Ist dieses nicht vorhanden, da die LED aus der Bastelkiste kommt, sollte man von einer LED Betriebsspannung von 2 Volt und einem Betriebsstrom von 20 mA ausgehen.



Eine LED lässt den Strom nur in eine Richtung fließen, es ist daher wichtig zu wissen, welcher Anschlussdraht an die positive Spannung (Anode) und welcher Anschlussdraht an die Masse (Kathode) angeschlossen wird. Der längere Anschlussdraht ist die Anode, muss also an die positive Spannung (GPIO Port) angeschlossen werden.

Welcher Widerstand?

Für die Berechnung des Widerstandes benötigt man die Formel der Ohmschen Gesetze: U = R * I (U=Spannung in Volt, R=Widerstand in Ohm, I=Strom in Ampere). Der Schaltungsaufbau ist einfach: der GPIO Ausgang (Spannung mit 3,3 Volt) wird an die Anode der LED angeschlossen, die Kathode der LED an den Vorwiderstand und der Vorwiderstand wird mit der Masse verbunden:



Wird der GPIO Ausgang aktiviert, dann stehen an diesem Anschluss 3,3 Volt zur Verfügung. Die Betriebsspannung der LED beträgt 2 Volt. Am Widerstand verbleiben daher noch 1,3 Volt. Sollen durch die LED 20 mA (also 0,020 Ampere) fließen, errechnet sich der Vorwiderstand mit der Formel: R = U / I. R = (3,3 V - 2 V) / 0,02 A = 65 Ohm.

Widerstände sind mit Farbcodes kodiert:



Gängige Kohlewiderstände sind mit vier Farbringen gekennzeichnet, es gibt allerdings auch Metallschichtwiderstände mit fünf Farbringen. Bei Kohlewiderständen geben drei Ringe den Wert und der vierte Farbring die Toleranz an.

  

Der obige Widerstand besitzt die Farbringe rot (2), violett (7), braun (x 10) und silber (10%). Damit ergeben sich 270 Ohm mit einer Toleranz von 10%, d.h. der eigentliche Wert des Widerstandes liegt zwischen 243 Ohm und 297 Ohm. Nach obiger Berechnung benötige ich aber einen Widerstand mit 65 Ohm (Farbringe blau - grün - schwarz). Der vorliegende Widerstand besitzt den vierfachen Wert! Ist das ein Problem? Für den Versuchsaufbau ist das unbedenklich. Ein größerer Widerstand reduziert den Strom. Ergebnis: die LED leuchtet nicht so stark. Grundsatz: ist der berechnete Widerstandswert nicht verfügbar, dann besser einen Widerstand mit höherem Wert nehmen, als einen niedrigeren.

Kann ich die LED ohne Vorwiderstand betreiben?

Das sollte keinesfalls erfolgen, da dadurch die LED zerstört werden kann. Eventuell kann auch der Raspberry Schaden nehmen.

Vorwiderstand zwischen LED und Anode oder zwischen LED und Kathode?

Beide Varianten sind erlaubt. Es gibt keinen Unterschied. Der Widerstand begrenzt den Strom vor und nach der LED.


Versuchsaufbau


Um den Raspberry Pi mit dem Breadboard zu verbindern, benötigt man die Belegung der Steckleiste.



Die GPIO Ports können über die GPIO Nummer oder den Pin der Steckerleiste angesprochen werden. Das ist bei der Programmierung zu berücksichtigen! Für den Anschluss einer LED werden nur zwei Pins an der Steckerleiste benötigt: die Masse (GND, Ground) und ein beliebiger GPIO Pin. In diesem Beispiel werden die Pins 39 (GND, Masse) und 40 (GPIO21) benutzt.



Das schwarze Kabel verbindet die Masse (GND, Pin 39) mit dem Breadboard (Reihe 2). Die Steckplätze A, B, C, D und E in der Reihe 2 sind miteinander verbunden. Der 270 Ohm Widerstand wird mit einer Seite in 2B gesteckt und mit dem anderen Ende auf 2G. Steckplätze F, G, H, I und J in der Reihe 2 sind ebenfalls miteinander verbunden. Die Kathode der LED (kürzerer Anschluss) wird auf 2H gesteckt, die Anode der LED (längerer Anschluss) auf 1H. Jetzt wird noch die Anode 1J über das rote Kabel mit dem Pin 40 (GPIO21) verbunden.

Programmierung


Jetzt fehlen noch ein paar Zeilen Programmierung, um die LED zum Leuchten zu bringen. Üblicherweise nutzt man beim Raspberry Pi die Programmiersprache Python, die auch für einen Anfänger schnell zu verstehen ist. Der Programmcode muss über einen Editor eingegeben werden. Als Editor nutze ich in diesem Beispiel nano, der etwas gewöhnungsbedürftig ist, aber für die wenigen Zeilen Programmcode ausreicht.

nano led.py

1import RPi.GPIO as GPIO
2import time
3GPIO.setmode(GPIO.BCM)
4LED=21
5GPIO.setup(LED,GPIO.OUT)
6GPIO.output(LED,True)
7time.sleep(5)
8GPIO.output(LED,False)
9GPIO.cleanup()

  • Zuerst müssen zwei Bibliotheken zum Ansprechen der GPIO Ports (Zeile 1) und des Timers (Zeile 2) eingebunden werden.
  • Zeile 3 entscheidet, welche Nummerierung für die Ports genutzt wird. BOARD entspricht den Pins der Steckleiste, BCM den GPIO Bezeichnungen. In diesem Beispiel entspricht BOARD=40 BCM=21. Würde ich Zeile 3 mit GPIO.setmode(GPIO.BOARD) kodieren, müsste ich Zeile 4 in LED=40 ändern.
  • Zeile 4 weist der Variablen LED den Wert 21 zu. Das ist nicht zwingend erforderlich. In den Folgezeilen könnte LED auch durch 21 ersetzt werden. In komplexeren Anwendungen erhöht es aber die Lesbarkeit.
  • GPIO Ports können als Eingang oder Ausgang geschaltet werden. In Zeile 5 wird der GPIO Port 21 als Ausgang (OUT) geschaltet.
  • In Zeile 6 wird die LED eingeschaltet.
  • Zeile 7 definiert eine Warteschleife von 5 Sekunden
  • Zeile 8 schaltet die LED wieder aus
  • Abschließend werden alle benutzten Ports auf Input zurückgesetzt
Code abspeichern: [Strg] X, mit J und [Enter] bestätigen.

Die Spannung steigt. Geht die LED an und nach 5 Sekunden wieder aus? Zum Ausführen des Programmcodes wird Python mit dem Namen der Datei aufgerufen.

python led.py

Hier noch ein paar nützliches Befehle auf der RASPIAN Kommandozeilenebene:

ls Inhalt des Verzeichnisses anzeigen
mkdir [name] Verzeichnis [name] erstellen
cd [name] In das Verzeichnis [name] wechseln
rmdir [name] Verzeichnis [name] löschen
rm -r [name] Verzeichnis [name] rekursiv löschen
sudo shutdown -h now Raspberry Pi herunterfahren (nicht einfach ausschalten)


Feedback gerne an folgende E-Mail Adresse: pi@lasona.de