Beschreibung
📘 Beschreibung des Moduls FC-06
- Das Modul FC-06 ist ein Schwingung/Erschütterungssensor basierend auf einem Federkontakt (mechanisch), oft ähnlich den Modulen KY-002 oder SW-520D. Wenn es getroffen oder geschüttelt wird, schließt der Kontakt den Stromkreis kurzzeitig (Electrothinks).
- Es funktioniert mit Spannungen zwischen 3,3 V e 5 V, kompatibel mit Arduino (elkine.altervista.org, components101.com, ProtoSupplies).
- Das Modul enthält normalerweise:
- LED Power (Energieversorgung).
- LED Shock/DO die sich bei einer Schwingung/Erschütterung ein- und ausschaltet (iot-guider.com).
- Digitale Ausgang parallele, das ist ein digitales Pin, der normalerweise von HIGH zu LOW (oder umgekehrt) wechselt, wenn Bewegung erkannt wird (ProtoSupplies, ArduinoModulesInfo, phippselectronics.com).
Typisches Pinout (3 Pins)
- VCC → +5 V (o 3,3 V)
- GND → Masse
- S (Signal) → digitale Ausgang
🔧 Verbindungen mit Arduino
Typisches Schema mit Arduino Uno:
FC‑06 VCC → Arduino 5 V (o 3,3 V)
FC‑06 GND → Arduino GND
FC‑06 S → Arduino pin digitale (ad esempio D2 o D3)
Optional: LED o buzzer su un altro pin per avviso visivo/acustico.
Jedes Mal, wenn das Modul geschüttelt oder angerempft wird, wechselt der digitale Pin kurz den Zustand, der LED DO leuchtet und das Signal wird von Arduino gelesen (ProtoSupplies, Electrothinks, iot-guider.com).
💻 Beispiele für Code
1. Einfache Erkennung (integrierter LED)
const int shockPin = 2; // ingresso dal sensore
const int ledPin = 13; // LED integrato
void setup(){
pinMode(shockPin, INPUT);
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop(){
int val = digitalRead(shockPin);
if(val == LOW){ // LOW se sensore attivo (o HIGH a seconda del modulo)
digitalWrite(ledPin, HIGH);
Serial.println("Shock detected!");
} else {
digitalWrite(ledPin, LOW);
}
delay(100);
}
2. Blinkender Alarm + grüner/roter LED
int shockPin = 2;
int greenLed = 3;
int redLed = 4;
void setup(){
pinMode(shockPin, INPUT);
pinMode(greenLed, OUTPUT);
pinMode(redLed, OUTPUT);
}
void loop(){
if(digitalRead(shockPin) == HIGH){
digitalWrite(greenLed, LOW);
for(int i=0;i<10;i++){
digitalWrite(redLed, HIGH);
delay(150);
digitalWrite(redLed, LOW);
delay(150);
}
} else {
digitalWrite(greenLed, HIGH);
digitalWrite(redLed, LOW);
}
}
Dieses Beispiel stammt aus einem Tutorial für den Modul KY-002/SW-18010P, der äquivalent zum FC-06 funktioniert (ipsiaplcarduinolab.altervista.org, Arduino Project Hub, getelectronics.net).
3. Verwenden von Interrupts für die Erkennung schneller Impulse
volatile bool shockFlag = false;
void inputChange() {
shockFlag = true;
}
void setup(){
pinMode(2, INPUT);
pinMode(13, OUTPUT);
attachInterrupt(digitalPinToInterrupt(2), inputChange, FALLING);
}
void loop(){
if(shockFlag){
digitalWrite(13, HIGH);
delay(200);
digitalWrite(13, LOW);
shockFlag = false;
}
}
Dieser Ansatz ist nützlich, um kurze Impulse nicht zu verlieren, wenn es zu schnellen Vibrationen kommt (forum.arduino.cc, components101.com).
⚙️ Praktische Tipps und Einstellungen
- Debounce: Der Sensor produziert oft Bounce-Signale. Es ist ratsam, einen Softwarefilter hinzuzufügen mit delay, oder die Modus interrupt mit zeitlicher Kontrolle (forum.arduino.cc, ProtoSupplies).
- Empfindlichkeit: Module mit Potentiometer (z.B. FC-06) ermöglichen die Einstellung der Aktivierungsschwelle. Versuche es langsam zu drehen, bis ein stabiles Verhalten erreicht ist (elkine.altervista.org, forum.arduino.cc).
- Orientierung: Wenn das Modul einen Tilt-Schalter enthält, kann die Ausrichtung in Bezug auf die Schwerkraft das Signal beeinflussen. Teste in verschiedenen Positionen (forum.arduino.cc).
🛠 Typische Anwendungen
- Einbruchsschutz und Eindringungserkennung: Erkennung von Vibrationen an Türen, Fenstern oder Gegenständen.
- Fall- oder Stoßdetektoren: In mobilen Geräten, Paketen oder Robotern verwendet.
- Interaktive Projekte: Schütteln oder Schlagen eines Gegenstands aktiviert LEDs, Buzzer oder eine Reihe von Ereignissen.
✅ Zusammenfassung
| Eigenschaft | Details |
|---|---|
| Energieversorgung | 3,3–5 V |
| Ausgang | Digital (LOW oder HIGH bei Berührung) |
| Einstellbare Sensitivität | Ja, über einen Potentiometer |
| Funktion | Basierend auf einer Feder oder einer Kugel im Inneren |
| Lesemodus | Digitales Polling oder Interrupt |
Perfekt! Integriere den Schlag-/Vibrationssensor FC-06 in ein praktisches Projekt ist eine ausgezeichnete Möglichkeit, seine Fähigkeiten zu nutzen. Hier sind 3 spezifische Projekte mit Anleitung, Schemata und Code:
🔧 Projekt 1: MikroSD-basierte Vibration-Datalogger
Ziel: Datum/Uhrzeit und Anzahl der Vibrationen auf einer SD-Karte aufzunehmen.
🧰 Notwendige Komponenten:
- Arduino Uno/Nano
- Sensor FC-06
- Modul microSD (z.B. mit CS-Chip)
- Modul RTC (z.B. DS3231 für Datum/Uhrzeit)
- Kabel jumper, breadboard
🖇️ Hauptverbindungen:
| Komponente | Verbindung mit Arduino |
|---|---|
| FC-06 S | D2 |
| microSD | SPI: D10-CS, D11-MOSI, D12-MISO, D13-SCK |
| RTC | I2C: A4-SDA, A5-SCL |
💻 Beispielcode:
#include <SPI.h>
#include <SD.h>
#include <Wire.h>
#include <RTClib.h>
const int shockPin = 2;
const int chipSelect = 10;
RTC_DS3231 rtc;
File dataFile;
void setup() {
Serial.begin(9600);
pinMode(shockPin, INPUT);
if (!SD.begin(chipSelect)) {
Serial.println("Errore SD");
while (1);
}
if (!rtc.begin()) {
Serial.println("Errore RTC");
while (1);
}
attachInterrupt(digitalPinToInterrupt(shockPin), logShock, FALLING);
}
void loop() {
delay(1000); // inattività
}
void logShock() {
DateTime now = rtc.now();
dataFile = SD.open("datalog.txt", FILE_WRITE);
if (dataFile) {
dataFile.print(now.timestamp());
dataFile.println(" - Vibrazione rilevata");
dataFile.close();
}
}
🔁 Erweiterbar: Du kannst tägliche Zähler, Notifizierungsbuzzer, WLAN usw. hinzufügen.
📡 Projekt 2: Drahtloses Vibrationssignal (mit ESP8266/ESP32)
Ziel: Senden Sie eine Wi-Fi- oder HTTP-Nachricht, wenn eine Vibration erkannt wird.
🧰 Komponenten:
- ESP8266 (NodeMCU) oder ESP32
- FC-06
- LED (optional)
🖇️ Verbindungen:
- FC-06 S → D1 (GPIO5)
- FC-06 VCC → 3.3V
- GND → GND
💻 Beispielcode:
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
const char* ssid = "TUO_WIFI";
const char* password = "TUA_PASSWORD";
const int shockPin = D1;
bool shockDetected = false;
void setup() {
pinMode(shockPin, INPUT);
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
}
attachInterrupt(digitalPinToInterrupt(shockPin), onShock, FALLING);
}
void loop() {
if (shockDetected) {
if (WiFi.status() == WL_CONNECTED) {
HTTPClient http;
http.begin("http://tuo_server/notifica.php?vibrazione=1");
http.GET();
http.end();
}
shockDetected = false;
}
}
void onShock() {
shockDetected = true;
}
🧠 Sie können verwenden:
- IFTTT o Telegram Bot für Push-Benachrichtigungen
- Blynk, Node-RED, Home Assistant für Smart Dashboard
🤖 Projekt 3: Roboter, der die Richtung ändert, wenn er auf etwas stößt
Ziel: Der Roboter weicht auf Hindernisse aus, indem er die Richtung ändert, wenn er einen Stoß spürt (mit zwei Motoren).
🧰 Komponenten:
- Arduino Uno/Nano
- FC-06 montiert vorn
- L298N (Treiber für DC-Motoren)
- Zwei Motoren
- Li-Ion-Batterie oder Paket 6xAA
🖇️ Basisverbindungen:
- FC-06 S → D2
- Motoren und Treiber nach Schema L298N
- FC-06 GND und VCC → Arduino
💻 Beispielcode:
#define shockPin 2
#define in1 3
#define in2 4
#define in3 5
#define in4 6
void setup() {
pinMode(shockPin, INPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
moveForward();
}
void loop() {
if (digitalRead(shockPin) == LOW) {
moveBackward();
delay(500);
turnRight();
delay(500);
moveForward();
}
}
void moveForward() {
digitalWrite(in1, HIGH); digitalWrite(in2, LOW);
digitalWrite(in3, HIGH); digitalWrite(in4, LOW);
}
void moveBackward() {
digitalWrite(in1, LOW); digitalWrite(in2, HIGH);
digitalWrite(in3, LOW); digitalWrite(in4, HIGH);
}
void turnRight() {
digitalWrite(in1, HIGH); digitalWrite(in2, LOW);
digitalWrite(in3, LOW); digitalWrite(in4, HIGH);
}
🚗 Erweiterbar mit:
- IR-/Ultraschall-Sensoren, um Hindernisse zu umgehen
- Gyroskop für Selbstausrichtung
🌍 Projekt: Billig Erdbeben-Detektor mit Schwellenwert und Alarm
🎯 Ziel:
- Spürung Erschütterungen oder Vibrationen mit einem bestimmten Empfindlichkeitsniveau.
- Aktivieren eines Alarms (Buzzer/LED/Sirene).
- Aufzeichnung der Ereignisse per serielle Schnittstelle oder SD-Karte.
- (Optional) Senden von Benachrichtigungen per WLAN oder GSM.
🧰 Notwendige Komponenten:
| Komponente | Anzahl | Bemerkungen |
|---|---|---|
| Arduino Uno / Nano | 1 | Jede kompatible ist in Ordnung |
| Sensor FC-06 | 1 | Vibration/Shock-Detektor |
| Aktiver oder passiver Buzzer | 1 | Für akustische Alarmsignale |
| Roter/Gelber/Grüner LED | 2–3 | Für Zustand und Alarm |
| Widerst 220–330Ω | 2–3 | Für die LEDs |
| SD-Modul (optional) | 1 | Für Ereignisprotokollierung |
| RTC DS3231 (optional) | 1 | Für Datum und Uhrzeit |
| GSM/WiFi-Modul (optional) | 1 | Für SMS-Benachrichtigungen oder Web |
| Steckbrett + Steckbrücke | – | Verbindungen |
🔌 Wichtige Verbindungen
| FC-06 Pin | Arduino |
|---|---|
| VCC | 5 V |
| GND | GND |
| S | D2 |
| Buzzer | D8 (über Transistor falls notwendig) |
| Roter LED | D9 |
| Grüner LED | D10 |
💡 Funktionsweise
- Der FC-06-Sensor sendet einen Impuls (LOW) wenn Schwingungen erkannt werden.
- Arduino zählt die Impulse in einem Zeitfenster (z.B. 10 Sekunden).
- Wenn eine Schwellenwert überschritten wird → tritt Alarm aus (Buzzer/LED).
- Andernfalls bleibt in Bereitschaft mit grünem LED Licht.
- Kann auch Ereignisse speichern auf SD oder senden Benachrichtigungen.
💻 Vollständiger Code
const int shockPin = 2;
const int ledVerde = 10;
const int ledRosso = 9;
const int buzzer = 8;
int shockCount = 0;
unsigned long lastCheck = 0;
const int interval = 10000; // 10 secondi
const int threshold = 5; // soglia eventi
void setup() {
pinMode(shockPin, INPUT);
pinMode(ledVerde, OUTPUT);
pinMode(ledRosso, OUTPUT);
pinMode(buzzer, OUTPUT);
Serial.begin(9600);
attachInterrupt(digitalPinToInterrupt(shockPin), countShock, FALLING);
}
void loop() {
if (millis() - lastCheck >= interval) {
lastCheck = millis();
Serial.print("Shock rilevati: ");
Serial.println(shockCount);
if (shockCount >= threshold) {
allarme();
} else {
standby();
}
shockCount = 0; // reset contatore
}
}
void countShock() {
shockCount++;
}
void allarme() {
digitalWrite(ledVerde, LOW);
digitalWrite(ledRosso, HIGH);
for (int i = 0; i < 5; i++) {
digitalWrite(buzzer, HIGH);
delay(200);
digitalWrite(buzzer, LOW);
delay(200);
}
digitalWrite(ledRosso, LOW);
}
void standby() {
digitalWrite(ledVerde, HIGH);
digitalWrite(ledRosso, LOW);
}
⚙️ Nützliche Anpassungen
📈 Schwellenwert ändern
const int threshold = 5;
→ erhöhen, wenn es umweltbedingte Vibrationen ohne Bedeutung gibt.
📁 SD-Karte hinzufügen
Um Schüttelbewegungen zu registrieren:
#include <SD.h>
...
File dataFile;
dataFile = SD.open("quake.txt", FILE_WRITE);
if (dataFile) {
dataFile.print("Scossa alle ");
dataFile.println(millis());
dataFile.close();
}
📲 Alarme per SMS (SIM800L/SIM900) senden
Serial.println("AT+CMGF=1");
Serial.println("AT+CMGS="+391234567890"");
Serial.print("Terremoto rilevato!");
Serial.write(26); // Ctrl+Z
🧪 Empfohlene Tests
| Test | Methode | Erwartet |
|---|---|---|
| Schlag auf den Tisch | Nähe des Sensors berühren | Der rote LED und der Buzzer aktivieren sich |
| Kontinuierliche Vibration | Schwingungsmotor | Schwellenwert nach einigen Sekunden erreicht |
| Statischer Raum | Keine Bewegung | Keine Aktivierung |
📦 Mögliche Erweiterungen
- Integration mit Home Assistant / MQTT (via ESP8266)
- Daten speichern mit Zeitstempel auf SD/RTC
- Benachrichtigungen via Telegram Bot o Pushbullet
- Softwarefilter um Falschpositiv zu eliminieren
✅ Schluss
Dieses Projekt bietet eine konkrete Grundlage für ein Erdbeben-/Vibrationsschutzsystem, nützlich in:
- Baustellen
- Überwachung von zerbrechlichen Gegenständen
- Erste-Hilfe-Systeme für die Zivilbevölkerung
|
ALLGEMEIN |
MODELL |
Shock-Detektor FC-06 |
|
MATERIALIEN |
pbc + Metall + Komponenten |
|
|
KOMPATIBILITÄT |
ARDUINO |
|
|
ELEKTRISCHE KOMPONENTEN |
EINGANGS-SPEISUNG |
5V |
|
GEWICHT UND GRÖSSE |
GEWICHT DES PRODUKTS |
10g |
|
GEWICHT DES PAKETS |
0,2 kg |
|
|
GRÖSSE DES PRODUKTS (L x W x H) |
24 x 1,5 x 1 cm |
|
|
GRÖSSE DER VERPACKUNG (L x W x H) |
10 x 5 x 2 cm |
|
|
INHALT DER VERPACKUNG |
INHALT DER VERPACKUNG |
1 x Modul |
Wir haben Datasheets für alle Komponenten zur Verfügung. Wenn eines der Datasheets nicht im Produkt-Download-Ordner enthalten ist, senden Sie uns eine Nachricht über den Kontaktformular und wir werden es so schnell wie möglich auf unserer Website veröffentlichen.
Tutorial: Wie man den Schwingungs- und Ruck-Detektor FC-06 verwendet
Das Modul FC-06 detektiert Schwingungen und plötzliche Bewegungen. Perfekt für Sicherheits- oder Überwachungsprojekte.
Was du brauchst
- Arduino Uno
- USB-Kabel
- Steckplatine
Schritte
- Verbinden Sie VCC mit 5V an der Arduino.
- Verbinden Sie GND mit dem GND-Pin an der Arduino.
- Verbinden Sie OUT mit dem digitalen Pin 2 an der Arduino.
- Laden Sie den bereitgestellten Quellcode herunter.
- Öffne den Arduino IDE und lade das Sketch hoch.
- Überprüfe die Daten im Datenblatt für eine präzise Kalibrierung.
Beispielcode
const int shockPin = 2;
void setup() {
pinMode(shockPin, INPUT);
}
void loop() {
int shockState = digitalRead(shockPin);
if (shockState == HIGH) {
Serial.println("Shock rilevato");
}
}
Mini-Projekt
Erstelle ein Hausalarm-System, das eine E-Mail-Benachrichtigung sendet, wenn eine Vibration erkannt wird.
Häufige Fehler
- Falscher Pin-OUT-Anschluss.
- Ignoriere die notwendige Kalibrierung.
- Überprüfe die Daten im Datenblatt nicht.
Empfohlenes Zubehör
- ESP8266 Wi-Fi Modul
- Buzzer
- Relay Modul 5V
Häufige Fragen
Welche ist die minimale Versorgung?
Überprüfe im Datenblatt die notwendige minimale Versorgungsspannung.
Kann es mit Raspberry Pi verwendet werden?
Ja, aber es könnte einen Logikpegel-Wandler erfordern.

















Rezensionen
Es gibt noch keine Rezensionen.