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
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 .
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
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ù.
Top Related