Raspberry Pi

Aus m-wiki
Zur Navigation springen Zur Suche springen

Einführung

Der RasPi ist ein Mini-Computer, der meist unter Linux betrieben wird. Er kann in diversen Sprachen programmiert werden, wobei vielfach c oder Python verwendet wird. Er besitzt eine Steckleiste ähnlich dem Userport des Commodore 64. Diese Steckleiste wird GPIO genannt und bedeutet General Purpose Input Output. Dies heisst, dass an die Anschlüsse für eigene Bedürfnisse anpassen kann. Einige der Anschlüsse kann man auch verwenden, um spezifische Protokolle wie UART (seriell), oder SPI zu benutzen.

Betriebsystem

Es gibt spezifische Betriebsysteme, welche explizit auf die Bedürfnisse des RaspPi zugeschnitten sind wie kleiner Speicherverbrauch und Vorkompilierung der verwendeten Kernelmodule. Entsprechend eine Liste der Distributionen, wobei die Liste länger ist: RasPi Betriebsysteme im Kurzportrait

Betriebssystem Eigenschaften Erscheinungsjahr SD-Karte
Raspian
  • Basiert auf Debian
  • Grosse Community und Wikis
2012 4GB (8GB wenn GUI)
Pidora
  • Basiert auf Fedora
  • Unterstützt den Headless-Modus
  • Grosse Community und Wikis
2014 2GB
Windows 10 IoT Core
  • Windows 10 IoT Core stützt sich auf die hauseigene „Universal Windows Platform“-API (UWP) und wird über die Community-Edition von Microsoft Visual Studio bedient
  • Bitlocker-Verschlüsselung und "Secure Boot"-Funktionen
  • Braucht ein aktuelles Windows 10 zur Entwicklung
  • Unterstützung von Pulsweitenmodulation (PWM) für Elektromotoren
  • Community-Forum mit eigenem Raspberry-Pi-Bereich
2015 ?
Ubuntu Core
  • minimalistische Abwandlung der Server-Edition
  • jedes Softwarepaket ist eine einzelne Einheit ("Snap") -> soll mehr Sicherheit bringen
  • Hilfe entweder direkt bei Canonical oder in den Community-Foren
  • Braucht einen Ubuntu SSO-Account
2014 ?
Risc OS
  • ausgerichtet auf ARM (seit den 1980er Jahren)
  • setzt stark auf "drag'n'drop", so werden Dateien geöffnet, indem man diese ins Programm zieht
2014? 2GB
Arch Linux ARM
  • ausgerichtet auf Profis, daher eher aufwendig
  • Rolling Release und daher vielfach kurze Testphasen
2015? 2GB
FreeBSD
  • Für den RaspPi angepasste Version von FreeBSD
  • sicher und schnell
  • grosse Community
2015? ?

GPIO verwenden

Je nach Revision und Gneration sind die Pins etwas anders. Daher unbedingt schauen, welche Version eingesetzt wird. Die Belegung ist zwar gleich, doch die Pins haben andere Nummern, so dass man dann evtl. den "falschen" Pin anspricht. Entsprechend hier die Revision B der neueren Boards.

Pinnummer Funktion - Funktion Pinnummer
- 3.3V o o 5V -
2 SDA o o 5V -
3 SCL o o GND -
4 I/O o o TX 14
- GND o o RX 15
17 I/O o o I/O 18
27 I/O o o GND -
22 I/O o o I/O 23
- 3.3V o o I/O 24
10 MOSI o o GND -
9 MISO o o I/O 25
11 SCKL o o I/O 8
- 3.3V o o I/O 7

