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 utime 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 utime 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:

Teilen:

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

Online-Workshop Mehr Informationen Elektronik-Set jetzt bestellen

Programmieren mit dem Raspberry Pi Pico
Online-Workshop

Programmieren mit dem Raspberry Pi Pico

Online-Workshop mit einer Einführung ins Physical Computing mit Leuchtdioden, Taster und Temperatursensor.

  • Hardware-nahes Programmieren mit dem Raspberry Pi Pico und MicroPython ohne Vorkenntnisse
  • Optimaler Einstieg, um eigene Ideen zu verwirklichen und Steuerungen zu programmieren
  • Inklusive Elektronik-Set mit einem Raspberry Pi Pico, Zubehör und elektronischen Bauteilen

Für Ihre Fragen zu unseren Online-Workshops mit dem Raspberry Pi Pico besuchen Sie unseren PicoTalk (Online-Meeting). (Headset empfohlen)

Zum PicoTalk Mehr Informationen Am Online-Workshop teilnehmen

Elektronik-Set Pico Edition
Elektronik-Set Pico Edition

Hardware-nahes Programmieren mit dem Raspberry Pi Pico

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

Online-Workshop Mehr Informationen Elektronik-Set jetzt bestellen