Raspberry Pi Pico: Erschütterung oder Vibration erkennen mit Vibration Sensor KY-002

Beim KY-002 handelt es sich um einen sehr einfachen Erschütterungsdetektor bzw. Vibrationssensor. Er kann wie ein Schalter bzw. Taster ausgewertet werden. Der einzige Nachteil ist, dass seine Empfindlichkeit nicht eingestellt werden kann.

Mit diesem Aufbau und Programmcode wollen wir den KY-002 einfach mal ausprobieren und herausfinden, wie wir ihn sinnvoll einsetzen können.

Aufbau und Bauteile

Raspberry Pi Pico: Erschütterung oder Vibration erkennen mit Vibration Sensor KY-002

Raspberry Pi Pico KY-002
Pin 38 GND -
Pin 36 3V3 +3,3V Mitte
Pin 31 GPIO 26 / ADC0 S

Programmcode mit digitaler Auswertung

Im folgenden Programmcode wird der Schalt-Zustand des Sensors mit einem GPIO-Eingang ermittelt. Genauso, wie man es bei einem Taster oder Schalter tun würde.
Zum einfachen Entprellen wird die Messung zweimal hintereinander mit ein Pause von 10 Millisekunden durchgeführt. Zusätzlich wird bei einer erkannten Bewegung ein weitere Pause durchgeführt, damit der Sensor eine Ruhephase bekommt, damit nicht nicht versehentlich eine weitere Bewegung erkannt wird.

# Bibliotheken laden
from machine import Pin
from time import sleep

# Initialisierung von GPIO als Eingang
vibration = Pin(26, Pin.IN, Pin.PULL_DOWN)

# Wiederholung (Endlos-Schleife)
while True:
    first = vibration.value()
    sleep(0.01)
    second = vibration.value()
    if first and not second:
        print('Bewegung')
        print()
        # Ruhepause für den Sensor
        sleep(1)
        print('Ruhe')
        print()

Diese Form der Auswertung hat den Nachteil, dass nicht klar ist, wann genau eine Bewegungsänderung erkannt wird. Es gibt keine Möglichkeit, die Empfindlichkeit einzustellen. Weder mit einem Potentiometer, noch softwareseitig.

Programmcode mit analoger Auswertung

Im folgenden Programmcode wird der GPIO als ADC-Eingang initialisiert. Außerdem ist noch eine Schwelle definiert, ab welchem Wert eine Bewegung als erkannt gilt.

# Bibliotheken laden
from machine import ADC
from time import sleep

# Initialisierung ADC-Eingang
sensor = ADC(0)

# Schwellwert (Kalibrierung notwendig)
schwelle = 53100

# Wiederholung (Endlos-Schleife)
while True:
    value = 0
    for i in range (5):
        value += sensor.read_u16()
    value = int(value / 5)
    print('ADC:', value)
    if value < schwelle:
        print('Bewegung')
        sleep(3)
        print('Ruhe')
    sleep(0.1)

Ob der Wert für die Schwelle korrekt ist, hängt wohl von der Exemplarstreuung des Sensors ab. Du musst hier ein wenig experimentieren.

Die for-Schleife (5 Messungen nacheinander) am Anfang der Endlos-Schleife ist dem Umstand geschuldet, dass die Messung des analogen Werts gelegentlich Fehlmessungen produziert, die unterhalb des Schwellwerts liegen kann. Gelegentlich wird eine Vibration erkannt, obwohl eigentlich keine stattgefunden hat. Durch das Bilden des Mittelwerts von 5 nacheinander folgenden Messungen kann eine Fehlerkennung verringert werden.

Experimente, Beobachtungen und Erklärungen

Wie kann man Vibrationen sinnvoll auslösen?

  • Du kannst den Sensor schütteln.
  • Du kannst mit dem Finger gegen den Sensor schnippen.

In der Regel wird nicht der Sensor selber, sondern ein Gegenstand oder das Objekt erschüttert. Deshalb wird man das Sensor-Modul am Objekt befestigen müssen. Möglichst direkt und entkopplungsfrei.

Bei der analogen Auswertung kannst Du beobachten, dass nur bei einer erheblichen Bewegungsänderung eine Erschütterung bzw. Vibration erkannt wird. Das liegt einfach daran, dass dieser Sensor physikalisch eher einem Taster oder Schalter entspricht. Entsprechend sollte er ausgewertet werden.

Darf es ein bisschen mehr sein?

Der Nachteil des Sensor-Moduls KY-002 ist, dass man es nicht kalibrieren kann. Wenn Du die Empfindlichkeit einstellen willst, dann solltest Du den Erschütterungssensor vom Typ 801S ausprobieren.

Weitere verwandte Themen:

Frag Elektronik-Kompendium.de

Hardware-nahes Programmieren mit dem Raspberry Pi Pico und MicroPython

Elektronik-Set Pico Edition

Das Elektronik-Set Pico Edition ist ein Bauteile-Sortiment mit Anleitung zum Experimentieren und Programmieren mit MicroPython.

  • LED: Einschalten, ausschalten, blinken und Helligkeit steuern
  • Taster: Entprellen und Zustände anzeigen
  • LED mit Taster einschalten und ausschalten
  • Ampel- und Lauflicht-Steuerung
  • Elektronischer Würfel
  • Eigene Steuerungen programmieren

Elektronik-Set jetzt bestellen Online-Workshop buchen

Online-Workshop: Programmieren mit dem Raspberry Pi Pico

Programmieren mit dem Raspberry Pi Pico

Gemeinsam mit anderen und unter Anleitung experimentieren? Wir bieten unterschiedliche Online-Workshops zum Raspberry Pi Pico und MicroPython an. Einführung in die Programmierung, Sensoren programmieren und kalibrieren, sowie Internet of Things und Smart Home über WLAN und MQTT.

Online-Workshop buchen

Besuchen Sie unser fast monatlich stattfindendes Online-Meeting PicoTalk und lernen Sie uns kennen. Die Teilnahme ist kostenfrei.

Termine und Newsletter-Anmeldung

 

Elektronik-Sets für das Hardware-nahe Programmieren