Bedeutung der Bezeichnungen

  • 3.3V -> stellt 3.3V mit max. 50mA zur Verfügung
  • 5V -> stellt 5V mit max. 250mA zur Verfügung -> Darf nie an einen GPIO-Pin gelangen, da dieser sonst sofort zerstört wird!
  • GND -> Ground-Pins
  • I/O -> Reine Input/Output-Pins, welche nicht für andere Zwecke vorbelegt sind. Im Gegensatz zum Arduino sind keine analogen Ein-/Ausgänge vorhanden. Sollten nicht mehr als 3mA-Strom ziehen. Es geht zwar mehr (max. 16 mA), doch auf Kosten der Lebensdauer des Chips.
  • TX -> Send (transmit) der seriellen Schnittstelle (UART)
  • RX -> Empfang (receive) der seriellen Schnittstelle (UART)
  • SDA -> Daten? der IC-Schnittstelle
  • SCL -> Clock der IC-Schnittstelle
  • MOSI -> Master Out der SPI-Schnittstelle (Daten vom Server zu den Slaves) (Die Kabel werden nicht gekreuzt)
  • MISO ->Master In der SPI-Schnittstelle (Daten von den Slaves zum Server) (Die Kabel werden nicht gekreuzt)
  • SCKL -> Clock der SPI-Schnittstelle

Module freischalten

Damit das entsprechende Modul vom Kernel geladen wird, muss man es folgendermassen einrichten:

  1. Kontrolle, dass es nicht in der /etc/modprobe.d/raspi-blacklist.conf aktiv ist -> einfach mit einem # am Anfang auskommentieren
  2. Das Modul in /etc/modules hinzufügen
  3. Den RaspPi neu starten

IC

Das freizuschaltende Modul heisst i2c-bcm2708. Zusätzlich sollte auch i2c-dev geladen werden. Für den Zugriff sollte man auch die i2c-tools installieren:

$ sudo apt-get install i2c-tools

Beim Verwenden darauf achten, wie viel Strom die Geräte brauchen und diese sonst extern einspeisen. Hat man ein Gerät verbunden, kann man nun seine Adresse herausfinden. Jedes angeschlossene Gerät braucht eine eindeutige Adresse:

 $ sudo i2cdetect -y 1

Bei ganz alten Boards muss der Bus mit 0 anstatt 1 angegeben werden. Das Tool listet die Adressen (hex) entsprechend auf. Will man mehrere Geräte anschliessen, sollte man immer eines nach dem anderen anschliessen und die Adresse dann entsprechend eindeutig gestalten.

SPI

Das freizuschaltende Modul heisst spi-bcm2708. Zusätzlich sollte auch spidev geladen werden.

Für den Zugriff mit Python auf SPI muss man je nachdem noch ein Git-Repository einbinden, auch wenn dies wohl meist unterdessen schon hinzugefügt wurde. Falls nicht, geht dies auf nachfolgende Art:

$ sudo apt-get install git
$ sudo apt-get install python-dev
$ git clone git://github.com/doceme/py-spidev
$ cd py-spidev/
$ sudo python setup.py install

Nach einem Neustart kann SPI über Python angesprochen werden.

Wichtige Bibliotheken

Damit man auf die Hardware zugreifen kann, muss je nach Sprache und Anwendungsfall die entsprechende Bibliothek installiert werden.

RPi.GPIO

Diese Bibliothek ist bei den meisten Distributionen schon vorinstalliert. Sollte dies nicht der Fall sein, muss diese mit dem Paketmanager installiert werden. Allgemeine Infos zum Umgang mit Linux im Artikel Allgemeine Daten zu Linux, Tipps und Tricks und Systemeinstellungen.

Ist apt im Einsatz, kann man die Bibliothek folgendermassen installieren:

$ sudo apt-get install python-dev
$ sudo apt-get install python-rpi.gpio

WiringPi

WiringPi ist eine Bibliothek, welche unter c / c++ verwendet wird, auf die man mit den entsprechenden Wrappern auch von anderen Sprachen aus zugreifen kann wie etwa über Python. Mit gpio kann direkt von der Shell aus auf die Pins zugegriffen werden und dies ermöglicht auch den Zugriff aus Shell-Skripten heraus.
Wie man der Entwickler-Webseite entnehmen kann, wird die Bibliothek nicht mehr weiter entwickelt und ist auch nicht für Anfänger gedacht, sondern für Leute, die sich auskennen.

$ sudo apt-get install wiringpi

Test der Installation:

$ gpio -v
$ gpio readall

PySerial

Notwendig, um die serielle Schnittstelle mit Python zu verwenden.

$ suto apt-get install python-serial

Nicht vergessen, die serielle Konsole zu deaktivieren.