Raspberry Pi – GPIO Pins schalten

Das Raspberry Pi verfügt über 17 frei programmierbare GPIO Pins. Diese können als Eingabe- oder Ausgabeleitung verwendet werden. Wird die Leitung zur Ausgabe verwendet so liegt an ihrem GPIO Pin eine Spannung von 3,3V an (logisch 1). Wird die Leitung als Eingang verwendet kann logisch eine 1 gelesen werden wenn eine Spannung von 3,3 Volt anliegt. Hier finden Sie eine übersicht der GPIO Pins.

Um die GPIO Ausgabe zu testen empfiehlt sich die Visualisierung der Schaltzustände mit einer Leuchtdiode. Diese kann wie in folgender Grafik angeschlossen werden:

Anschluss einer LED an die Raspberry GPIO Pins

Anschluss einer LED an die Raspberry GPIO Pins

GPIO Ansteuerung per Shell

Die GPIO können über Dateien im Verzeichnis „/sys/class/gpio/“ angesteuert werden. Dies muss mit Root-Rechten geschehen. Entweder werden die Befehle direkt als root ausgeführt oder mit vorgestelltem sudo. Sind Sie als User „pi“ angemeldet kann mit su root zum Root User gewechselt werden.
Nach dem Systemstart sind die GPIO Pins zunächst als Eingang geschaltet und müssen mit „Export“ und Direction out als Ausgang definiert werden. Mit folgenden Befehlen kann der GPIO Pin 2 aus der oberen Schaltung geschaltet werden:

$ cd /sys/class/gpio
$ echo "2" > export
$ echo "out" > gpio2/direction

GPIO auf an (3,3V Spannung)
$ echo "1" > gpio2/value

GPIO auf aus(keine Spannung)
$ echo "0" > gpio2/value

GPIO Ansteuerung per WiringPi

Alternativ zur direkten Ansteuerung kann das Programm WiringPi installiert werden. Der Vorteil von WiringPi liegt darin das keine Rootrechte zum Schalten der GPIPO Pins benötigt werden. Eine Anleitung zum Installieren von WiringPi findet sich auf der Projektseite.

Eingang auslesen
gpio -g read 2

GPIO Pin als Ausgang definieren
gpio -g mode 2 out

Ausgang setzen
gpio -g write 2 1

GPIO Ansteuerung per PHP mit WiringPi

Mit WiringPi und dem PHP Befehl „shell_exec“ können die GPIO Pins auf einfache Weise über eine Webseite geschaltet werden.

$val = trim(@shell_exec("/usr/local/bin/gpio -g read 2"));
$val = trim(@shell_exec("/usr/local/bin/gpio -g write 2 1"));

GPIO Ansteuerung per Java und Pi4J

Unter Java können die GPIO Pins komfortable mit der Libraray Pi4J angesprochen werden. Das Programm jgRaspiGPIO nutzt die Library und ist mit Quelcode verfügbar.

geposted: 29. November 2013 | aktualisiert: 3. Mai 2014 | Autor: Marcus Hottenrott
Kategorie(n): Raspberry Pi

Raspberry Pi – FM Sender

Im Rahmen eines #pihack-Wochenendes für das Schulprojekt „Code Club“ entstand an der Imperial College Robotik Society in London eine Software mit der der Raspberry Pi in einen UKW Sender verwandelt werden kann. Der Programm Code ist GPL lizensiert und kann hier heruntergeladen werden. Hardwareseitig sind keine Änderungen nötig. Lediglich eine kurze Antenne (20 cm Kabel) kann an GPIO 4 (Pin 7) angeschlossen werden. In Deutschland darf der Sender jedoch nicht betrieben werden, da seine Ausgangsleitung zu hoch ist und ein breiter Frequenzbereich gestört werden kann! Trotzdem zeigt das Projekt eindrucksvoll was mit dem Raspberry Pi möglich ist.

Das FM-Signal wird durch Modulation der GPIO-Clock generiert und kann Audiosignale im Bereich von 1 MHz bis 250 MHz übertragen.

Senden einer Wave Datei bei 100 Mhz:

sudo ./pifm sound.wav 100.0

