MICHELEPISANI.IT
 

Laser 650nm, fotoresistenza, buzzer

Allarme Laser con Arduino come Barriera di un Passaggio

March 20
07:592018

Allo stesso modo di come a volte si può vedere in alcuni film triller o d'azione, è possibile creare un allarme laser con Arduino.

Con l'utilizzo di un sensore Laser 650nm, una fotorestistenza ed un buzzer ho creato con poche righe di codice un piccolo progetto con Arduino UNO al fine di ottenere un sistema di allarme che segnali acusticamente il passaggio di una persona attraverso la barriera laser.
Il buzzer emette un suono al rilevamento del passaggio della persona, inoltre il progetto è arricchito di un sistema on/off che, tramite un bottone, per attivare o disattivare il sistema d'allarme.

Di seguito lo schema elettrico del progetto

arduino - allarme laser
Fig. 1 - Schema per Arduino - Allarme Laser

Ed ecco la parte più interessante del progetto, lo sketch, ottimizzato con l'utilizzo della funzione millis() anziché il classico delay() per garantire un più efficace ed immediato recupero delle informazioni rilevate:

const int led_rosso = 10; 
const int led_verde = 9; 
const int pin_input_bottone = 7; 
const int sensorLaser = 5;
const int buzzerPin = 3;
const int debounceDelay = 200;
const int intervallo_base = 250;
int pin_input_bottone_valore=0;
int bottone_stato_pressione = 0;
int luceQty;

unsigned long currentMillis = 0;
unsigned long previousMillis = 0;

void setup() {
  pinMode(led_verde, OUTPUT);
  pinMode(led_rosso, OUTPUT);
  pinMode(pin_input_bottone, INPUT);
  pinMode(sensorLaser, OUTPUT); 
  pinMode(A0,INPUT);
}
 
void loop() { 
  currentMillis = millis();
  pin_input_bottone_valore = digitalRead(pin_input_bottone);

  if (pin_input_bottone_valore == HIGH) {
    switch (bottone_stato_pressione) {
      case 0:
        bottone_stato_pressione = 1;
        break;
      case 1:
        bottone_stato_pressione = 0;
        break;        
      //default:
        // non fare niente
    }
    delay(debounceDelay);
  } 

  if (bottone_stato_pressione == HIGH) {
    if ((currentMillis - previousMillis) >= (intervallo_base)) {
      digitalWrite(led_rosso, LOW); 
      digitalWrite(led_verde, HIGH); 
      digitalWrite(sensorLaser, 1); 
      luceQty = analogRead(A0);
      if (luceQty<100) {
        tone(buzzerPin, 500, 1000);
      } else {
        noTone(buzzerPin);
      }
       updateMillis();
    }  
  } else {
    if ((currentMillis - previousMillis) >= (intervallo_base)) {
      noTone(buzzerPin); 
      digitalWrite(led_verde, LOW); 
      digitalWrite(led_rosso, HIGH); 
      digitalWrite(sensorLaser, 0);
      updateMillis();
    }
  } 
}

void updateMillis() {
  previousMillis = currentMillis;
}

Di seguito una breve dimostrazione del funzionamento del progetto dove è evidente la sensibilità del sensore principale utilizzato:

Il progetto è senz'altro migliorabile ed ampliabile utilizzando componenti di allerta più adeguati come ad esempio una sirena al posto del buzzer ed integrando al segnale acustico anche l'invio di una mail o di un sms verso un determinato dispositivo mobile.

Per consigli, suggerimenti o chiarimenti sentitevi liberi di lasciare un commento!

Tags

Autore

Michele Pisani

Michele Pisani

Ho uno spiccato orientamento al problem-solving, se è troppo facile non mi diverto :)
Credo nella volontà e nel cambiamento perchè hanno fatto della mia passione il mio pane quotidiano.
Se devo descrivermi con una sola parola direi... "Concretezza", la mia stretta di mano è una garanzia.

3 Commenti

  1. ANTONIO Friday, May 3, 2019 alle ore 12:44

    grazie sei molto bravo

    Rispondi a questo commento
  2. Marco0 pucci merda Wednesday, May 17, 2023 alle ore 12:18

    Bel codice meglio del mio di sicuro.

    Rispondi a questo commento

Scrivi un Commento

Il tuo indirizzo email non sarà pubblicato.
I campi contrassegnati da un * sono obbligatori

Articoli e Argomenti correlati

Il Canale YouTube in ITALIANO

1 VIDEO GRATIS ogni 2 settimane! ISCRIVITI!

Entra a far parte della community su Facebook

Categorie popolari

Iscriviti alla mia newsletter

La tua e-mail con me sarà al sicuro.
Non fornirò mai le tue informazioni a nessuno!

Ultimi commenti

Michele Pisani

Hai verificato se succede per tutte le pagine da un certo periodo di tempo in poi o solo su alcune?

Tecnowiz

Sono amministratore di un blog pure io... Intanto ti faccio i complimenti per questo articolo. …

Michele Pisani

Ciao Antonio, grazie per la fiducia :) In caso di più fogli è necessario inserire il codice del …

Antonio

Ciao Michele, ho acquistato il tuo libro che unitamente ai tuoi video sta diventando il mio corso …