mitglieder, Administratoren
292
Bearbeitungen
Keine Bearbeitungszusammenfassung |
|||
(23 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 20: | Zeile 20: | ||
=Raspberry Pi Installation= | =Raspberry Pi Installation= | ||
[[Datei:VinRisen360.jpg|right]] | |||
==Auswahl des Betriebssystems== | ==Auswahl des Betriebssystems== | ||
Zunächst muss das Standard Betriebssystem auf dem Raspberry Pi installiert werden.<br /> | Zunächst muss das Standard Betriebssystem auf dem Raspberry Pi installiert werden.<br /> | ||
Zeile 74: | Zeile 75: | ||
Ab hier ist die Grundeinrichtung des Raspberry Pi abgeschlossen.<br /> | Ab hier ist die Grundeinrichtung des Raspberry Pi abgeschlossen.<br /> | ||
Im Idealfall ist der Raspberry Pi mit dem WLAN/Internet verbunden und kann über SSH innerhalb des eigenen WLANs ferngesteuert werden.<br /> | Im Idealfall ist der Raspberry Pi mit dem WLAN/Internet verbunden und kann über SSH innerhalb des eigenen WLANs ferngesteuert werden.<br /> | ||
==Installation GPIO Library== | |||
Mit folgendem Befehl stellen wir sicher, dass "gpio ..."-Befehl auch funktionieren:<br /> | |||
sudo apt-get install wiringpi -y | |||
=Einführung mit GPIO und Breadboard= | =Einführung mit GPIO und Breadboard= | ||
Zeile 100: | Zeile 105: | ||
Mit folgendem Befehl lässt sich die LED an- und ausschalten: | Mit folgendem Befehl lässt sich die LED an- und ausschalten: | ||
gpio mode 17 output | gpio -g mode 17 output | ||
gpio write 17 1 | gpio -g write 17 1 | ||
gpio write 17 0 | gpio -g write 17 0 | ||
gpio -g: Der Parameter -g empfiehlt sich, damit die PIN-Nummern gleich den GPIO-Nummerierungen entsprechen<br /> | |||
mode 17 output: Bedeutet GPIO PIN 17 auf Strom-Zufuhr schalten<br /> | mode 17 output: Bedeutet GPIO PIN 17 auf Strom-Zufuhr schalten<br /> | ||
write 17 1: Bedeutet GPIO PIN 17 Strom auf AN schalten<br /> | write 17 1: Bedeutet GPIO PIN 17 Strom auf AN schalten<br /> | ||
Zeile 112: | Zeile 118: | ||
=Projekt 2: Temperatur Sensor verwenden= | =Projekt 2: Temperatur Sensor verwenden= | ||
Benötigte Bauteile: | Benötigte Bauteile: DHT11 Humidity Sensor, 10k Ohm-Widerstand (Wenn nicht schon auf dem DHT11 vorhanden)<br /> | ||
Geschätzte Dauer: 30-60 Minuten<br /> | Geschätzte Dauer: 30-60 Minuten<br /> | ||
==Adafruit Library für DHT11-Sensor installieren== | |||
Quelle: https://www.raspberrypi-spy.co.uk/2017/09/dht11-temperature-and-humidity-sensor-raspberry-pi/ | |||
Damit man die Werte vom Sensor auslesen kann, muss eine Python Library installiert werden.<br /> | |||
Führen Sie folgende Befehle aus:<br /> | |||
sudo apt-get install build-essential python-dev python-openssl git | |||
git clone https://github.com/adafruit/Adafruit_Python_DHT.git | |||
cd Adafruit_Python_DHT | |||
sudo python setup.py install | |||
Der Temperatur Sensor sieht so aus:<br /> | Der Temperatur Sensor sieht so aus:<br /> | ||
[[Datei: | [[Datei:DHT11.jpg]] | ||
Folgende Schaltung sollte aufgebaut werden:<br /> | Folgende Schaltung sollte aufgebaut werden:<br /> | ||
Zeile 122: | Zeile 138: | ||
Mit folgendem Code lässt sich die Temperatur über den Sensor ausgeben:<br /> | Mit folgendem Code lässt sich die Temperatur über den Sensor ausgeben:<br /> | ||
// | cd ~/Adafruit_Python_DHT/examples | ||
// | sudo ./AdafruitDHT.py 11 4 | ||
// | |||
// | ==Erklärung des Codes== | ||
<AdafruitDHT.py> ist eine Datei, die den notwendigen Code zum Auslesen des Sensors enthält<br /> | |||
<11> bedeutet einen DHT11-Sensor auslesen (DHT22 oder AM2302-Sensor ebenfalls möglich)<br /> | |||
<4> bedeutet GPIO PIN 4 wurde auf den DATA-PIN gesteckt<br /> | |||
=Projekt 3: Webserver auf Raspberry Pi installieren= | |||
Um einen Webserver (Apache) auf dem Rasperry Pi zu installieren müssen folgende Befehle ausgeführt werden:<br /> | |||
sudo apt-get install apache2 | |||
sudo apt-get install php php-mbstring | |||
sudo apt-get install mysql-server php-mysql | |||
=Projekt 4: Temperature und Humidity Daten auf Website ausgeben= | |||
Zunächst muss das Script, welches mit dem DHT11 Sensor interagiert in das /var/www Verzeichnis verschoben/kopiert werden.<br /> | |||
Als nächstes muss dem User www-data das Recht für sudo Befehle eingeräumt werden:<br /> | |||
sudo nano /etc/sudoers | |||
Zeile einfügen: www-data ALL=(ALL) NOPASSWD: ALL | |||
Zu aller letzt muss eine index.php mit folgendem Text erstellt werden: | |||
<?php | |||
$shellstr = "sudo python /var/www/html/Adafruit_Python_DHT/examples/AdafruitDHT.py 11 4"; | |||
$str_lastline = exec($shellstr, $arr_output, $retcode); | |||
?> | |||
<html> | |||
<body> | |||
Gemessener Wert: <?php echo $str_lastline ?> | |||
</body> | |||
</html> | |||
Jetzt kann man mit einem beliebigen Browser auf die IP des Raspberry Pi gehen:<br /> | |||
http://198.18.1.6 <br /> | |||
=Projekt 5: Messdaten aus SQL-Datenbank lesen und auf Website ausgeben= | |||
Zunächst müssen die Pakete aus Projekt 4 installiert werden (s. oben)<br /> | |||
Danach muss eine index.php unter /var/www/html/index.php mit folgendem Text erstellt werden:<br /> | |||
<?php | |||
/* | |||
README | |||
SQL should look like this: | |||
DATABASE: mydatabase | |||
TABLE: messdaten | |||
TABLE (messdaten) | |||
id | temperature (varchar255)| humidity (varchar255) | |||
1 | 23.0 | 33% | |||
*/ | |||
try { | |||
$hostname = "localhost"; | |||
$database = "mydatabase"; | |||
$username = "helmut"; | |||
$password = "P@ssw0rd"; | |||
$pdo = new PDO( | |||
'mysql:' . | |||
'host=' . $hostname . ';' . | |||
'dbname=' . $database . ';' . | |||
'charset=utf8', $username, $password); | |||
} catch (PDOException $e) { | |||
die("Connection to SQL-DB failed: " . $e->getMessage()); | |||
} | |||
$result = $pdo->query("SELECT * FROM messdaten ORDER BY id DESC LIMIT 1"); | |||
if ($result) { | |||
$messwert = $result[0]['temperature']; | |||
} else { | |||
$messwert = "Kein Messwert in der Datenbank"; | |||
} | |||
?> | |||
<html> | |||
<body> | |||
Gemessener Wert: <?php echo $messwert ?> Grad Celsius | |||
</body> | |||
</html> | |||
Jetzt kann man mit einem beliebigen Browser auf die IP des Raspberry Pi gehen:<br /> | |||
http://198.18.1.6 <br /> |