Die Software erwartet ein Monoaudiosignal in Form einer Wave-Datei mit 16 Bit Auflösung und 22,05 kHz Abtastrate. Eine solche Wave Datei kann mit der Open Source Software „mPlayer“ erstellt werden:

mplayer -quiet -vo null -vc dummy -af resample=22050,channels=1 -ao pcm:waveheader:file=file_out_22kHz.wav file_in.wav
geposted: 29. November 2013 | aktualisiert: 29. November 2013 | Autor: Marcus Hottenrott
Kategorie(n): Raspberry Pi

Raspberry Pi – Schaltungen zeichnen mit Fritzing

Mit der Open Source Softwarte Fritzing können Schaltungen für den Raspberry Pi auf einem virtuellen Breadboard(Steckplatine) entworfen werden. Die Software bietet drei Sichten auf die entworfene Schaltung. Dazu zählen eine visuelle Ansicht mit einem Breadboard, eine Schaltplan-Ansicht und eine Ansicht die das Platinenlayout darstellt. Eine Änderung in einer Ansicht führt dazu das die anderen Ansichten ebenfalls geändert werden.

Breatboardansicht einer Raspberry Pi Schaltung in der Software Fritzing

Breadboard-Ansicht einer Raspberry Pi Schaltung in der Software Fritzing

Die Software bringt bereits viele elektronische Bauteile mit, die über einen Bauteilbibliothek am rechten Rand ausgewählt werden können. Ãœber einen Button am rechts oben in der Bibliothek kann diese um weitere Bauteile erweitert werden. Ein Bauteileditor (Menü -> Bauteil -> Bearbeiten) erlaubt das verändern von Bauteilen und das erstellen neuer Bauteile. Das Erstellen neuer Bauteile wird gut in diesem Video erklärt.

Schaltplan-Ansicht einer Raspberry Pi Schaltung in der Software Fritzing

Schaltplan-Ansicht einer Raspberry Pi Schaltung in der Software Fritzing

geposted: 29. November 2013 | aktualisiert: 22. Juni 2014 | Autor: Marcus Hottenrott
Kategorie(n): Raspberry Pi

Raspberry Pi – Temperaturmessung mit DS18B20 1-Wire Sensor

Raspberry Pi mit angeschlossenem 1-Wire DS18B20 Temperatursensor

Raspberry Pi mit angeschlossenem 1-Wire DS18B20 Temperatursensor

Mit dem 1-Wire Sensor DS18B20 können mit dem Raspberry Pi einfach Temperaturen messen. Dieser Sensor verwendet das 1-Wire Bussystem zur Ãœbertragung der Daten an den Raspberry Pi und kann an die GPIO Pins angeschlossen werden. Der Sensor benutzt dabei die drei Leitungen Masse, Spannungsversorgung und eine Signalleitung. Softwareseitig bringt die Raspbian Linux Distribution bereits die benötigten 1-Wire Kernel-Module mit um solche Sensoren auszulesen. Im nachfolgenden wird gezeigt wie der Sensor an den Raspberry Pi angeschlossen wird und die Temperaturwerte ausgelesen werden können.

Hardware-Installation des DS18B20

Der DS18B20 wird an die GPIO-Pins für 3,3V Spannung und Ground angeschlossen sowie an GPIO-Pin 4 für die Datenleitung. Zwischen die 5V Leitung und die Datenleitung wird 4k7 Ohm Wiederstand geschaltet. Das GPIO Pinlayout für den Raspberry Pi der Version 1 & 2 kann hier nachgeschlagen werden. Die untere Grafik zeigt den Aufbau der Schaltung:
Raspberry Pi DS1820 Steckplatine

Software-Installation des DS18B20

Die bereits angesprochenen 1-Wire Kernelmodule können mit folgendem Befehl geladen werden:

pi@raspberrypi ~ $ sudo modprobe wire
pi@raspberrypi ~ $ sudo modprobe w1_gpio
pi@raspberrypi ~ $ sudo modprobe w1_therm

Ob das Laden der Kenrel-Module erfolgreich war kann mit „lsmod“ überprüft werden:

pi@raspberrypi ~ $ sudo lsmod
Module                  Size  Used by
w1_therm                2705  0
w1_gpio                 1283  0
wire                   23530  2 w1_gpio,w1_therm
cn                      4649  1 wire
snd_bcm2835            12808  0

