Allarme portello frigo - Fai Da Te
VOLETE UNA VERSIONE MINI? CONTENITORE PICCOLISSIMO E PIU COMPATTO? PROSSIMO VIDEO...con ATTINY
Descrizione oggetto
Ecco un' oggetto semplice da realizzare, economico che potrete realizzare per la vostra mamma, moglie compagna ecc ma soprattutto se avete bimbi piccoli per casa. Si tratta di un' allarme per il vostro frigorifero che vi avviserà acusticamente quando il portello rimarrà aperto per un certo periodo di tempo. Quel tempo sarete voi ad impostarlo attraverso un codice formato da poche linee di codice che troverete a fondo pagina. Il tutto è gestito da Arduino nano e da una pila a transistor da 9 volt.
Aquisto materiali
Arduino nano con cavetto USB
Ho utilizzato Arduino nano perché non solo è molto piccolo, economico e consuma poco, ma perché ci permette di realizzare con tanta facilità un codice che si occupa della temporizzazione e un codice per realizzare la nostra suoneria o allarme. In fondo alla pagina troverete due sorgenti Arduino già pronti al' uso. Non ho usato un semplice Timer perchè poco versatile e costa quanto Arduino nano.
Contenitore nero
Se trovate un modello di colore bianco, è sicuramente meglio che verniciarlo, ma in caso contrario oppure se il vostro frigo è di un colore particolare, per mimetizzarlo meglio, potete verniciarlo con una bomboletta spry.
Connettore per pila transistror 9 volt
Semplice connettore per prelevare alimentazione da una comunissima pila transistor 9 volt
Contatto magnetico con (Com. na - nc)
Questo elemento è molto importante perchè è quello che si occupa di accendere Arduino nel momento in cui il portello del frigo viene aperto e in quel caso, Arduino stesso eseguirà il codice tempo e melodia. MI RACCOMANDO...DEVE AVERE IL CONTATTO IN SCAMBIO (Comune, aperto e chiuso)
Buzzer cicalino
Il piccolo buzzer che si occuperà di avvisarvi acusticamente quando il portello del vostro frigo è aperto
Natsro Biadesivo speciale
Se volete un biadesivo di qualità spendendo poco, questa è una valida soluzione. Consiglio di acquistarlo solo se non avete un prodotto analogo in casa.
Parte tecnica e collegamenti
Lo schema elettrico è molto semplice, non credo serve aggiungere spiegazioni. In pratica, si alimenta Arduino nano SOLO quando lo sportello del frigo è aperto. Con questo sistema si riducono drasticamente i consumi per perseverare la durata della pila a transistor. I pin utilizzati sono solo quelli del' alimentazione Arduino (Vin e gnd) e il solo pin digitale D2 per il collegamento del buzzer, configurato come uscita.
Sotto potete vedere le due modalità: A frigo aperto, dove il contatto da aperto diventa chiuso e la condizione di frigo chiuso, dove il magnete è vicinissimo al sensore.
Rappresentazione grafica del' allarme posizionato sul lato del frigo insieme al magnete
Sorgente arduino nano
Il codice utilizzato per realizzare un easy timer a eccitazione ritardata è estremamente semplice, basta mettere un delay nel Void setup e nel void loop mettere il codice che farà suonare il piezo. Quindi, appena arduino si accenderà, prima di eseguire il codice del' allarme, attenderà un tempo impostato in millisecondi: delay (1000); che significa, in termini poveri, ritardo di un secondo.
Codice semplificato
Il codice sottostante non fa altro che: Al momento che Arduino viene alimentato e quindi acceso, imposta il pin 2 come output e attende 1 minuto prima di andare al codice nel Void Loop, codice che che viene eseguito al' infinito. Entrato nel Void Loop, ci sarà una segnalazione acustica generata da una interruzione di un secondo che verrà riprodotta ciclicamente al' infinito
int buzzer = 2; //buzzer connesso al pin 2
void setup()
{
pinMode(buzzer, OUTPUT); // Imposta il pin del buzzer come output
delay(60000); // ****** IL TEMPO DA IMPOSTARE PRIMA DEL' INTERVENTO BUZZER ****
}
void loop()
{
tone(buzzer, 1000, 200); //suona nota sul pin 2 alla frequenza di 1000Hz
delay(1000); //aspetta 2 secondi
noTone(buzzer); // buzzer in tacitazione
delay(1000);//aspetta 1 secondi
}
Codice evoluto con melodia
const int buzzerPin = 2;
const int songLength = 18;
char notes[] = "cdfda ag cdfdg gf "; // lo spazio rappresenta una pausa
int beats[] = {1, 1, 1, 1, 1, 1, 4, 4, 2, 1, 1, 1, 1, 1, 1, 4, 4, 2};
int tempo = 250;
void setup()
{
pinMode(buzzerPin, OUTPUT);
delay (3000);
}
void loop()
{
int i, duration;
for (i = 0; i < songLength; i++)
{
duration = beats[i] * tempo;
if (notes[i] == ' ')
{
delay(duration);
}
else
{
tone(buzzerPin, frequency(notes[i]), duration);
delay(duration);
}
delay(tempo / 10);
}
//Se vogliamo riprodurre solamente una volta la canzone:
while (true) {}
// Se vuoi che la tua canzone venga riprodotta più e più volte,
// rimuovi la condizione while
}
int frequency(char note)
{
/* Questa funzione prende un carattere di nota (a-g) e restituisce il carattere
frequenza corrispondente in Hz per la funzione tone
*/
int i;
const int numNotes = 8; // numero di note memorizzate
/*
I seguenti array hanno i caratteri di nota e le loro
frequenze corrispondenti. L'ultima nota "C" è maiuscola
per separarla dalla prima cifra minuscola "c". Se si desidera
aggiungere altre note, bisogna utilizzare caratteri univoci.
Per il tipo "char" (carattere), mettiamo singoli caratteri
in singole quotes.
*/
char names[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' };
int frequencies[] = {262, 294, 330, 349, 392, 440, 494, 523};
for (i = 0; i < numNotes; i++) // Step tra le note
{
if (names[i] == note) // è quella?
{
return (frequencies[i]); // si, ritorna la frequenza
}
}
return (0); // Per uscire dalla condizione while
}