Arduino UNO Q - SW-420 Vibrationssensor

Das SW-420 Vibrationssensormodul erkennt Stöße oder Vibrationen und meldet sie als sauberes digitales Signal, sodass Ihr Programm nie eine verrauschte analoge Welle auswerten muss. Im Inneren des Moduls sitzt ein kleiner federbasierter Schalter dicht neben einem Metallkontakt; der integrierte LM393-Komparator überwacht diesen Schalter und schaltet seinen Ausgang in dem Moment um, in dem eine Vibration ihn stört, während ein kleines Potentiometer auf der Platine einstellen lässt, wie viel Erschütterung als Ereignis zählt. In Kombination mit der Bridge- und Telegram-Integration des Arduino UNO Q erhalten Sie sofort eine Benachrichtigung auf Ihr Handy, sobald etwas angestoßen, geschüttelt oder manipuliert wird.

In diesem Tutorial lernen Sie:

Arduino UNO Q SW-420 Vibrationssensor

Erforderliche Hardware

1×Arduino UNO Q
1×USB Cable for Arduino Uno Q
1×SW-420 Vibration Sensor Module
1×Verbindungskabel
1×(Empfohlen) Schraubklemmenblock-Shield für Arduino Uno
1×(Empfohlen) Sensors/Servo Expansion Shield for Arduino Uno
1×(Empfohlen) Breadboard-Shield für Arduino Uno
1×(Empfohlen) Gehäuse für Arduino Uno
1×(Empfohlen) Prototyping-Grundplatte & Breadboard-Kit für Arduino Uno

Oder Sie können die folgenden Kits kaufen:

1×DIYables Sensor-Kit (18 Sensoren/Displays)
Offenlegung: Einige der in diesem Abschnitt bereitgestellten Links sind Amazon-Affiliate-Links. Wir können eine Provision für Käufe erhalten, die über diese Links getätigt werden, ohne zusätzliche Kosten für Sie. Wir schätzen Ihre Unterstützung.

Über den SW-420 Vibrationssensor

Das SW-420 Vibrationssensormodul ist um einen winzigen federbasierten Vibrationsschalter herum aufgebaut. Solange das Modul still liegt, bleibt der Schalter in einer Ruheposition; sobald eine Vibration oder ein Stoß ihn stört, wechselt der Kontaktzustand des Schalters. Ein integrierter LM393-Komparator wandelt diese mechanische Änderung in ein sauberes digitales Signal um, und ein kleines Potentiometer ermöglicht es, genau einzustellen, wie viel Erschütterung nötig ist, bevor der Ausgang auslöst. Das Modul gibt ein einfaches digitales Signal aus:

  • LOW: Keine Vibration — das Modul ist im Ruhezustand
  • HIGH: Vibration oder Stoß erkannt

Das Modul umfasst:

  • VCC-Pin: Stromversorgung 3,3V bis 5V
  • GND-Pin: Masse
  • DO-Pin: Digitaler Ausgang — LOW = Ruhezustand, HIGH = Vibration erkannt
  • PWR-LED: Betriebsanzeige
  • Status-LED: Leuchtet, sobald der Ausgang auf HIGH geht
SW-420 Vibrationssensor Pinbelegung
image source: diyables.io

Schaltplan

Arduino UNO Q SW-420 Vibrationssensor Schaltplan

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

SW-420 Vibrationssensor-Pin Arduino UNO Q MCU
GND GND
VCC 5V
DO D8

Wie man den SW-420 Vibrationssensor programmiert

  • Den Sensor-Pin als digitalen Eingang konfigurieren:
pinMode(SENSOR_PIN, INPUT);
  • Den digitalen Ausgang auslesen:
int vibration_state = digitalRead(SENSOR_PIN);
  • Vibrationsereignisse durch Vergleich mit dem vorherigen Zustand erkennen:
if (prev_state == LOW && vibration_state == HIGH) Serial.println("Vibration DETECTED"); else if (prev_state == HIGH && vibration_state == LOW) Serial.println("Vibration stopped — idle again"); prev_state = vibration_state;

Arduino UNO Q Code

Der Arduino UNO Q hat zwei Prozessoren, die zusammenarbeiten:

  • Die STM32-MCU liest den digitalen Ausgang des SW-420 Vibrationssensors aus und erkennt Vibrationsereignisse
  • Die Qualcomm-MPU führt Debian Linux mit WLAN aus — in diesem Abschnitt wird nur die MCU programmiert. Ein späterer Abschnitt zeigt, wie beide Prozessoren über Bridge zusammenarbeiten.
