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.

Usare un attiny85 per pilotare lampada led
Usare un attiny85 per pilotare lampada led

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:

Luce cortesia lampada led attiny85
Schema elettrico

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.

Programmatore usbAsp per attiny85
Programmate l’ATtiny85 con L’USBasp

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.