Banana Pi: Minecraft Server installieren

Mincraft ist eines der beliebtesten Spiele. Trotz der einfachen und verhaltenen Grafik überzeugt das Spiel durch viele Freiheiten. Jeder Spieler kann somit seine individuelle Spielatmosphäre gestalten. In diesem Tutorial wird gezeigt, wie man auf seinem Banana Pi einen eigenen Minecraft Server für zu Hause aufsetzt.

Zunächst überprüfen wir unser System auf Updates (optional) und installieren den Fenstermanager screen. Diesen benötigen wir zu einem späteren Zeitpunkt während der Mincraft Server Installation.

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install screen

Im nächsten Schritt laden wir uns mit wget den Minecraft Server (MCServer) herunter. Dieser ist in der Programmbiersprache C++ geschrieben und für Systeme mit ARM-Prozessoren vorkompiliert. Der bei wget angegebene Link bezieht sich immer auf die aktuellste Version des MCServers. Nach dem Download wird das Archiv entpackt und um Speicherplatz zu sparen anschließend wieder gelöscht.

wget http://builds.cuberite.org/job/MCServer%20Linux%20armhf/lastSuccessfulBuild/artifact/MCServer/MCServer.tar

tar -xvf MCServer.tar
rm MCServer.tar

Bevor wir den Server erstmalig starten, installieren wir noch eine aktuellere Version des g++ Compilers, damit die Serversoftware fehlerfrei komipiliert und gestartet werden kann.

sudo apt-get install g++-4.8

Als nächstes starten wir den Minecraft Server erstmalig. Dabei sollten einige Fehlermeldungen auftauchen. Grund dafür ist, dass der Software die zum Start notwendigen Konfigurationsdateien fehlen. Durch den ersten Start werden diese aber angelegt und gleichzeitig eine erste Minecraft Welt erzeugt. Ist der Vorgang abgeschlossen können wir den Server mit der Tastenkombination Strg + C wieder beenden.

cd MCServer
./MCServer

Der MCServer bringt neben dem Gameserver auch ein eigenes, passwortgeschütztes Webinterface mit. Die Standard-Logindaten lauten admin / admin und sind in der Konfigurationsdatei webadmin.ini festgelegt. Diese Datei wurde durch den vorherigen Schritt erzeugt. Zur Anpassung der Logindaten an einen benutzerdefinierten Benutzer / Passwort bearbeiten wir die genannte Konfigurationsdatei.

sudo nano webadmin.ini

Innerhalb dieser Datei finden wir folgenden auskommentierten Part:

; [User:admin]
; Password=admin

Diesen ersetzen wir durch unsere benutzerdefinierten Zugangsdaten Benutzername und Passwort. Die Anmeldeinformationen sollten natürlich individuell angepasst werden. Anschließend kann die Datei gespeichert und geschlossen werden.

[User:Benutzername]
Password=Passwort

Abschließend können wir den Minecraft Server mit dem zu beginn installiertem Tool screen starten. Der MCServer wird dabei in einer eigenständigen Screen-Instanz gestartet und läuft dauerhaft.

screen -dmS MCServer ./MCServer

Minecraft Server Webinterface

Screenshot MCServer Webinterface
Screenshot MCServer Webinterface

Das Webinterface vom Minecraft Server kann unter der IP-Adresse eures Pis und Port 8080 aufgerufen werden, also http://IP-BPi:8080/. Mit den zuvor festgelegten Zugangsdaten kann man sich über den Button WebAdmin Login anmelden. Innerhalb des Webinterfaces können anschliend diverse Servereinstellungen vorgenommen werden. Damit die Einstellungen aktiv werden, muss der MCServer neugestartet werden. Dies wird mit folgendem Befehl realisiert.

screen -S MCServer -X stuff "stop\n" && sleep 30 && screen -dmS MCServer ~/MCServer/MCServer

Der Vorgang dauert etwa eine Minute, da bei Beendigung des Servers die aktuelle Welt abgespeichert wird.

Minecraft Server Cronjob

Solltet ihr euren Einplatinencomputer regelmäßig als Minecraft Server verwenden, dann bietet es sich an diesen automatisch starten zu lassen mit Hilfe eines Cronjobs.

crontab -e

Am Ende der Crontab Datei fügen wir dazu folgenden Inhalt ein:

@reboot cd ~/MCServer/ && screen -dmS MCServer ./MCServer

Das wars auch schon! Damit ist euer Pi ein vollwertiger Minecraft Server für 2 bis 5 Leute, je nach Servereinstellungen.

