Pico 2 W Projekte
Bewegungsmelder mit PIR-Sensor:
PIR-Sensor steht für Passive Infrared Sensor. Er reagiert auf Veränderungen der auftreffenden Infrarot-Wärmestrahlung und kann deshalb
sehr gut als Bewegungsmelder oder zur Raumüberwachung genutzt werden.
Sie können
z.B. von hier
5 einfache PIR-Sensoren mit digitalem Ausgang beziehen. Beim Anschluss an den Pico 2 ist eine Besonderheit zu beachten. Bei der Nutzung der
GPIO's mit digitalem Eingang muss man je nach Beschaltung Maßnahmen gegen einen Hardware-Fehler im RP2350 (GPIO-Bug E9) vorsehen. Beim Umschalten zwischen
logisch 0 und 1 durchläuft der Signalpegel einen undefinierten Bereich, der weder 0 noch 1 ist. Die offizielle Empfehlung ist, einen externen Widerstand
von maximal 8,2 kOhm oder kleiner als Pulldown-Widerstand zu verwenden.
Die Abbildung zeigt die grundsätzliche Beschaltung mit Pulldown bzw. Pullup Widerständen.

Ich habe in meinem Test einen externen 10 kOhm Widerstand zwischen dem Sensorausgang und der Masse geschaltet, wie die untere Abbildung zeigt.
Im Quellcode ist für den Eingang GP22 dann noch ein Pullup definiert.

Im unteren Kasten können Sie den Quellcode sehen:
1 import time
2 import board
3 import digitalio
4
5 # Setup digital inputs for PIR sensor and LED:
6 pir = digitalio.DigitalInOut(board.GP22)
7 pir.direction = digitalio.Direction.INPUT
8 pir.pull = digitalio.Pull.UP
9 led = digitalio.DigitalInOut(board.LED)
10 led.direction = digitalio.Direction.OUTPUT
11 led.value = False
12
13 wait = time.monotonic()
14
15 while True:
16 pir_value = pir.value
17 if pir_value:
18 led.value = True
19 wait = time.monotonic()
20 if int(time.monotonic() - wait) >= 5:
21 led.value = False
Zur Nutzung des PIR-Sensors wird keine extra Bibliothek benötigt. In den Zeilen 5 bis 8 wird nur der PIR-Sensor initialisiert
und in den Zeilen 9 bis 11 die Onboard-LED. Wird das Programm gestartet, wird die Onboard-LED ausgeschaltet. Wenn eine Bewegung vom
PIR-Sensor registriert wird, erhält pir.value den Wert True und die LED geht an.
Sobald keine Bewegung mehr registriert wird, geht der Wert pir.value wieder auf False.
Danach bleibt die LED noch für 5 Sekunden an und schaltet dann ab.
Viel Spass und Erfolg beim Ausprobieren.
Pico 2 W Projekte
PIR-Sensor steht für Passive Infrared Sensor. Er reagiert auf Veränderungen der auftreffenden Infrarot-Wärmestrahlung und kann deshalb sehr gut als Bewegungsmelder oder zur Raumüberwachung genutzt werden.
Sie können z.B. von hier 5 einfache PIR-Sensoren mit digitalem Ausgang beziehen. Beim Anschluss an den Pico 2 ist eine Besonderheit zu beachten. Bei der Nutzung der GPIO's mit digitalem Eingang muss man je nach Beschaltung Maßnahmen gegen einen Hardware-Fehler im RP2350 (GPIO-Bug E9) vorsehen. Beim Umschalten zwischen logisch 0 und 1 durchläuft der Signalpegel einen undefinierten Bereich, der weder 0 noch 1 ist. Die offizielle Empfehlung ist, einen externen Widerstand von maximal 8,2 kOhm oder kleiner als Pulldown-Widerstand zu verwenden. Die Abbildung zeigt die grundsätzliche Beschaltung mit Pulldown bzw. Pullup Widerständen.

Ich habe in meinem Test einen externen 10 kOhm Widerstand zwischen dem Sensorausgang und der Masse geschaltet, wie die untere Abbildung zeigt. Im Quellcode ist für den Eingang GP22 dann noch ein Pullup definiert.

Im unteren Kasten können Sie den Quellcode sehen:
1 import time 2 import board 3 import digitalio 4 5 # Setup digital inputs for PIR sensor and LED: 6 pir = digitalio.DigitalInOut(board.GP22) 7 pir.direction = digitalio.Direction.INPUT 8 pir.pull = digitalio.Pull.UP 9 led = digitalio.DigitalInOut(board.LED) 10 led.direction = digitalio.Direction.OUTPUT 11 led.value = False 12 13 wait = time.monotonic() 14 15 while True: 16 pir_value = pir.value 17 if pir_value: 18 led.value = True 19 wait = time.monotonic() 20 if int(time.monotonic() - wait) >= 5: 21 led.value = False