In offerta!

Modulo Sensore di Shock Tilt FC-06 Sensore Vibrazione

Il prezzo originale era: 4,57 €.Il prezzo attuale è: 2,11 €. Escluso IVA

Modulo Sensore di Shock Tilt FC-06 Sensore Vibrazione

6 disponibili (ordinabile)

COD: ARD0082 Categorie: ,

Descrizione


📘 Descrizione del modulo FC‑06

  • Il modulo FC‑06 è un sensore di vibrazione/urto basato su interruttore a molla (meccanico), spesso simile ai moduli KY‑002 o SW‑520D. Quando viene colpito o vibra, il contatto chiude brevemente il circuito (Electrothinks).
  • Funziona a tensioni comprese tra 3,3 V e 5 V, compatibile con Arduino (elkine.altervista.org, components101.com, ProtoSupplies).
  • Il modulo include solitamente:
    • LED Power (alimentazione).
    • LED Shock/DO che si accende quando viene rilevata una vibrazione/urto (iot-guider.com).
  • Uscita digitale parallela, cioè un pin digitale che passa normalmente da HIGH a LOW (o viceversa) al rilevamento del movimento (ProtoSupplies, ArduinoModulesInfo, phippselectronics.com).

Pinout tipico (3 pin)

  • VCC → +5 V (o 3,3 V)
  • GND → massa
  • S (Signal) → uscita digitale

🔧 Collegamenti con Arduino

Schema tipico using 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.

Ogni volta che si scuote o colpisce il modulo, il pin digitale cambia stato brevemente, il LED DO si illumina e il segnale viene letto da Arduino (ProtoSupplies, Electrothinks, iot-guider.com).


💻 Esempi di codice

1. Semplice rilevazione (LED integrato)

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. Allarme lampeggiante + led verde/rosso

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);
  }
}

Questo esempio è tratto da tutorial sul modulo KY‑002/SW‑18010P, che funziona in modo equivalente a FC‑06 (ipsiaplcarduinolab.altervista.org, Arduino Project Hub, getelectronics.net).

3. Usare interrupt per rilevare impulsi rapidi

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;
  }
}

Questo approccio è utile per non perdere impulsi brevi in presenza di vibrazioni rapide (forum.arduino.cc, components101.com).


⚙️ Consigli pratici e tuning

  • Debounce: il sensore produce spesso segnali di rimbalzo (bounce). È bene aggiungere un filtro software con delay, o usare la modalità interrupt con controllo temporale (forum.arduino.cc, ProtoSupplies).
  • Sensibilità: moduli con potenziometro (es. FC‑06) permettono di regolare la soglia di attivazione. Prova a ruotarlo lentamente fino a ottenere comportamento stabile (elkine.altervista.org, forum.arduino.cc).
  • Orientamento: se il sensore include anche un tilt switch, l’orientamento rispetto alla gravità può influenzare il segnale. Testare in varie posizioni (forum.arduino.cc).

🛠 Applicazioni tipiche

  • Antifurti e intrusioni: rilevare vibrazioni su porte, finestre o oggetti.
  • Rilevatori di caduta o urto: usato in dispositivi mobili, pacchi o robot.
  • Progetti interattivi: scuotere o colpire un oggetto per attivare LED, buzzer o serie di eventi.

✅ Riepilogo

Caratteristica Dettagli
Alimentazione 3,3–5 V
Uscita Digitale (LOW o HIGH al tocco)
Sensibilità regolabile Sì, tramite potenziometro
Funzionamento Basato su molla o palla interna
Modalità lettura Polling digitale o interrupt

Perfetto! Integrare il sensore di shock/vibrazione FC-06 in un progetto pratico è un ottimo modo per sfruttarne le potenzialità. Ecco 3 progetti specifici con guida, schemi e codice:


🔧 Progetto 1: Datalogger di vibrazioni su microSD

