go seven !

RaspberryPi, Relaisboard, WebGPIO und was ich damit anstelle

Kurzes Vorwort: Ich habe einen RaspberryPi, ein Relaisboard (als 4er oder 2er) und dafür eine Websteuerung geschrieben. Nun was damit anfangen? In meiner Studentenbude habe ich (auch mit einem Pi) ein Heimkinosystem mit Beamer, Soundsystem & co. Da man als Automatisierungstechniker grundsätzlich faul ist, möchte ich den Beamer nicht per Fernbedienung einschalten (und auch Kanalwechsel und co per Handy steuern) sowie das Soundsystem & Beamer komplett vom Netz trennen können (da ich ja in dem Zimmer schlafe).

Dazu soll der Beamer (Benq MP610) per Seriell-Verbindung gesteuert werden und alle Komponenten per Relaisboard spannungsfrei geschaltet werden. Letzteres habe ich nun (Prototypenmäßig) realisiert. Für Bastelwillige, die dies nachbauen wollen, hier eine Materialliste:

  • RaspberryPi
  • WLAN-Modul (wenn man kein LAN-Kabel verlegen will)
  • Aufputz-Verteilerdose (oder ähnliches, großes Gehäuse)
  • Relaisboard
  • Diverse NYM-Kabel (gibt es bei Obi, alternativ kann man auch flexibles Kabel nehmen)
  • Diverse Steckkabel (Jumperkabel, female-female und male-female)
  • Steckdosen (an die die Relaisausgänge im Endeffekt angeschlossen werden)
  • 5V Netzteil

Der Pi, wird mit Spannungsversorgung (5V) sowie den Railaisboard(s) in der Verteilerdose untergebracht:

pi-box

Ich möchte an dieser Stelle darauf hinweisen, dass die Verkabelung nicht Final ist. Es handelt sich hierbei um einen PROTOTYPEN. Man möge mir deshalb die Unprofessionalität verzeihen. Kurz zusammengefasst kann ich die Verdrahtung so zusammenfassen:

Das schwarze Kabel sorgt für die Spannungsversorgung (230V). Derzeit nur per Schuko-Steckdose – also Maximal 16A. Später soll der Pi im Unterverteiler meines Zimmers sitzen und dann werden die 3 Phasen auf die diversen Relais aufgeteilt (jedes Maximal 10A), um eine Lastverteilung zu garantieren und mehr als nur 16A Gesamtstrom haben zu können. Diese Spannungsversorgung speist das 5V Netzteil (ganz links) sowie die Eingänge der Relais 1 bis 6.

Die 5V Spannungsversorgung speist den Pi (über PIN 2 und 6) sowie VCC der Relaisboards (VCC und GND, der Jumper zwischen JD-VCC und VCC muss gesetzt sein). Die Steuereingänge der Relaisboards gehen direkt auf die GPIO-Pins des Pi.

Zusätzlich habe ich eine LED angebracht (Rot, hinter einem 100Ohm Widerstand), welche den Betriebszustand signalisiert. Diese ist direkt zwischen GND und PIN11 angeschlossen (MIT Widerstand 😛 ).

Die Softwareseite ist regelmäßigen Lesern schon bekannt. Ich setze Raspbian ein, zusätzlich meine Websteuerung. Damit kann ich über ein Webinterface die GPIO’s lesen und schreiben.

Todo:

  • Serielle Verbindung zum Beamer herstellen
  • Oberfläche bereinigen, anpassen
  • Als Android-App umsetzen
  • Umsetzung auf Hutschiene (bei Pollin gibt es da ein tolles Set)

UPDATE:

Auf Wunsch eines Lesers habe ich hier mal die grundsätzliche Verschaltung dargelegt:

connection

Man entschuldige bitte die Unprofessionalität der Zeichnung – sie entstand in kürzester Zeit im Zug 🙂 Wichtig: Die hier dargestellte Weise funktioniert zwar, ist aber bezüglich der Spannungsversorgung des Boards nicht zu empfehlen, wenn der Pi nur über MicroUSB befeuert wird. Am besten werden das Board UND der Pi an den GPIO’s versorgt. PS: Die GPIO’s sind frei wählbar. Der Jumper muss gesetzt sein.

