Realizziamo una barriera laser con Arduino

In questo articolo vedremo come è possibile realizzare una barriera laser da utilizzare successivamente con Arduino.

Le applicazioni di una barriera luminosa (a laser o a infrarosso) sono moltissime, soprattutto ogni volta che vogliamo che un determinato evento si attivi al passaggio di una persona o un oggetto attraverso una soglia. Questo evento potrebbe essere per esempio un conteggio se si desidera contare il numero di oggetti che attraversa una determinata soglia (per esempio su un nastro trasportatore); potrebbe essere lo scatto di una foto all’attraversamento da parte di un animale per la caccia fotografica. Un altro esempio è l’attivazione di un allarme per proteggere una determinata area in cui si vuole controllare l’accesso. Se si dispongono poi più barriere laser allora le applicazioni crescono, per esempio misurare il tempo impiegato nell’attraversare lo spazio che intercorre tra due diverse barriere.

Navigando un po’ nella rete per cercare un punto di partenza su cui lavorare, ho trovato un articolo di M.Ribble sul sito www.glacialwanderer.com/hobbyrobotics che utilizzava una barriera laser per la caccia fotografica: quando un animale attraversa la barriera laser la macchina fotografica collegata ad un trigger scatta la foto.

Dato che le mie esigenze erano diverse e soprattutto volevo fare in modo che l’applicabilità di quello che stavo facendo fosse la più generale possibile ho apportato alcune modifiche. Infatti avevo bisogno che sia l’emettitore (laser LED) che il ricevitore (fotoresistenza) avessero i loro circuiti separati montati su moduli diversi, in modo da collegarli su Arduino (o anche altre schede) separatamente. Avendo così dei moduli separati e indipendenti si ha la possibiltà di utilizzarli in moltissime applicazioni, montandoli in linea su diverse infrastutture ogni volta a seconda delle esigenze.

Ecco lo schema dei due moduli:

laser_barrier-circuit
Fig.1: lo schema dei due moduli

Per prima cosa vediamo tutto l’occorrente riportato in Fig.2

  • A) una basetta millefori
  • B) una fotoresistenza
  • C) Led laser rosso
  • D) morsetto per circuito stampato a 2 vie
  • E) resistenza da 100Ω
  • F) resistenza da 10kΩ
  • G) resistenza da 220Ω
  • H) strip di connettori maschio angolati
  • I) un cavetto conduttore
laser_barrier_materiale
Fig.2: Materiale per realizzare la barriera laser

Mentre tutto il resto è materiale generico acquistabile in qualsiasi negozio di componenti elettronici, per quanto riguarda il laser, ho trovato sul sito della Sparkfun questo prodotto:

Laser-sparkfun

Laser card Module – Red ( Sparkfun COM-00594 )

Produttore: Wenta Electronics co., LTD, China
Wavelength: 650nm (645-660nm)
Output power: 0.45 to 0.80mW
Input power source: 3.1V+/-10%
Consumption current: 35mA (max 40mA)
Laser spot: circle
Laser life: 3000 hours

In Figura 3 c’è il circuito recettore che ho realizzato con la fotoresistenza ripiegata per affacciarsi lungo il bordo esterno opposto ai tre pin.

laser_barrier002
Fig.3: circuito recettore con fotoresistenza

Mentre in Fig.4 abbiamo il circuito emettitore con il morsetto sul lato opposto ai 2 pin. Il laser LED può essere così rimosso o sostituito dal circuito.

laser_barrier001
Fig.4: circuito emettitore con LED laser

Adesso che abbiamo realizzato i due moduli, possiamo collegarli ad Arduino.

barriera_laser
Fig.4: circuiti emettitore e recettore collegati alla scheda Arduino UNO

Ecco la configurazione dei collegamenti sulla scheda Arduino UNO che ho utilizzato e che si riferiscono al il codice dell’esempio:

  • PIN D5 —-> emettitore laser
  • PIN A0 —-> segnale dal recettore
  • 5VDC —-> alimentazione recettore
  • GND —>  massa per emettitore e recettore
