Projekt:RaspberryPiElektronik: Unterschied zwischen den Versionen

keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
 
(30 dazwischenliegende Versionen von 4 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 79: Zeile 84:
Hier eine kurze Begriffserklärung:<br />
Hier eine kurze Begriffserklärung:<br />
==GPIO - Was ist das?==
==GPIO - Was ist das?==
GPIO bezeichnet den langen streifen aus PINs auf dem Motherboard des Raspberry Pi.<br />
GPIO bezeichnet den langen streifen aus PINs auf dem Motherboard des Raspberry Pi, es steht für "General purpose input/output. Input/Output bedeutet, das man sie sowohl benutzen kann um dem Pi etwas mitzuteilen (als Input), als auch den Pi etwas ausgeben zu lassen (Output.) Das passiert über Spannungspegel: 3,3V (geringfügig weniger geht auch) signalisiert einen logischen HIGH-Zustand, 0V (oder geringfügig mehr) signalisiert einen logischen LOW-Zustand.  <br />
Mit diesen PINs lassen sich alle Arten von Elektroschaltungen bauen.<br />
Mit diesen PINs lassen sich alle Arten von Elektroschaltungen bauen.<br />
Sind sind zugleich die Schnittstelle zwischen Kommandozeile (Betriebssystem) und der späteren elektronischen Schaltung.<br />
Sind sind zugleich die Schnittstelle zwischen Kommandozeile (Betriebssystem) und der späteren elektronischen Schaltung.<br />
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?==
Das Breadboard ist im Prinzip ein einfaches Gitter, in dem sich elektronische Schaltungen stecken lassen.<br />
Das Breadboard ist im Prinzip ein einfaches Gitter, auf das sich elektronische Schaltungen stecken lassen.<br />
Es dient zur Veranschaulichung der Schaltung und ermöglicht schnelles Arbeiten. (Kein Lötzinn erforderlich)<br />
Es dient zur Veranschaulichung der Schaltung und ermöglicht schnelles Arbeiten. (Kein Lötzinn erforderlich)<br />
Hier ein Bild eines Breadboards:<br />
Hier ein Bild eines Breadboards:<br />
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 ==
Der Widerstand ist von der LED abhängig und sorgt dafür, das von den verfügbaren 3,3V des GPIO der richtige Anteil an der Diode anliegt. Der Strom durch die LED sollte ungefähr 10 mA betragen, manche LEDs vertragen unterschiedlich hohe Ströme, manche leuchten schon bei wesentlich kleineren Strömen ordentlich bei denen andere nur im dunkeln erkennbar sind. Je nach Material der LED (das auch für die Farbe verantwortlich ist) fallen an der LED dann ungefähr zwischen 1,6 und 3V, die sogenannte Flußspannung ab, bei roten LEDs eher geringe Spannungen, dann kommen ungefähr orange, gelbe, grüne und dann blaue, weiße (und UV) LEDs, die die höchste Spannung "benötigen." Leuchtdioden nicht direkt an Spannungsquellen anschließen, da bei Ihnen schon eine geringe Spannungserhöhung eine erhebliche Stromerhöhung bedeuten kann. Bei einer roten LED mit 1,6V Flußspannung muss der Spannungsabfall am Widerstand also bei 3,3-1,6=1,7V sein, nach Ohm Rv=1,7V/0,01A=170 Ohm. Den gibts aber meistens nicht, also den nächstgrößeren Wert benutzen den man findet. wenn man es zu hell findet, Widerstand vergrößern, wenn zu dunkel, Widerstand verkleinern.


=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 118: 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