Aufbau und Pindefinitionen

In diesem Artikel wird der Aufbau und die Belegung der Pins am Banana Pi näher untersucht. Schwerpunkt der Ausführungen sind primär die Pindefinitionen. Sowohl beim basteln, als auch bei professionellen Anwendungen sollte man sich immer bewusst sein, welche Bedeutung und daher auch welche Beschaltung eines Pins zu beachten ist. Durch eine Fehlinstallation kann der Banana Pi, als auch eure angeschlossenen Bauteile zerstört werden.

Aufbau und Schnittstellen des Banana Pi

Im Vergleich zum bekannten Raspberry Pi* bringt der Banana Pi einige Schnittstellen mehr mit. Dazu zählen eine SATA-Schnittstelle für Festplatten, ein Infrarot Empfänger, Mikrofon, ein USB OTG Anschluss, LEDs on Board und verschiedene Buttons. Alle Anschlüsse sind in der folgenden Grafik verdeutlicht.

Banana Pi Schnittstellen (Quelle: lemaker.org)
Banana Pi Schnittstellen (Quelle: lemaker.org)

Banana Pi Pinbelegung

Der Banana Pi verfügt an mehreren Positionen auf der Platine diverse Pins. Diese können individuell für das eigene Projekt als Ein- oder Ausgang beschalten werden. Somit bietet der Banana Pi eine optimale Grundlage zum ansteuern von Sensoren, LEDs und vielem mehr.

Banana Pi Schnittstellen, Pins
Banana Pi Schnittstellen, Pins

Der Pi verfügt über die Pin-Schnittstellen CON1, CON2, CON3, J11 und J12. Alle Pins können als GPIO Schnittstelle genutzt werden. Darüber hinaus bieten einige Pins noch weitere Funktionen. Zunächst werden die einzelnen Pinblöcke nach ihren Funktionalitäten gegliedert.

  • CON1: CSI Kamera Schnittstelle
  • CON2: LVDS Display Schnittstelle
  • CON3: GPIO, CAN Bus, SPI Bus, I2C Bus, PWM, Serial Port, Pins beliebig einsetzbar
  • J11: UARTO Schnittstelle (UARTO-RX, UARTO-TX), Eingang / Ausgang Konsole
  • J12: UART, Serial Port

CON3 GPIO Header

Die GPIO Pins vom Header CON3 werden unter den Pi-Anwendern hauptsächlich genutzt. Die Pins können über die entsprechende Software als Eingang oder Ausgang beschalten werden. Außerdem unterstützen die Pins eine Kommunikation via CAN Bus, SPI Bus, I2C Bus, PWM und eine serielle Datenübertragung. Zur richtigen Beschaltung stellen wir euch im Folgenden die Pindefinitionen CON3 vom Banana Pi vor. Zur Orientierung ist Pin 1 bei jedem Connector-Block auf der Platine des Banana Pi beschriftet.

wiringPiGPIOFunktionPinPinFunktionGPIOwiringPi
VCC-3V3 12VCC-5V
8PB21 TWI2-SDA 34VCC-5V
9PB20 TWI2-SCK 56GND
7PI3 GPCLK 78UART3-TX PH0 15
GND 910UART3-RX PH115
0PI19IO-0(UART2-RX) 1112IO-1 PH2 1
2PI18IO-2(UART2-TX) 1314GND
3PI17IO-3(UART2-CTS)1516IO-4(CAN_TX) PH20 4
VCC-3V3 1718IO-5(CAN_RX) PH215
12PI12SPI0_MOSI 1920GND
13PI13 SPI0-MISO 2122IO-6(UART2_RTS) PI16 6
14PI11 SPI0_CLK 2324SPI0_CS0 PI10 10
GND 2526SPI0_CS1 PI1411

CON1 Pinbelegung

Bei den Pins von CON1 handelt es sich um eine CSI Schnittstelle. Diese besteht aus 40 FPC Pins die zum verbinden eines Kameramoduls dienen. Die Pinbelegung ist im Folgenden beschrieben.

