Controllo della luce tramite sensore a ultrasuoni Arduino

Il controllo dell’illuminazione o di altri elettrodomestici può essere effettuato con l’aiuto della scheda Arduino e del modulo relè a 220 Volt. Per accendere e spegnere il relè, è possibile utilizzare diversi sensori e sensori che consentono di effettuare la commutazione automatica dell’illuminazione. Consideriamo un esempio di controllo senza contatto dell’illuminazione (lampada o striscia LED a 12 V) utilizzando i sensori a ultrasuoni HC-SR04.




Per questa attività sono necessari:

  • Arduino Uno / Arduino Nano / Arduino Mega
  • sensori a ultrasuoni HC-SR04
  • relè a stato solido
  • lampada 220V
  • cavi di collegamento
  • libreria Ultrasonic.h

In questo progetto i sensori a ultrasuoni saranno utilizzati come sensore di gesti per il microcontrollore Arduino e il controllo dell’illuminazione (o di qualsiasi altro elettrodomestico) avverrà tenendo la mano davanti ai sensori. Al posto di una lampadina da 220 volt, è possibile utilizzare una striscia LED da 12 volt. La sensibilità dei sensori HC-SR04 e la velocità di rilevamento degli ostacoli sono impostate nel programma mediante variabili.

Controllo della luce tramite sensore a ultrasuoni

Controllo della luce tramite sensore a ultrasuoni Arduino
Controllo della luce tramite sensore a ultrasuoni Arduino

Nel programma, ogni sensore a ultrasuoni dell’HC-SR04 viene interrogato più volte, per evitare false attivazioni dei sensori. A seconda della direzione del movimento della mano, un relè a stato solido collegato alla scheda Arduino Uno chiuderà o aprirà il contatto con il carico. Se nel progetto si utilizza una striscia LED a 12 Volt, al posto del relè a stato solido o elettromagnetico si può utilizzare un transistor mosfet di potenza adeguata.

Programma Arduino per controllo della luce tramite HC-SR04




#include "Ultrasonic.h"
Ultrasonic u1(11, 12); // Trig et Echo dal primo sensore
Ultrasonic u2(6, 7);   // Trig et Echo dal secondo sensore

#define RELE 2  // pin di collegamento relè
int dist = 50;  // distanza in centimetri
int x = 3;      // numero di misure

int cm1, cm2;
int w = 0;

void setup() {
  Serial.begin(9600);
  pinMode(RELE, OUTPUT);
}

// risultato della misura del primo sensore
void sensor1() {
  for (byte i = 0; i <= x; i++) {
    cm1 = u1.Ranging(CM);
    cm1 = cm1 + cm1;
    delay(10);
  }
  cm1 = cm1 / x;
  Serial.print("1 sensor - ");
  Serial.println(cm1);
}

// risultato della misura del secondo sensore
void sensor2() {
  for (byte i = 0; i <= x; i++) {
    cm2 = u2.Ranging(CM);
    cm2 = cm2 + cm2;
    delay(10);
  }
  cm2 = cm2 / x;
  Serial.print("2 sensor - ");
  Serial.println(cm2);
}

void loop() {
  // interrogazione del primo sensore
  sensor1();
  delay(50);
  // interrogazione del secondo sensore
  sensor2();
  delay(50);

  // se il primo sensore viene attivato, entra nel ciclo 1
  if (cm1 < dist) { w = 1; }
  // se il secondo sensore viene attivato, entra nel ciclo 2
  if (cm2 < dist) { w = 2; }

  while (w == 1) {
    // interrogazione del secondo sensore
    sensor2();
    delay(50);
    // se il sensore 2 è attivato, attivare il relè e uscire.
    if (cm2 < dist) { digitalWrite(RELE, HIGH); w = 0; }
  }

  while (w == 2) {
    // interrogazione del primo sensore
    sensor1();
    delay(50);
    // se il sensore 1 è scattato, disinserire il relè e uscire
    if (cm1 < dist) { digitalWrite(RELE, LOW); w = 0; }
  }
}

Spiegazione del codice per controllare luce tramite sensore a ultrasuoni:



  1. la sensibilità dei sensori HC-SR04 viene impostata con la variabile dist – più piccolo è il valore, più è necessario avvicinare la mano ai sensori;
  2. per impostazione predefinita, ogni sensore effettua 3 misurazioni con un intervallo di 10 ms – variabile int x = 3; il numero di misurazioni può essere aumentato, ma ciò comporta un aumento del tempo di elaborazione.

Conclusioni. L’accensione senza contatto di una lampada o di un altro dispositivo tramite gesti della mano può essere realizzata non solo con sensori di distanza a ultrasuoni, ma anche sulla base del sensore di gesti APDS 9960 o di sensori di ostacoli a infrarossi (ky-032 o fc-51). I microcontrollori Arduino permettono di realizzare qualsiasi idea interessante senza avere molta esperienza di programmazione o conoscenza dei circuiti.

5/5 - (1 vote)


Lascia un commento

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

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.