WLAN Probleme mit dem Raspberry Pi beseitigen

Seit kurzem hängt einer meiner Pi’s am WLAN. Die Treiberunterstützung ist gut, der Stick wird sofort erkannt. Auch das Aufbauen der Verbindung klappt. Allerdings begegnete ich dem Problem, dass die Verbindung oft “einfror” und teilweise gar Pakete verloren gingen. Beim Pi tippt man da als erfahrener User schnell auf eine mangelhafte Spannungs- / Stromversorgung. Also schnell das Messgerät ran und: 5,15V bei 0,81A. Kein Ding also, bei entsprechendem Netzteil. Aber woher dann die Aussetzer und Hänger?

Linux hat eine eingebaute Energiesparfunktion für WLAN. Ursprünglich gedacht war diese für Notebooks, um die Akkulaufzeit zu verlängern. In meinem Fall versetzt sie aber die WLAN Karte in eine Sparmodus, der eine Korrekte Datenübertragung verhindert. Was kompliziert kling kann simpel umgangen werden. Dazu muss die Datei /etc/network/interfaces geöffnet werden:

sudo nano /etc/network/interfaces

Jetzt wird folgende Zeile eingefügt:

wireless-power off

Mit Strg + X schließen, mit J oder Y bestätigen, neustarten und schon schnurrt die WLAN Verbindung wieder!

pi-wlan-powersave

RaspberryPi als PPTP-VPN-Server

Wenn man (aus welchem Grund auch immer) Zugriff auf ein anderes Netzwerk haben möchte, das direkte Mitlesen beim Surfen im Internetcafé unterbinden will oder einfach nur mal eine andere IP-Adresse braucht, dann ist man sicher schon mal auf den Begriff VPN gestoßen. Ein VirtuellesPrivatesNetzwerk – Netzwerktunnel oder so ähnlich. Nun kann man sich bei einem Anbieter für teuer Geld Produkte (CyberGhost, AvastVPN etc.) verkaufen lassen, in die man nicht “hineinschauen” kann. Oder man greift sich seinen RaspberryPi und macht es selber. Es ist einfacher als gedacht!

Ich setze mal voraus, dass Raspbian oder eine vergleichbare Distribution installiert ist. Internetzugriff ist natürlich auch essentiell.

Als Erstes bringen wir den Pi auf den aktuellen Stand:

sudo apt-get update ; sudo apt-get upgrade ; sudo apt-get dist-upgrade

Dann testen wir die Vorbedingungen:

sudo modprobe ppp-compress-18

Keine Fehler? Dann kann es ja losgehen. Wir installieren den Server:

sudo apt-get install pptpd

Wenn dies erfolgreich geschehen ist, müssen noch ein paar Anpassungen in Konfigurationsdateien durchgeführt werden. Als erstes nehmen wir und die pptp.conf vor:

sudo nano /etc/pptp.conf

Darin wird folgende Zeile angepasst:

localip 192.168.0.1

Die IP-Adresse muss natürlich durch die Adresse des Pi’s ersetzt werden (per ifconfig herausfinden). Mit Strg+x schließen und speichern. Jetzt öffnen wir /etc/ppp/pptpd-options :

sudo nano /etc/ppp/pptpd-options

Und geben folgendes ein am Ende der Datei ein:

ms-dns 8.8.8.8
ms-dns 8.8.4.4

Die IP-Adressen könne so gelassen werden (wenn der Pi wie meinem im Rack hängt (PCextreme.nl o.ä.)) sollten aber hinter einem Router durch dessen IP ersetzt werden. Speichern und in der Datei /etc/ppp/chap-sectrets die Nutzernamen und Passwörter festlegen.

sudo nano /etc/ppp/chap-secrets

Beispiel:

# Secrets for authentication using CHAP
# client              server     secret                                  IP adresses
nutzername    *                 passwort                            *

Speichern. Und Service neustarten.

sudo service pptpd restart