Quelle: Jan Karres

Weiterlesen

Bananian Linux: Grafische Oberfäche – GUI mit LXDE oder XFCE

Das Betriebssystem Bananian Linux ist in Bezug auf den Banana Pi sehr leistungsstark und ressourcenschonend. Aus diesem Grund eignet sich das System in erster Linie für Serveranwendungen. Bananian ist weiterhin ein headless Betriebssystem, d.h. es besitzt keine vorinstallierte grafische Oberfläche (GUI). Somit ist keine Arbeit im Desktop-Betrieb bzw. via eine Remotedesktopverbindung möglich. Der Headless-Betrieb sorgt aber dahingehend auch für die enorme Leisungsstärke des Systems.

Aus Sicht von einigen Anwendungen und Vorhaben, oder vielleicht auch aus persönlichem Interesse, kann eine grafische Oberfläche erwünscht sein. Wie man eine GUI unter Bananian Linux installiert zeigen wir im Folgenden.

Prinzipiell benötigt man für den Berieb mit einer GUI ein Softwarepaket, welches eine Desktopumgebung bereitstellt. Im Folgenden werden die GUI-Tools LXDE und XFCE vorgestellt.

Bananian: GUI mit LXDE

LXDE steht für „Lightweight X11 Desktop Enviroment“, wobei „LX“ gleichzeitig auf Linux hindeutet. LXDE ist eine freie Desktop-Umgebung für Unix Systeme. Unter dem Raspberry Pi wird dieses Tool am meisten genutzt, um mit einem Desktopmodus zu arbeiten. Für den Banana Pi, speziell für Bananian Linux erfolgt die Installation gleichermaßen mit folgenden Befehlen.

Zunächst bringen wir unser System auf den neusten Stand.

apt-get update
apt-get upgrade

Anschließend wir die Installation von LXDE gestartet.

sudo apt-get install task-lxde-desktop -y

Damit die Einstellungen übernommen werden erfolgt ein Neustart des Systems.

sudo reboot

Bananian: GUI mit Xfce

Alternativ zu LXDE kann ein Desktop durch das Tool Xfce entstehen. Diese Tool stellt ebenfalls eine Desktop-Umgebung bereit und ist für Unix Systeme. Weitere Informationen zu Xfce findet man unter Wikipedia. Xfce ist im Vergleich zu LXDE etwas schneller und ressourcenschonender.

Vor der Installation bringen wir ebenfalls unser System auf den neusten Stand.

apt-get update
apt-get upgrade

Danach erfolgt die Installation von Xfce mit folgendem Befehl.

apt-get install xorg xfce4 xfce4-goodies hicolor-icon-theme gnome-icon-theme xfce4-power-manager

Damit die Einstellungen übernommen werden erfolgt ein Neustart des Systems.

sudo reboot

Quellen: Wikipedia LXDE, Wikipedia Xfce, Forum Raspberry Pi

Weiterlesen

Banana Pi: DS1820 Temperatursensor 1-Wire auslesen

Banana Pi und Temperatursensor DS1820
Banana Pi und Temperatursensor DS1820

Der Einplatinencomputer Banana Pi ist mit einer Vielzahl an Schnittstellen ausgestattet und eignet sich daher für die verschiedensten Projekte. Eine besondere Stärke des Pi ist die freie Programmierung Nutzung der GPIO-Pins. Der Banana Pi unterstützen außerdem eine Reihe von gängigen Bussystemen. Dadurch können verschiedene kompatible Geräte über ein Leitungssystem mit unterschiedlichen Befehlen angesteuert werden. Das sogenannte 1-wire Bussystem ist ein möglicher Bus, den der Pi unterstützt. Bei diesm findet der Datenaustausch über eine Signalleitung statt.

Temperatursensor DS1820

Ein beliebtes Projekt unter den Pi-Anwendern ist die Messung der Raum- und Außentemperatur mit Hilfe des Temperatursensors DS1820. Verwandte Temperatursensoren sind der DS18S20 und DS18B22. Die integrierten Schaltkreise sind in einem TO-92 Gehäuse untergebracht und beinhalten den Temperatursensor, einen Analog-Digitalwandler und ein 1-wire Interface. Die genannten Sensoren unterscheiden sich prinzipiell im Preis und der Messgenauigkeit. Für unsere Anleitung verwenden wir den dreibeinigen Temperatursensor DS1820:

  • Pin 1: GND, Masse
  • Pin 2: DQ, Daten
  • Pin 3: VDD, Betriebsspannung
