Projekt:RaspberryPiElektronik: Unterschied zwischen den Versionen

Aus Schaffenburg
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „{{Infobox Projekt |name = Einstieg in Raspberry Pi mit GPIO |status = beta |beschreibung = Einstieg in Elektronikschaltungen mit Raspber…“)
 
Keine Bearbeitungszusammenfassung
 
(32 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 Elektroschaltung 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 -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 />
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 116: 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 />

Aktuelle Version vom 18. August 2020, 14:30 Uhr

Crystal Clear action run.png
Einstieg in Raspberry Pi mit GPIO

Status: beta

RaspberryPiElektro.jpg
Beschreibung Einstieg in Elektronikschaltungen mit Raspberry Pi
Ansprechpartner VinRisen360


Einstieg in Raspberry Pi mit GPIO Allgemein

Der Raspberry Pi ist ein Mini-Computer, der sich bei den Bastlern großer Beliebtheit erfreut.
Mit ihm lassen sich ohne großen Aufwand Projekte aller Art umsetzen.
Egal ob es um das die Installation fertiger Projekte aus dem Internet geht oder für die Realisierung eigener kleiner Projekte...
Mit dem Raspberry Pi bleiben einem alle Wege offen.

Auf dieser Projektseite findet ihr tolle Anleitungen für den Einstieg in das Thema 'Raspberry Pi'.
Author der Doku: Paul Freudenberger
Contributors: Dr. Helmut Scholz

Raspberry Pi Installation

Auswahl des Betriebssystems

Zunächst muss das Standard Betriebssystem auf dem Raspberry Pi installiert werden.
Raspberry Pi bietet zwei verschiedene Arten von Betriebssystem:

Raspbian Desktop: Betriebssystem für Einsteiger mit grafischer Oberfläche (Fenster, bedienbar mit Maus und Tastatur)
Raspbian Lite: Betriebssystem für Bastler mit Kommandozeile (Schwarzer Bildschirm mit Schrift, bedienbar mit Tastatur)

Raspbian Lite sollte bevorzugt eingesetzt werden. (Ressourcenschonender, Läuft flüssiger, eigene Projekte erfordern meist keine grafische Oberfläche)

Download der erforderlichen Software

RASPBIAN LITE OS

Unter dem folgenden Link lassen sich die Betriebssysteme kostenlos runterladen:
https://www.raspberrypi.org/downloads/raspbian/
Dort das Betriebssystem 'Raspian Stretch Lite' wählen.

Direkter Download-Link: http://director.downloads.raspberrypi.org/raspbian_lite/images/raspbian_lite-2018-11-15/2018-11-13-raspbian-stretch-lite.zip

IMAGEWRITER TOOL

Um das Betriebssystem auf die MicroSD-Karte des Raspberry Pi zu schreiben verwendet man folgende Programme:

Unter Windows
- Win32DiskImager
- Download-Link: https://sourceforge.net/projects/win32diskimager/

Unter Linux
- (Bitte klären und validieren)

Installation des Betriebssystems mit Win32DiskImager

  • Entpacken Sie das Raspberry Pi Image (.zip -> .img)
  • Öffnen Sie Win32DiskImager
  • Wählen Sie als Image-File '2018-10-09-raspberry-stretch-lite.img' (Name ggf. anpassen)
  • Wählen Sie den richtigen Laufwerksbuchstaben aus (Siehe MicroSD-Karte)
  • Klicken Sie auf 'Write' und warten Sie bis das Image auf die MicroSD-Karte geschrieben wurde
  • Entfernen Sie die MicroSD-Karte aus Ihrem Computer und setzen Sie sie in den Raspberry Pi ein

Grundeinrichtung Raspbian Lite

  • Schließen Sie alle Komponenten außer das Netzteil an den Raspberry Pi an (HDMI-Kabel, Tastatur, USB/Wifi-Dongles)
  • Schalten Sie den Bildschirm an, bevor Sie den Raspberry Pi in Betrieb nehmen
  • Schließen Sie den Raspberry Pi an ein Netzteil (e.g. Handy-Ladekabel) an (Der Raspberry Pi geht automatisch an)
  • Warten Sie bis alle Meldungen am Bildschirm durchgelaufen sind und der 'Login:' angefordert wird
  • Standard-User: pi, Standard-Password: raspberry (GROß-/KLEINSCHREIBUNG BEACHTEN!)

Jetzt sind Sie am Betriebssystem des Raspberry Pi angemeldet und können Befehle eintippen.

Folgende Befehle sollten zuerst gemacht werden:

raspi-config > Expand Filesystem (Dadurch nutzt der Raspberry Pi die komplette Speicherkapazität der MicroSD-Karte aus)
raspi-config > Advanced Options > Configure Network > WLAN SSID und Passphrase eintragen
raspi-config > Advanced Options > SSH aktivieren (Ermöglicht Fernzugriff auf den Rasperry Pi aus dem gleichen WLAN)
sudo reboot

Ab hier ist die Grundeinrichtung des Raspberry Pi abgeschlossen.
Im Idealfall ist der Raspberry Pi mit dem WLAN/Internet verbunden und kann über SSH innerhalb des eigenen WLANs ferngesteuert werden.

Installation GPIO Library

Mit folgendem Befehl stellen wir sicher, dass "gpio ..."-Befehl auch funktionieren:

sudo apt-get install wiringpi -y

Einführung mit GPIO und Breadboard

Für den Einstieg in das Thema Elektroschaltungen und Raspberry Pi eignet sich GPIO und Breadboard sehr gut.
Hier eine kurze Begriffserklärung:

GPIO - Was ist das?

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.
Mit diesen PINs lassen sich alle Arten von Elektroschaltungen bauen.
Sind sind zugleich die Schnittstelle zwischen Kommandozeile (Betriebssystem) und der späteren elektronischen Schaltung.
Hier ein Bild von den GPIO-PINs:
GPIO-PINs.jpg GPIO-Pinbelegung.jpg

Breadboard - Was ist das?

Das Breadboard ist im Prinzip ein einfaches Gitter, auf das sich elektronische Schaltungen stecken lassen.
Es dient zur Veranschaulichung der Schaltung und ermöglicht schnelles Arbeiten. (Kein Lötzinn erforderlich)
Hier ein Bild eines Breadboards:
Breadboard.jpg

Projekt 1: LED via Kommandozeile an- und ausschalten

Benötigte Bauteile: LED, 220 Ohm-Widerstand
Geschätzte Dauer: 5-10 Minuten

Folgende Schaltung sollte aufgebaut werden:
Schaltung-Projekt1.jpg

Mit folgendem Befehl lässt sich die LED an- und ausschalten:

gpio -g mode 17 output
gpio -g write 17 1
gpio -g write 17 0

gpio -g: Der Parameter -g empfiehlt sich, damit die PIN-Nummern gleich den GPIO-Nummerierungen entsprechen
mode 17 output: Bedeutet GPIO PIN 17 auf Strom-Zufuhr schalten
write 17 1: Bedeutet GPIO PIN 17 Strom auf AN schalten
write 17 0: Bedeutet GPIO PIN 17 Strom auf AUS schalten

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

Benötigte Bauteile: DHT11 Humidity Sensor, 10k Ohm-Widerstand (Wenn nicht schon auf dem DHT11 vorhanden)
Geschätzte Dauer: 30-60 Minuten

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.
Führen Sie folgende Befehle aus:

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:
DHT11.jpg

Folgende Schaltung sollte aufgebaut werden:
Schaltung-Projekt2.jpg

Mit folgendem Code lässt sich die Temperatur über den Sensor ausgeben:

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
<11> bedeutet einen DHT11-Sensor auslesen (DHT22 oder AM2302-Sensor ebenfalls möglich)
<4> bedeutet GPIO PIN 4 wurde auf den DATA-PIN gesteckt

Projekt 3: Webserver auf Raspberry Pi installieren

Um einen Webserver (Apache) auf dem Rasperry Pi zu installieren müssen folgende Befehle ausgeführt werden:

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.
Als nächstes muss dem User www-data das Recht für sudo Befehle eingeräumt werden:

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:
http://198.18.1.6

Projekt 5: Messdaten aus SQL-Datenbank lesen und auf Website ausgeben

Zunächst müssen die Pakete aus Projekt 4 installiert werden (s. oben)
Danach muss eine index.php unter /var/www/html/index.php mit folgendem Text erstellt werden:

<?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:
http://198.18.1.6