CON1 Pin PindefinitionGPIO
CON1 P01 LINEINL
CON1 P02 LINEINR
CON1 P03 VCC-CSI
CON1 P04 ADC_X1
CON1 P05 GND
CON1 P06 ADC_X2
CON1 P07 FMINL
CON1 P08 ADC_Y1
CON1 P09 FMINR
CON1 P10 ADC_Y2
CON1 P11 GND
CON1 P12 CSI-FLASH PH17
CON1 P13 LRADC0
CON1 P14 TWI1-SDA PB19
CON1 P15 LRADC1
CON1 P16 TWI1-SCK PB18
CON1 P17 CSI-D0 PE4
CON1 P18 CSI0-STBY-EN PH19
CON1 P19 CSI0-D1 PE5
CON1 P20 CSI-PCLK PE0
CON1 P21 CSI-D2 PE6
CON1 P22 CSI0-PWR-EN PH16
CON1 P23 CSI-D3 PE7
CON1 P24 CSI0-MCLK PE1
CON1 P25 CSI-D4 PE8
CON1 P26 CSI0-RESET# PH14
CON1 P27 CSI-D5 PE9
CON1 P28 CSI-VSYNC PE3
CON1 P29 CSI-D6 PE10
CON1 P30 CSI-HSYNC PE2
CON1 P31 CSI-D7 PE11
CON1 P32 CSI1-STBY-EN PH18
CON1 P33 RESET#
CON1 P34 CSI1-RESET# PH13
CON1 P35 CSI-IO0 PH11
CON1 P36 HPR
CON1 P37 HPL
CON1 P38 IPSOUT
CON1 P39 GND
CON1 P40 IPSOUT

CON2 Pinbelegung

Die CON2 Pins dienen zum ansteuern eines LCD Displays / Panel (LVDS), wahlweise mit Touchfunktion (I2C). Der Header umfasst 40 FPC Pins. Die Definitionen sind nachfolgend dargestellt.

CON2 Pin PindefinitionErweiterte Funktion GPIO
CON2 P01 IPSOUT
CON2 P02 TWI3-SDA PI1
CON2 P03 IPSOUT
CON2 P04 TWI3-SCK PI0
CON2 P05 GND
CON2 P06 LCD0-IO0 PH7
CON2 P07 LCDIO-03 PH12
CON2 P08 LCD0-IO1 PH8
CON2 P09 LCD0-D0 LVDS0-VP0 PD0
CON2 P10 PWM0 PB2
CON2 P11 LCD0-D1 LVDS0-VN0 PD1
CON2 P12 LCD0-IO2 PH9
CON2 P13 LCD0-D2 LVDS0-VP1 PD2
CON2 P14 LCD0-DE SMC_RST PD25
CON2 P15 LCD0-D3 LVDS0-VN1 PD3
CON2 P16 LCD0-VSYNC SMC_SDA PD27
CON2 P17 LCD0-D4 LVDS0-VP2 PD4
CON2 P18 LCD0-HSYNC SMC_SLK PD26
CON2 P19 LCD0-D5 LVDS0-VN2 PD5
CON2 P20 LCD0-CS PH6
CON2 P21 CD0-D6 LVDS0-VPC PD6
CON2 P22 LCD0-CLK SMC_VCCEN PD24
CON2 P23 LCD0-D7 LVDS0-VNC PD7
CON2 P24 GND
CON2 P25 LCD0-D8 LVDS0-VP3 PD8
CON2 P26 LCD0-D23 PD23
CON2 P27 LCD0-D9 LVDS0-VN3 PD9
CON2 P28 LCD0-D22 SMC_VPPPP PD22
CON2 P29 LCD0-D10 LVDS1-VP0 PD10
CON2 P30 LCD0-D21 SMC_VPPEN PD21
CON2 P31 LCD0-D11 LVDS1-VN0 PD11
CON2 P32 LCD0-D20 CSI1_MCLK PD20
CON2 P33 LCD0-D12 LVDS1-VP1 PD12
CON2 P34 LCD0-D19 LVDS1-VN3 PD19
CON2 P35 LCD0-D13 LVDS1-VN1 PD13
CON2 P36 LCD0-D18 LVDS1-VP3 PD18
CON2 P37 LCD0-D14 LVDS1-VP2 PD14
CON2 P38 LCD0-D17 LVDS1-VNC PD17
CON2 P39 LCD0-D15 LVDS1-VN2 PD15
CON2 P40 LCD0-D16 LVDS1-VPC PD16

J11 Pinbelegung

J11 PinPindefinitionErweiterte FunktionGPIO
Pin 1TXDUART0-TX PB22
Pin 2RXDUART0-RX PB23

J12 Pinbelegung

J12 Pin Pin Name Multiplex Function Select GPIO
J12 Pin1 5V
J12 Pin2 3.3V
J12 Pin3 NC IO-7 PH5
J12 Pin4 RXD UART7_RX PI21
J12 Pin5 NC IO-8 PH3
J12 Pin6 TXD UART7_TX PI20
J12 Pin7 GND
J12 Pin8 GND

Quellen (Stand: 30.9.14): wiki.bananapi.org, bananapi.com, lemaker.org

Weiterlesen

WLAN einrichten

Der Banana Pi kann bei zahlreiche Anwendungen, wie zum Beispiel ein eigener Webserver, eine eigene Cloud oder als Media Center zum Einsatz kommen. Für eine Verbindung ins eigene Netzwerk oder ins Internet muss oftmals ein Netzwerkkabel verlegt werden. Gerade dann, wenn der Pi beispielsweise hinter dem Fernseher oder ähnlichem stationiert ist, stellt sich das als Problem dar. Mit dem einrichten einer WLAN Verbindung findet man allerdings schnell einen kostengünstigen Ausweg.