DS1820 (Bild: kompf.de)
DS1820 (Bild: kompf.de)

Schaltungsaufbau Temperatursensor DS1820

Der Temperatursensor wird mit einer Betriebsspannung (Pin 3) zwischen 3 und 5 Volt betrieben. Aus diesem Grund verbinden wir Pin 3 des Sensors mit dem 3,3 Volt-Pin des Banana Pi. Außerdem wird der Ground-Pin (Pin 1) des Sensors mit einem Ground-Pin am Pi verbunden (Pin 9), sowie die Datenleitung DQ (Sensor Pin 2) mit dem GPIO Pin 4.

Zwischen die Datenleitung und die 3,3 Volt Spannungsversorgung schalten wir einen 4k7 Ohm Widerstand. Weitere Temperatursensoren können auf gleichem Weg parallel über den 1-wire Bus angeschlossen und ausgelesen werden. Insgesamt ist nur ein 4k7 Ohm Wiederstand notwendig. Das GPIO-Headerlayout kann hier nachgelesen werden.

DS1820 Ansteuerung
DS1820 Ansteuerung

Empfehlung: Solltet ihr öfters Basteln und verschiedene Schaltungen aufbauen, dann lohnt es sich von verschiedenen Bauteilkategorien Sets zu holen: Widerstandsset, Led-Set, Kondensator Sortiment

Software: Vorbereitung

Nachdem die Hardware ordnungsgemäß mit dem Banana Pi verbunden ist kann das Auslesen der Temperatur beginnen. Dazu installieren wir zunächst ein Softwarepaket, mit welchem wir den 1-Wire Bus zugänglich machen.

sudo apt-get install git
git clone https://github.com/linux-sunxi/sunxi-tools
cd sunxi-tools
make

Im nächsten Schritt wird die binäre Konfigurationsdatei script.bin bearbeiten. Diese Datei wird vom Allwinner SoC verwendet und liegt im Verzeichnis /boot/bananapi/. Mit dem gerade heruntergeladenem Tool laden wir aus der binären Datei eine fex-Datei.

sudo /home/bananapi/sunxi-tools/bin2fex script.bin bananapi.fex

Die fex-Datei bearbeiten wir im Anschluss mit dem Editor nano.

sudo nano bananapi.fex

Am Ende der Datei fügen wir folgenden Inhalt ein.

[w1_para]
gpio = 4

Anschließend können wir die Datei schließen und wandeln die bearbeitete fex-Datei zurück in die binäre Datei script.bin. Damit die Einstellungen übernommen werden ist ein Neustart notwendig.

sudo /home/bananapi/sunxi-tools/fex2bin bananapi.fex script.bin
sudo reboot

Software: Auslesen des DS1820 1-wire

Zum Auslesen der Temperatur eines Sensors am 1-Wire Bus müssen wir den entsprechenden Sensor selektiere. Wie in der Schaltung oben gezeigt können mehrere Sensoren angeschlossen sein. Zur Identifikation besitzt jeder Temperatursensor einen vom Hersteller eindeutig vergebenen Code. Jeder angeschlossene Sensor bekommt im Verzeichnis /sys/bus/w1/devices/ sein eigenes Unterverzeichnis. Innerhalb des Verzeichnisses eines Sensor findet man immer die Datei w1_slave. Mit dem cat Befehl können wir daraus (via Terminal) die Temperatur auslesen. Wie das geau funktioniert wird nun nochmal Schritt für Schritt beschrieben.

Zum Ermitteln der Identifikationsnummer und des entsprechenden Verzeichnisses wechseln wir zunächst in das Verzeichnis /sys/bus/w1/devices/ und lassen uns dort alle drin befindlichen Ordner und Dateien anzeigen.

cd /sys/bus/w1/devices/
ls

In meinem Fall habe ich einen Sensor angeschlossen mit der Identifikationsnummer 10-000802b5ab54. Anschließend wechseln wir in das gleichnamige Verzeichnis. Dort sehen wir das die genannte Datei w1_slave vorhanden ist.

cd /sys/bus/w1/devices/10-000802b5ab54
ls

Mit dem cat Befehl lesen wir anschließend die Datei und damit die momentane Temperatur aus. Es ergibt sich insgesamt folgender Verlauf und die im Bild dargestellte Ausgabe.

cat /sys/bus/w1/devices/10-000802b5ab54/w1_slave

Sreenshot Temperatur DS1820
Sreenshot Temperatur DS1820

