Projekt:RaspberryPiElektronik: Unterschied zwischen den Versionen

keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
 
(27 dazwischenliegende Versionen von 3 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 84: Zeile 89:
Hier ein Bild von den GPIO-PINs:<br />
Hier ein Bild von den GPIO-PINs:<br />
[[Datei:GPIO-PINs.jpg]]
[[Datei:GPIO-PINs.jpg]]
[[Datei:GPIO-Pinbelegung.jpg]]


==Breadboard - Was ist das?==
==Breadboard - Was ist das?==
Zeile 92: Zeile 98:


=Projekt 1: LED via Kommandozeile an- und ausschalten=
=Projekt 1: LED via Kommandozeile an- und ausschalten=
Benötigte Bauteile: LED, X Ohm-Widerstand<br />
Benötigte Bauteile: LED, 220 Ohm-Widerstand<br />
Geschätzte Dauer: 5-10 Minuten<br />
Geschätzte Dauer: 5-10 Minuten<br />


Zeile 99: 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 -p 3 on
  gpio -g mode 17 output
  gpio -p 3 off
  gpio -g write 17 1
gpio -g write 17 0


In dem Befehl verbirgt sich der Parameter '-p 3'.<br />
gpio -g: Der Parameter -g empfiehlt sich, damit die PIN-Nummern gleich den GPIO-Nummerierungen entsprechen<br />
'-p' steht für PIN und 3 bedeutet den 3ten PIN ansteuern.<br />
mode 17 output: Bedeutet GPIO PIN 17 auf Strom-Zufuhr schalten<br />
'on' sagt dem PIN dann nur noch, dass +5V auf den PIN angelegt werden soll.<br />
write 17 1: Bedeutet GPIO PIN 17 Strom auf AN schalten<br />
'off' entfernt die Spannung wieder von dem angegebenen PIN.<br />
write 17 0: Bedeutet GPIO PIN 17 Strom auf AUS schalten<br />


== Berechnung des Widerstands ==
== Berechnung des Widerstands ==
Zeile 111: Zeile 118:


=Projekt 2: Temperatur Sensor verwenden=
=Projekt 2: Temperatur Sensor verwenden=
Benötigte Bauteile: Analog Temperature Sensor XXXXX<br />
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:Temperaturesensor.jpg]]
[[Datei:DHT11.jpg]]


Folgende Schaltung sollte aufgebaut werden:<br />
Folgende Schaltung sollte aufgebaut werden:<br />
Zeile 121: 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 />
  //Insert Code here
  cd ~/Adafruit_Python_DHT/examples
  //Insert Code here
sudo ./AdafruitDHT.py 11 4
  //Insert Code here
 
  //Insert Code here
==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 />
mitglieder, Administratoren
292

Bearbeitungen