Kürzlich habe ich mich mit diesem Thema auf dem Blog von Einplatinencomputer.com beschäftigt. Da die Einrichtung einer WLAN Verbindung beim Banana Pi prinzipiell gleich ist, möchte ich euch diese Informationen hier nicht vorenthalten.

Die Wahl des richtigen WLAN Sticks

Um eine WLAN Verbindung einzurichten benötigen wir zunächst natürlich erstmal einen passenden WLAN Stick. Die Auswahl an drahtlosen Sticks auf dem Markt ist groß. Je nach Stick kann die Einrichtung spielend einfach von der Hand gehen oder mit erheblichem Aufwand und Komplikationen verbunden sein. Ausschlaggebend sind die verschiedenen Chipsätze und die Kompatibilität von Treiber und Linux Kernel. Für den Banana Pi ist die Auswahl an WLAN Adaptern noch verhältnismäßig klein. WLAN Sticks, die mit den Treibern 8188cus, 8188cu und 8192 arbeiten laufen unter Raspbian, 8188eus, 8188eu und 8188tv laufen unter Android, soweit die Erfahrungen im Forum von lemaker.org.

Unter den Raspberry Pi Anwendern ist der WLAN Stick von Edimax meistens die erste Wahl. Dieser bringt eine Geschwindkeit von 150 MBit/s mit und arbeitet mit den genannten Treibern (Raspbian).


EDIMAX EW-7811UN Wireless USB Adapter, 150 Mbit/s, IEEE802.11b/g/n

Wenn wir unseren WLAN Stick an den Pi angeschlossen haben können wir direkt überprüfen ob dieser ordnungsgemäß erkannt wurde. Dazu geben wir folgenden Befehl in das Terminal ein.

dmesg

In der Ausgabe sehen wir, dass ein WLAN Adapter von Realtek gefunden wurde. Passend dazu der Treiber RTL8188CUS. Alternativ kann der Befehl lsusb zur Überprüfung genutzt werden. In der dazugehörigen Ausgabe sollten die gleichen Informationen wie mit dmesg ersichtlich werden.

lsusb

Gleichzeitig ist jetzt ein neues Netzwerk Device wlan0 vorhanden. Mit dem folgenden Befehl können wir uns alle Netzwerkschnittstellen anzeigen lassen.

ifconfig

Power Saving deaktivieren

Standardmäßig ist bei dem Edimax Stick eine Energiesparfunktion aktiviert. Das bedeutet, dass der Adapter bei Inaktivität die Netzwerkverbindung unterbricht. Diese Funktion kann durch anlegen einer Konfigurationsdatei deaktiviert werden, sodass die Verbindung dauerhaft gehalten wird. Dazu legen wir folgende Konfiguration an. Der Dateiname, in meinem Fall 8188cus.conf ist abhängig vom vorhandenen Treiber der mit dem Befehl lsusb mit angezeigt wurde und kann gegebenenfalls abweichen. Wenn das bei euch zutreffen sollte, dann einfach in den beiden folgenden Schritten die Eingabe anpassen.

sudo nano /etc/modprobe.d/8188cus.conf

Die Datei füllen wir mit dieser Zeile.

options 8188cus rtw_power_mgnt=0 rtw_enusbss=0

Anschließend speichern wir die Konfigurationsdatei ab und schließen sie mit der Tastenkombination Strg+X. Das Deaktivieren der Power Saving Funktion ist natürlich optional, aber dennoch empfehlenswert.

Verbindung zu einem WLAN Netzwerk herstellen

Um die verbindung mit einem WLAN Netzwerk herzustellen benötigen wir dessen Namen, also die SSID, als auch den WLAN Key. Solltet Ihr den Namen des Netzwerk mit dem Ihr euch verbinden wollt nicht genau wissen, dann suchen wir zunächst nach vorhandenen WLAN Netzwerken in der Umgebung.

iwlist wlan0 scan

In der Ausgabe sollte euer WLAN Netzwerk angezeigt sein, vorausgesetzt euer Pi befindet sich in dessen Reichweite.

Zum verbinden bearbeiten wir die Netzwerkkonfiguration. Dazu öffnen wir folgende Datei.

sudo nano /etc/network/interfaces

Die Einstellungen der WLAN Schnittstelle passen wir mit folgendem Inhalt an. Hierbei soll die Schnittstelle vorerst Ihre IP Adresse via DHCP zugewiesen bekommen.

auto lo

iface lo inet loopback
iface eth0 inet dhcp

auto wlan0
allow-hotplug wlan0
iface wlan0 inet dhcp
wpa-ap-scan 1
wpa-scan-ssid 1
wpa-ssid "NAME-WLAN-NETZWERK"
wpa-psk "WLAN-KEY"