Am Ende der Ausgabe finden wir die Angabe t=18687. Teilen wir diese Zahl durch 1000 ergibt sich eine aktuelle Temperatur von 18,687 °C.

Temperaturdaten mit PHP verarbeiten

Jetzt wo wir wissen wie man die Temperatur mit dem Sensor DS1820 ermittelt, kann man dies in vielen Varianten und Programmiersprachen umsetzen. An dieser Stelle möchte ich zeigen wie man mittels PHP die Temperatur auslesen und anschließend weiterverarbeiten könnte. Die Weiterverarbeitung der Temperatur in Form von einem Datenlogger mit einer Datenbank und einem entsprechendem Webinterface ist möglich und mit wenig Aufwand realisierbar. Vorraussetzung für eine Lösung mit PHP ist ein eingerichteter Webserver, wie zum Beispiel der Apache, mit den entsprechenden PHP Modulen.

Das auslesen der Temperatur kann in PHP mit folgenden Zeilen erledigt sein. Im Webinterface sollte damit die aktuelle Temperatur in °C ersichtlich werden.

<?php

$temp = exec('cat /sys/bus/w1/devices/10-000802b5ab54/w1_slave |grep t=');
$temp = explode('t=',$temp);
$temp = $temp[1] / 1000;
$temp = round($temp,2);

echo $temp . " &#x00B0;C";

?>

Ursprünglich und in ähnlicher Weise wurde das Tutorial auf Einplatinencomputer veröffentlich.

Quellen: linuxx.eu, Bild DS1820: kompf.de

Weiterlesen

Banana Pi: Taskmanager Htop installieren

Um den Banana Pi und die darauf ausgeführten Anwendungen im Blick zu behalten, kann man den vom OS bereitgestellten Taskmanager nutzen. Das Graphical User Interface gibt dabei umfassende Informationen zu Tasks und ähnlichem.

Viele Anwender betreiben den Pi jedoch headless, sodass meistens nur die Kommandozeile bzw. SSH genutzt wird. Mit dem Taskmanager Htop hat man die Möglichkeit via Terminal diverse, aktuelle Systemdaten auslzulesen. Dazu gehören unter anderem:

  • CPU Auslastung
  • Uptime
  • Ram
  • Swap

Wie Ihr das Tool instlliert erkläre ich euch im Folgenden. Zum installieren von Htop geben wir folgenden Befehl im Terminal ein:

sudo apt-get install htop

Nach einem kurzen Augenblick ist die Installation abgeschlossen. Das wars auch schon, mehr ist an dieser Stelle nicht mehr zu tun.

Der Taskmanager kann jederzeit mit folgendem Befehl gestartet werden:

htop

Für den Einplatinencomputer Raspberry Pi funktioniert diese Anleitung ebenfalls.

Screenshot htop
Screenshot htop

Quelle: Jan Karres

Weiterlesen

Teamspeak Alternative: Mumble Server auf dem Pi installieren

Die IP-basierte Sprachübertragung, kurz VoIP, umfasst die Telefonie über Computernetzwerke und gewinnt immer mehr an Bedeutung. Besonders in der Gaming-Szene ist die Sprachkonferenzsoftware Teamspeak weit verbreitet. Da aber Teamspeak auf Grund der Prozessor Architektur nicht auf dem Pi lauffähig ist, zeigen wir dir wie du einen Mumble Server auf deinem Banana Pi installierst.

Mumble ist ebenfalls eine freie Sprachkonferenzsoftware und optimal für den Einsatz parallel zu einem Online-Spiel. Das Tool zeichnet sich besonders durch eine niedrige Latenzzeit und gute Audioqualität aus. Der Mumble Client kann hier heruntergeladen werden.

Zunächst bringen wir unser System auf den neusten Stand.

sudo apt-get update && sudo apt-get upgrade

Kennt unser Pi alle aktuellen Pakektinformationen können wir die Installation vom Mumble Server starten.

sudo apt-get install mumble-server

Die Installation nimmt einen Augenblick in Anspruch. Ist diese abgeschlossen können wir eine erste Konfiguration vornehmen.

sudo dpkg-reconfigure mumble-server

Folgende Einstellungen sind empfehlenswert:

  • Autostart: Mumble Server beim Booten Starten? Yes
  • Der Mumble Server darf eine höhere Priorität nutzen? Yes
  • Passwort für den Super-User: beliebiges Passwort

Ist die Konfiguration abgeschlossen, können wir in einer Konfigurationsdatei unteranderem den Port und die Slotanzahl des Voice over IP Servers festlegen.

