[Progetto] Allarme basato su una fotoresistenza

Ecco il progetto di un allarme fatta con arduino e una fotoresistenza.

Occorente:

1x Fotoresistenza (Di qualsiasi tipo)
1x Arduino (qualsiasi versione)
1x Resistenza 10kΩ
1x Resistenza 220 Ω
1x Led (Di qualsiasi colore, consigliato ad alta luminosità)
1x Buzzer \ Speaker
7x \ 9x Fili
1x Resistenza da 100Ω (Non necessaria se usi un buzzer)

Montate i componenti seguendo questo schema (potete anche farlo con un led laser che è più preciso):

Poi una volta creata la vostra “porta di casa” con allarme sulla breadboard caricate questo codice su arduino:

int state = 1; // DICHIARO LO STATO DELL'ALLARME (1=ACCESO, 0=SPENTO)

void setup()
{
  Serial.begin(9600); // AVVIO LA SERIALE A 9600 BAUD
  pinMode(A0, INPUT); // IMPOSTO IL PIN A0 COME INPUT
  pinMode(8, OUTPUT); // IL PIN 8 (LED) E' UN OUTPUT
  pinMode(13, OUTPUT); // IL PIN 13 (LED INTEGRATO) E' UN OUTPUT
  digitalWrite(8, HIGH); digitalWrite(13, HIGH); // ACCENDO I LED
}

void loop()
{
  // CREO UNA VARIABILE DI NOME SM E LEGGO IL CONTENUTO INVIATO DALLA SERIALE AD ARDUINO
  int sm = Serial.read(); 
  if (sm == 'd' || sm == 'D') // SE SM E' UGUALE A "d" O "D" DISATTIVO L'ALLARME
  {
    Serial.println("Allarme disabilitato");
    digitalWrite(8, LOW); digitalWrite(13, LOW); // SPENGO IL LED
    state = 0;
  }

  if (sm == 'a' || sm == 'A')// ALTRIMENTI SE IL MESSAGGIO E' UGUALE A "a" o "A" ATTIVO L'ALLARME
  {
    Serial.println("Allarme attivato");
    digitalWrite(8, HIGH);
    digitalWrite(13, HIGH);
    state = 1;
  }

  if (sm == 's' || sm == 'S')// INFINE SE IL MESSAGGIO E' UGUALE A "s" o "S" INVIO LO STATO DELL'ALLARME AL MONITOR SERIALE
  {
    if(stato == 1)
    {
      Serial.println("L'allarme e' disattivo");
    } else {
      Serial.println("L'allarme e' disattivo");
    }
  }
  
  if(state == 1) // SE L'ALLARME E' ATTIVO
  {
    int fotoval = analogRead(A0); // VEDI IL VALORE DELLA FOTORESISTENZA
    if (fotoval < 675) // SE IL VALORE DELLA FOTORESISTENZA E' BASSO
    {
      Serial.println("Qualcuno è entrato!"); // SCRIVI "Qualcuno e' entrato" NEL MONITOR
      while (fotoval < 675) // FINCHE FOTOVAL E' MINORE DI 675
      {
        int nota = 1000 / 8; // CREO UNA NOTA DI UN OTTAVO
        fotoval = analogRead(A0); // VEDO IL VALORE DELLA FOTORESISTENZA
        // FACCIO UNA PICCOLA SUONERIA
        tone(9,400);
        delay(500);
        tone(9,200);
        delay(100);
        noTone(9);
      }
    }
  }
}

Mettete la mano tra la fotoresistenza e il led il monitor seriale dirà che qualcuno è entrato e il buzzer suonerà.

Digitando “D” o “d” nel monitor seriale l’allarme si disattiverà
Digitando “A” o “a” nel monitor seriale l’allarme si attiverà

Dopo 17/08 (Update): Se verrà digitata qualsiasi altra lettera Arduino non la riconoscera e non farà niente
Dopo 08/09 (Update) : Vengono ridotti i fili utilizzati
Dopo 08/09 (Update) : (Segnalazione di UweFederer) Viene aggiunta una resistenza al led così il circuito diventa più duraturo.
Dopo 11/09 (Update): (Segnalazione di cyberhs) Aggiunta una resistenza da 100Ω
Dopo 23/07 (Update):
-Aggiunto il comando “S” che permette di verificare lo stato dell’allarme.
-Sostituito il suono con uno più gradevole
-Il pin 13 viene anch’esso usato per verificare lo stato dell’allarme direttamente da hardware
-Tolta la variabile “nota” che, dato il nuovo suono, non serviva più
-Cambiato il valore minimo per far suonare l’allarme, in modo da farla funzionare anche con una luce accesa

Allarme.ino (1.82 KB)

Si può ancora piu migliorare utilizzando un led laser… e specchi alla james bond 8)

È vietato aprire uan discussione in Megatopic per questo l' ho spostata.

Se metti la resietenza da 220 Ohm in serie al LED L' arduino e il LED funzionerebbero piú a lungo.

Ciao Uwe

UweFederer: È vietato aprire uan discussione in Megatopic per questo l' ho spostata.

Se metti la resietenza da 220 Ohm in serie al LED L' arduino e il LED funzionerebbero piú a lungo.

Ciao Uwe

Grazie per aver corretto il mio errore, per quanto riguarda la resistenza mi ero scordata di metterla nello sketch Fritzing, corregerò subito l'errore.

simonenascivera: Si può ancora piu migliorare utilizzando un led laser... e specchi alla james bond 8)

Non ho utilizzato un led laser perché sono poco comuni, così se qualcuno vuol fare questo progetto almeno ha l'occorrente, comunque si può utilizzare tranquillamente così allarme diventa pure più precisa :)

Il buzzer/speaker, come il LED, deve avere un resistore di limitazione corrente da 220 (minimo 120) ohm.

Infatti se è uno speaker da 8 ohm, la corrente arriverebbe a 625mA bruciando la porta di Arduino.

Se è invece un buzzer passivo piezoelettrico, teoricamente la corrente diventerebbe infinita sia pure per un istante.

Sarebbe meglio usare un transistor.

cyberhs:
Il buzzer/speaker, come il LED, deve avere un resistore di limitazione corrente da 220 (minimo 120) ohm.

Infatti se è uno speaker da 8 ohm, la corrente arriverebbe a 625mA bruciando la porta di Arduino.

Se è invece un buzzer passivo piezoelettrico, teoricamente la corrente diventerebbe infinita sia pure per un istante.

Sarebbe meglio usare un transistor.

Ok. Correggerò lo sketch.

Allarme aggiornata il 23/07. Up

LoadDuinoUNO: Allarme aggiornata il 23/07. Up

Cosa dovremmo fare con questa informazione? Ciao Uwe

La discussione era antica, quindi per fare Up

Ciao a tutti sono nuovo Volevo chiedervi se sapete aiutarmi a trovare uno un codice dove faccio eccitare un relè o un led attraverso una fotosesistenza e il tutto con dei moduli nrf24l01

>Gianluca1234 : essendo il tuo primo post, nel rispetto del regolamento, ti chiedo cortesemente di presentarti QUI ([u]spiegando bene quali conoscenze hai di elettronica e di programmazione[/u] ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione il su citato REGOLAMENTO ... Grazie.

Guglielmo

P.S.: Qui una serie di link utili, [u]NON[/u] necessariamente inerenti alla tua domanda: - serie di schede by xxxPighi per i collegamenti elettronici vari: ABC - Arduino Basic Connections - pinout delle varie schede by xxxPighi: Pinout - link [u]generali[/u] utili: Link Utili