Damit die Kernel-Module nach einem Systemneustart automatisch geladen werden. Sollten sie in die Datei „/etc/modules“ eingetragen werden:

pi@raspberrypi ~ $ sudo nano /etc/modules

Module hinzufügen und speichern:
wire
w1-gpio
w1-therm

Ist die Hardware angeschlossen und die Kernel-Module geladen werden die Temperaturwerte laufend in eine Datei geschrieben. Es können mehrere Temperatursensoren angeschlossen werden, wobei jeder Sensor mit einem Verzeichnis unter „/sys/bus/w1/devices/“ auftaucht. Innerhalb des Verzeichnis eines Sensors kann die Temperatur aus der Datei „w1_slave“ ausgelesen werden. Mit dem „cat“ Befehl kann der Inhalt auf die Konsole ausgegeben werden.:

pi@raspberrypi ~ $ cat /sys/bus/w1/devices/28-00000436ccd1/w1_slave
41 01 4b 46 7f ff 0f 10 aa : crc=aa YES
41 01 4b 46 7f ff 0f 10 aa t=20062

t=20062 ist die aktuell gemessene Temperatur und entspricht 20,062 Grad.

Mögliche Verarbeitung der Temperaturdaten mit PHP, MySQL Datenbank und Webseitenanzeige

Raspi_DS18B20_TemperaturauswertungDie Temperaturwerte können auf verschiedenste Weise verarbeitet werden. z.B können sie in eine Datenbank geschrieben werden und auf einer Webseite veröffentlicht werden. Ich habe dazu ein Beispiel geschrieben, das die Temperatur im Tagesverlauf darstellt und noch einige Zusatzinformationen von Yahoo zieht. Das vorgehen wird hier nur grob beschrieben. Die benötigten Dateien sind am Ende des Artikels angefügt und können verändert werden.

1. Die Temperaturwerte werden in eine Tabelle einer MySQL Datenbank geschrieben. Wie eine MySQL DB auf dem Raspi installiert wird, ist hier beschrieben.:

use DB_NAME;
CREATE TABLE TB_Weather (
	timestamp BIGINT NOT NULL,
	temperature FLOAT,
	PRIMARY KEY (timestamp)
	)
	ENGINE=InnoDB;

2. Ein PHP Skript schreibt die Werte in die Tabelle. Falls der PHP Interpreter noch nicht installiert ist kann dies mit wie folgt erledigt werden. Damit kann das PHP-Skript auf der Console aufgerufen werden. „php -f temperatursensor.php“

sudo apt-get install php5
Module:
sudo apt-get install libapache2-mod-php5 libapache2-mod-perl2 php5 php5-cli php5-common php5-curl php5-dev php5-gd php5-imap php5-ldap php5-mhash php5-mysql php5-odbc

3. Mittels Cron können die Temperaturwerte zyklisch in die Datenbank geschrieben werden:

pi@raspberrypi ~ $ sudo crontab -e
In der Datei zyklisch das PHP Skript zum schreiben der Temperaturwerte aufrufrn:
*/5 * * * * php -f /home/pi/temperatursensor.php

4. Die Weboberfläche zur Auswertung der Temperaturdaten aus der DB muss auf einem Webserver wie Apache laufen und Zugriff auf die Datenbank haben.
Die Wetterinformationen werden mit dem Simple Weather Plugin von Yahoo ermittelt. Dazu muss in der index.php auf Clientseite die woeid (where on earth id) passend zu dem gewünschten Standort gesetzt werden. Die woeid kann mittels einer Suchmaschine ermittelt werden.

Download der Projektdateien zur Temperaturauswertung

geposted: 25. November 2013 | aktualisiert: 24. November 2014 | Autor: Marcus Hottenrott
Kategorie(n): Raspberry Pi

QR Code Generator

geposted: 22. November 2013 | aktualisiert: 3. Mai 2014 | Autor: Marcus Hottenrott
Kategorie(n): Web

Java Webanwendungen mit Maven erstellen

