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 | 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:
- Raspberry Pi Pico: Schrittzähler mit Vibration Sensor KY-002 programmieren
- Raspberry Pi Pico: Erschütterungsmelder mit Vibration Sensor KY-002 programmieren
- Raspberry Pi Pico: Diebstahlwarner mit Summer und Vibration Sensor KY-002 programmieren
Teilen:
Hardware-nahes Programmieren mit dem Raspberry Pi Pico und MicroPython
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
Hardware-nahes 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.
Für Ihre Fragen zu unseren Online-Workshops mit dem Raspberry Pi Pico besuchen Sie unseren PicoTalk (Online-Meeting). (Headset empfohlen)
Elektronik-Set Pico Edition
Raspberry Pi Pico: Hardware-nahes Programmieren mit MicroPython
Leichter Einstieg mit All-in-one-Set zum sofort Loslegen, um eigene Steuerungen programmieren.
Elektronik-Set Pico WLAN Edition
Raspberry Pi Pico W: IoT und Smart Home mit WLAN und MQTT
Betreibe Deinen Raspberry Pi Pico W als drahtloser Sensor in Deinem WLAN, versende E-Mails mit Daten und kommuniziere per MQTT im Internet of Things oder Smart Home.
Elektronik-Set Sensor Edition
Erweiterung zu den Elektronik-Sets Pico Edition und Pico WLAN Edition
Elektronik-Set mit den beliebtesten Sensoren zum Messen von Temperatur, Helligkeit, Bewegung, Lautstärke und Entfernung.
Elektronik-Set Eingabe Ausgabe Edition
Erweiterung zu den Elektronik-Sets Pico Edition und Pico WLAN Edition
Damit kannst Du MP3-Dateien abspielen, eine Stoppuhr bauen, einen Servo-Motor mit Drehschalter oder Joystick steuern, Lichteffekte mit einem WS2812-LED-Lichtstreifen erzeugen, Schalten mit einem Relais und Signalisieren mit einem Vibrationsmotor.