Jetzt musst die IP-Weiterleitung aktiviert werden. Dazu wird /etc/sysctl.conf editiert:

sudo nano /etc/sysctl.conf

Jetzt net.ipv4.ip_forward=1 suchen oder einfügen. Speichern. Als letzten schreiben wir noch folgendes in /etc/rc.local vor exit 0:

sudo sysctl net.ipv4.ip_forward=1
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

nano-vpn-rc.local

Jetzt den Pi neustarten und: Fertig!

Temeraturgesteuerter Lüfter für den RaspberryPi

Ich habe meinen RaspberryPi im Einsatz für die Hausautomation und als Datencenter. Damit er und die Zusatzkomponenten (Netzteil, Relaiskarte…) nicht “rumliegen” habe ich alles in ein Gehäuse gesetzt. Dieses habe ich sehr kompakt gehalten. Allerdings gibt es dabei einen Nachteil: Die Hitze von Netzteil und Pi stauen sich darin (trotz Lüftungsöffnungen). Da ich dies vorhergesehen habe kaufte ich gleich noch einen Lüfter um diesen automatisiert einzusetzen – d.h. immer wenn die CPU-Temperatur des RaspberryPi über 50°C steigt, wird der Lüfter für 15 Sekunden aktiviert, dann erfolgt eine neue Abfrage der Temperatur, falls diese < 50°C ausfällt, schaltet der Lüfter aus und wartet bis zum nächsten Temperaturanstieg.

Die Hardware dazu ist simpel. Am Pi hängt ein PicoBorg und dahinter ein günstiger 5V-Lüfter von Amazon. Wesentlich interessanter ist ist die Software-Seite. Ich habe herumprobiert mit einem Shell-Script, dieses stürze aber oft nach einigen Minuten ab (und der Lüfter blieb an…). Deshalb versuchte ich es mit Python und war erfolgreich. Das Script sieht nun so aus:

import RPi.GPIO as GPIO
import time
import os
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.OUT) 

def getCPUtemperature():
res = os.popen(‘vcgencmd measure_temp’).readline()
return(res.replace(“temp=”,””).replace(“‘Cn”,””))

SOLL_temp = “50.0” 

while 1:
if (getCPUtemperature() >= SOLL_temp):
GPIO.output(18, True) 
time.sleep(15) 
continue
else:
GPIO.output(18, False) 
time.sleep(20)

In meinem Fall wird GPIO 18 verwendet – das müsste man anpassen, wenn ein anderer PIN verwendet werden soll. Ich habe das Script als “status.py” in “/home/pi/lueftersteuerung/” abgelegt und per sudo chmod +x status.py ausführbar gemacht. Wenn man nun noch in “/etc/rc.local” vor dem “exit 0″ folgendes einträgt wird der Script automatisch beim Start geladen: “sudo python /home/pi/lueftersteuerung/status.py”.

Fedora auf dem RaspberryPi – pidora

pidora_raspberry_pi_fedora_remix_horizontal1Wiedermal eine neue Distro für den RaspberryPi: pidora – ein Neologismus aus raspberryPI und feDORA. Hier ein paar Release-Infos:

Pidora 18 (Raspberry Pi Fedora Remix)
============================================
Pidora is a Linux software distribution for the Raspberry Pi computer. It contains software packages from the Fedora Project (specifically, the Fedora ARM secondary architecture project) compiled specifically for the ARMv6 architecture used on the Raspberry Pi, packages which have been specifically written for or modified for the Raspberry Pi, and software provided by the Raspberry Pi Foundation for device access.

Pidora 18 (Raspberry Pi Fedora Remix) will be the fourth version of the Remix released.

Release date: (May 22nd 2013)
Fedora package collection version: 18
Kernel version: (3.6.11)
Architecture: armv6hl

Sources: http://pidora.ca/

What is Pidora
====================
Pidora is a combination of Fedora software, with or without third-party software, that any community member can create at any time.
(More Info in the source link)

Source: http://fedoraproject.org/wiki/Remix

Weitere Infos gibt es bald!

Website: pidora.ca