Das Grundgerüst einer Java-Webanwendung lässt sich mit Maven schnell erstellen. Webanwendungen stellen das GUI (Graphical User Interface) des Programms in Form von Webseiten mit HTML, CSS und JavaScript dar. Um die Programmoberfläche zu erstellen stehen verschiedene Java Frameworks bereit, wovon einige am Ende des Artikels genannt werden. Das fertige Kompilat / Programm ist eine Datei mit der Dateiendung *.war (Web Archive), welche in einem Servlet Container wie Tomcat oder einem Anwendungsserver wie Wildfly deployed wird.

Falls Maven noch nicht installiert ist, wird hier erklärt wie die Installation unter Windows durchgeführt werden kann.
Als erstes erstellen Sie ein Verzeichnis in dem die Webanwendung erstellt werden soll und navigieren in der Windows Konsole (Windows-Taste + R -> cmd ) in dieses Verzeichnis. Die grundlegende Struktur der neuen Webanwendung kann durch einen einzigen Maven Befehl erzeugt werden.

mvn archetype:create -DgroupId=GROUPID -DartifactId=ARTIFACTID -DarchetypeArtifactId=maven-archetype-webapp

Hier wird Maven (mvn) mit dem Create-Befehl für das archetype Plugin aufgerufen. Parameter werden mit „-D“ eingeleitet. Bei dem Anlegen des Webprojektes muss über die Parameter eine GroupID und eine ArtifactID übergeben werden.

groupId – Der Paketname für das Projekt. Als GroupId wird meist der Domain Name verwendet, unter dem die Anwendung später erreichbar sein soll. Die einzelnen Bestandteile des Domainnamen werden dabei in umgekehrter Reihenfolge angegeben.
artifactId – Der Projektname. Die ArtifactId wird als Verzeichnisname für das Projekt genutzt und ist später in der URL der Webanwendung vorhanden. http://localhost:8080/artifactID
archetypeArtifactId – Der Archetype gibt das von dem Create-Befehl verwendete Template an. In unserem Fall ist dies das Template für eine Webanwendung. Würde der Befehl werggelassen erstellt Maven ein Standard Java-Projekt.

Beispiel:

mvn archetype:create -DgroupId=net.it_adviser.webapp -DartifactId=WebApp -DarchetypeArtifactId=maven-archetype-webapp

Das Programm kann mit dem Maven Befehl Package im Root Verzeichnis der Anwendung kompiliert werden und somit die zur Distribution fertige WAR-Datei erstellt werden. Das fertige Kompilat befindet sich im „target“ Verzeichnis:

mvn package

In Eclipse kann das Mavenprojekt einfach importiert werden. Dazu wird der das neue Verzeichnis mit der Webanwendung in das Workspace Verzeichnis kopiert und anschließend importiert. Dazu sollte in Eclipse nicht das Embedded Maven genutzt werden, sondern die externe Maven-Installation. Dies kann Preferences eingestellt werden. (Window -> Preferences -> Maven -> Installations). Das neue Projekt kann einfach über das Menü importiert werden: (File -> Import -> Maven -> Existing Maven Projekt). Dort wählen Sie das Root Verzeichnis des neuen Webprojektes und importieren die POM-Datei (Project Object Model). Siehe Bild:

Maven_Projekt_Importieren

Projektstruktur im Eclipse Projektexplorer:
Java_Webprojekt_ProjectExplorer

Für die Erstellung einer ansprechenden Weboberfläche stehen eine reihe von Frameworks bereit. u.a:
Die „Klassiker“
JSP – Java Server Pages
JSF – Java Server Faces

Moderner
Primefaces
Richfaces
GWT – Google Webtoolkit
Vaadin (GWT basiert)
Sencha GXT (GWT basiert)

geposted: 20. November 2013 | aktualisiert: 17. August 2019 | Autor: Marcus Hottenrott
Kategorie(n): Java, Maven

VMware vSphere (ESXi) – NFS Freigabe einbinden