laser_barrier_arduino
Fig.5: diagramma del circuito con arduino

Ed ecco il codice per il trigger che si attiva quando il fascio laser viene interrotto tra l’emettitore e il recettore.

#define LASER_PIN 5
#define LASER_THRESHOLD 600
#define LASER_TRIGGER_ANALOG_PIN 0

int laserVal;

void setup()
 {
 pinMode(LASER_PIN,OUTPUT);
 digitalWrite(LASER_PIN,LOW);
 digitalWrite(LASER_PIN,HIGH); //turn on the laser
 Serial.begin(9600);
 }

void loop()
 {
 laserVal = analogRead(LASER_TRIGGER_ANALOG_PIN);
 delay(1000);
 //Serial.println(laserVal);
 if(laserVal < LASER_THRESHOLD)
 {
    digitalWrite(LASER_PIN,LOW); //turn off the laser
    //Scrivi qui il codice che viene eseguito quando il fascio viene interrotto
    delay(100);
    digitalWrite(LASER_PIN,HIGH); //turn on the laser
 }
 }

Una volta compilato il codice e caricato su Arduino, sarà necessario regolare il valore di soglia (threshold) più adatto al caso su cui stiamo lavorando. Per partire ho impostato un valore medio di 600. Il recettore segnala alla scheda Arduino continuamente un valore (laserVal) che è proporzionale al livello di luminosità a cui è sottoposto la fotoresistenza. Maggiore sarà il valore, maggiore sarà la luminosità percepita dal sensore. Quindi finchè Arduino riceverà dal sensore valori di laserVal superiori al valore di soglia, la barriera luminosa verrà considerata come non interrotta. Nel preciso istante in cui si dovesse registrare un valore inferiore al valore specificato in LASER_THRESHOLD, la condizione if all’interno della funzione loop() verrà soddisfatta e il codice al suo interno eseguito. Il laser verrà momentaneamente disattivato (100 millisecondi) e poi riattivato. Infatti l’alimentazione del laser proviene dal PIN 5 della scheda e non dal pin di alimentazione 5VDC, questa scelta di proposito ci permette di avere un controllo sul laser in modo da poter decidere quando debba essere acceso o spento.

4 commenti su “Realizziamo una barriera laser con Arduino

  1. guz

    Ciao,
    sono interessato a realizzare una barriera per un allarme fatto con arduino.
    Sono n po’ perplesso sull’utilizzo del laser rispetto all’IR. E’ semplice collimare trasmettitore e ricevitore? hai avuto problemi nel farlo?
    Usi una fotoresistenza. Un fotodiodo potrebbe essere più difficile da ingannare? Lo chiedo non per esperienza personale, ma per tante cose che ho letto in rete. Se sì, potresti consigliarmi un fotodiodo tarato sull’emissione di quel laser?
    grazie

    • admin

      Ciao Guz,
      in realtà ho sostituito i laser dell’articolo che a parità di caratteristiche elettroniche, producevano un raggio più potente e collimato, così ho potuto allungare la distanza tra laser e ricevitore.
      Per quanto riguarda l’allineamento non c’è niente di più semplice. Ognuno di essi deve essere inserito in una slitta mobile regolabile con delle viti, in modo da poterli fissare sulle due estremità della barriera. Poi accendendo il laser, sarà facile poi far collimare il puntino rosso che emette con il ricevitore. Si sposta il ricevitore e poi si avvita con le viti fissando.
      Per quanto riguarda la fotoresistenza, io non ho mai avuto problemi. Considera che ho costruito coppie di barriere e le fisso al pavimento per misurare la velocità delle persone o dei movimenti di carrelli.
      Spero di esserti stato di aiuto.

  2. guz

    Grazie. Come ultima gentilezza, giusto per rendermi il meccanismo meno complesso, puoi dirmi i componenti che hai usato/cambiato e magari pubblicare una foto del meccanismo meccanico usato per la coltivazione?

Lascia un commento