Categories: Arduino

Interruttori reed switch e Arduino (usati per contachilometri e allarmi)

Vediamo come usare un interruttore reed, meglio conosciuti con il temine inglese reed switches. Sono dei minuscoli interruttori che si attivano (e chiudono quindi il circuito) con un campo magnetico nelle vicinanze.

In questo articolo vedremo come collegare gli interruttori reed switch ad Arduino e ad accendere un led.

Vediamo subito un breve video sul funzionamento.

A cosa servono?

Questi interruttori reed sono molto economici e vengono utilizzati in diversi ambiti, i più comuni sono appunto gli allarmi da finestra e i contachilometri per le biciclette.

Nel primo caso l’interruttore reed è collegato ad un circuito dell’antifurto ed è posizionato sullo stipite della finestra, il magnete è invece incollato sul vetro. Se il magnete viene spostato (ad esempio aprendo la finestra), ecco che anche il circuito viene aperto e scatta l’allarme.

Nei contachilometri della bicicletta invece viene posizionato un magnete su uno dei raggi della ruota anteriore mentre sulla forcella un interruttore di tipo reed conta i giri che la ruota compie.

Gli interruttori reed si trovano sia in forma di vetro con due steli metallici alle estremità, sia completamente avvolti in un case plastico (vedere il video), il ché garantisce ovviamente più resistenza.

Se siete dei curiosoni vi rimando alla pagine di Wikipedia.

Necessario:

  • Arduino Uno o simili
  • breadboard
  • interruttore reed
  • resistenza da 10k ohm

I collegamenti.

Il circuito, l’interruttore reed è l’ampolla sopra la resistenza

N.B. Potete usare la 5v o la 3.3v indifferentemente.

Lo sketch

Ecco lo sketch da caricare. Passando un magnete vicino all’interruttore reed questo si chiuderà e il nostro Arduino illuminerà il led interno posto in corrispondenza del pin 13.
Vediamo ora, riga per riga, il nostro sketch.

#define reedPin 8
#define led 13

int reedState = 0;

void setup()
{
  pinMode(led, OUTPUT);
  pinMode(reedPin, INPUT);

  Serial.begin(9600);
}

void loop() {

  reedState = digitalRead(reedPin);

  if (reedState == HIGH){
    Serial.println("reed ON");
    digitalWrite(led, HIGH);
  }
  else{
    Serial.println("reed OFF");
    digitalWrite(led, LOW);
  }

  delay(500);
}

1 – Definiamo che ogni volta che la parola reedPin equivalga pari pari al numero 8
2 – Facciamo la stessa cosa per la parola led e il numero 13
3 – Dichiariamo una variabile intera di nome reedState e la inizializziamo a zero
8 – Attraverso la funzione pinMode indichiamo che il pin del led sarà un pin di output
9 – Indichiamo che il reedPin sarà invece un pin di input
11 – Metodo dell’oggetto Serial necessario per avviare una comunicazione via seriale
16 – Leggiamo lo stato del reedPin e lo salviamo all’interno della variabile reedState
18 – Se la variabile reedState è HIGH (e quindi l’interruttore reed è attivato) esegui i codice fra le graffe
19 – Stampa a monitor del messaggio reed ON tramite il metodo println dell’oggetto Serial
20 – Accensione del led interno
22 – Se la condizione della riga 18 non è vera allora viene eseguito il codice fra queste graffe
23 – Stampa a monitor del messaggio reed OFF tramite il metodo println dell’oggetto Serial
24 – Spegnimento del led interno
27 – Piccolo ritardo di mezzo secondo tra un ciclo e il successivo

Come al solito spero che anche questo tutorial sia stato d’aiuto a qualcuno, grazie per avermi letto. Rimango a disposizione per domande o chiarimenti.

Grazie,
Alessandro

Alessandro Oppo

Alessandro è un milanese che vorrebbe scappare da Milano, è appassionato di informatica ma vorrebbe vivere senza telefono, è un artigiano eppure vorrebbe robotizzare tutto, impara una cosa e già vorrebbe studiare dell’altro. Autodidatta da sempre, gli piace sbattere la testa finché tutto non funziona come vuole lui, spesso ci riesce anche! Visita il suo blog personale alexoppo.com Il motto che si ripete dentro la testa è: “Se ci sono riusciti gli altri ci posso riuscire anche io”.

View Comments

  • Ho il frigo con la luce a led ma nn si accende più sarà il Reed sul bordo porta nn vi sono interruttori cosa sarà

    • Ciao Renato, non saprei se usano dei reed. Potrebbero anche avere dei sensori a pulsante nella parte superiore o inferiore. Dovresti riuscire a vederlo nel caso. Fammi sapere.

  • Ciao vorrei sapere se su questo progetto interruttore reed magnetico è possibile far scattare il relè dopo che abbia contatto un x numero di volte il magnete?
    esempio su un asse rotante con un magnete ,attivare il relè dopo 10 giri?
    e se possibile avere un esempio di codice?
    grazie...

    • Ciao Sandro, certo che è possibile! Purtroppo al momento non riesco ad aiutarti scrivendo il codice... a grandi linee dovresti creare una variabile che aumenti di uno ad ogni passaggio, ad ogni ciclo effetti un controllo sulla variabile e quando è a 10 attivi il relay.

Recent Posts

Ponti sospesi: cosa abbiamo sbagliato? cosa si potrebbe fare?

Poco prima di Natale ho avuto la fortuna di poter partecipare a un evento chiamato…

12 mesi ago

Siamo quel che facciamo? – racconto breve

Armando quel giorno era particolarmente stanco. Tutto, per quanto andasse bene, sembrava metterlo sotto pressione.…

1 anno ago

Il limite è sempre la mente – Racconto breve

Armando guardò l’orologio e vide il proprio riflesso sul quadrante bianco. Il riflesso però non…

1 anno ago

L’ultimo giorno del carcere – Racconto breve

I muri sono muri, lo sono sempre, anche quando le porte sono aperte. Era la…

1 anno ago

Riflessioni sul carcere

Pochi di noi riflettono sull’esistenza nella nostra società del carcere. Il carcere è la concretizzazione…

2 anni ago

Come dovremmo dialogare secondo me

Spesso intraprendiamo delle conversazioni e delle chiacchierate piuttosto inconsapevolmente. Voglio dire che non siamo molto…

2 anni ago