Zwischen die Anführungszeichen muss einmal der Name, sprich die SSID, deines WLAN Netzwerkes angegeben werden, als auch der WLAN Schlüssel. Mit den Tastenkombinationen Strg+O und Strg+X speichern und schließen wir die Datei. Nachdem die Datei geschlossen wurde starten wir den Netzwerkdienst neu, damit dir Einstellungen wirksam werden.

sudo service networking restart

Das wars auch schon. Mit ifconfig könnt Ihr euch nochmal alle Netzwerkschnittstellen ausgeben lassen. Dabei werdet Ihr bemerken das dem wlan0 Device jetzt eine IP Adresse zugewiesen wurde. Der Raspi sollte jetzt via WLAN mit eurem Netzwerk verbunden sein.

WLAN Verbindung mit statischer IP Adresse

Wer den Banana Pi zum Beispiel als Server nutzt und diesen per WLAN an sein Netzwerk anbindet, für den ist es vorteilhaft wenn dieser immer unter der gleichen IP Adresse erreichbar ist. In dem letzten Abschnitt zeige ich euch, wir Ihr der WLAN Schnittstelle eine feste / statische IP Adresse zuweist.

Dazu müssen wir wieder die Netzwerkkonfiguration bearbeiten.

sudo nano /etc/network/interfaces

Den Inhalt passen wir jetzt wie folgt an.

auto lo

iface lo inet loopback
iface eth0 inet dhcp

auto wlan0
allow-hotplug wlan0
iface wlan0 inet static
address 192.168.2.3
netmask 255.255.255.0
gateway 192.168.2.1
wpa-ap-scan 1
wpa-scan-ssid 1
wpa-ssid "NAME-WLAN-NETZWERK"
wpa-psk "WLAN-KEY"

In der Zeile iface wlan0 inet static sagen wir, dass wir eine statische IP Adresse festlegen wollen. Weiterhin habe ich mit address, netmask und gateway meine gewünschten Netzwerkeinstellungen vorgenommen. Diese müsst Ihr individuell an euer Heimnetz anpassen.

Quellen (Stand:12.9.14): datenreise.de, tacticalcode.de, lemaker.org

Weiterlesen

Remote Control: VNC Server installieren

Um den Banana Pi nutzen zu können muss man entweder Monitor, Maus und Tastatur anschließen oder über das Netzwerk via Remote darauf zugreifen. Der verbreitete SSH-Dienst erlaubt aber jediglich die Verwendung der Konsole. Der VNC Dienst (Virtual Network Computing) dagegen ermöglicht das Anzeigen des Bildschirminhaltes eines entfernten Computers auf einem lokalen Rechner. Mausbewegungen und Tastatureingaben werden dabei übertragen, sodass man auf dem entfernten Rechner arbeiten kann, wie als säße man direkt davor.

Um mittels VNC auf dem Banana Pi zugreifen zu können muss ein VNC Server auf dem Pi installiert werden. Der Computer mit dem du deinen Banana Pi via Remote steuern möchtest, spielt die Rolle des Clients. In der folgenden Anleitung zeige ich dir, wie du den VNC Server auf deinem Einplatinencomputer installierst und einrichtest.

VNC Server installieren

Bevor wir die VNC Software installieren bringen wir unseren Banana Pi auf den neusten Stand. Dieser Schritt ist optional und muss nicht zwingend durchgeführt werden. Sollte jedoch beim Start des Installationsvorganges ein Fehler auftreten, kann dieser durch ein Update behoben werden.

sudo apt-get update
sudo apt-get upgrade

Anschließend starten wir die Installation.

sudo apt-get install tightvncserver

Ist der Installationsvorgang abgeschlossen kann der VNC Server gestartet werden.

vncserver :1

Beim ersten Start des Servers werden wir aufgefordert ein Passwort zum Login festzulegen. Außerdem bekommen wir die Möglichkeit das view only zu aktiveren. Dabei kann ein Benutzer den Desktop des Pi betrachten, jedoch ohne Steuerungsmöglichkeiten. Wir empfehlen view only nicht zu aktivieren, außer es ist zum Beispiel im Sinne einer Monitoring Anwendung hilfreich.

VNC Client

Ist der VNC Server auf dem Banana Pi installiert, können wir mit einem VNC Viewer (Client) auf den Desktop zugreifen. Eine VNC Client ist zum Beispiel TightVNC. Um eine Verbindung via VNC herzustellen, benötigen wir die IP Adresse des BPi und den Port. Die Netzwerkverbindungsdaten können in der Logdatei vom VNC Server nachgelesen werden: /home/pi/.vnc/bananapi:1.log. Der Standardport ist 5901.

Quellen (Stand 1.9.14): wikipedia.org, rdklein.eu

Weiterlesen