====== GPIO Projekte ======
[[python| ☚ zurück]]
Ein Raspberry Pi kann LEDs, Sensoren, Taster oder Displays direkt über seine GPIO-Pins ansteuern. Diese Pins sind jedoch empfindlich, da sie direkt mit dem Prozessor verbunden sind. Deshalb muss beim Aufbau der Hardware sorgfältig gearbeitet werden: richtige Spannungen verwenden, Bauteile korrekt anschließen und Änderungen nur im ausgeschalteten Zustand vornehmen. Ziel ist es, einfache Schaltungen sicher aufzubauen und die Grundlagen für spätere Projekte mit Elektronik zu erlernen.
{{ :raspberry_pi:ampel_led.jpg?300 |}}
====== Überblick ======
* Hardware ansteuern
* Environment anlegen
* Minimalprogramm
* [[project:python_led| Projekt: LED mit Python ]]
----
====== Details ======
===== Hardware ansteuern =====
Ein Raspberry Pi kann LEDs, Sensoren, Taster oder Displays direkt über seine GPIO-Pins ansteuern. Diese Pins sind jedoch empfindlich, da sie direkt mit dem Prozessor verbunden sind. Deshalb muss beim Aufbau der Hardware sorgfältig gearbeitet werden: richtige Spannungen verwenden, Bauteile korrekt anschließen und Änderungen nur im ausgeschalteten Zustand vornehmen. Ziel ist es, einfache Schaltungen sicher aufzubauen und die Grundlagen für spätere Projekte mit Elektronik zu erlernen.
**ACHTUNG: Der Raspberry Pi kann Schaden nehmen!**
Anfänger sollten sehr vorsichtig sein! Tatsächlich ist ein **Arduino** für erste Experimente (//wegen des geringeren Preises//) häufig die bessere Wahl.
**Bitte alle Anweisungen beachten und im Zweifel den Tutor fragen.**
**Gerade Anfängern passiert es leider immer wieder, dass sie versehentlich genau das Falsche tun.**
**Hardware-Regeln**
- Hardware-Anpassungen nicht durchführen, während der Raspberry Pi mit Strom versorgt ist.
- Vor der Inbetriebnahme die Hardware vom Tutor kontrollieren lassen.
- Niemals GPIO-Pins direkt mit 5 V verbinden.
- Keine Kurzschlüsse zwischen Pins verursachen //(also keine zwei Pins direkt mit einem Kabel verbinden//).
Beim Raspberry Pi gelten für die GPIO-Pins grob folgende elektrische Grenzen:
* max. ca. 16 mA pro GPIO-Pin
* max. ca. 50 mA insgesamt über alle GPIOs zusammen
|{{ :raspberry_pi:raspi-layout4-1.jpg?300 |}}|
| Raspberry Pi Layout und Orientierung. |
|{{ :raspberry_pi:raspi-layout4.png?300 |}}|
|Nur die **GPIO**, **GND** und **VCC (3,3V)** werden benutzt.
* LED-Ampel:
* Masse: **GND**
* R/Y/G: **GPIO 17, GPIO 27, GPIO 22**
* Temperatursensor
* Versorgungsspannung: **VCC 3,3**
* Masse: **GND**
* Data: **GPIO 4**
|
|{{ :raspberry_pi:pi_adapter_1.jpg?400 |}}|
|Adapterplatine zur Nutzung auf einem Steckbrett.|
|{{ :raspberry_pi:pi_adapter_2.png?400 |}}|
|Alle Bauteile LED-Ampel und Temperatursensor die im Kurs verwendet werden sind angeschlossen|
Im Kurs wird nicht mit einem Steckbrett gearbeitet, sondern mit einem eigens entwickelten kleinen Modul.
Diese Platine ermöglicht es, auch ohne Hardwarekenntnisse sicher zu arbeiten und sich dadurch schnell auf die Software zu konzentrieren.
{{ :raspberry_pi:board_3d.png?400 |}}
☛ http://wiki.softure.de/doku.php?id=0x0020
==== Verwendete Hardware ====
* Hardware-Anbindung LED-Ampel-Modul (R/G/Y + GND)
Dieses LED-Modul besitzt vier Anschlüsse:
Wir verwenden folgende GPIO-Nummern. Falls andere gewählt werden muss der Quellcode entsprechend angepasst werden.
^ Modul ^ Raspberry Pi GPIO ^
| GND | beliebigen GND |
| **R** → rote LED | **GPIO17** |
| **G** → grüne LED | **GPIO27** |
| **Y** → gelbe LED | **GPIO22** |
++++ Technisches Prinzip |
Auf dem Modul sind bereits Vorwiderstände (Kennzeichnung „331“ = 330 Ohm) verbaut.
Es ist daher **kein zusätzlicher Widerstand erforderlich**.
* **ON** GPIO-Pin wird auf **HIGH (3,3 V)** gesetzt, um die jeweilige LED einzuschalten
* **OFF** GPIO-Pin wird auf **LOW (0)** gesetzt, um die jeweilige LED auszuschalten.
Strom bei 3,3 V:
(3,3 V − ca. 2,0 V LED) / 330 Ω ≈ 4 mA
Dies ist für den Raspberry Pi unkritisch.
++++
===== Environment anlegen =====
**Aufgabe: Anlegen einer Python-Environment**
Lege eine Umgebung
* ''~/devel/projects/course_env'' an.
Hierfür muss der Ordner ''~/devel/projects'' bereits vorhanden sein.
Das Anlegen und Managen einer Umgebung ist hier
[[python_python-umgebung_env_einrichten_vorbereitungen_fuer_projekte_schaffen|Python ENV]]
ausführlich beschrieben.
**Wechsle in die Environment**
Die Programmierung erfolgt nun immer mit der gewählten Umgebung!
source ~/devel/projects/course_env/bin/activate
* Für alle **Python-Projekte** im Kurs verwenden wir diese eine Umgebung: **course_env**!
==== Pakete & Bibliotheken installieren ====
Systemweit GPIO-Unterstützung über ''apt'' zur Verfügung stellen:
sudo apt install python3-rpi.gpio
Jetzt die **ENV** aktivieren (falls noch nicht geschehen) und dann erst ''RPi.GPIO'' installieren:
source ~/devel/projects/course_env/bin/activate
pip install RPi.GPIO
===== Minimal Programm =====
Dieses Programm (''led_simple.py'') schaltet eine einzelne LED am **Raspberry Pi**.
Pin und Befehl werden im **ADJUST AREA** angepasst.
''GPIO.cleanup()'' setzt am Ende alle verwendeten GPIO-Pins wieder zurück.
#!/usr/bin/env python3
import RPi.GPIO as GPIO
# START ADJUST AREA
PIN = 17 # PIN wählen
VALUE = GPIO.HIGH # HIGH / LOW (anschalten/ausschalten)
# END ADJUST AREA
def main():
GPIO.setmode(GPIO.BCM) # Broadcom-GPIO-Nummern
GPIO.setwarnings(False) # Warning OFF
GPIO.setup(PIN, GPIO.OUT) # Als Ausgabe PIN festlegen
GPIO.output(PIN, VALUE) # Output setzen!
state = GPIO.input(PIN)
print("Status: ", bool(state))
# GPIO.cleanup() # Pin freigeben (LOW INPUT)
if __name__ == "__main__":
main()
=== Programm ausführen ===
chmod 775 led_simple.py # einmalig ausführbar machen!
./led_simple.py # Script ausführen!
Hierfür muss das Programm ausführbar gemacht werden (''chmod'') und man sich im Verzeichnis des auszuführenden Programms befinden.
===== Projekt: LED mit Python =====
* [[project:python_led| Projekt: LED mit Python ]]