Raspberry Pi

PHP und sudo

  • von

Wenn man Sensoren mit dem Raspberry übr eine PHP-Seite abfragen will, kommt man immer wieder in Konflikt mit den Benutzerrechten. Der Benutzer www-data, unter dem der Apache läuft und die PHP Seite somit ausgeführt wird, hat nicht genügend Rechte um die Abfrage auszuführen.

Ich zeige euch in diesem Artikel, was angepasst werden muss, damit der Benutzer www-data Sensoren abfragen kann. ...  mehr lesen

Temperaturmessung mit DS18B20

  • von

Der Temperatursensor DS18B20 kann bei der vergossenen Ausführung, die für ca. 2,00 Euro erhältlich ist, auch zur Messung in feuchten Umgebungen eingesetzt werden. Er arbeitet im Gegensatz zu den Sensoren DHT22 und DHT11 mit dem 1-Wire-Bus. Das bedeutet, dass die Datenleitung zwingend an den GPIO Pin 7 (BMC 4 / WiringPi 7) angeschlossen werden muss. Wenn zusätzliche Sensoren angeschlossen sind, müssen diese einen anderen PIN nutzen.

Aufbau

In den Schaltbild ist ein unvergossender Temeratursensor abgebildet. Die Schaltung ist für einen vergossenen Sensor die Gleiche. Der Wiederstand hat einen Wert von 4,7K Ohm. Ohne diesen Wiederstand wird der Temperatursensor nicht erkannt.

Schaltung DS18B20

Schaltung DS18B20

 

Programme

Zusätzliche Programme (Bibliotheken) für das Auslesen des Sensors sind nicht notwendig. Man muss jedoch das 1-Wire Protokoll auf dem Rasberry Pi aktivieren. Das geschieht über die Menüpunkte Einstellungen->Raspberry Pi Konfiguration. Dort muss man den Konfigurationspunkt Eindraht Bus einschalten und anschließend den Raspberry neu starten.

Eindraht-Bus aktivieren

Eindraht-Bus aktivieren

Nach dem Neustart des Raspberry kann man mit dem Befehl sudo lsmod prüfen, ob die Module für das 1-Wire Protokoll geladen worden sind. Es müssen drei Module mit den Namen w1_therm, w1_gpio und wire erscheinen.

Die Sensoren des 1-Wire-Bus erscheinen als Ordner und Textdateien im Order /sys/bus/w1/devices/ des Raspberry. Für jeden angeschlossenen Sensor wird ein Verzeichnis bestehend aus Zahlen und Buchstaben erstellt.

1wiredevices

1wiredevices

In desem Fall sind die Sensordaten in der Datei w1_slave in dem Ordner 28-0517c3d237ff zu finden. Der Wert wird in der Variable t abgelegt und muss noch durch 1000 geteilt werden, um die Temperatur zu erhalten. In diesem Fall 17,94°C.

Für eine Weiterverarbeitung der Daten kann ein Script geschrieben werden, dass die Datei w1_slave ausliest, nach einer Zeile sucht, die den Text t=xxxxxx enthält, und den Wert hinter dem Gleichheitszeichen weiterverarbeitet. Dieser Wert kann man dann zum Beispiel auf einem LCD-Display angezeigen, oder in einer Datenbank abspeichern.

Raspberry Pi SQLite Datenbank

  • von

Eine SQLite Datenbank ist auf einem Raspberry Pi eine alternative zur gebräuchlichen MySQL Datenbank.

Vorteile

  • Die Daten werden in einfachen Textdateien gespeichert
  • Verbraucht weniger Speicher
  • Keine ständig laufenden Serverprozesse, die konfiguriert, gestartet oder gestoppt werden müssen
  • Replkation durch Kopieren der Datenbank Dateien
  • Unterstützt große Teile des SQL Standards

Installation

Die Installation der SQLite Datenbank gestaltet sich auf einem Raspberry Pi sehr einfach. Einfach folgenden Befehl ausführen:

sudo apt-get install sqlite3

Nach der Installation kann man Datenbanken mit dem Befehl sqlite3 verwalten. Der Befehl sqlite3 test.db erstellt eine neue Datenbank test.db, wenn diese noch nicht vorhanden ist, und öffnet die Verwaltungskonsole von sqlite3. Innerhalb dieser Konsole können Sie SQL-Befehl an die Datenbank senden.Wenn kein Pfad zur Datenbank angegeben wird, wird diese in dem Verzeichnis erstellt, in dem Sie sich gerade befinden.