sudo nano /etc/mumble-server.ini

  • welcometext – Nachricht die dem Benutzer beim connecten angezeigt wird
  • users – Slotanzahl (maximale Anzahl an Benutzern auf dem Server)
  • port=64738 – Port unter dem der Server erreichbar ist, Standardport = 64738
  • registerName – Name des Haupt- bzw. Root-Kanals
Screenshot Mumble Konfiguration
Screenshot Mumble Konfiguration

Weitere Einstellungen können hier nachgelesen werden. Mit der Tastenreihenfolge Strg + X, Y und Enter wird die Datei gespeichert.

Abschlieend starten wir den Mumble Server neu, damit alle Einstellungen übernommen werden.

sudo /etc/init.d/mumble-server restart

Der Mumble Server ist nun vollständig auf dem Pi installiert und kann verwendet werden. Der Client muss neben der Software über ein Mikrofon verfügen. Neben den kabelgebundenen Headsets kann ich Bluetooth Kopfhörer und Bluetooth Headsets> empfehlen.

Quellen (Stand: 23.11.14): Einplatinencomputer, Wikipedia

Weiterlesen

Seafile installieren

In diesem Tutorial stellen wir die OwnCloud Alternative Seafile vor. Im Vergleich zu OwnCloud umfasst Seafile zwar etwas weniger Funktionen, bringt dafür aber auch sein eigenes Webinterface mit und ist performanter. Das bedeutet, dass kein Webserver vorinstalliert sein muss. In Sachen Sicherheit ist zu sagen, dass der Synchronisationsdienst von Seafile verschlüsselt abläuft (Clientside Encryption AES 256/CBC).

Für dieses Tutorial verwenden wir Raspbian für den Banana Pi. Unter einer vergleichbaren Distribution ist die Installation analog.

Vorbereitung

Zu Beginn bringen wir unser System auf den aktuellsten Stand. Dadurch arbeiten wir immer mit den aktuellsten Paketen

sudo apt-get update

Anschließend installieren wir alle von Seafile benötigten Pakete.

sudo apt-get -y install python2.7 python-setuptools python-simplejson python-imaging sqlite3

Für Seafile legen wir außerdem einen eigenen Benutzer seafile an.

sudo adduser seafile
sudo su seafile

Da Seafile keinen Webserver benötigt, kann ein eventuell installierter und nicht verwendeter Webserver abgeschalten werden. Dies Schritt ist optional und kann mit rcconf realisiert werden.

sudo apt-get install rcconf

Das Tool wird gestartet mit sudo rcconf. In der angezeigten Übersicht navigieren wir zu dem nicht benötigtem Webserver und deaktiveren diesen mit der Leertaste. Dabei verschwindet das Sternchen.

Seafile installieren

Zum installieren von Seafile wechseln wir zunächst in das Verzeichnis von unserem neuen Benutzer seafile.

cd /home/seafile

Nun laden wir die aktuelle Version von Seafile herunter und entpacken das Archiv. Die aktuellste Version kann unter dem Downloadbereich der Seafile Webseite ermittelt werden (zur Zeit Version 3.1.7).

wget https://bitbucket.org/haiwen/seafile/downloads/seafile-server_3.1.7_pi.tar.gz
tar -xvf seafile-server_3.1.7_pi.tar.gz

Da wir das Archiv nach dem Entpacken nicht mehr benötigen, kann dies gelöscht werden.

rm seafile-server_3.1.7_pi.tar.gz

Um Seafile einzurichten wechseln wir in das Verzeichnis, welches durch das Entpacken des Archives generiert wurde.

cd seafile-server-3.1.7

Anschließend starten wir den Installationskript von Seafile mit folgendem Befehl.

./setup-seafile.sh

Während der Installation von Seafile werden folgende Informationen erfragt. Ist alles angegeben werden eure Eingaben nochmal zusammengefasst. Dies kann mit Enter bestätigt werden.

  • Name für euren Seafile Server
  • Die IP-Adresse eures Pi´s, alternativ kann auch die DynDNS-Adresse angegeben werden
  • Ports mit Enter bestätigen für Standardeinstellungen; benutzerdefinierten Ports sind möglich
  • Speicherort: Angabe des vollständigen Pfades des Verzeichnisses, alternativ Pfad von eingebundem USB Stick oder Festplatte

Seahub installieren

Im letzten Teil wir noch das Webinterface Seahub installiert. Dies nimmt das Installationsskript direkt im Anschluss vor. Während der Installation werdet ihr nach einer Mail-Adresse und einem Passwort gefragt. Dies sind die Nutzerdaten für den Administrator bzw. für den Zugang zum Webinterface.