Obiettivo: Registrare data/ora e numero di vibrazioni su una scheda SD.

🧰 Componenti necessari:

  • Arduino Uno/Nano
  • Sensore FC-06
  • Modulo microSD (es. con chip CS)
  • Modulo RTC (es. DS3231 per data/ora)
  • Cavi jumper, breadboard

🖇️ Collegamenti principali:

Componente Collegamento con Arduino
FC-06 S D2
microSD SPI: D10-CS, D11-MOSI, D12-MISO, D13-SCK
RTC I2C: A4-SDA, A5-SCL

💻 Codice esempio:

#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();
  }
}

🔁 Espandibile: puoi aggiungere contatori giornalieri, buzzer di notifica, Wi-Fi ecc.


📡 Progetto 2: Allarme vibrazioni wireless (con ESP8266/ESP32)

Obiettivo: Inviare una notifica Wi-Fi o HTTP se viene rilevata una vibrazione.

🧰 Componenti:

  • ESP8266 (NodeMCU) o ESP32
  • FC-06
  • LED (facoltativo)

🖇️ Collegamenti:

  • FC-06 S → D1 (GPIO5)
  • FC-06 VCC → 3.3V
  • GND → GND

💻 Codice esempio:

#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;
}

🧠 Puoi usare:

  • IFTTT o Telegram Bot per notifiche push
  • Blynk, Node-RED, Home Assistant per dashboard smart

🤖 Progetto 3: Robot che cambia direzione quando sbatte

Obiettivo: Robot evita ostacoli cambiando direzione se rileva un urto (con due motori).

🧰 Componenti:

  • Arduino Uno/Nano
  • FC-06 montato sul frontale
  • L298N (driver per motori DC)
  • Due motorini
  • Batteria Li-ion o pacco 6xAA

🖇️ Collegamenti base:

  • FC-06 S → D2
  • Motori e driver secondo schema L298N
  • FC-06 GND e VCC → Arduino

💻 Codice esempio:

#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);
}

🚗 Espandibile con:

  • Sensori IR/ultrasuoni per evitare ostacoli
  • Giroscopio per autobilanciamento


🌍 Progetto: Rilevatore di terremoti low-cost con soglia e allarme

🎯 Obiettivo:

  • Rilevare scosse o vibrazioni con una certa sensibilità.
  • Attivare un allarme (buzzer/LED/sirena).
  • Registrare gli eventi via seriale o SD.
  • (Facoltativo) Inviare notifiche via Wi-Fi o GSM.

🧰 Componenti necessari:

Componente Quantità Note
Arduino Uno / Nano 1 Qualsiasi compatibile va bene
Sensore FC-06 1 Sensore di vibrazione/shock
Buzzer attivo o passivo 1 Per l’allarme acustico
LED rosso/giallo/verde 2–3 Per stato e allarme
Resistenze 220–330Ω 2–3 Per i LED
Modulo SD (facoltativo) 1 Per log degli eventi
RTC DS3231 (facoltativo) 1 Per data/ora
Modulo GSM/WiFi (opz.) 1 Per notifica SMS o web
Breadboard + jumper – Collegamenti

🔌 Collegamenti essenziali

FC-06 Pin Arduino
VCC 5 V
GND GND
S D2

| Buzzer | D8 (via transistor se necessario) |
| LED Rosso| D9 |
| LED Verde| D10 |


💡 Funzionamento

  • Il sensore FC-06 invia un impulso (LOW) quando rileva vibrazioni.
  • Arduino conta gli impulsi in una finestra temporale (es. 10 secondi).
  • Se supera una soglia impostata → scatta allarme (buzzer/LED).
  • Altrimenti resta in standby con LED verde acceso.
  • Può anche salvare gli eventi su SD o inviare notifiche.

💻 Codice 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);
}

⚙️ Personalizzazioni utili

📈 Modifica la soglia

const int threshold = 5;

