Usare un ATtiny85 per controllare una lampada led a batteria
Mi piace realizzare progetti che impiegano dispositivi esistenti che, magari messi da parte per lungo tempo, si rivelano ottimi per costruire nuovi dispositivi.
La lampada led a batteria è un oggetto molto comune che si compra a basso costo nelle bancarelle delle fiere di elettronica. Date le sue dimensioni ridotte è possibile utilizzarla per illuminare tutte quelle piccole aree dove non abbiamo previsto una fonte di illuminazione fissa e dove non abbiamo la possibilità di portare dei cavi elettrici se non tramite opere murarie.
Non potendo tenere accesa la lampada per ore, causa scaricamento repentino della batteria, ho realizzato un piccolo circuito che tramite un sensore PIR e un relè permetta l’accensione della lampada solo al passaggio di una persona (o comunque qualsiasi cosa che si muove![tranne mosche e zanzare!]). Adoperando anche una fotoresistenza riesco a gestire l’accensione solo nelle ore notturne.
Tutto il sistemino è gestito da un parsimonioso ATtiny85.
Lo schema del circuito è il seguente:
Le batterie della lampada (che forniscono nel mio caso circa 7Vdc) hanno anche il compito di alimentare il circuito. Il regolatore di tensione 7805 stabilizza e fornisce alimentazione al circuito. L’ATtiny85 acquisisce il segnale analogico proveniente dalla fotoresistenza e il segnale digitale proveniente dal sensore PIR. Tramite il transistor comando un micro relè che cortocircuita l’interruttore meccanico posto sulla lampada, provocandone l’accensione.
Il codice che governa l’ATtiny85 è il seguente:
void setup() { //uscita per comandare il rele pinMode(0, OUTPUT); //ingresso per sensore pir pinMode(4, INPUT); } void loop() { //leggo il valore analogico proveniente dalla fotoresistenza int FotoR = analogRead(3); //leggo lo stato del segnale pir byte inp = digitalRead(4); //se il sensore pi rileva un movimento... if (inp == HIGH) { //controlla se la luce ambiente è insufficiente if (FotoR <= 150) { //attiva il relè pe accendere la lampada led digitalWrite(0, HIGH); //tieni la lampada accesa per 30 secondi Ritardo(); } } else //altrimenti tieni il relè disattivato digitalWrite(0, LOW); } void Ritardo() { //ritardo di 30 secondi for(byte Ciclo = 0; Ciclo <= 30; Ciclo++) { delay(1000); } }
Per programmare l’ATtiny85 potete usare un Arduino UNO come spiegato in questo tutorial. Per chi possiede un programmatore dedicato come quello descritto nel precedente articolo potete usare lo schema seguente per caricare lo sketch nel microcontrollore.
Attenzione il connettore da utilizzare dellUSBasp è il J5
La lampada del led è costata circa 15€ mentre per i componenti del circuito o speso circa 10-12€.
Per usare il circuito all’esterno consiglio di utilizzare un buon contenitore, per evitare che umidità o pioggia possano causare rotture o cortocircuiti.