Den Seafile-Server, sowie Seahub starten wir mit folgenden Befehlen.

./seafile.sh start
./seahub.sh start

In einem Webbrowser eurer Wahl könnt ihr nun die IP-Adresse bzw. die DynDNS-Adresse aufrufen und euch mit den gerade vergebenen Daten anmelden. Wichtig ist dabei, dass ihr den Port 8000 mit übergebt.

http://IP_RPI:8000

Abschließend nehmen wir noch eine Einstellung bezüglich des Autostarts von Seafile vor. Momentan startet der Cloud Dienst nicht von alleine nach einem Systemstart.

crontab -e

Dort fügen wir die folgenden beiden Zeilen ein.

@reboot /home/seafile/seafile/seafile-server/seafile.sh start
@reboot /home/seafile/seafile/seafile-server/seahub.sh start 8000

Quellen (Stand:18.11.14): canox.net, forum-raspberrypi.de

Weiterlesen

Midnight Commander installieren

Der Midnight Commander, kurz mc, ist ein gängiger Datei-Explorer und gehört zu den bekannteste Konsolen Programmen unter Linux. In einer zweispaltigen Ansicht können Verzeichnisse und Dateien verwaltet und betrachtet werden. Weiterhin kann man mit dem MC auch auf Archive und Netzwerkpfade zugreifen. Ein großer Vorteil des Datei-Explorers ist außerdem, dass dieser sich via SSH auch mit der Maus steuern lässt.

Im Folgenden zeige ich dir wie du den Midnight Commander auf deinem Banana Pi installierst. Ich verwende dazu das Betriebssystem Raspbian. Im Terminal starten wir mit folgendem Befehl die Installation:

sudo apt-get install mc -y

Falls du denkst es kommt noch mehr: Nein das wars schon. Mit dem Befehl mc kann Midnight Commander gestartet werden.

Screenshot Midnight Commander unter Raspbian
Screenshot Midnight Commander unter Raspbian

Quellen (Stand: 15.11.2014): Wikipedia

Weiterlesen

GPIOs steuern mit wiringPi

WiringPi ist ein Programm mit dem man die GPIO Pins des Banana Pi ganz einfach ansteuern kann. Unter den Raspberry Pi Anwendern wird wiringPi vorzusweise verwendet. Das Tool ist auch für den Banana Pi verfügbar.

Die Programmbibliothek kann mit wenig Aufwand in die Programmiersprachen C/C++, Phyton, Java und PHP eingebunden werden. Die durch die Libary bereitgestellten Funktionen ermöglichen unteranderem das Schalten eines High- und Low-Zustandes auf gewünschte GPIO-Pins. Gleichermaßen können die Pins als Eingang genutzt und mit wiringPi ausgewertet werden. In diesem Artikel zeige ich wie man wiringPi installiert und einsetzt.

Zu Beginn öffnen wir das Terminal und laden uns wiringPi von Github herunter.

git clone https://github.com/LeMaker/WiringBPi.git

Wenn der Download abgeschlossen ist sollte im Verzeichnis /home/bananapi ein neuer Ordner erscheinen: wiringBPi. In diesem Ordner ist die Programmbibliothel von wiringPi abgelegt.

Um wiringPi verwenden zu können, müssen wir die Software im nächsten Schritt installieren. Zur Installation bringt die Software einen Skript mit, den wir im folgenden ausführen. Hierfür wechseln wir in das entsprechende Verzeichnis und setzen optional Zugriffsrechte.

cd /home/bananapi/wiringBPi
chmod +x build

Jetzt können wir den Installationsskript ausführen. Dies nimmt einen kurzen Augenblick in Anspruch.

sudo ./build

Screenshot Banana Pi - wiringPi
Screenshot Banana Pi – wiringPi

Nach dieser langen Ausgabe ist wiringPi erfolgreich installiert und kann verwendet werden. WiringPi ist sehr vielseitig und kann daher mit den Programmiersprachen C/C++, Phyton, Java und PHP genutzt werden. Außerdem ist das Schalten der GPIO Pins über die Konsole möglich. In diesem Tutorial beschränke ich mich auf die Ansteuerung des Pin Headers via Konsole und mit C/C++.

