Pi Pico Motion Sensor SR501 keine Reaktion

OP #7122461
Lesenswert?

Hallo,
ich bin ein absoluter Newbie in der Welt der Microcontroller und Coding. 
Als erstes kleines Projekt zum Einstig habe ich einen Pi Pico mit einem 
Bewegungssensor SR501 verdrahtet.

Idee ist, dass bei einer erkannten Bewegung die onboard LED kurz 
aufleuchten soll und in der Shell ein Text wiedergegeben wird.

Der Code müsste eigentlich problemlos funktionieren aber es tut sich 
leider absolut nichts. Habe versucht die Sensitivitäten des Sensors auch 
zu variieren aber ohne Erfolg. Weiß zufällig jemand in diesem Forum ob 
etwas nicht korrekt verdrahtet oder programmiert wurde?
1
from machine import Pin
2
from utime import sleep
3

4
led_onboard = Pin(25, Pin.OUT)
5
sensor_pir = machine.Pin(28, machine.Pin.IN, machine.Pin.PULL_DOWN)
6

7
def pir_handler(pin):
8
 utime.sleep_ms(100)
9
 if pin.value():
10
    led_onboard.on()
11
    print("ALARM! Motion detected!")
12
# waiting 1 second
13
    sleep(1)
14
# LED switch off
15
    led_onboard.off()
Angehängte Dateien:
OP #7122477
Lesenswert?

glaube ich verstehe:
1
from machine import Pin
2
from utime import sleep
3

4
sensor_pir = machine.Pin(28, machine.Pin.IN, machine.Pin.PULL_DOWN)
5
led_onboard = machine.Pin(25, machine.Pin.OUT)
6

7
def pir_handler(pin):
8
 utime.sleep_ms(100)
9
 if pin.value():
10
    led_onboard.on()
11
    print("ALARM! Motion detected!")
12
    for i in range(5):
13
        led_onboard.toggle()
14
        utime.sleep_ms(100)
15
sensor_pir.irq(trigger=machine.Pin.IRQ_RISING, handler=pir_handler)

immernoch keine Reaktion :'(
OP #7122544
Lesenswert?

ich denke es stimmt etwas mit dem Sensor nicht. Hab am Ende es Codes 
folgendes eingefügt:
1
while True:
2
 led.toggle()
3
 utime.sleep(5)

LED blinkt jetzt 5 s und sobald Motion detektiert wird sollte diese in 
einer höherer Frequenz blinken. Am Naheliegendsten ist doch, dass der 
Sensor "defekt" ist?

Der ganze Code ist jetzt wie folgt:
1
import machine
2
import utime
3

4
sensor_pir = machine.Pin(28, machine.Pin.IN, machine.Pin.PULL_DOWN)
5
led_onboard = machine.Pin(25, machine.Pin.OUT)
6

7
def pir_handler(pin):
8
 utime.sleep_ms(100)
9
 if pin.value():
10
     print("ALARM! Motion detected!")
11
     for i in range(50):
12
         led_onboard.toggle()
13
         utime.sleep_ms(100)
14
sensor_pir.irq(trigger=machine.Pin.IRQ_RISING, handler=pir_handler)
15
while True:
16
    led_onboard.toggle()
17
    utime.sleep(1)

Naja, vielleicht fällt dem Einen oder Anderen ja noch etwas auf ?
Würde ein Interrupt evtl. Abhilfe verschaffen?

Danke @Ergo70
#7122561
Lesenswert?

Sieht aus, als wolltest du dir den Umgang damit gerade aneignen? In dem 
Fall: lass den Sensor doch erstmal weg, und setz an dessen Stelle einen 
Taster. Der Sensor macht nichts anderes, als beim Triggern den Ausgang 
für einige Sekunden auf High zu setzen – aber das machen diese Dinger 
nicht reproduzierbar, was beim Lernen äußerst hinderlich ist. Wenn es 
dann mit dem Taster funktioniert, kannst du den Sensor dranhängen.

Um den Sensor separat zu testen kannst du eine LED mit einem 
verhältnismäßig großen Vorwiderstand (so, dass sie noch leuchtet, aber 
der Ausgang nicht sehr belastet wird) am Ausgang des Sensors und an GND 
anschließen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren