CONTENUTO ►
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
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:
- la sensibilità dei sensori HC-SR04 viene impostata con la variabile dist – più piccolo è il valore, più è necessario avvicinare la mano ai sensori;
- 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.
Lascia un commento