Grundlegend ist festzuhalten das die GPIO Pins als Eingang oder Ausgang konfiguriert werden können. Weiterhin gilt ein Pegel von 5 Volt bedeutet High und ein Pegel von 0 Volt bedeutet Low. Dies ist bei der Beschaltung des Banana Pi zu beachten: Zum einen um eine korrekte Funktionalität zu gewährleisten und zum anderen um den Banana Pi nicht zu beschädigen. Neben den Zuständen High und Low unterstützen einige Pins Funktionen wie PWM und UART.

GPIOs über Terminal steuern

Um herauszufinden wie die GPIO Pins momentan konfiguriert und beschalten sind, kann man folgenden Befehl im Terminal absetzen.

gpio readall

gpio readall - Screenshot Raspbian

Im folgenden wollen wir den GPIO Pin 17 ansteuern. Physikalisch ist das Pin 11 und aus Sicht von wiringPi ist es Pinnummer 0. Anhand der angezeigten Tabelle vom Befehl gpio readall kann dies nachvollzogen werden. Weitere Informationen zum Aufbau und Pindefinitionen gibt es hier.

Wenn wir Pin 17 beschalten wollen müssen wir diesem zunächst sagen, ob er als Eingang oder Ausgang fungieren soll. In diesem Tutorial möchte ich GPIO Pin 17 als Ausgang schalten. Dazu verwenden wir im folgenden Befehl den Parameter out. Als Eingang würde man in nehmen.

gpio export 17 out

Anschließend soll an GPIO Pin 17 ein High-Zustand (5 Volt) angelegt werden.

gpio -g write 17 1

Ruft man jetzt die Pinübersicht mit gpio readall erneut auf, wird ersichtlich, dass
der GPIO Pin 17 bzw. physikalisch 11 bzw. wiringPi Pin 0 auf Output und High geschalten ist. Wenn man anschließend vom High zum Low wechseln möchte, ersetzt man die 1 durch eine 0: gpio -g write 17 0

LED ansteuern mit wiringPi

Ansteuerung mit C/C++

Die Beschaltung der GPIO Pins mit Hilfe von wiringPi ist in Verbindung mit einer Programmiersprache wie zum Beispiel C/C++ sehr vielseitig und nützlich. Dazu muss die Programmbibliothek von wiringPi wie beschrieben installiert sein.

Im folgenden erstellen wir eine kleine C-Anwendung mit der wir über Pin 11 (GPIO 17, wiringPi 0) eine LED zum blinken bringen möchten. Dazu erstellen wir über das Terminal die Datei blinken.c .

sudo nano blinken.c

Der Inhalt der C-Anwendung kann wie folgt aussehen:

#include <wiringPi.h>

int main ()
{
// wiringPi initialisieren
if (wiringPiSetup() == -1) {
return 1;
}

// Pin 11 auf Ausgang schalten (GPIO 17, wiringPi 0)
// Achtung! wiringPi Layout nutzen
pinMode (0, OUTPUT);

// Dauerschleife
while(1) {

// Pin 11 High, LED an
digitalWrite (0, HIGH);
delay(500);

// Pin 11 Low, LED aus
digitalWrite(0, LOW);
delay(500);

}

return 0 ;
}

Nachdem wiringPi initialisiert ist geht das C-Programm in eine While-Schleife. Innerhalb der Schleife wird Pin 11 (GPIO 17, wiringPi 0) auf High geschalten. Anschließend wartet das Programm mit Hilfe des delay-Befehls 500 ms und schaltet dann den Pin und damit die LED wieder ab.

Mit den Tastenkombinationen Strg+X, Y und Enter schließen und speichern wir unseren C-Skript ab. Anschließend kompilieren wir den Quellcode.

gcc -o blinken blinken.c -lwiringPi

Jetzt können wir unser Programm ausführen.

sudo ./blinken

Beschaltet man über Pin 11 eine LED, so würde diese jetzt im Takt von 500 ms blinken. Wie man eine LED hardwareseitig installiert erkläre ich im nächsten Schritt.

LED verbinden

LED ansteuern
LED ansteuern
Für dieses Beipiel verwende ich eine Standard LED (2,1 Volt), einen 140 Ohm Vorwiderstand, ein Breakboard und Jumperkabel.

Zunächst verbinden wir den Vorwiderstand mit der LED. Dabei ist auf die richtige Polung der Leuchtdiode zu achten (Anode +, Kathode -). Anschließend muss Pin 11 des Banana Pis (GPIO 17, wiringPi 0) mit dem Vorwiderstand verbunden werden. Den Masse Pin (GND) des Banana Pi wird abschließend mit der Kathode (-) der LED verbunden.

Warum benötigen wir einen Vorwiderstand?

