29 ottobre 2011

2 - Arduino modem GSM


A grande richiesta ho deciso di costruire un modem GSM in grado di monitorare la corrente elettrica e  nel caso di Black_Out avvisa con un SMS oppure con una telefonata sul cellulare. Questo modem creato con Arduino e shield GSM è possibile applicarlo ovunque ne abbiamo la necessità: casa, ufficio, azienda....
In un  secondo momento, ho aggiunto un sensore di luminosità che servirà a monitorare anche il sistema d' antintrusione di casa!

Componenti utilizzati:
Vecchio "case" di un Hard Disk, presa/lampadina di emergenza,  ArduinoUNO, shield GSM, sensore di luminosità, led, bottone, componenti elettronici vari e una SIM di qualsiasi operatore telefonico.

 Funzionamento presa/lampadina di emergenza: collegata ad una presa qualsiasi della corrente, in caso di Black_Out emette una luce tramite un led.

Descrizione:
CIRCUITO:
-Montare e saldare tutti i componenti che formano lo shield GMS;
-Collegare lo shield GSM ad Arduino;
-Smontare lampadina d'emergenza e saldare ai due piedini del led che troviamo dentro due cavetti che andranno collegati al nostro Arduino. In questo modo Arduino terrà monitorato il led che in caso di Black-out si accenderà facendo arrivare un aumento di tensione ad un pin analogico!
-Collegare 4 led (rosso, blu, verde, giallo) che ci serviranno per capire in che stato si trova il nostro modem.
-Collegare un bottone che ci servirà per resettare alcune funzioni;
-Per poter monitorare l'impianto d'antintrusione di casa, possiamo collegare due cavetti al led che segnale l'allarme (come fatto precedentemente con la lampadina d'emergenza) o servirci di un sensore di luminosità che andrà incollato sul led da monitorare.
Per abbellire il tutto ho deciso d inserire nel "case" del mio vecchio Hard Hisk il circuito creato.
Per quanto riguarda l'alimentazione sarà necessario collegare Arudino ad un gruppo di continuità in modo che, in caso di Black-Out, il nostro modem possa rimanere acceso qualche minuto per segnalarci l'evento.
Arduino dovrà essere alimentato a 12 volt per poter far funzionare senza problemi lo shield GSM!
La presa/lampada di emergenza dovrà essere collegata ad una presa di corrente qualsiasi.

COME FUNZIONA IL PROGRAMMA:
Il programma permette ad Arduino di agganciarsi alla rete GSM in modo da poter effettuare chiamate e invaire SMS, se ciò avviene correttamente si accenderà un led verde del modem!
In questo caso Arduino, tramite un pin analogico, tiene monitorato il led della lampadina d'emergenza e nel caso si accenda (BLACK-OUT) procede a effettuare due squilli sul numero di telefono da noi inserito, tenendo il led blu accesso. Fatto ciò rimarrà in un ciclo infinito fino a che non verrà ripristinata la corrente, facendo lampeggiare in modo alternato led rosso e led blu, continuando però a monitorare il sistema d'antintrusione di casa.
Una volta ripristinata la corrente Arduino smetterà di far lampeggiare i led rosso e blu e procederà ad inviare un SMS di notifica ("Corrente _ripristinata!") riaccendendo il led verde.
Nel caso scatti l'allarme di casa, Arduino lo rileverà tramite il sensore di luce piazzato sul led dell'allarme e procederà ad inviare un SMS d' avviso("Allarme_scattato!"), accendendo in seguito un led giallo.
Per poter permettere ad Arduino di ricominciare a monitorare l'allarme di casa sarà necessario tenere premuto il bottone fino a che il led giallo si spegne.

Osservazioni:
Per verificare il corretto aggancio del nostro modem alla rete GSM basterà controllare che il led verde sia acceso oppure, se siamo fuori casa, basterà telefonare al numero del nostro modem e verificare che dia la linea libera.

Sketch Arduino:
Scaricare lo sketch Arduino qui!

Video:

28 ottobre 2011

1 - Arduino multiplexer/demultiplexer




Definizioni:
MULTIPLEXER = dispositivo in grado di selezionare un singolo segnale elettrico fra 2^n segnali d'ingresso.
DEMULTIPLEXER = dispositivo in grado di selezionare una singola uscita fra 2^n uscite disponibili.
Componenti Utilizzati:
Arduino UNO, multiplexer 16 channel, 16 led, computer

Descizione:
In questo caso ho usato il dispositivo in funzione di demultiplexer servendomi solamente di 5 pin digitali di Arduino, per poter comandare 16 led!
Attraverso 1 pin di arduino indico il segnale d'uscita (HIGH o LOW) mentre con gli altri 4 pin scelgo in che uscita far arrivare il segnale:

ARDUINO -> DEMULTIPLEXER -> LED
   0-0-0-0   ->         uscita 0;             ->   1
   0-0-0-1   ->         uscita 1;             ->   2
   0-0-1-0   ->         uscita 2;             ->   3
   0-0-1-1   ->         uscita 3;             ->   4
   0-1-0-0   ->         uscita 4;             ->   5            
   0-1-0-1   ->         uscita 5;             ->   6
   0-1-1-0   ->         uscita 6;             ->   7
   0-1-1-1   ->         uscita 7;             ->   8
   1-0-0-0   ->         uscita 8;             ->   9
   1-0-0-1   ->         uscita 9;             ->   10
   1-0-1-0   ->         uscita 10;           ->   11
   1-0-1-1   ->         uscita 11;           ->   12
   1-1-0-0   ->         uscita 12;           ->   13
   1-1-0-1   ->         uscita 13;           ->   14
   1-1-1-0   ->         uscita 14;           ->   15
   1-1-1-1   ->         uscita 15;           ->   16

Osservazioni: 
Nello sketch che trovate qui sotto, è possibile scegliere quale led accendere mandando dei caratteri ad Arduino tramite monitor seriale:

il carattere  "\"  corrisponde al led 1;
                  "0"  corrisponde al led 2;
                  "1"  corrisponde al led 3;
                  "2"  corrisponde al led 4;
                  "3"  corrisponde al led 5;
                  "4"  corrisponde al led 6;
                  "5"  corrisponde al led 7;
                  "6"  corrisponde al led 8;
                  "7"  corrisponde al led 9;
                  "8"  corrisponde al led 10;
                  "9"  corrisponde al led 11;
                  "Q"  corrisponde al led 12;
                  "W"  corrisponde al led 13;
                  "E"  corrisponde al led 14;
                  "R"  corrisponde al led 15;
                  "T"  corrisponde al led 16;

Usando la funzione multiplexer è possibile leggere il valore di 16 input analogici servendosi solamente di 5 pin di Arduino: 4 pin serviranno sempre per scegliere il canale da leggere tra i 16 disponibili, mentre, il pin usato precedentemente per trasmettere il segnale HIGH o LOW ai led, ora lo si usa per leggere il valore dei sensori, basterà quindi collegarlo ad un pin analogico di Arduino ed usare la funzione "analogRead(pin)" per rilevare il valore trasmesso dal input (per esempio un sensore di temperatura).

Sketch Arduino: