Erschütterungssensor (SW-420) + ESP32 Tutorial

 


 

Einleitung

Du möchtest Deinen ESP32 Mikrocontroller nutzen, um Erschütterungen zu detektieren? Dann bist Du hier genau richtig! In diesem Tutorial zeigen wir Dir Schritt für Schritt, wie Du den Erschütterungssensor SW-420 anschließt und programmierst. Für die Programmierung verwenden wir die weit verbreitete Arduino IDE, die sich hervorragend für den ESP32 eignet.
Dieser umfassende Artikel begleitet Dich vom ersten Bauteil bis zur fertigen Anwendung: Du erhältst eine detaillierte Übersicht über alle erforderlichen Komponenten, lernst den Schaltungsaufbau kennen und erhältst eine klare Code Erklärung. Abschließend zeigen wir Dir, wie Du die Anwendung erfolgreich auf Deinen ESP32 überträgst und in Betrieb nimmst. Lass uns starten!

 

 

Verschaltung

Teile

1x ESP32
1x SW-420
3x Verbindungskabel

Bibliotheken

Code

 

 



 

Übersicht – SW-420 + ESP32

Bevor wir mit der Verkabelung und Programmierung loslegen, verschaffen wir uns einen Überblick, welche Komponenten Du für dieses SW-420 und ESP32 Projekt benötigst. Der Aufbau ist denkbar einfach, da der Erschütterungssensor direkt mit dem ESP32 Mikrocontroller verbunden wird. Du brauchst nur wenige Teile, die Du meistens schon zu Hause hast. Stelle sicher, dass Du alle Komponenten beisammenhast, damit wir ohne Unterbrechung starten können!
Benötigte Komponenten:
1x ESP32 (Mikrocontroller)
1x Erschütterungssensor SW-420
3x Verbindungskabel (Dupont-Kabel)

 



 

Pinout – SW-420

Der Erschütterungssensor SW-420 ist ein sehr einfach aufgebautes Modul, das lediglich drei Pins zur Verbindung mit dem ESP32 benötigt. Das Pinout besteht aus den standardmäßigen Anschlüssen für die Stromversorgung (VCC und GND) sowie einem digitalen Ausgang (DO). Der DO-Pin liefert Dir das Signal (HIGH/LOW), ob eine Erschütterung erkannt wurde oder nicht, was die Abfrage sehr unkompliziert macht.

Die Anschlüsse im Detail:
VCC Pin: Hier schließt Du die positive Versorgungsspannung an, die vom ESP32 bereitgestellt wird (meist 3,3 V oder 5 V).
GND Pin: Dies ist der Masse-Anschluss
DO Pin: Der Digital-Output Pin liefert das Ausgangssignal (HIGH bei keiner Erschütterung, LOW bei Erkennung)

 



 

Hardware Aufbau / Verkabelung

Der Schaltungsaufbau zwischen dem Erschütterungssensor SW-420 und dem ESP32 Mikrocontroller ist sehr simpel gehalten. Du verbindest den VCC-Pin des Erschütterungssensors mit dem 3,3V Ausgang des ESP32 und den GND-Pin des Sensors mit dem GND-Pin des ESP32. Das digitale Ausgangssignal wird über den Data-Pin (DO) des SW-420 an den digitalen GPIO Pin D15 des ESP32 übertragen.

ESP32 D15 → SW-420 DO-Pin (Daten-Pin)

ESP32 GND → SW-420 GND

ESP32 3,3V → SW-420 VCC

Eine sorgfältige und korrekte Verdrahtung ist entscheidend, damit der ESP32 die digitalen Signale des SW-420 Erschütterungssensors fehlerfrei verarbeiten kann. Sobald Du diese Verbindungen erfolgreich hergestellt hast, bist Du bereit, mit der Programmierung des ESP32 fortzufahren. Im nächsten Abschnitt gehen wir detailliert darauf ein, wie Du den Code für den SW-420 programmieren kannst.

 

Software / Code / Programmierung