Zum Testen kann man SQlite3 auch auf Windows installieren. Hierfür das sqlite-tools-win32-x86-… von der SQLite Download Seite herunterladen und in ein beliebiges Verzeichnis entpacken. In der Eingabeaufforderung in das Verzeichnis wechseln und den Befehl sqlite3 test.db aufrufen. Wenn man mit .quit das Programm wieder verlässt, sollte in dem Verzeichnis eine Datei test.db mit 0 Byte existieren.

SQLite SQL

Tabelle erstellen

sqlite> BEGIN;
sqlite> CREATE TABLE temperatursensor(id INTEGER PRIMARY KEY AUTOINCREMENT, datum TEXT, temperatur NUMERIC, luftfeuchtigkeit NUMERIC);
sqlite> COMMIT;

SQLIte3 hat keinen DATE Datentyp. Datumsangaben werden je nach Format in den Datentypen TEXT, REAL und INTEGER gespeichert. Da ich das Datum hier in der Form „YYYY-MM-DD H:i:s“ speichere, habe ich den Datentyp TEXT ausgewählt.

Daten einfügen

sqlite> BEGIN; 
sqlite> INSERT INTO temperatursensor(datum, temperatur, luftfeuchtigkeit) values(datetime('now'),22.4, 48);
sqlite> COMMIT;

Daten auslesen

sqlite> SELECT * FROM temperatursensor;

Die Ausgabe sollte in folgender Form erscheinen. 2|2018-11-13 10:10:34|22.4|48

SQlite und PHP

Um die Daten nun auf einem Webserver zu veröffentlichen, muß das PHP-Modul für SQLite installiert werden. Das geschieht mit folgendem Befehl:

sudo apt-get install php-sqlite3

Voraussetzung ist natürlich, dass PHP schon auf dem Raspberry Pi installiert ist. Hiermit werden die Module sqlite3 und pdo_sqlite3 für PHP installiert. Ich bevorzuge das PDO Modul, da ich dieses auch für MySQL nutze.