/* * Dieser Arduino UNO Q Code wurde von newbiely.de entwickelt * Dieser Arduino UNO Q Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino-uno-q/arduino-uno-q-sw-420-vibration-sensor */ // SW-420 vibration sensor DO pin: LOW = idle, HIGH = vibration detected #define SENSOR_PIN 8 // The Arduino UNO Q MCU pin connected to DO of the SW-420 vibration sensor int prev_vibration_state = LOW; int vibration_state; void setup() { Serial.begin(9600); pinMode(SENSOR_PIN, INPUT); Serial.println("Arduino UNO Q SW-420 Vibration Sensor ready"); } void loop() { vibration_state = digitalRead(SENSOR_PIN); if (prev_vibration_state == LOW && vibration_state == HIGH) Serial.println("Vibration DETECTED"); else if (prev_vibration_state == HIGH && vibration_state == LOW) Serial.println("Vibration stopped — idle again"); prev_vibration_state = vibration_state; }

Schnellanleitung

Zum ersten Mal mit dem Arduino UNO Q? Folgen Sie zunächst dem Tutorial Erste Schritte mit dem Arduino UNO Q, bevor Sie fortfahren.

  • Verbinden: Verdrahten Sie den SW-420 Vibrationssensor wie im Schaltplan gezeigt mit der MCU des Arduino UNO Q.
  • Arduino App Lab öffnen: Starten Sie Arduino App Lab und warten Sie, bis Ihr Arduino UNO Q erkannt wird.
  • Eine neue App erstellen: Klicken Sie auf die Schaltfläche Create New App.
Neue App in Arduino App Lab auf dem Arduino UNO Q erstellen
  • Geben Sie der App einen Namen, zum Beispiel: SW420VibrationSensor
  • Klicken Sie zur Bestätigung auf Create.
Arduino App Lab App-Ordner und -Dateien auf dem Arduino UNO Q
  • Den Sketch einfügen: Kopieren Sie den obigen MCU-Code und fügen Sie ihn in sketch/sketch.ino ein.
  • Hochladen: Klicken Sie in Arduino App Lab auf die Run-Schaltfläche.
Run-Schaltfläche in Arduino App Lab auf dem Arduino UNO Q klicken
  • Klopfen Sie leicht auf den Sensor oder schütteln Sie ihn sanft — beobachten Sie die Ausgabe im Serial Monitor.
  • Drehen Sie am integrierten Potentiometer, wenn der Sensor zu empfindlich oder nicht empfindlich genug erscheint.

App Lab Konsolenausgabe

DIYables_Apps
Stop
sketch.ino
1#include "Arduino_RouterBridge.h"
Serial Monitor
Python
Message (Enter to send a message to "Newbiely" on usb(2820070321))
New Line
9600 baud
[2026-05-06 14:20:01] Arduino UNO Q SW-420 Vibration Sensor ready [2026-05-06 14:20:07] Vibration DETECTED [2026-05-06 14:20:07] Vibration stopped — idle again [2026-05-06 14:20:12] Vibration DETECTED [2026-05-06 14:20:13] Vibration stopped — idle again

Bridge: Linux + MCU

Dieser Abschnitt zeigt, wie Sie beide Prozessoren des Arduino UNO Q programmieren, damit die Linux-Seite den Vibrationszustand auslesen und Vibrationsereignisse über Bridge empfangen kann:

  • Der SW-420 Vibrationssensor ist mit der MCU verbunden — die MCU überwacht den digitalen Ausgang kontinuierlich und speichert den aktuellen Zustand zwischen
  • Die MPU kann den Sensor-Pin nicht direkt auslesen — sie ruft Bridge-Funktionen auf, um den aktuellen Zustand abzufragen oder nach neuen Vibrationsereignissen zu suchen
  • Die MPU hat WLAN — da sie ein vollständiges Debian Linux ausführt, kann sie Telegram-Benachrichtigungen senden, sobald eine Vibration erkannt wird
  • Arduino_RouterBridge ermöglicht die RPC-Kommunikation zwischen den beiden Prozessoren
  • ⚠️ /dev/ttyHS1 (Linux) und Serial1 (MCU) sind vom Router RESERVIERT — öffnen Sie sie niemals in Ihrem eigenen Code

Kurz gesagt: Die MCU erkennt eine Vibration über den DO-Pin → setzt ein Ereignis-Flag → die MPU fragt Bridge ab → die MPU sendet eine Telegram-Benachrichtigung.

MCU-Code (Bridge)