Nachdem der Hardware-Aufbau erfolgreich abgeschlossen ist, können wir uns nun der ESP32 Programmierung zuwenden. In diesem Abschnitt behandeln wir ausführlich die essentiellen Schritte zur Codeerstellung und erläutern im Detail die Schlüsselfunktionen, die Du verwenden wirst, um den Erschütterungssensor auszulesen.

 

Schritt 1: IDE Projekt
Öffnen der Arduino-IDE und Erstellen eines neuen ESP32 Projekts.
Um mit der Arduino-IDE zu arbeiten, öffne zunächst die Anwendung auf Deinem Computer. Falls Du die Arduino-IDE noch nicht installiert hast, findest Du unter folgendem Link eine Anleitung hierzu:
Nachdem Du die Arduino-IDE geöffnet hast, erstellst Du ein neues Projekt, indem Du auf „Datei“ und anschließend auf „Neu“ klickst. Dadurch wird ein neuer Sketch geöffnet, in dem Du Deinen Code eingeben kannst.


// Hier kommt dein Code
void setup(){
  // Initialisierung
}

void loop(){
  // Schleife
}

 

Schritt 2: Bibliothek einbinden
Um die digitalen Daten des SW-420 auszulesen, ist keine spezielle Bibliothek notwendig, da der Sensor ein einfaches digitales Signal liefert. Nur bei komplexeren Sensoren erhältst Du durch eine Bibliothek die erforderlichen Funktionen.

 

Schritt 3: Initialisierung
Die Initialisierung erfolgt ganz am Anfang des Codes, also vor der void setup() Funktion. Hier werden alle globalen Variablen und Konstanten definiert, die im gesamten Programm verwendet werden. Du definierst den GPIO Pin 15 des ESP32 als data_pin und legst zwei Integer-Variablen (lastState und currentState) an, um den vorherigen und den aktuellen Zustand des SW-420 Sensors zu speichern. Durch das Speichern des vorherigen Zustands kann im weiteren Verlauf des Programms präzise erkannt werden, wann genau eine Zustandsänderung (Erschütterung erkannt/verschwunden) stattfindet.


#define data_pin 15 // Data-Pin: D15

//Potentiometer: Gegen den Uhrzeigersinn: Empfindlichkeit erhöhen
//Potentiometer: Im Uhrzeigersinn: Empfindlichkeit verringern

int lastState = LOW; // Variable für den vorherigen Sensor-Zustand
int currentState; // Variable für den aktuellen Sensor-Zustand

 

Schritt 4: Void Setup
Die void setup() Funktion wird, wie der Name schon sagt, nur einmal ausgeführt, wenn der ESP32 startet. Hier initialisierst Du die serielle Kommunikation mittels Serial.begin(9600), damit Du später die Messwerte im seriellen Monitor der Arduino-IDE sehen kannst. Außerdem wird mit pinMode(data_pin, INPUT) festgelegt, dass der definierte Daten-Pin als Eingang fungieren soll, da wir ja das Signal vom SW-420 empfangen wollen.


void setup() {
    Serial.begin(9600); // Serielle Kommunikation initialisieren - 9600 bits pro Sekunde
    delay(500); // 500ms Pause
    pinMode(data_pin, INPUT); // Initialisierung des Daten-Pins
}

 

Schritt 5: Loop Setup
Die void loop() Funktion ist das Herzstück des Programms und wird kontinuierlich ausgeführt. Hier wird zunächst mit digitalRead(data_pin) der aktuelle Signalzustand des SW-420 Sensors ausgelesen. Anschließend wird überprüft, ob sich dieser Zustand im Vergleich zum lastState geändert hat (Edge Detection). Wurde eine Erschütterung erkannt oder ist sie verschwunden, wird eine entsprechende Meldung im seriellen Monitor ausgegeben, bevor der currentState in lastState gespeichert wird, um für den nächsten Durchlauf bereit zu sein.


