In questi giorni, avendo un pò di tempo libero, ho pensato di realizzare un piccolo circuito da mettere nel viale, per l’illuminazione tramite un faretto a 220v quando viene rilevato del movimento. E solo quando i livelli di luce diurna scendono sotto una certa soglia.

I componenti utilizzati sono pochi ed essenziali:
Faretto 220v.
Trasformatore da 220V a 9V 1A (serve ad alimentare microcontrollore e sensori).
SSR (solid state relè) per correnti fino a 450V e con voltaggi di commutazione bassi (accende e spegne il faretto in base agli impulsi ricevuti dal microcontrollore).
Microcontrollore con bootloader di Arduino (i suoi 5V riescono a commutare il relè ed è facilmente programmabile per interagire con il sensore pir e la fotocellula).
Fotoresistenza/Fotocellula per rilevare i livelli di luce ambientali.
Sensore PIR (Piroelectric infrared sensor) di movimento.

Il costo totale di questi componenti (escludendo il costo del faretto che può variare notevolmente in base al modello) è di 30/32 euro.

Clikkate sull’immagine per ingrandirla:

Come è facile intuire. Si portano dei cavi a 220v alla base del circuito, qui un cavo di fase viene portato al relè, per permettere la commutazione su tale cavo (ON/OFF).
Mentre 1 cavo di fase e neutro alimenteranno il trasformatore che erogherà i 9V necessari ad alimentare il microcontrollore. Esso è programmato per rilevare movimento (attraverso sensore PIR) e di conseguenza attivare il relay solo se la fotocellula percepisce che i livelli di luce sono bassi (In questo modo, di giorno non c’è pericolo che il faretto venga acceso inutilmente).

Qui di seguito il codice che ho usato per programmare il controllore:

//il pin centrale del sensore, raggiunge i 5V quando rileva del movimento. Va collegato al input_pin del microcontrollore
int input_pin = 2;
int var;
 
void setup(){
pinMode(input_pin, INPUT);
pinMode(8, OUTPUT);
//Serial.begin(9600); 
}
 
void loop(){
var = digitalRead(input_pin);
if (var)
digitalWrite(8, HIGH);
else
digitalWrite(8, LOW);
 
//Serial.println(var);
delay(150);
}