Descripción
📘 Descripción del módulo FC-06
- El módulo FC-06 es un sensor de vibración/impacto basado en un interruptor de muelle (mecánico), a menudo similar a los módulos KY-002 o SW-520D. Cuando es golpeado o vibra, el contacto cierra brevemente el circuito (Electrothinks).
- Funciona a tensiones entre 3,3 V e 5 V, compatible con Arduino (elkine.altervista.org, components101.com, ProtoSupplies).
- El módulo incluye generalmente:
- LED Power (alimentación).
- LED Shock/DO que se enciende cuando se detecta una vibración/impacto (iot-guider.com).
- Salida digital paralela, es decir, un pin digital que normalmente pasa de HIGH a LOW (o viceversa) al detectar el movimiento (ProtoSupplies, ArduinoModulesInfo, phippselectronics.com).
Pinout típico (3 pines)
- VCC → +5 V (o 3,3 V)
- GND → masa
- S (Señal) → salida digital
🔧 Conexiones con Arduino
Esquema típico usando 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.
Cada vez que se sacude o golpea el módulo, el pin digital cambia de estado brevemente, el LED DO se ilumina y el señal se lee por Arduino (ProtoSupplies, Electrothinks, iot-guider.com).
💻 Ejemplos de código
1. Detección simple (LED integrado)
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. Alarma parpadeante + led verde/rojo
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);
}
}
Este ejemplo se toma del tutorial del módulo KY-002/SW-18010P, que funciona de manera equivalente al FC-06 (ipsiaplcarduinolab.altervista.org, Arduino Project Hub, getelectronics.net).
3. Usar interrupciones para detectar impulsos rápidos
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;
}
}
Este enfoque es útil para no perder impulsos cortos en presencia de vibraciones rápidas (forum.arduino.cc, components101.com).
⚙️ Consejos prácticos y ajustes
- Debounce: el sensor produce a menudo señales de rebote (bounce). Es bueno añadir un filtro de software con delay, o usar el modo interrupción con control temporal (foro.arduino.cc, ProtoSupplies).
- Sensibilidad: módulos con potenciómetro (ej. FC-06) permiten ajustar el umbral de activación. Prueba a girarlo lentamente hasta obtener un comportamiento estable (elkine.altervista.org, foro.arduino.cc).
- Orientación: si el sensor incluye un interruptor de inclinación, la orientación respecto a la gravedad puede afectar la señal. Prueba en varias posiciones (foro.arduino.cc).
🛠 Aplicaciones típicas
- Sistemas antirrobo e intrusión: detectar vibraciones en puertas, ventanas o objetos.
- Detectores de caídas o impactos: utilizado en dispositivos móviles, paquetes o robots.
- Proyectos interactivos: sacudir o golpear un objeto para activar LEDs, zumbadores o series de eventos.
✅ Resumen
| Característica | Detalles |
|---|---|
| Alimentación | 3,3–5 V |
| Salida | Digital (LOW o HIGH al tacto) |
| Sensibilidad ajustable | Sí, a través de un potenciómetro |
| Funcionamiento | Basado en muelle o bola interna |
| Modo de lectura | Polling digital o interrupt |
¡Perfecto! Integrar el sensor de choque/vibración FC-06 en un proyecto práctico es una excelente manera de aprovechar sus capacidades. Aquí tienes 3 proyectos específicos con guía, esquemas y código:
🔧 Proyecto 1: Datalogger de vibraciones en microSD
Objetivo: Registrar fecha/hora y número de vibraciones en una tarjeta SD.
🧰 Componentes necesarios:
- Arduino Uno/Nano
- Sensor FC-06
- Módulo microSD (ej. con chip CS)
- Módulo RTC (ej. DS3231 para fecha/hora)
- Cables jumper, breadboard
🖇️ Conexiones principales:
| Componente | Conexión con Arduino |
|---|---|
| FC-06 S | D2 |
| microSD | SPI: D10-CS, D11-MOSI, D12-MISO, D13-SCK |
| RTC | I2C: A4-SDA, A5-SCL |
💻 Código de ejemplo:
#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();
}
}
🔁 Expandible: puedes agregar contadores diarios, zumbador de notificación, Wi-Fi, etc.
📡 Proyecto 2: Alarma de vibración sin cable (con ESP8266/ESP32)
Objetivo: Enviar una notificación Wi-Fi o HTTP si se detecta una vibración.
🧰 Componentes:
- ESP8266 (NodeMCU) o ESP32
- FC-06
- LED (opcional)
🖇️ Conexiones:
- FC-06 S → D1 (GPIO5)
- FC-06 VCC → 3.3V
- GND → GND
💻 Código de ejemplo:
#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;
}
🧠 Puedes usar:
- IFTTT o Telegram Bot para notificaciones push
- Blynk, Node-RED, Home Assistant para dashboard inteligente
🤖 Proyecto 3: Robot que cambia de dirección al chocar
Objetivo: El robot evita obstáculos cambiando de dirección si detecta un choque (con dos motores).
🧰 Componentes:
- Arduino Uno/Nano
- FC-06 montado en la parte frontal
- L298N (controlador para motores DC)
- Dos motores
- Batería Li-ion o paquete de 6xAA
🖇️ Conexiones básicas:
- FC-06 S → D2
- Motores y controlador según el esquema L298N
- FC-06 GND y VCC → Arduino
💻 Código de ejemplo:
#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);
}
🚗 Expandible con:
- Sensores IR/ultrasonidos para evitar obstáculos
- Giroscopio para autobalanceo
🌍 Proyecto: Detector de terremotos low-cost con umbral y alarma
🎯 Objetivo:
- Detectar temblores o vibraciones con un cierto nivel de sensibilidad.
- Activar una alarma (zumbador/LED/sirena).
- Registrar los eventos a través de serie o SD.
- (Opcional) Enviar notificaciones a través de Wi-Fi o GSM.
🧰 Componentes necesarios:
| Componente | Cantidad | Notas |
|---|---|---|
| Arduino Uno / Nano | 1 | Cualquier compatible es bueno |
| Sensor FC-06 | 1 | Sensor de vibración/susto |
| Zumbador activo o pasivo | 1 | Para alarma acústica |
| LED rojo/amarillo/verde | 2–3 | Para estado y alarma |
| Resistencia 220–330Ω | 2–3 | Para los LEDs |
| Módulo SD (opcional) | 1 | Para registro de eventos |
| RTC DS3231 (opcional) | 1 | Para fecha/hora |
| Módulo GSM/WiFi (opcional) | 1 | Para notificación SMS o web |
| Placa de pruebas + jumper | – | Conexiones |
🔌 Conexiones esenciales
| FC-06 Pin | Arduino |
|---|---|
| VCC | 5 V |
| GND | GND |
| S | D2 |
| Buzzer | D8 (a través de transistor si es necesario) |
| LED Rojo | D9 |
| LED Verde | D10 |
💡 Funcionamiento
- El sensor FC-06 envía un impulso (LOW) cuando detecta vibraciones.
- Arduino cuenta los impulsos en una ventana de tiempo (por ejemplo, 10 segundos).
- Si supera un umbral establecido → se activa la alarma (buzzer/LED).
- De lo contrario, permanece en modo de espera con el LED verde encendido.
- También puedes guardar los eventos en SD o enviar notificaciones.
💻 Código completo
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);
}
⚙️ Personalizaciones útiles
📈 Modificar el umbral
const int threshold = 5;
→ aumenta si tienes vibraciones ambientales no significativas.
📁 Añadir SD
Para registrar sacudidas:
#include <SD.h>
...
File dataFile;
dataFile = SD.open("quake.txt", FILE_WRITE);
if (dataFile) {
dataFile.print("Scossa alle ");
dataFile.println(millis());
dataFile.close();
}
📲 Enviar alarmas por GSM (SIM800L/SIM900)
Serial.println("AT+CMGF=1");
Serial.println("AT+CMGS="+391234567890"");
Serial.print("Terremoto rilevato!");
Serial.write(26); // Ctrl+Z
🧪 Pruebas recomendadas
| Prueba | Método | Esperado |
|---|---|---|
| Golpe seco en la mesa | Tocar cerca del sensor | Se activan el LED rojo y el buzzer |
| Vibración constante | Motores vibrador | Se alcanza el umbral después de unos segundos |
| Ambiente estático | Sin movimiento | Sin activación |
📦 Expansiones posibles
- Integración con Home Assistant / MQTT (a través de ESP8266)
- Guardado de datos con timestamp en SD/RTC
- Notificaciones por bot de Telegram o Pushbullet
- Filtro de software para eliminar falsos positivos
✅ Conclusión
Este proyecto ofrece una base concreta para un sistema antivibración / antiterritorio, útil en:
- Obras
- Monitoreo de objetos frágiles
- Sistemas civiles de alarma inicial
|
GENERALES |
MODELO |
Sensor de Shock FC-06 |
|
MATERIALES |
pbc + metal + componentes |
|
|
COMPATIBILIDAD |
ARDUINO |
|
|
COMPONENTES ELÉCTRICOS |
VOLTAJE DE ENTRADA |
5V |
|
PESO Y DIMENSIONES |
PESO DEL PRODUCTO |
10g |
|
PESO DEL PAQUETE |
0.2 kg |
|
|
DIMENSIONES DEL PRODUCTO (L x W x H) |
24 x 1,5 x 1 cm |
|
|
DIMENSIONES DEL PAQUETE (L x W x H) |
10 x 5 x 2 cm |
|
|
CONTENIDO DE LA CONFECCIÓN |
CONTENIDO DE LA CONFECCIÓN |
1 x Módulo |
Tenemos disponibles datasheet de todos los componentes, si no está presente en la hoja de descarga del producto, envíanos un mensaje a través del formulario de contacto y lo publicaremos lo antes posible en nuestro sitio web.
Tutorial: Cómo usar el Sensor Shock Tilt FC-06
El módulo FC-06 detecta vibraciones y movimientos bruscos. Perfecto para proyectos de seguridad o monitoreo.
Qué necesitas
- Arduino Uno
- Cable USB
- Placa de pruebas
Pasos
- Conectar VCC a 5V en Arduino.
- Conectar GND al pin GND en Arduino.
- Conectar OUT al pin digital 2 en Arduino.
- Descargar el código fuente proporcionado.
- Abre el IDE de Arduino y carga el sketch.
- Verifica los datos en el datasheet para una calibración precisa.
Código de ejemplo
const int shockPin = 2;
void setup() {
pinMode(shockPin, INPUT);
}
void loop() {
int shockState = digitalRead(shockPin);
if (shockState == HIGH) {
Serial.println("Shock rilevato");
}
}
Miniproyecto
Crea un sistema de alarma doméstico que envía una notificación por correo electrónico cuando se detecta una vibración.
Errores comunes
- Conexión incorrecta del pin OUT.
- Ignorar la calibración necesaria.
- No verificar los datos en el datasheet.
Accesorios recomendados
- Módulo Wi-Fi ESP8266
- Buzzer
- Relay Module 5V
Preguntas frecuentes
¿Cuál es la alimentación mínima?
Verifica en el datasheet para la tensión de alimentación mínima necesaria.
¿Puede usarse con Raspberry Pi?
Sí, pero podría requerir un convertidor de nivel lógico.

















Valoraciones
No hay valoraciones aún.