Gsm control

29

Transcript of Gsm control

Oggi, grazie ai più svariati sistemi di

trasmissione dati, è possibile controllare i

sistemi elettronici a qualunque distanza.

Per il controllo a grande distanza e in siti disagiati basta che sia disponibile una connessione dati telefonica mobile

L’ idea è di controllare un sistema di

irrigazione, senza

limiti di distanza e con

un costo minimo:

basta che il sito sia

raggiunto dal segnale

GSM

Per questo ho deciso di

usare il modulo:

GSM click Della Mikroelektronika

I componenti necessari per realizzare il progetto sono:

Pic 16F876A AMS1117 LM7805

Sensori di umidità

Relè

5v DC 220v AC

GSM

click

Display

LCD

Altri componenti:

Il modulo GSM click interagisce con il microcontrollore inviando e ricevendo stringhe di comando “AT” attraverso la porta seriale

Il progetto è stato preceduto

da diverse fasi di

simulazione su

breadboard per verificare

la comunicazione tra uC,

GSM e un Dispay LCD.

Il display LCD è stato

necessario anche per

monitorare le risposte del

modulo GSM ai comandi

del uC

Verificando che i collegamenti e le funzioni

base di comunicazione erano corrette ho

testato i sensori di umidità del terreno:

E rilevare la curva

caratteristica:

Dati relativi alla curva del sensore di Umidità Superficie Terra = 27 cm^2

Volume Terra = 190 cm^3

QUANTITA' D' ACQUA UMIDITA' IN BIT

0 ml 900

10 ml 800

12 ml 785

15 ml 200

20 ml 127

22 ml 100

25 ml 88

27 ml 79

35 ml 55

47 ml 53

50 ml 52

55 ml 51

60 ml 50 0

100

200

300

400

500

600

700

800

900

1000

0 ml 10 ml12 ml15 ml20 ml22 ml25 ml27 ml35 ml47 ml50 ml55 ml60 ml

Il sensore utilizzato misura la conducibilità della terra: all'aumentare dell'umidità la conducibilità aumenta.

Di conseguenza, un terreno asciutto presenta una resistenza alta e un terreno fangoso una più bassa.

Attraverso una partizione di tensione, si può intuire facilmente di come vari l’ uscita rispetto all’ umidità del terreno.

Vin = Alim. uC = 5v;

R1 = Res. molto piccola; R2 = Res. del terreno;

Vout = Vin * R2 / (R1+R2);

Come si evince dal precedente grafico: - L’uscita è alta se la resistenza del terreno è alta. - L’uscita è bassa se la resistenza del terreno è bassa. Questa è una condizione poco gradevole, infatti, se volessimo trovare il valore

dell’ Umidità in percentuale troveremo che l’ Umidità è inversamente proporzionale ai volt (convertiti in bit) letti dal uC .

Schema elettrico

Lo schematico è composto da:

Un alimentatore

Relè e componentistica necessaria per essere gestito tramite uC.

Il relè viene gestito sfruttando le caratteristiche di interdizione e saturazione del transistor.

Inviando, infatti, un segnale alto dal uC alla base del NPN, questo si comporterà da tasto chiuso dando al relè i volt necessari a chiudere i contatti della 220v AC.

Quindi il relè chiuderà i contatti della 220v fino a quando all’ uscita del PIC avremo un segnale alto altrimenti i contatti verranno aperti e il motore del sistema di irrigazione si spegnerà immediatamente.

Che stabilizza l’ entrata in 5v e 3.3v necessari per il funzionamento del uC e il GSM

Due connettori per le connessioni uC - GSM

Un Display LCD per apprezzare visivamente lo stato del sistema

I sensori e i componenti per far funzionare il

cuore del sistema:

-Il PIC16F876A

PCB:

Collaudo HW:

verifica su eventuali cc, controllo sull'alimentazione e sulla funzionalità dei led e del relè

Si può passare alla parte Software

Le funzioni principali sono 2:

Void main() ed Void Interrupt().

Il Void main utilizza due funzioni che ci permettono

di inviare comandi e aspettare le risposte del

GSM.

Il programma viene descritto qui in seguito:

Inizio

Invio comado(AT)

per ‘svegliare’ il GSM

Setup;

Aspetta(OK)

Come risposta

Void Main

Invio comado(ATE0)

Per disabilitare l’echo

Aspetta(OK) Come risposta

Invio comado(AT+CMGF=1)

Imp. Msg come msg di testo

Aspetta(OK)

Come risposta

Invio comado(AT+CMGD=1,4)