/* * Dieser Arduino UNO Q Code wurde von newbiely.de entwickelt * Dieser Arduino UNO Q Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino-uno-q/arduino-uno-q-sw-420-vibration-sensor */ #include "Arduino_RouterBridge.h" #define SENSOR_PIN 8 // The Arduino UNO Q MCU pin connected to DO of the SW-420 vibration sensor bool cached_vibration = false; // true = vibration present bool vibration_event = false; // true = new vibration detected (rising edge) int prev_state = LOW; String get_state(String arg) { return cached_vibration ? "vibrating" : "idle"; } String get_event(String arg) { if (vibration_event) { vibration_event = false; return "vibration_detected"; } return "none"; } void setup() { Bridge.begin(); Monitor.begin(); pinMode(SENSOR_PIN, INPUT); Bridge.provide("get_state", get_state); Bridge.provide("get_event", get_event); Monitor.println("Arduino UNO Q SW-420 Vibration Sensor Bridge ready"); } void loop() { int current = digitalRead(SENSOR_PIN); if (prev_state == LOW && current == HIGH) { // Idle → Vibrating cached_vibration = true; vibration_event = true; Monitor.println("Vibration detected!"); } else if (prev_state == HIGH && current == LOW) { // Vibrating → Idle cached_vibration = false; Monitor.println("Idle again."); } prev_state = current; }

Python-Code (Bridge)

/* * Dieser Arduino UNO Q Code wurde von newbiely.de entwickelt * Dieser Arduino UNO Q Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino-uno-q/arduino-uno-q-sw-420-vibration-sensor */ from arduino.app_utils import * import time def loop(): state = Bridge.call("get_state") print(f"Vibration state: {state}") time.sleep(0.5) App.run(user_loop=loop)

Schnellanleitung

  • Verbinden: Verdrahten Sie den SW-420 Vibrationssensor wie im Schaltplan gezeigt mit dem Arduino UNO Q.
  • Öffnen Sie Arduino App Lab und erstellen Sie eine neue App mit dem Namen VibrationSensorBridge.
  • Fügen Sie den MCU-Sketch in sketch/sketch.ino ein.
  • Fügen Sie den Python-Code in die Python-Datei ein.
  • Install the library: Click the Add sketch library button (the open book icon with a + sign) in the left sidebar.
Add sketch library in Arduino App Lab on Arduino UNO Q
  • Search for Arduino_RouterBridge created by Arduino and click the Install button.
My Apps / DIYables Apps
Run
Bricks
No bricks added...
Sketch Libraries
No sketch libra...
Files
python
sketch
.gitignore
README.md
app.yaml
sketch.ino
Add sketch library
Arduino_RouterBridge Arduino

This library provides a simple RPC bridge for Arduino UNO Q boards, allowing communication between the board and other devices using MsgPack serialization.

0.4.1
Install
More Info
  • Hochladen: Klicken Sie auf die Run-Schaltfläche.
Run-Schaltfläche in Arduino App Lab auf dem Arduino UNO Q klicken
  • Klopfen Sie auf den Sensor — beobachten Sie, wie das Ereignis in beiden Konsolen erscheint.

App Lab Konsolenausgabe

DIYables_Apps
Stop
sketch.ino
1#include "Arduino_RouterBridge.h"
Serial Monitor
Python
Message (Enter to send a message to "Newbiely" on usb(2820070321))
New Line
9600 baud
[2026-05-06 14:25:01] Arduino UNO Q SW-420 Vibration Sensor Bridge ready [2026-05-06 14:25:09] Vibration detected! [2026-05-06 14:25:10] Idle again.
DIYables_Apps
Stop
sketch.ino
1#include "Arduino_RouterBridge.h"
Serial Monitor
Python
[2026-05-06 14:25:02] Vibration state: idle [2026-05-06 14:25:04] Vibration state: idle [2026-05-06 14:25:09] Vibration state: vibrating [2026-05-06 14:25:11] Vibration state: idle

Telegram

Erhalten Sie sofortige Telegram-Benachrichtigungen, wenn der SW-420 Vibrationssensor am Arduino UNO Q eine Vibration erkennt.

MCU-Sketch: Behalten Sie denselben MCU-Sketch aus dem vorherigen Bridge-Abschnitt bei.

Python-Code (Telegram)