VMware ESXi Server können im Netzwerk freigegebene Speicher über das NFS (Network File System) Protokoll als Datastore einbinden. Auf diesem Weg eingebundene Datenspeicher eignen sich gut um beispielsweise CD/DVD Images von Betriebssystemen zur Installation bereitzustellen oder um als Backup-Ziel für VMs zu dienen. Die VMs können im ausgeschalteten Zustand kopiert werden. (Rechtsklick auf den Datastore in vSphere -> Durchsuchen) Der Betrieb einer virtuellen Maschine auf einem NFS Storage ist möglich jedoch nicht empfehlenswert. Dazu sollte der Speicher per iSCSI eingebunden werden. Um einen NFS Datastore zum ESXi Server hinzuzufügen wählen Sie Konfiguration -> Speicher -> Speicher hinzufügen -> NFS und geben die IP Adresse des Server der die NFS Freigabe bereitstellt und den Freigabenamen ein. Siehe Bild:

vSphere ESXi NFS Freigabe einbinden

vSphere ESXi NFS Freigabe einbinden

Da ich privat ein Qnap NAS (Network Attached Storage) betreibe möchte ich hier noch kurz den Weg aufzeigen wie bei diesen NAS-Geräten Verzeichnisse über das NFS Protokoll bereitgestellt werden können. Dazu rufen Sie die Systemsteuerung auf und navigieren zu den freigegebenen Verzeichnissen (Systemsteuerung -> Privilegieneinstellungen -> Freigabe-Ordner – Aktion). Bei den Aktionen wird für die Zugriffsberechtigung der Berechtigungstyp „NFS-Hostzugriff“ gewählt und der IP Adresse des später zugreifenden Rechner uneingeschränkter Zugriff gewährt. Siehe Bild:

NFS mit Qnap NAS

NFS mit Qnap NAS

Apache Maven installieren

maven-logoMaven ist ein auf Java basierendes Build-Management-Tool der Apache Software Foundation mit dem standardisierte Java Programme erstellt und verwaltet werden können. Maven verfolgt dabei das Prinzip des „Convention over Configuration“ wodurch viele Schritte (u.a. Projektaufbau, Kompilieren, Testen, Packen, Distribution) über den gesamten Zyklus der Softwareerstellung standardisiert sind und automatisiert werden.

Installation von Apache Maven unter Windows

1. Maven benötigt das Java Development Kit (JDK).
2. Wenn das JDK vorhanden ist kann Maven heruntergeladen werden und in ein beliebiges Verzeichnis entpackt werden. z.B. nach C:\Maven
3. Anschließend müssen einige Systemvariablen gesetzt werden, die im Dialog Systemvariablen (Windows Taste + Pause Taste -> Erweiterte Systemeinstellungen -> Reiter „Erweitert“ -> Umgebungsvariablen…) gepflegt werden. Dabei müssen die Pfade zum Java SDK und Maven entsprechend ihrer Lage auf der Festplatte angepasst werden.

Systemvariablen setzen:

JAVA_HOME C:\Program Files\Java\jdk1.7 
M2_HOME C:\Maven
MAVEN_OPTS -Xms256m -Xmx512m 
PATH %JAVA_HOME%\bin;%M2_HOME%\bin

Maven Ungebungsvariablen

4. Die Installation kann überprüft werden, indem in der Windows Console (Windows-Taste + R ->“cmd“) der Befehl „mvn -Version“ aufgerufen wird:

C:\>mvn -version
Apache Maven 3.0.5 (r01de14724cdef164cd33c7c8c2fe155faf9602da; 2013-02-19 14:51:
28+0100)
Maven home: D:\Maven\bin\..
Java version: 1.7.0_21, vendor: Oracle Corporation
Java home: C:\Program Files\Java\jdk1.7.0_21\jre
Default locale: de_DE, platform encoding: Cp1252
OS name: "windows 7", version: "6.1", arch: "amd64", family: "windows"

5. Maven legt auf der lokalen Festplatte ein lokales Repository an, welches standardmäßig im Benutzerverzeichnis liegt:

  • unter XP im Verzeichnis C:\Dokumente und Einstellungen\{Kürzel}\.m2
  • unter Windows 7 im Verzeichnis C:\Users\{Kürzel}\.m2

Das Repository kann verschoben werden, indem in der „settings.xml“ die im oben genannten Pfad liegt der folgende Eintrag angepasst und aus dem Kommentar genommen wird:

D:/repository
geposted: 17. November 2013 | aktualisiert: 4. Mai 2015 | Autor: Marcus Hottenrott
Kategorie(n): Java, Maven

VMware vSphere (ESXi) SSH Zugang aktivieren