Cancella i msg in memoria

Aspetta(OK)

Come risposta

A

While

(1)

Leggi i valori dei

sensori

A B

Stampa la Stringa su

LCD

Crea la stringa che

deve essere

stampata sul Display

Invio

comado(AT+CMGL=\"ALL\)

Sono stati ricevuti msg?

Aspetta che vengano

letti i messaggi

Msg

non letti?

Flag

motore?

Relè stato alto

Invio comado(AT+CMGD=1,4)

Cancella i msg in memoria

Aspetta(OK)

Come risposta C

Si

Si

No

No

Si

C Auto

mode

ON?

Relè

stato

alto?

Relè Stato alto

Umidità

troppo

Alta?

Relè Stato basso

Umidità

troppo

bassa?

Umidità

troppo

Alta?

Relè Stato basso

B

Si

Si

Si

Si

No

No

No

No

No

FINE

Invio comando AT

( *s)

While (*s)

Invio carattere al

modulo.

Puntatore spostato al carattere

successivo

Indica al GSM

che la stringa è

terminata

Fine

Si No

La funzione GM862_Send(atc)

riceve dal main la stringa atc

costituita da un array di

caratteri inviati al GSM uno alla

volta fino al carattere di

terminazione

COME SI INVIANO I COMANDI

Void Interrupt

La funzione interrupt è attivata dalla periferica UART ogni volta che viene ricevuto un carattere.

Questo carattere fa parte del messaggio SMS ricevuto sul numero della SIM e che il modulo GSM invia al uC.

Il sistema di ricezione funziona come una macchina a stati finiti.

Se il carattere ricevuto è tra quelli attesi allora si avanza di stato altrimenti si ritorna allo stato iniziale.

Infine se la stringa ricevuta è riconosciuta valida si attua il comando corrispondente.

Stato 0

Stato1

Stato2 Stato3

Stato4

Con questo software saremo in grado di comandare a distanza l’impianto di irrigazione della serra inviando, semplicemente, dei messaggi di testo al numero della sim che viene inserita nel modulo.

I comandi che fanno interagire l’ utente con il sistema sono:

- “Auto ON” ed “Auto OFF” che abilitano o disabilitano la modalità automatica.

- “Set ON” ed “Set OFF” che permettono di accendere o spegnere l’ impianto di irrigazione.

Avrei voluto aggiungere un’ altro comando che richiedeva il valore dell’ umidità ma purtroppo l’ ambiente di sviluppo che ho utilizzato era in versione free, ed essendo il mio, un programma molto vasto e con librerie alquanto pesanti, sono stato costretto a scegliere, tra utilizzare un display LCD o inviare il messaggio di stato. Essendo un progetto a puro scopo dimostrativo, ho preferito scegliere l’ uso del display.

Questo comunque non mi ha fermato nel costruire e testare una

funzione di richiesta dello stato.. In effetti che controllo è se non si può controllare?

Questa richiesta è stata poi integrata nell’ interrupt nello stesso modo in cui sono state integrate le richieste precedenti.

Infine per avere un risultato ottimale, il progetto aveva bisogno di un contenitore, che servisse a proteggere i componenti della scheda elettronica e per contenere le eventuali prese, su cui avere l’entrata e l’ uscita della 220;

La realizzazione del progetto, relativamente alle funzionalità offerte, non ha un costo alto che dipende soprattutto dal modulo GSM.

NOME QUANTITA' COSTO

GSMclick 1 49,90 €

PIC 16F876A 1 2,18€

Sensori Umidità 2 2,50 €

LM7805 1 0,50 €

AMS1117 1 0,50 €

Rele finder 1 3,40 €

MORSETTIERE 3 1.00 €

Quarzo 8Mhz 1 0,50 €

Resistori 5 0,50 €

Condensatori 7 0,50 €

Diodi / Led 4 0,50 €

Display LCD 1 1,72 €

Cassetta Antistagno 1 3,20 €

TOTALE 66,90 €

Il costo può essere ridotto se si utilizza il modulo GSM corrispondente fabbricato in Cina ad un prezzo di 15€.

Il totale sarà quindi di 32 €

Considerazioni finali:

La scheda si presta per un'infinità di

applicazioni, basta cambiare i sensori e il relè

attuatore. Può funzionare anche in

trasmissione inviando dati su richiesta sempre

attraverso SMS.

Questo progetto può risultare molto conveniente

perché permette di effettuare controlli che

diversamente costerebbero molto di più.

DAVIDE TOSTO 5^B

ELETRONICA / ELETTROTECNICA

2014 / 2015