<?php try { // Datenbank öffen $db = new PDO('sqlite:temperatur.db'); //Daten auslesen und anzeigem $result = $db->query('SELECT * FROM temperatursensor'); foreach($result as $row) { print_r("<p>" . $row . "</p>"); } // Datenbankverbindung schließen $db = NULL; } catch(PDOException $e) { print 'Fehler: '.$e->getMessage(); } ?> ...  mehr lesen

Raspberry Pi 433 MHz – Teil 2

  • von

Einleitung

Im ersten Teil dieses Artikel habe ich gezeigt, wie man einen 433 MHz Temperatursensor einer Wetterstation auf dem Raspberry mit pilight auslesen kann. Doch nur das Auslesen mit dem Befehl pilight-receive ist ja nun nicht so richtig befriedigend. Wir wollen die Daten ja auch speichern und grafisch anzeigen lassen. Es existieren im Netz ein paar Beiträge zu diesem Thema, bei denen die Ausgabe des Befehls pilight-receive in einem Shellscript in eine Textdatei umgeleitet wird. Diese Script wird dann über einen Cron Job in definierten Zeitabständen aufgerufen. Die erzeugteTextdatei müsste man dann wiederum auslesen ,den Sensor mit den Werten identifizieren und die Daten z.B. in einer Datenbank oder einer CSV-Datei speichern.

Doch wozu dieser ganze Aufwand. Wir haben ja schließlich pilight installiert, welches einen inegrierten Webserver hat. In dem Abschnitt settings der Konfigurationsdatei /etc/pilight/config.json ist ein webserver-http-port angegeben. Sandardmäßig ist dieser 5001. Das bedeutet, dass Sie mit dem Aufruf http://ip-des-raspberry:5001 die Web-GUI des pilight Servers anspechen können. Und laut Dokumentation liefert der Aufruf http://ip-des-raspberry:5001/values die Werte der Sensoren. Dafür muss der Sensor aber im Abschnitt devices in der Konfigurationsdatei config.json eingetragen sein.

Sensordaten auslesen

Der Aufruf des Programms pilight-receive hat folgende Ausgabe erzeugt.

{
	"message": {
		"id": 2047,
		"temperature": 409.5
	},
	"origin": "receiver",
	"protocol": "alecto_wsd17",
	"uuid": "0000-b8-27-eb-5564a4",
	"repeats": 1
}
{
	"message": {
		"id": 1,
		"temperature": 18.1,
		"humidity": 21.0,
		"battery": 1
	},
	"origin": "receiver",
	"protocol": "alecto_ws1700",
	"uuid": "0000-b8-27-eb-5564a4",
	"repeats": 1
}

Wobei das der Abschnitt protocol = alecto_ws1700 die Werte des Temperatursensors beinhaltet. Dieser Abschnitt hat die id 1.

Nun fügen Sie folgenden Inhalt in den Bereich devices der config.json hinzu, so dass der Abschnitt devices folgendermaßen aussieht:

"devices": {
"Temperatursensor1": {
"protocol": [ "alecto_ws1700" ],
"id": [{
"id": 1
}],
"temperature": 20.7,
"humidity": 51.0,
"battery": 1
}
},
 ...  mehr lesen

Raspberry Pi 433 MHz – Teil 1

  • von

Vorwort

Wer mit Pilight auf einem Raspberry Pi zuverlässig Daten von einem Funksender wie dem unten gezeigten Sender einer Wetterstation empfangen will, den muss ich hier enttäuschen. Ich hatte das System für ca. 1 Jahr im Einsatz und ständig Probleme. Mal ist nach einem Neustart des Raspberry Pilight nicht richtig gestartet. Mal hatte der Funksender plötzlich eine neue ID.

Hardware

Man kann mit dem Raspberry Pi 433 MHz Signale sowohl empfangen als auch senden. Je nach Anwendungsfall gibt es dafür verschiedene Bibliotheken. Die Hardware, die benötigt wird, besteht aus einen 433MHz Empfänger und einen 433MHz Sender. Beide sind zusammmen für ein paar Euro erhältlich sind. Zusätzlich habe ich mir einen Funksender für eine Wetterstation bei PEARL bestellt. Dieser kostet ca. 4,00 € zuzüglich Versand.

433MHz Sender und Empfänger

433MHz Sender und Empfänger

Funksender Wetterstation

Funksender Wetterstation

Die Empfänger und Sender kosten als Paar nur etwa 2,00€, sind aber dementsprechend mit Vorsicht zu geniesen. Ich habe hier mehrere davon und musste feststellen, dass sie mal mehr und mal weniger funktionieren. Bei dem einen Enpfänger zeigt pilight überhaupt keine Daten an, bei dem zweiten nur einen Teil der Daten, und bei einem baugleichen dritten Empfänger alle Daten. Daher beschäftige ich mich im zweiten Teil dieses Artikel mit alternativen Empfängern und Sendern.

Schaltplan

Schaltplan

Schaltplan

Software

Bei der Auswahl der Software kommt es darauf an, welche Aufgaben man lösen will. Für das Schalten von Funksteckdosen reicht die Bibliothek 433Utils von Ninjablocks. Das Schalten von Funksteckdosen habe ich in diesem Beitrag beschrieben.

Für das Auslesen von z.B. Temperatursensoren von einer Wetterstation ist die Bibliothek von ninjablocks nicht geeignet. Die Empfängersoftware kann diese Signale nicht auszulesen. Hierfür kann man die Software pilight benutzen. Pilght ist eine freie Hausautomationssoftware die aktuell ca. 60 Geräte unterstützt. Unter anderem auch den hier eingesetzen Funksender vom PEARL. Mancher könnte sagen, dass pilight etwas „overdressed“ ist, da es eine komplette Hausautomationssoftware ist. Aber die Sotware hat den Vorteil, dass sie die Signale des Funksenders gleich richtig als Temperatur darstellt. Ansonsten müsste man die übertragenen Signale selbst decodieren und in die entsprechende Temperatur umrechnen.

Pilight installieren

Für die Installation von pilight fügt man das pilight Repository zu den Quellen des Raspberry Pi hinzu.Hierfür wird die Datei /etc/apt/soueces.list editiert und folgende Zeile hinzugefügt.

deb http://apt.pilight.org/ stable main

Um das neue Repository verwenden zu können muss noch der Schlüssel heruntergeladen und geprüft werden. Danach wird ein Update des Pi gemacht.

sudo wget -O - http://apt.pilight.org/pilight.key | sudo apt-key add -
sudo apt-get -y update
Pilight mit folgendem Befehl installieren.
sudo apt-get -y install pilight

Konfiguration

Nach Abschluß der Installation wird die Datei /etc/pilight/config.json bearbeitet. Fügen Sie im  Bereich Hardware den 433 MHz Sender und Empfänger hinzu. In manchen Artikeln wird empfohlen den http Port auf 80 zu ändern. Das kann man machen, wenn nicht schon eine Apache Webserver auf dem Pi läuft. Ansonsten kommt es zu Konflikten. Die Datei sollte nicht bearbeitet werden, wenn der pilight Server läuft, da dieser beim Beenden die Datei überschreibt. Da kann man graue Haar bekommen, bevor man einen Fehler findet.

        "hardware": {},

ersetzen mit

        "hardware": {
                "433gpio": {
                        "sender": 0,
                        "receiver": 2
                }
        },

Weiterhin sind folgende Veränderungen in der config.json notwendig.

"standalone": 1,

ändern in

"standalone": 0,
"gpio-platform": "none"

ändern in

"gpio-platform": "raspberrypi3"

Die Änderung von stanalone von 1 auf 0 habe ich nicht wirklich begriffen, da er ja als nach meiner Logik als standalone ausgeführt werden soll. Fakt ist aber, dass wenn er als standalone 1 ausgeführt wird es zu folgender Fehlermeldung kommt, wenn man den Befehl pilight-receive ausführt:

no pilight ssdp connections found

Eventuell hat sich das der Programmierer mit 0 und 1 vertan. Bei der von mir eingesetzen Version 8.1.3. ist das jedenfalls der Fall.

Pilight starten

Zu ersten Test von pilight geben sie folgenden Befehl ein und prüfen sie die Ausgabe auf Fehlermeldungen

sudo pilight-daemon -D

Sollten keine Fehlermeldungen erscheinen können Sie in einem zweiten Shell Fenster den Befehl sudo pilight-receive eingeben. Nach einiger Zeit sollten Ergebnisse in folgender Form erscheinen.

{ "message": { "id": 2047, "temperature": 409.5 }, "origin": "receiver", "protocol": "alecto_wsd17", "uuid": "0000-b8-27-eb-5564a4", "repeats": 1 } { "message": { "id": 1, "temperature": 18.1, "humidity": 21.0, "battery": 1 }, "origin": "receiver", "protocol": "alecto_ws1700", "uuid": "0000-b8-27-eb-5564a4", "repeats": 1 }  ...  mehr lesen

Raspberry Pi Zero: Raspbian installieren

Software herunterladen

Raspbian installieren – Raspbian ist das offizielle Betriebssystem von der Raspberry Pi Foundation und kann unter der Adresse http://www.raspberrypi.org/downloads herunter geladen werden. Die Datei ist eine ISO-Datei, die mit einer Software auf eine Micro-SD Karte geschrieben werden muss. Ein gutes Programm hierfür ist Etcher, welches man unter https://www.balena.io/etcher kostenlos herunter laden kann.

Micro-SD Karte beschreiben

Etcher

Etcher

Die Oberfläche ist sehr einfach gehalten.

1. Die ISO-datei auswählen, die Sie von raspberry.org herunter geladen haben.
2. Die Micor-SD Karte auswählen, die sie mit dem PC verbunden haben
3. Auf Flash! klicken

Nun wird das Raspbian Betriebssytem auf die SD-Karte geschrieben. Nachdem das Schreiben beendet ist, können Sie die SD-Karte entnehmen und in den Rasbperry Pi stecken.

Raspbian – erster Start

Ich empfehle, wenn Sie einen Raspberry Pi Zero verwenden wollen, die Karte zuerst in einen Raspberry Pi mit Netzwerkkarte zu stecken, da der Rasberry Pi Zero nur über WLAN verfügt. Slebst bei einer vernünftigen WLAN Anbindung ist das upgrade des Betriebssytems, was sie am Anfang unbedingt machen sollten, Ahf dem Raspberry Pi Zero fehlgeschlagen,  Also besser zuerst das Betriebssystem initialisieren und auf den neusten Stand bringen, bevor Sie die Karte in einen Raspberry Pi Zerso stecken.

Bei ersten Start des Betriebssystems wir das Land und ein Passwort für den Benutzer pi abgefragt. Anschließend versucht das System sich selbst zu aktualisieren. Wenn das wie oben erwähnt auf einem Raspberry Pi Zero fehl schlagen sollten, stecken Sie sie Karte in einen Raspberry Pi mit Netzwerkanschluß und führen Sie folgende Befehle aus:

sudo apt-get update
sudo apt-get upgrade

Der zweite Befehl kann eine ganze Weile dauern, da eine Reihe von Paketen aktualisert werden. Wenn alle Pakete aktualisert worden sind, erscheint die Ausgabe done. Nun können Sie den Raspberry Pi herunter fahren und die SD-Karte wieder in den Raspberry Pi Zero stecken und diesen starten. Das Betriebssystem ist nun auf dem neusten Stand.

 

 

Raspberry Pi Samba

  • von

Um Dateien auf den Raspberry kopieren, bearbeiten oder löschen zu können, bietet es sich an auf dem Raspberry Pi Samba zu installieren.

Installation

Zur Installation von Samba wird folgender Befehl ausgeführt:

sudo apt-get install samba samba-common smbclient

Die Installation kann gerande auf einen Raspberry Pi Zero eine ganze Weile dauern. Also bitte Geduld. Von der Performance ist Samba dann aber auch auf diesem Board ok.

Nach der Installation kann man mit den folgenden Befehlen prüfen, ob der Samba Server läuft.

sudo service smbd status
sudo service nmbd status

 

Konfiguration

Konfiguriert wird der Samba Server über die Datei /etc/samba/smb.conf

Fügen Sie im globalen Bereich folgende Zeilen ein:

security = user
encrypt passwords = yes

Erstellen Sie eine neue Freigabe. In diesem Beispiel will ich die HTML-Dateien es Apache Webservers bearbeiten.

[www]
comment = wwwFreigabe
path = /var/www
read only = no

Starten Sie den Server neu

sudo service smbd restart
sudo service nmbd restart

Samba benutz seine eigene Passwortdatei. Daher muss der Benutzer, mit dem man sich auf die Freigabe verbinden will, noch ein Passwort bekommen. Da die Dateien im Verzeichnis /var/www dem Benutzer www-data und der Gruppe .www-data zugeordnet sind, sollte man diesen Benutzer auch bei der Arbeit auf der Freigabe benutzen. Wenn Sie andere Verzeicnisse bearbeiten wollen, müssen Sie entsprechend den Benutzer anlegen oder die Rechte auf das Verzeichnis anpassen.

sudo smbpasswd -a www-data

Wenn Sie sich nun von einem Windows Explorer mit der URL \\192.168.0.22 auf den Raspberry verbinden sollten Sie die Freigabe www sehen. die IP-Adresse ist hier nur ein Beispiel. Sie müssen die IP-Adresse ihres Rasberrys angeben.

Raspberry Pi Funksteckdosen schalten

  • von

Mit dem Raspberry Pi Funksteckdosen, die mit 433 MHz arbeiten, zu schalten ist kein Problem. Für ca. 1 Euro erhält man im Internet einen 433MHz Empfänger und einen 433 MHz Sender. Als Funksteckdose benutze ich in diesem Beispiel eine Funksteckdose von Brennstuhl. Zum testen und ausprobieren sind diese beiden Funkmodule für den Raspberry Pi duchaus geeignet. We aber später das ganze produktiv einsetzen will, sollte höherweritge Funkmodule wie das RX550A oder das RXB6 benutzen.

Bilder

Aufbau

Die Fernbedieung für die Funksteckdose muss noch vorhanden sein, da man zuerst die Codierung für die Befehle zum Ein- und Ausschalten auslesen muss. Der Empfänger und Sender werden folgendermaßen ,mit dem Raspberry Pi verkabelt.

Verkabelung

Verkabelung

 

Programme

Um den 433 MHz Sender und den 433 MHz Empfänger nun Ansprechen zu können, benötigen Sie die Bibliothek 433Utils. Falls Sie Das GIT Paket noch nicht auf dem Raspberry Pi installiert haben, müssen Sie das zuerst mit den folgenden Befehlen machen:

sudo apt-get install git-core
sudo apt-get update
sudo apt-get upgrade

Anschließend die 433Utils mit folgenden Befehlen installieren und compilieren.

git clone --recursive https://github.com/ninjablocks/433Utils.git
cd 433Utils/RPi_utils
make all

Code auslesen

Als erstes muss nun der Code für die Steckdose ausgelesen werden. Dafür wird im Unterordner RPi_utils das Programm RFSniffer gestartet. Wenn Sie nun mit der Fernbedienung die Funksteckdose Ein- und Ausschalten, sollten sie auf dem Monitor eine Ausgabe in der folgenden Form sehen:

Recieved 5393
Recieved 5396

Zusätzlich sollten Sie ein „Klacken“ hören, wenn die Funksteckdose schaltet. Die Zahlen weichen natürlich von meiner Steckdose ab. In meinem Fall wird die Steckdose mit dem Code 5393 Eingeschaltet und mit dem Code 5396 ausgeschaltet. Sie können das programm RFSniffer nun beenden, da Sie den Code für die Steckdose nun kennen.

Code senden

Um den Code nun an die Steckdose vom Raspberry Pi zu senden benutzt man das Programm codesend, das ebenfalls im Ornder RPi_utils liegt.

# Steckdose einschalten
codesend 5393
# Steckdose ausschalten
codesend 5396

Beim Ein- und Ausschalten der Steckdose sollte wiederum ein „Klacken“ der Steckdose zu hören sein.

Anmerkungen

Ein solches System kann man zum Beispiel für eine Gewächshausheiung im Zusammenhang mit einen Temperatursensor verweden, oder um eine Gartenbeleuchtung automatisch oder per Handy zu schalten.Was mit dieser Software nicht funktioniert ist das auslesen von komplexeren Daten, die über 433 MHz gesendet werden. Wer also hofft mit diesem System z.B. Daten einer Wetterstation auszulesen, wird leider enttäuscht. Das Programm RFSniffer zeigt hier keinerlei Daten an. Dafür kann man das Programm Pilight nutzen. Wie man damit Daten einer Wetterstation ausließt, wird im Artikel Raspberry Pi 433 MHz beschrieben.

Wenn Sie andere PINs benutzen wollen, müssen Sie vor dem Ausführen von make all die Dateien codesend.cpp, send.cpp und RFSniffer.cpp uas dem Verzeichnis RPi_utils entsprechend anpassen. In Jeder dieser Dateien existiert eine Zeile int PIN=x. In dieser Zeile müssen Sie die Nummer des PINs angeben, den Sie verbinden wollen. Dabei muss die Nummer des PINs nach wiringPi Belegung vegeben werden.Die Nummer des PINs nach wiringPi Belegung sehen Sie, wenn Sie den Befehl gpio readall in der Konsole des Raspberry Pi ausführen. Wenn Sie den PIN nachträglich ändern wollen, müssen Sie die oben angegebenen Dateien entsprechend bearbeiten und anschliesend folgende Befehle eigeben.

make clean
make all

 

 

 

 

Entfernungen Messen mit dem Raspberry Pi

  • von

Um Entfernungen mit dem Raspberry Pi zu Messen eigenet sich der Ultraschallsensor HC-SR04.  Er ist für ein paar Euro zu erhalten und misst Entfernungen bis ca. 4 Meter relativ genau. Er kann so zum Beispiel genutzt werden, um Wasserstände in Fässern oder Brunnen zu kontrollieren, oder um zu überprüfen, ob eine Tür offen oder geschlossen ist.

Ultraschallsensor HC-SR04

Ultraschallsensor HC-SR04

 

Schaltplan

 

Der Sensor wird mit einer Betriebsspannung von 5V betrieben und soll von 2 cm bis zu 4 Metern millimetergenaue Werte liefern. Die Daten, die er liefert sind in digitaler Form. Er wird folgendermaßen mit dem Raspberry Pi verbunden.

Ultraschallsensor HC-SR04 Schaltplan

Ultraschallsensor HC-SR04 Schaltplan

Der Trig PIN wird mit dem GPIO 8 des Raspberry Pi verbunden. Der Echo PIN wird über einen 470 Ohm Wiederstand mit dem GPIO 11 verbunden. Zusärzlich wird er noch mit einem zweiten 470 Ohm Wiederstand auf GRND verbunden. Welche Werte die Wiederstände haben sollen, ist von Tutorial zu Tutorial unterschiedlich. Es wird von 1 kΩ (Ohm) / 2.2 kΩ (Ohm) Widerstand oder 330 Ω (Ohm) / 470 Ω (Ohm) Widerstand gesprochen. Es geht aber auch wie hier mit 2 470 Ω (Ohm) Wiederständen.

Programm

Nun braucht mann noch ein Programm, welches die Daten ausließt. Hierfür reicht ein einfaches Python Programm

#Bibliotheken einbinden
import RPi.GPIO as GPIO
import time

#GPIO Modus (BOARD / BCM)
GPIO.setmode(GPIO.BCM)

#GPIO Pins zuweisen
GPIO_TRIGGER = 8
GPIO_ECHO = 11

#Richtung der GPIO-Pins festlegen (IN / OUT)
GPIO.setup(GPIO_TRIGGER, GPIO.OUT)
GPIO.setup(GPIO_ECHO, GPIO.IN)

def distanz():
# setze Trigger auf HIGH
GPIO.output(GPIO_TRIGGER, True)

# setze Trigger nach 0.01ms aus LOW
time.sleep(0.00001)
GPIO.output(GPIO_TRIGGER, False)

StartZeit = time.time()
StopZeit = time.time()

# speichere Startzeit
while GPIO.input(GPIO_ECHO) == 0:
StartZeit = time.time()

# speichere Ankunftszeit
while GPIO.input(GPIO_ECHO) == 1:
StopZeit = time.time()

# Zeit Differenz zwischen Start und Ankunft
TimeElapsed = StopZeit - StartZeit
# mit der Schallgeschwindigkeit (34300 cm/s) multiplizieren
# und durch 2 teilen, da hin und zurueck
distanz = (TimeElapsed * 34300) / 2

return distanz

if __name__ == '__main__':
try:
while True:
abstand = distanz()
print ("Gemessene Entfernung = %.1f cm" % abstand)
time.sleep(1)

# Beim Abbruch durch STRG+C resetten
except KeyboardInterrupt:
print("Messung vom User gestoppt")
GPIO.cleanup() ...  mehr lesen

Raspberry Pi Kiosk Mode

  • von

Der Raspberry Pi Kiosk Mode eigenet sich hervorragend für Präsentationen auf zum Beispiel TV Geräten. Er benötigt im Gegensatz zu einem vollwertigen Computer nur ca. 3 Watt. Selbst wenn er 24 Stunden am Tag läuft, verbraucht er so pro Monat nur ca. 2,2 kWh. Somit liegen die Kosten selbt bei einem Preis von 0,3 € / kWh bei nur 66 Cent pro Monat.

In diesem Beitrag zeige ich euch, wie man den installierten Browser Chronium im Kiosk Mode betreibt und automatisch eine Webseite anzeigt.

Installation der benötigten Pakete

Der Chromium Browser ist bei Raspbian Stretch schon auf dem Raspberry installiert.

Chrumium Browser auf dem Raspberry Pi

Chrumium Browser auf dem Raspberry Pi

Zusätzlich braucht man noch das Paket unclutter mit dem man den Mauszeiger ausblenden kann.

sudo apt-get install unclutter

Vollbildmodus aktivieren

Da der Raspberry unter dem Benutzer pi im grafischen Modus startet, wird die Anpassung im Homeverzeichnis des Benutzers gemacht. Dafür wird die Datei /home/pi/.config/lxsession/LXDE-pi/autostart angepasst.

@lxpanel --profile LXDE-pi
@pcmanfm --desktop --profile LXDE-pi
# Bildschirmschoner deaktivieren
#@xscreensaver -no-splash
@point-rpi
#Chromium im Vollbildmodus mit der Seite google.de starten
@chromium-browser --incognito --kiosk https://www.google.de

Die Orginaldatei kann je nach Version unterschielich aussehen. Wichtig ist, dass der Bildschirmschoner deaktivert wird und die Zeile für den Start von Chromium eingefügt wird.

Nach einem Neustart sollte nun zuerst der Deskop erscheinen und nach ein paar Sekunden der Browser ohne Menüleiste im Vollbildmodus mit der angegebenen Webseite starten. Das einzig Störende ist noch der Mauszeiger. Hier kommt das Paket unclutter ins Spiel.

Mauszeiger ausblenden

Dafür muss noch folgende Zeile in die Datei autostart eingefügt werden.

@unclutter

@lxpanel --profile LXDE-pi
@pcmanfm --desktop --profile LXDE-pi
# Bildschirmschoner deaktivieren #@xscreensaver -no-splash
@point-rpi
#Chromium im Vollbildmodus mit der Seite google.de starten
@chromium-browser --incognito --kiosk https://www.google.de ...  mehr lesen