/* * Dieser Arduino UNO Q Code wurde von newbiely.de entwickelt * Dieser Arduino UNO Q Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino-uno-q/arduino-uno-q-sw-420-vibration-sensor */ from arduino.app_utils import * import requests import time TELEGRAM_BOT_TOKEN = "YOUR_TELEGRAM_BOT_TOKEN" CHAT_ID = "YOUR_CHAT_ID" last_update_id = 0 def get_updates(): global last_update_id url = f"https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/getUpdates" params = {"offset": last_update_id + 1, "timeout": 5} try: response = requests.get(url, params=params, timeout=10) data = response.json() if data["ok"]: return data["result"] except Exception as e: print(f"Error getting updates: {e}") return [] def send_message(chat_id, text): url = f"https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/sendMessage" payload = {"chat_id": chat_id, "text": text} try: requests.post(url, data=payload, timeout=10) except Exception as e: print(f"Error sending message: {e}") def loop(): # Auto-alert on new vibration detection event = Bridge.call("get_event") if event == "vibration_detected": print("Vibration detected! Sending Telegram alert.") send_message(CHAT_ID, "🔨 Vibration detected by Arduino UNO Q!") # Handle Telegram commands updates = get_updates() for update in updates: last_update_id = update["update_id"] if "message" not in update: continue message = update["message"] chat_id = message["chat"]["id"] text = message.get("text", "").strip() print(f"Received: {text}") if text == "/start": send_message(chat_id, "Arduino UNO Q SW-420 Vibration Sensor Bot\n" "/state - Current vibration state (vibrating / idle)\n" "Automatic alert when vibration is detected") elif text == "/state": result = Bridge.call("get_state") send_message(chat_id, f"Vibration state: {result}") App.run(user_loop=loop)

Schnellanleitung

  • Ersetzen Sie YOUR_TELEGRAM_BOT_TOKEN durch Ihr tatsächliches Bot-Token von BotFather.
  • Ersetzen Sie YOUR_CHAT_ID durch Ihre Telegram-Chat-ID.
  • Fügen Sie diesen Python-Code in die Python-Datei Ihrer App ein (behalten Sie denselben MCU-Sketch bei).
  • Klicken Sie auf die Run-Schaltfläche — klopfen Sie auf den Sensor oder schütteln Sie ihn, um eine Telegram-Benachrichtigung auszulösen.

App Lab Konsolenausgabe

DIYables_Apps
Stop
sketch.ino
1#include "Arduino_RouterBridge.h"
Serial Monitor
Python
[2026-05-06 14:30:00] Waiting for Telegram messages... [2026-05-06 14:30:06] Vibration detected! Sending Telegram alert. [2026-05-06 14:30:15] Received: /state
Telegram
Telegram 12:45
Welcome to Telegram!
ArduinoBot 10:19
Chatting with Arduino...
telegram-botfather
BotFather Yesterday
Your bot has been created.

ArduinoBot

bot
Today
🔨 Vibration detected by Arduino UNO Q!
10:15 AM
/state
10:16 AM ✓✓
Vibration state: idle
10:17 AM
/state
10:18 AM ✓✓
Vibration state: vibrating
10:19 AM

OpenClaw

You can adapt the OpenClaw to this tutorial by refering the instruction on Arduino Uno Q - OpenClaw Tutorial

Projektideen

Mit dem SW-420 Vibrationssensor und dem Arduino UNO Q können Sie viele nützliche Projekte bauen:

  • Manipulationsalarm für Tür/Fenster: Befestigen Sie den Sensor an einer Tür oder einem Fenster — wenn jemand es aufbricht oder daran klopft, sendet die MPU sofort eine Telegram-Benachrichtigung, damit Sie es umgehend erfahren
  • Stoßprotokoll für Pakete: Kleben Sie den Sensor in einen Versandkarton — die MPU versieht jedes Stoßereignis mit einem Zeitstempel und schreibt es in eine Logdatei unter Linux, sodass Sie erkennen können, ob ein Paket beim Transport unsachgemäß behandelt wurde
  • Waschmaschinen-Wächter: Montieren Sie den Sensor an einem Gerät — die MPU verfolgt Vibrationsereignisse über Bridge und sendet eine Telegram-Nachricht, wenn die Maschine ungewöhnlich stark vibriert oder zur erwarteten Zeit nicht stoppt
  • Erdbeben-/Aufprall-Demo-Spielzeug: Verwenden Sie den Sensor als einfache Frühwarn-Demo — die MCU meldet jeden plötzlichen Stoß sofort, und die MPU verschickt innerhalb weniger Augenblicke eine Telegram-Warnung
  • Überwachung von Werkstattgeräten: Befestigen Sie den Sensor an einem laufenden Werkzeug oder einer Maschine — die MPU fragt Bridge kontinuierlich ab und benachrichtigt Sie per Telegram, sobald unerwartete Vibrationen darauf hindeuten, dass das Gerät Aufmerksamkeit benötigt

Verwandte Tutorials

※ UNSERE NACHRICHTEN

  • Sie können gerne den Link zu diesem Tutorial teilen. Bitte verwenden Sie jedoch unsere Inhalte nicht auf anderen Websites. Wir haben viel Mühe und Zeit in die Erstellung der Inhalte investiert, bitte respektieren Sie unsere Arbeit!