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
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!
grazie sei molto bravo
Grazie a te per il feedback Antonio!
In realtà mi diverto un po' a giocare con il codice su questi piccoli progetti :)
Bel codice meglio del mio di sicuro.
CIAO A ME SERVIREBBERO QUATTRO SENSORI COSì PER FARE DEI TEST FISICI DOVE POSSO TROVARE UN APPARECCHIO DEL GENERE VISTO CHE DI ARDUINO NON NE SO NIENTE?
GRAZIE E SCUSA DEL DISTURBO
Ciao Massimo,
sia i sensori che un sistema già pronto (in base alle tue esigenze) li puoi acquistare online. Puoi provare su eBay, su Amazon o negli store di tecnologia sia digitali che fisici.
ho cercato ma non ho trovato niente se non dei sensori di passaggio tipo passaggio sotto entrata di un negozio