Sensore Vibrazione (HDX e SW420)

Andiamo adesso a vedere dei moduli molto semplici ma curiosi. In questo articolo vedremo come utilizzare il sensore di vibrazioni con Arduino.

Questo sensore è molto semplice, perché fornisce solo un’uscita digitale, quindi ci indica solo la presenza di una vibrazione, ma non la sua intensità. Inoltre non è direzionale.

Sebbene all’apparenza possa sembrare un sensore privo di scopo, può tornare molto utile: questi sensori possono rilevare apertura e chiusura di porte, e perfino sentire i passi di qualcuno che si avvicina.

Questa particolarità li rende ottimi sostituti, per esempio, di moduli di rilevamento IR in un’applicazione di sorveglianza domestica.

Mentre il nostro modulo del kit Elegoo non possiede un circuito per regolare la soglia di scatto, ne esistono altri come questo qui sotto che invece hanno un trimmer apposito.

Struttura Modulo

Specifiche Tecniche

Niente di particolare da segnalare. La tensione di alimentazione va tenuta compatibile con quella di Arduino, quindi tra 3.3V e 5V.

Schema Collegamento

Questo sensore di vibrazioni, come molti altri sensori che vedremo, ha bisogno di una resistenza di pull-up. Viene normalmente usata una resistenza standard da 10kΩ.

Nel nostro modulo la resistenza è già presente, quindi non dobbiamo fare niente di particolare.

Collegamento per sensore vibrazioni Arduino
Schema collegamento

Codice

Il codice è molto semplice, trattiamo il sensore di vibrazioni come fosse un interruttore push button quando usiamo Arduino.

Poiché sappiamo che sul pin 13 di Arduino è collegato il led integrato, lo utilizziamo accendendolo quando rileviamo una vibrazione.

Ricordiamo che è possibile riferirsi al pin 13 anche con la costante LED_BUILTIN.

#define PIN_SENSORE 2

void setup() {
  //Configuro direzioni pin
  pinMode(LED_BUILTIN, OUTPUT);
  pinMode(PIN_SENSORE, INPUT);
}

void loop() {
  //Rilevo la vibrazione
  if (digitalRead(PIN_SENSORE) == LOW){
    digitalWrite(LED_BUILTIN, HIGH); //Accendo il led quando la vibrazione è attiva
  }else{
    digitalWrite(LED_BUILTIN, LOW);
  }
}