Descrizione
[vc_row][vc_column][vc_column_text]
📌 Descrizione Completa del Modulo Sensore di Vibrazione a Tilt FC-01 (SW-420) per Arduino
🔧 Caratteristiche Tecniche del Modulo FC-01 (SW-420)
- Nome completo: Modulo Sensore di Vibrazione a Tilt FC-01 con Sensore SW-420
- Tipo sensore: Sensore meccanico a vibrazione (normalmente chiuso)
- Tensione operativa: 3.3V – 5V DC
- Consumo di corrente: ~3.5 mA
- Interfaccia: Digitale (uscita HIGH o LOW)
- Regolazione sensibilità: Tramite trimmer integrato
- Indicazione LED: LED verde (alimentazione), LED rosso (stato di output)
- Dimensioni modulo: Circa 3.2 cm x 1.4 cm x 0.6 cm
- Sensore utilizzato: SW-420 (capsula cilindrica che rileva vibrazioni e scossoni)
⚙️ Funzionamento
Il sensore SW-420 integrato nel modulo FC-01 è un componente meccanico che chiude il circuito quando rileva una vibrazione. In condizioni normali (assenza di vibrazione), l’uscita digitale del modulo è LOW (0V). Quando viene rilevata una vibrazione (colpo, scossa, movimento), l’uscita passa a HIGH (5V) per un breve periodo.
Il trimmer consente di regolare la sensibilità, ovvero quanto il modulo deve essere “scosso” per attivare il segnale di uscita.
🔌 Collegamenti con Arduino
| Modulo FC-01 | Arduino |
|---|---|
| VCC | 5V |
| GND | GND |
| D0 | Qualsiasi pin digitale (es. pin 2) |
🧪 Esempio di Progetto: Rilevamento di Vibrazione
✅ Obiettivo:
Accendere un LED ogni volta che viene rilevata una vibrazione dal sensore SW-420.
💡 Materiale Necessario:
- 1 Arduino UNO (o compatibile)
- 1 Modulo FC-01 SW-420
- 1 LED
- 1 Resistenza da 220 ohm
- Cavi jumper
- Breadboard
🔄 Schema di Collegamento:
- FC-01 VCC → Arduino 5V
- FC-01 GND → Arduino GND
- FC-01 D0 → Arduino pin 2
- LED anodo (+) → Arduino pin 13
- LED catodo (–) → GND tramite resistenza da 220 Ω
💻 Codice di Esempio Arduino
const int vibPin = 2; // Pin collegato a D0 del modulo FC-01
const int ledPin = 13; // LED collegato al pin 13
void setup() {
pinMode(vibPin, INPUT);
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
Serial.println("Sensore di Vibrazione FC-01 pronto...");
}
void loop() {
int vibValue = digitalRead(vibPin);
if (vibValue == HIGH) {
digitalWrite(ledPin, HIGH); // Accende LED
Serial.println("Vibrazione rilevata!");
delay(100); // Attesa per evitare multiple letture
} else {
digitalWrite(ledPin, LOW); // Spegne LED
}
}
🔧 Regolazione della Sensibilità
Se il sensore FC-01 è troppo sensibile (si attiva con tocchi lievi), ruota il trimmer in senso antiorario per ridurre la sensibilità. Al contrario, ruota in senso orario per aumentarla. Un piccolo cacciavite a taglio ti sarà utile per questa regolazione.
🧠 Possibili Applicazioni del Sensore FC-01
- Antifurti (attivazione all’urto)
- Rilevamento cadute o colpi in oggetti o contenitori
- Sistemi di controllo vibrazioni in macchinari
- Giocattoli interattivi
- Sveglie attivabili con uno scossone
📚 Suggerimenti di Estensione
- Salva in memoria ogni vibrazione registrata
- Usa un modulo buzzer per allarme
- Integra con display OLED per contare i movimenti
- Invia notifiche tramite modulo Wi-Fi o Bluetooth
Perfetto! Aggiungiamo ora la visualizzazione su un display OLED per mostrare sullo schermo quando viene rilevata una vibrazione. Utilizzeremo un display OLED I2C 128×64 con chip SSD1306, compatibile con Arduino.
🖥️ Componenti Aggiuntivi:
- 1 Display OLED I2C (128×64, basato su SSD1306)
- 4 Cavi jumper
🔌 Collegamenti Display OLED (I2C):
| Display OLED | Arduino UNO |
|---|---|
| VCC | 5V |
| GND | GND |
| SDA | A4 |
| SCL | A5 |
📦 Librerie Necessarie:
Assicurati di installare queste librerie da Arduino IDE > Sketch > Include Library > Manage Libraries:
Adafruit SSD1306Adafruit GFX Library
Oppure installa tramite Library Manager cercando:
Adafruit SSD1306Adafruit GFX
💻 Codice Completo con Display OLED
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
// Parametri display OLED
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET -1 // Reset non usato con I2C
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
// Pin sensore vibrazione e LED
const int vibPin = 2;
const int ledPin = 13;
void setup() {
pinMode(vibPin, INPUT);
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
// Inizializzazione del display
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Indirizzo I2C predefinito
Serial.println(F("Errore nella inizializzazione del display OLED"));
while (true); // Blocca esecuzione
}
// Pulizia schermo
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 0);
display.println("Sensore FC-01");
display.println("Inizializzazione...");
display.display();
delay(1000);
}
void loop() {
int vibValue = digitalRead(vibPin);
display.clearDisplay();
display.setCursor(0, 0);
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.println("Monitoraggio vibrazione");
if (vibValue == HIGH) {
digitalWrite(ledPin, HIGH);
Serial.println("Vibrazione rilevata!");
display.setTextSize(2);
display.setCursor(0, 30);
display.println("VIBRAZIONE!");
} else {
digitalWrite(ledPin, LOW);
display.setTextSize(2);
display.setCursor(0, 30);
display.println("Nessuna");
display.setCursor(0, 50);
display.println("Vibrazione");
}
display.display();
delay(200); // Aggiornamento display ogni 200 ms
}
🧠 Estensioni Possibili:
- Mostrare un contatore delle vibrazioni
- Aggiungere un timestamp con modulo RTC (orologio reale)
- Salvare eventi su SD card
- Aggiungere grafici in tempo reale su OLED
[/vc_column_text][/vc_column][/vc_row]

