→ aumenta se hai vibrazioni ambientali non significative.

📁 Aggiunta SD

Per registrare scosse:

#include <SD.h>
...
File dataFile;
dataFile = SD.open("quake.txt", FILE_WRITE);
if (dataFile) {
  dataFile.print("Scossa alle ");
  dataFile.println(millis());
  dataFile.close();
}

📲 Inviare allarmi via GSM (SIM800L/SIM900)

Serial.println("AT+CMGF=1");
Serial.println("AT+CMGS="+391234567890"");
Serial.print("Terremoto rilevato!");
Serial.write(26);  // Ctrl+Z

🧪 Test consigliati

Test Metodo Atteso
Colpo secco su tavolo Toccare vicino al sensore LED rosso e buzzer si attivano
Vibrazione costante Motore vibrante Raggiunta soglia dopo alcuni secondi
Ambiente statico Nessun movimento Nessuna attivazione

📦 Espansioni possibili

  • Integrazione con Home Assistant / MQTT (via ESP8266)
  • Salvataggio dati con timestamp su SD/RTC
  • Notifiche via Telegram bot o Pushbullet
  • Filtro software per eliminare falsi positivi

✅ Conclusione

Questo progetto offre una base concreta per un sistema anti-vibrazione / terremoto, utile in:

  • Cantieri
  • Monitoraggio di oggetti fragili
  • Sistemi civili di primo allarme

GENERALI

MODELLO

Sensore di Shock FC-06

MATERIALI

pbc + metallo +componenti

COMPATIBILITA’

ARDUINO

COMPONENTI ELETTRICI

VOLTAGGIO DI INPUT

5V

PESO E DIMENSIONI

PESO DEL PRODOTTO

10g

PESO DEL PACCHETTO

0.2 kg

DIMENSIONI DEL PRODOTTO

(L x W x H)

24 x 1.5 x 1 cm

DIMENSIONI DEL PACCHETTO

(L x W x H)

10 x 5 x 2 cm

CONTENUTO DELLA CONFEZIONE

CONTENUTO DELLA CONFEZIONE

1 x Modulo

Abbiamo disponibili datasheet di tutti i componenti, qualora non fosse presente nella scheda download del prodotto inviaci un messaggio dal modulo contattaci e lo pubblicheremo il prima possibile nel nostro sito.

Tutorial: Come usare il Sensore Shock Tilt FC-06

Il modulo FC-06 rileva vibrazioni e movimenti bruschi. Perfetto per progetti di sicurezza o monitoraggio.

Cosa serve

  • Arduino Uno
  • Cavo USB
  • Breadboard

Passi

  1. Collegare VCC a 5V su Arduino.
  2. Collegare GND al pin GND su Arduino.
  3. Collegare OUT al pin digital 2 su Arduino.
  4. Scaricare il codice sorgente fornito.
  5. Aprire l’IDE di Arduino e caricare lo sketch.
  6. Verificare i dati sul datasheet per calibrazione precisa.

Codice di esempio

const int shockPin = 2;
void setup() {
pinMode(shockPin, INPUT);
}

void loop() {
int shockState = digitalRead(shockPin);
if (shockState == HIGH) {
Serial.println("Shock rilevato");
}
}

Mini-progetto

Creare un sistema di allarme domestico che invia una notifica via email quando viene rilevata una vibrazione.

Errori comuni

  • Collegamento errato del pin OUT.
  • Ignorare la calibrazione necessaria.
  • Non verificare i dati sul datasheet.

Accessori consigliati

  • Modulo Wi-Fi ESP8266
  • Buzzer
  • Relay Module 5V

Domande frequenti

Qual’è l’alimentazione minima?
Verifica sul datasheet per la tensione di alimentazione minima necessaria.

Può essere usato con Raspberry Pi?
Sì, ma potrebbe richiedere un convertitore livello logico.

Informazioni aggiuntive

Peso 15 g