Der Vorwiderstand einer LED dient der Strombegrenzung und Spannungsanpassung. In unserem Falle bekommen wir vom Banana Pi eine 5 Volt Betriebsspannung. Die Standard-LED arbeitet in der Regel mit etwa 2,1 Volt und hat eine Stromaufnahme von ca. 20 mA. Daher liegen zwischen den 5 Volt Betriebsspannung und 2,1 Volt für die LED ganze 2,9 Volt die über den Vorwiderstand abfallen müssen.

Vorwiderstand dimensionieren

Mit Hilfe des Ohmschen Gesetzes kann der Vorwiderstand dimensioniert werden. Wir wissen das über dem Widerstand 2,9 Volt abfallen müssen und das durch diesen 20 mA durchfließen (Reihenschaltung).

R= U/I = 2,9 Volt / 0,02 A = 145 Ohm

Der Vorwiderstand sollte etwa 145 Ohm groß sein. Je nach LED und deren Farbe kann die Arbeitsspannung und Stromaufnahme abweichen. Hierbei sollte das jeweilige Datenblatt beachtet werden.

Led Ansteuerung mit Banana Pi
Led Ansteuerung mit Banana Pi

Quellen (Stand:03.11.14): Wikipedia, wiki.lemaker.org

Weiterlesen

Raspbian: Tastaturlayout ändern

Wer seinen Banana Pi mit dem Betriebssystem Raspbian verwendet wird feststellen, dass das Tastaturlayout nicht wie erwartet funktioniert. In diesem Beitrag zeige ich dir, wie du unter Raspbian das Layout mit wenigen Handgriffen auf Deutsch bzw. auf jede andere beliebige Sprache / Landeseinstellung anpasst.

Zunächst benötigen wir die passende Software, mit der wir die Einstellungen vornehmen können.

sudo apt-get install console-data

Nach Abschluss der Installation ist das Menü zum anpassen der Tastatursymbole bei mir automatisch erschienen. Bei wem das nicht der Fall sein sollte kann mit folgendem Befehl das Menü öffnen. Gleichzeitig kann bei Eingabe des Befehls die Einstellung der Symbolbibliothek immer wieder vorgenommen werden.

sudo dpkg-reconfigure console-data

Das sich öffnende Menü sieht wie folgt aus.

Screenshot Banana Pi - Configuration console-data
Screenshot Banana Pi – Configuration console-data

Dort können wir aus verschiedenen Quellen unser Layout / Symbole auswählen. Da die meisten eine USB Tastatur verwenden navigieren wir zum Punkt Select keymap from full list und bestätigen mit Enter

Screenshot Banana Pi - Keymaps
Screenshot Banana Pi – Keymaps

Aus den aufgelisteten Keymaps können wir nun das für uns passende Layout heraussuchen, also Deutsch. Im unteren Bereich der Liste findet man den Punkt pc / qwertz / German / Standard / latin – no dead keys.

Diese Option funktioniert bei mir bisher ohne Probleme. Wer Erfahrungen mit anderen Einstellungen hat kann gerne ein Feedback in den Kommentaren hinterlassen.

Anschließend definieren wir nun das eigentliche Tastaturlayout.

sudo dpkg-reconfigure keyboard-configuration

In der folgenden Liste empfehle ich die Einstellung Classmate PC zu wählen. Weiterhin navigieren wir zu Other und setzen die Option German.

Screenshot Banana Pi - Keyboard-configuration
Screenshot Banana Pi – Keyboard-configuration

In den nächsten beiden Schritten werden spezifischere Einstellungen zum Tastaturlayout konfiguriert. Ich empfehle die Optionen The default for the keyboard layout und darauffolgend No compose key.

Abschließend werden wir gefragt, ob mit der Tastenkombination Strg + Alt + Entfernen der X Server geschlossen werden soll. Diese Entscheidung liegt bei jedem selbst: Ich empfehle No.

Um die Einstellungen zu aktivieren, führen wir den folgenden Befehl aus.

sudo udevadm trigger --subsystem-match=input --action=change

Das wars auch schon: Das Tastaturlayout ist jetzt auf Deutsch eingestellt. Rückblickend fasse ich nochmal alle Terminalbefehle zusammen:

sudo apt-get install console-data
sudo dpkg-reconfigure console-data
sudo dpkg-reconfigure keyboard-configuration
sudo udevadm trigger --subsystem-match=input --action=change

Quelle (Stand: 1.10.14): forum.lemaker.org

Weiterlesen

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