void loop() {
  currentState = digitalRead(data_pin); // Signal am Sensor auslesen
 
  if (lastState == HIGH && currentState == LOW){ // Hat sich der Sensor-Zustand geändert?
    Serial.println("Erschütterung ist verschwunden");
    Serial.println(" ");
  }else if (lastState == LOW && currentState == HIGH){
    Serial.println("Erschütterung wurde erkannt");
  }

  lastState = currentState; // Aktueller Sensor-Zustand speichern

  delay(100); // 100ms Pause
}

 

Gesamter Code – SW-420 + ESP32

Hier findest Du zur Übersicht noch einmal den gesamten Programmier-Code für den SW-420 Erschütterungssensor und den ESP32 Mikrocontroller. Kopiere diesen Code einfach in Deine Arduino-IDE, um das Projekt direkt auf Deinen ESP32 zu übertragen.


#define data_pin 15 // Data-Pin: D15

//Potentiometer: Gegen den Uhrzeigersinn: Empfindlichkeit erhöhen
//Potentiometer: Im Uhrzeigersinn: Empfindlichkeit verringern

int lastState = LOW; // Variable für den vorherigen Sensor-Zustand
int currentState; // Variable für den aktuellen Sensor-Zustand

void setup() {
    Serial.begin(9600); // Serielle Kommunikation initialisieren - 9600 bits pro Sekunde
    delay(500); // 500ms Pause
    pinMode(data_pin, INPUT); // Initialisierung des Daten-Pins
}
 
void loop() {
  currentState = digitalRead(data_pin); // Signal am Sensor auslesen
 
  if (lastState == HIGH && currentState == LOW){ // Hat sich der Sensor-Zustand geändert?
    Serial.println("Erschütterung ist verschwunden");
    Serial.println(" ");
  }else if (lastState == LOW && currentState == HIGH){
    Serial.println("Erschütterung wurde erkannt");
  }

  lastState = currentState; // Aktueller Sensor-Zustand speichern

  delay(100); // 100ms Pause
}

 

Ausführung / Anwendung

Nachdem Du den Code erfolgreich in die Arduino-IDE eingegeben hast, muss dieser nur noch kompiliert und auf Deinen ESP32 Mikrocontroller übertragen werden. So kannst Du die Funktionalität Deines SW-420 Erschütterungssensors schnell testen und in Betrieb nehmen. Gehe dazu wie folgt vor:

Kompilieren (Haken-Symbol): Zuerst klickst Du auf das Haken-Symbol (Überprüfen) in der Arduino-IDE. Damit wird Dein Code auf Fehler geprüft und für den ESP32 vorbereitet.
Hochladen (Pfeil-Symbol): Nach erfolgreicher Kompilierung klickst Du auf das Pfeil-Symbol (Hochladen). Der Code wird nun auf den ESP32 übertragen.
Serieller Monitor öffnen: Sobald der Code hochgeladen wurde, öffnest Du den Seriellen Monitor. Stelle sicher, dass die Baudrate auf 9600 eingestellt ist (wie im Code definiert).
Ergebnisse prüfen: Der Serielle Monitor zeigt Dir nun an, wenn der SW-420 eine Erschütterung erkennt oder wenn die Erschütterung verschwunden ist. Klopfe vorsichtig auf den Sensor oder Deinen ESP32 Mikrocontroller, um die Ausgabe zu sehen und die Empfindlichkeit (mit dem Potentiometer auf dem Sensor) anzupassen.

 

Weitere Themen


Mikrocontroller - ESP32 - ESP - Arduino - Programmierung - Code  - Software - Programm -  - KY-031 + ESP32 - Erschütterungssensor Vibrationssensor Vibration Erschütterung Klopfsensor Klopfen

KY-031 + ESP32


Mikrocontroller - ESP32 - ESP - Arduino - Programmierung - Code  - Software - Programm -  - Vibrationsmotor + ESP32 - Erschütterungssensor Vibrationssensor Vibration Erschütterung Klopfsensor Klopfen

Vibrationsmotor + ESP32


Mikrocontroller - ESP32 - ESP - Arduino - Programmierung - Code  - Software - Programm -  - OLED + ESP32 - Erschütterungssensor Vibrationssensor Vibration Erschütterung Klopfsensor Klopfen

OLED + ESP32