Bücher online kostenlos Kostenlos Online Lesen
Raspberry Pi - Einstieg, Optimierung, Projekte

Raspberry Pi - Einstieg, Optimierung, Projekte

Titel: Raspberry Pi - Einstieg, Optimierung, Projekte Kostenlos Bücher Online Lesen
Autoren: Maik Schmidt
Vom Netzwerk:
5V-Pin des Pi an den Versorgungsspannungspin des Sensors an und die Masse des Pi an den Masseanschluss des Sensors. Schließen Sie dann den Signalpin des Sensors an den Pin GIOP23 am Pi an. Normalerweise sind die Pins am Sensor beschriftet. Wenn Sie sich nicht sicher sind, werfen Sie einen Blick in das Sensor-Datenblatt.

    Abb. 10–3 Der PIR-Schaltkreis
    Alle digitalen PIR-Sensoren funktionieren mehr oder weniger auf dieselbe Weise. Solange sie keine Bewegung erkennen, geben die Sensoren keine Spannung über ihren Signalpin aus. Wenn sie eine Bewegung wahrnehmen, geben sie ein positives Signal aus, also eine bestimmte Spannung, die Sie im Datenblatt des Sensors nachlesen können.
    Nochmals eine Warnung! Schließen Sie niemals Sensoren mit einer Ausgangsspannung von mehr als 3,3 V direkt an den Pi an. Sie beschädigen dadurch Ihren Pi!
Einen PIR-Sensor steuern
    Wenn die Verkabelung fertig ist, können wir den Sensor mit etwas Software steuern. Für viele Programmieraufgaben mit dem Pi ist die Sprache Python 5 eine gute Wahl. Sie ist einfach zu erlernen und die RPi-Bibliothek 6 bietet viele bequeme Funktionen, um die GPIO-Pins des Pi zu steuern. Raspbian wird bereits mit Python ausgeliefert, RPi müssen wir aber noch installieren.
    pi@raspberry:~$
 
sudo apt-get update
pi@raspberry:~$
 
sudo apt-get install python-dev python-rpi.gpio
    Damit sind die Vorbereitungen abgeschlossen und wir können eine neue Python-Klasse für den PIR-Sensor definieren.
    Sensors/pir.py
    Zeile 1   import  RPi.GPIO  as  GPIO
      2
      3   class  PassiveInfraredSensor:
      4       def  __init__(self, pin):
      5         self.pin = pin
      6         GPIO.setmode(GPIO.BCM)
      7         GPIO.setup(self.pin, GPIO.IN)
      8
      9       def  motion_detected(self):
     10          return  GPIO.input(self.pin)
    Selbst wenn Sie Python noch nie verwendet haben, sollten Sie verstehen können, was das Programm macht. Bevor wir den Quellcode zeilenweise ansehen, sollten Sie wissen, dass Python Leerzeichen anders behandelt als die meisten anderen Programmiersprachen. Statt Codeblöcke mit geschweiften Klammern oder mit Schlüsselwörtern wie
begin
oder
end
abzugrenzen, verwendet Python Einrückungen. Es spielt keine Rolle, ob Sie Leerzeichen oder Tabulatoren verwenden, um einen Codeblock einzurücken, Sie müssen dabei nur konsistent arbeiten. Wenn Sie also die erste Zeile eines Blocks mit vier Leerzeichen eingerückt haben, müssen Sie auch die folgenden Zeilen um vier Leerzeichen einrücken.
    In der ersten Zeile importieren wir die GPIO-Funktionen der RPi, sodass wir sie in unserem Code verwenden können. Dann definieren wir eine neue Klasse namens
PassiveInfraredSensor
. Immer wenn wir ein neues
PassiveInfraredSensor
-Objekt erzeugen, ruft Python die Funktion
__init__
auf. Die Funktion erwartet zwei Argumente: das neu erstellte Objekt (
self
) und die Nummer des Pins, den wir an den Sensor angeschlossenhaben (
pin
). Das erste Argument wird von Python automatisch initialisiert.
    In Zeile 5 legen wir die Pinnummer im aktuellen Objekt ab und danach setzen wir die Nummerierung für die Pins mit der Funktion
GPIO.setmode
. Wir übergeben ihr den Wert
GPIO.BCM
, sodass die RPi-Bibliothek die Pinnummern mittels der Broadcom-Definition (siehe die oberen und unteren Zeilen in Abb. 9–2 ) interpretiert. In unserem Fall ist die Pinnummer 23, da wir den Signalpin des Sensors an Pin GPIO23 am Pi angeschlossen haben.
    Alternativ können wir den Modus auf
GPIO.BOARD
setzen. In diesem Fall interpretiert RPi die Pinnummern, wie sie auf der Platine des Pi definiert sind, und wir müssen 16 statt unserer aktuellen Einstellung verwenden (siehe die beiden Zeilen in Abb. 9–2 , die mit Pin beginnen). Schließlich stellen wir den Pin, an den der Sensor angeschlossen ist, auf Eingang, indem wir
GPIO.setup
in Zeile 7 aufrufen.
    Danach definieren wir eine Methode namens
motion_detected
, die
True
zurückgibt, wenn der Sensor eine Bewegung erkannt hat, und
False
, wenn nicht. Dazu wird
GPIO.input
aufgerufen und der Funktion wird unsere Signalpinnummer übergeben. Python setzt auch hier das Argument
self
automatisch für uns.
    Unsere Klasse
PassiveInfraredSensor
ist jetzt vollständig, sodass wir damit den Bewegungssensor erstellen können. Das folgende Programm prüft ständig, ob der PIR-Sensor eine Bewegung erkannt hat. Es gibt eine

Weitere Kostenlose Bücher