Ein ESXi Server basiert auf Linux und bietet daher die Möglichkeit einen SSH Zugang zu öffnen. Über SSH können z.B. virtuelle Maschinen gestartet und gestoppt werden und die VMs mit WinSCP kopiert werden. Das öffnen des SSH Ports stellt jedoch ein weiteres Einfalltor für Angreifer da und wird daher von VMware nicht empfohlen. Der vSphere Client zur Verwaltung eines ESXi host gibt bei aktivierten SSH daher eine entsprechende Warnmeldung aus. Wer in einer Testumgebung SSH aktivieren möchte kann dies ab ESXi Version 5.x wie folgt über den vSpehre Client erledigen:

SSH auf einem ESXi Server aktivieren

SSH auf einem ESXi Server aktivieren

SSH auf einem ESXi Server aktivieren

SSH auf einem ESXi Server aktivieren

Der Zugriff auf den ESXi Server kann danach von Windows aus über einen SSH Client wie Putty erfolgen. Der Benutzername und das Passwort sind das gleiche wie dem Login mit dem vSphere Client. Auf der Konsole stehen dann eine Reihe von Befehlen zur Verfügung. Unter anderem zum Starten und Stoppen von virtuellen Maschinen.

Liste aller verfügbaren VMs:

vim-cmd vmsvc/getallvms

Virtuelle Maschine herunterfahren:

vim-cmd vmsvc/power.off VM_NUMMER

Virtuelle Maschine starten:

vim-cmd vmsvc/power.on VM_NUMMER

Um die virtuellen Maschinen auf einen anderen Host zu kopieren kann das Programm WinSCP genutzt werden. Der Kopiervorgang geht deutlich schneller als über den in vSphere Client integrierten DataExplorer. Die VMs dürfen jedoch nur im ausgeschalteten Zustand kopiert werden. Sie liegen in diesem Verzeichnis:

/vmfs/volumes/DATASTORENAME/VM_VERZEICHNIS
geposted: 10. November 2013 | aktualisiert: 17. August 2019 | Autor: Marcus Hottenrott
Kategorie(n): Virtualisierung, VMware

Linux von Windows aus verwalten (Putty | WinSCP | VNC)

Putty – kostenloser SSH Client für Windows

Putty ist ein kostenloser SSH Client für Windows. Er muss nicht installiert werden, sondern die Exe-Datei kann direkt ausgeführt werden. Er verbindet sich über das SSH-Protokoll mit dem Linux Computer und überträgt die Linux Shell (Konsole) auf den Windows PC. Zum Verbinden muss lediglich die IP-Adresse oder der DNS Name des Linux Computers eingegeben werden.

Putty - Free SSH Client für Windows

Putty – Free SSH Client für Windows

WinSCP – sFTP, FTP & SSH Client

WinSCP ist ein grafischer Open Source SFTP und FTP Client für Windows, der auch das SCP-Protokoll unterstützt. Er ermöglicht einen gesicherten Datentransfer zwischen einem Windows- und Linux-Computer. Zum Verbinden reicht auch hier die IP-Adresse oder der DNS Name des Linux Computers und die bekannten Login-Daten.

WinSCP - Free sFTP, FTP und SSH Client

WinSCP – Free sFTP, FTP und SSH Client


WinSCP - Free sFTP, FTP und SSH Client

WinSCP – Free sFTP, FTP und SSH Client

VNC – Linux vom Windows-PC fernsteuern

Wer eine grafischen Desktop auf seinem Linux System nutzt kann mit VNC (Virtual Network Computing ) die Monitorausgabe auf seinen Windows Computer übertragen. Dies ist vergleichbar mit dem aus der Windows Welt bekannten RDP (Remote Desktop Protokoll).
Unter Windows muss dazu einer der zahlreichen VNC Clients installiert werden wie z.B. RealVNC. Auf dem Linux System wir das Gegenstück, ein VNC Server vorausgesetzt. Unter dem KDE Desktop kann der VNC Server wie folgt installiert werden Kontrollzentrum -> Internet -> Arbeitsfläche freigeben.

geposted: 10. November 2013 | aktualisiert: 3. Mai 2014 | Autor: Marcus Hottenrott
Kategorie(n): Linux, Raspberry Pi