Controllo apertura cancello GSM

14
[email protected] marzo 2010 SIMPLE GSM GATE CONTROL Il telecontrollo qui proposto è adatto a tutte quelle applicazioni in cui serve un comando sicuro e di basso costo. Questo sistema ha tutte queste qualità perché risponde solo ad alcuni numero telefonici, senza effettivamente rispondere alla chiamata in arrivo limitandosi a leggere l’ ID telefonico; dunque non ha costi di gestione e la parte più impegnativa sul piano economico è il reperimento del cellulare Siemens C/M/S35 . Per il fatto di poter attivare il relè di uscita sia in modo bistabile che monostabile, il dispositivo può essere impiegato non solo come apricancello per condomini, aziende ma anche per l’attivazione a grande distanza di apparati di vario genere. La lista dei numeri abilitati non risiede nel telefono né nella SIM-card ma nella memoria del microcontrollore cui è affidata la gestione dell’intero sistema. Quando il cellulare riceve una telefonata, mediante la propria porta seriale dialoga con il micro comunicandogli il numero telefonico di chi sta chiamando, se questo è tra quelli abilitati, chiude per pochi secondi i contatti del relè. L’unica accortezza è che la persona che telefona non nasconda il proprio numero.

description

Controllo apertura cancello GSM, con siemens S35

Transcript of Controllo apertura cancello GSM

Page 1: Controllo apertura cancello GSM

[email protected] marzo 2010

SIMPLE GSM GATE CONTROL

Il telecontrollo qui proposto è adatto a tutte quelle applicazioni in cui serve un comando sicuro e di basso costo. Questo sistema ha tutte queste qualità perché risponde solo ad alcuni numero telefonici, senza effettivamente rispondere alla chiamata in arrivo limitandosi a leggere l’ ID telefonico; dunque non ha costi di gestione e la parte più impegnativa sul piano economico è il reperimento del cellulare Siemens C/M/S35 . Per il fatto di poter attivare il relè di uscita sia in modo bistabile che monostabile, il dispositivo può essere impiegato non solo come apricancello per condomini, aziende ma anche per l’attivazione a grande distanza di apparati di vario genere. La lista dei numeri abilitati non risiede nel telefono né nella SIM-card ma nella memoria del microcontrollore cui è affidata la gestione dell’intero sistema. Quando il cellulare riceve una telefonata, mediante la propria porta seriale dialoga con il micro comunicandogli il numero telefonico di chi sta chiamando, se questo è tra quelli abilitati, chiude per pochi secondi i contatti del relè. L’unica accortezza è che la persona che telefona non nasconda il proprio numero.

Page 2: Controllo apertura cancello GSM

[email protected] marzo 2010

Cenni alla teoria

Il protocollo usato nei modem GSM per setup e controllo è basato su set di comandi AT. L’ European Telecommunication Standard Institute (ETSI) GSM 07.05 definisce lo standard dell’interfaccia dei comandi AT per i modem GSM compatibili. Da questo documento sono stati selezionati i principali, quelli usati in questa applicazione.

Set di comandi AT

La seguente sezione descrive il set di comandi AT. I comandi possono essere provati connettendo il modem GSM ad una delle porte COM del computer. Si scrive il comando di test, si aggiunge CR (Carriage return => \r) prima di confermare. Un comando AT prevede sempre il prefisso AT+ magari seguito da parametri e il carattere CR (Carriage return) come invio del comando stesso. A volte questo comando avvia una fase di inserimento di dati che si manifesta con un accento circonflesso chiuso. Ad esempio:

• comando di test (ritorna la lista dei parametri per quel comando): AT+CXXX=?<CR>

• comando di lettura (legge i valori impostati per quel comando): AT+CXXX?<CR> • comando di scrittura (imposta i parametri di quel comando): AT+CXXX=<…

…><CR> Elenco comandi più comuni: Comando Descrizione

AT+CGSN Ritorna il codice IMEI del telefono AT+CIMI Ritorna il numero seriale della SIM AT+CGMR Ritorna la versione del sw installato AT+CBC Ritorna il livello di carica batteria (1 – 100) AT+CGMI Ritorna il nome del produttore AT+CGMM Ritorna il modello dell’apparato AT+CHUP Termina la chiamata in corso AT+CPBS Comando per la gestione delle rubriche

Stato AT

Il comando “AT” è un comando di richiesta di stato usato per verificare se un modem compatibile è connesso e che l’interfaccia seriale sta funzionando in modo adeguato.

Page 3: Controllo apertura cancello GSM

[email protected] marzo 2010

Echo off (ATE0)

Il comando “ATE0” è usato per configurare la comunicazione. Di solito i modem GSM sono impostati per restituire ogni comando ricevuto con una conferma, per esempio AT\r // comando inviato AT\r\nOK\r\n //risposta con echo abilitato Dopo l’invio di “AT”, il modem risponde con “AT\r\nOK\r\n”. Con echo off, “ATE0”, il modem avrebbe risposto “\r\nOK\r\n”. Il comando echo off riduce il traffico sulla linea seriale. Il comando “ATE1” riabilita ancora l’eco.

Memoria messaggi predefinita (AT+CPMS)

Il comando “AT+CPMS” seleziona la memoria che sarà utilizzata per salvare, inviare, cancellare, leggere e ricevere i messaggi SMS. I modem più moderi hanno differenti locazioni.

• SM: Sim card • ME: memoria telefono • MT: insieme di tutti le possibili locazioni del telefono (SM,ME, altre). Il telefono

sceglierà la posizione preferita.

Formato Messaggi (AT+CMGF)

Il comando “AT+CMGF” è usato per impostare il formato si ingresso e uscita dei messaggi SMS. Sono disponibili 2 modalità:

• Modalità PDU • Modalità testo semplice

Page 4: Controllo apertura cancello GSM

[email protected] marzo 2010

Lettura Messaggio (AT+CMGR)

Il comando “AT+CMGR” è usato per leggere un messaggio da una data locazione di memoria. L’esecuzione del comando restituisce un dato alla posizione [index] della memoria [M1] (vedi AT+CPMS). Il dato comprendo lo stato e il messaggio vero e proprio compresso in formato PDU. Per recuperare le informazioni, il messaggio deve essere decompresso.

Cancellazione Messaggio (AT+CMGD)

Il comando “AT+CMGD” è usato per cancellare un messaggio ricevuto dalla memoria [M1] (vedi AT+CPMS).

La base di tutto il funzionamento dell’applicazione sta nel messaggio inviato dal modem in caso di chiamata entrante. Viene infatti inviato un segnale di RING, che avverte il terminale della chiamata in ingresso. Un comando aggiuntivo consente di abilitare il “CallerID” ossia quel parametro che consente di vedere il numero del chiamante. Il comando in questione è “AT+CLIP=1” che, se usato in combinazione con “AT+CRC=1” consente di sapere sia il numero che la tipologia di chiamata (fax, voce, dati); un esempio di attività “Ring” con l’identificativo del chiamante attivato è la seguente:

RING +CLIP:+39052556111,154

Questo conclude la breve carrellata dei comandi AT. Nel caso del Siemens S35, i comandi sono stati dapprima testati tramite la porta seriale del PC (RS232) usando un collegamento a 19200 b/s , 8 N 1 e una applicazione di test scritta in Visual Basic 6.0.

Page 5: Controllo apertura cancello GSM

[email protected] marzo 2010

Il formato dei messaggi PDU

Ci sono due modi di inviare messaggi: nella modalità testo semplice e nella modalità PDU (Protocol Description Unit). La modalità predefinita è spesso PDU, e nel caso del Siemens S35 anche l’unica. Nel linguaggio PDU si usano 3 tipi speciali di dato:

• “Octet”: gruppi di 8 bit in codifica esadecimale (0x00=>0xFF). Esempio : E8. • “Semi-Octet”: gruppi di 8 bit informato decimale (0=>153). Esempio 11 • “Septet”: gruppi di 7 bit in formato intero (0=>127). Esempio 126

La stringa PDU non contiene solamente il messaggio, ma anche numerose altre informazioni ed è differente per i messaggi uscenti ed entranti. In questo caso analizziamo un messaggio entrante (quelli gestiti dall’applicazione). +CMGR: 1,,36 0791934329002000040C919343208372290000901142808453401331D98CE68AB966B9190D269BE164B79C0C

Dato Descrizione

07 Numero di “Octets” nell’intestazione : 0x07=7 91 Tipo di numero. 91=> internazionale (+…) 934329002000 Numero centro servizi: +393492200000. I nibble dei byte sono scambiati. Se

la lunghezza del numero è dispari, il nibble non usato è riempito con 0x0F.

Header

04 Primo “Octect” del SMS. Messaggio inviato da centro messaggi 0C Lunghezza del numero : 0x0C= 12 91 Tipo numero. 91 => internazione (+…) 934320837229 Numero del mittente 00 Identificatore protocollo 00 Schema di codifica 90114280845340 Time Stamp “Semi-Octects”: 24/11/09 08:48:35 GMT+1,00 13 Lunghezza del messaggio 0x13= 19

Stringa PDU

31D98CE68… Testo del messaggio codificato (1234.1.393402382791)

Page 6: Controllo apertura cancello GSM

[email protected] marzo 2010

Codifica del messaggio

L’alfabeto GSM predefinito usa 7 bit per rappresentare i caratteri. Il messaggio “hello” consiste in 5 caratteri chiamati “septet” quando sono rappresentati con 7 bit ognuno. La stringa in ”septet” deve essere codificata in una sequenza di “octet” per essere trasferita tramite SMS

Quando si riceve un messaggio una sequenza di “octet” viene restituita dal modem. Per estrapolare le informazioni, serve un metodo di decompressione:

Page 7: Controllo apertura cancello GSM

[email protected] marzo 2010

Un diagramma di flusso di massima potrebbe essere quello suggerito da Vemund Kval Bakken a pagina 8 di ”AVR323: Interfacing GSM modems”

Page 8: Controllo apertura cancello GSM

[email protected] marzo 2010

Schema elettrico e funzionamento

Sebbene sia stato provato con un cellulare Siemens serie 35, il circuito può funzionare anche con i Siemens S25 / S45/ M45 (verificare il connettore alimentazione/dati). Il cuore del sistema è un microcontrollore P16F88 (ma può essere adattato per altri modelli che abbiano almeno 4K di memoria) che svolge tutti i compiti del caso, ossia comunica con il telefonino, memorizza e confronta i numeri telefonici, gestisce il funzionamento del relè di uscita e di carica del GSM. Dopo l’accensione e l’inizializzazione dell linee I/O, il PIC interroga il cellulare mediante il canale TX della porta seriale di quest’ultimo, al fine di chiedergli il proprio codice IMEI, che l’apparecchio invia sul canale RX. Il relè di uscita può lavorare ad impulso, quindi chiudersi per un certo periodo a seguito di una telefonata proveniente da un numero abilitato (monostabile) oppure in modalità bisabile: in questo caso il relè di uscita cambia la propria condizione ad ogni comando ricevuto. Il modo di funzionamento del relè “GATE” si imposta mediante il ponticello “MONO/BI”: aperto => monostabile, chiuso=>bisabile.

Il tempo di attivazione in caso di comando monostabile è preimpostato nel firmware del PIC (MONOSTABLE_ONTIME). Questa impostazione va eseguita prima di alimentare il circuito o di aver premuto il tasto “RESET”. Nel modo bistabile è prevista la funzione di ripristino, nel senso che ogni comando scrive in EEPROM lo stato che il relè “GATE” deve assumere; all’accensione, dopo l’inizializzazione, il microcontrollore legge il rispettivo dato in memoria, in modo che se il dispositivo è stato privato dell’alimentazione quando il relè era attivo, al ritorno della tensione rimette relè “GATE” nella condizione originale. Il relè siglato “BATT” serve a dare al cellulare la corrente per la ricarica della batteria. Viene utilizzato un contatore interno al PIC che prevede di interrompere la carica per 30 secondi ogni circa 12 ore circa, accendendo anche il led “CHG” in modo da segnalare

Page 9: Controllo apertura cancello GSM

[email protected] marzo 2010

l’interruzione di alimentazione alla ricarica. E’ stato utilizzato un relè a bassa tensione (5V) e con una resistenza di bobina di circa 170 Ohm. La corrente di eccitazione quindi essendo dell’ordine di 30mA può essere assorbita da una coppia di Pin del PIC senza problemi (17 e 18); impostando i pin a livello alto la corrente che circola non è sufficiente a mandare in conduzione la bobina, ne consegue che il relè rimane diseccitato e la batteria si può ricaricarsi in quanto collegata al piedino “normalmente aperto”. Quando il livello dei pin 17 e 18 viene impostato a massa, la corrente viene assorbita e il relè, eccitandosi, toglie tensione dalla ricarica. La resistenza R8 serve a limitare ulteriormente la corrente di ricarica. Il resto del circuito è piuttosto semplice e prevede un tasto di RESET per far ripartire il programma sul micro; la parte di alimentazione è esterna al modulo e deve comprendere +5V e +V (questa tensione, anche non stabilizzata viene usata per alimentare il relè “GATE”). Il diodo D2 permette di abbassare la tensione di alimentazione del PIC intorno ai 4,3V in modo da adeguare i livelli di tensione sulla linea RX; allo stesso modo un partitore sulla linea TX permette di ridurre ulteriormente questi 4,3V ad un livello compatibile con i livelli presenti sul connettore del cellulare (0 – 3,6V). Il led “STATUS” è usato con vari significati durante le varie fasi di avvio/esecuzione: normalmente emette 3 lampeggi ogni 10 secondi (verifica della presenza SMS). Il quarzo da 8Mhz permette di avere una velocità adeguata ed una precisione sufficiente per la comunicazione seriale a 19200 b/s: affidabilità non sempre garantita nelle prove con l’oscillatore interno. In fase di avvio, il led “STATUS” lampeggia per circa 1 minuto per dare tempo ad una eventuale prima connessione al cellulare per configurazione; dopodiché si spegne e iniziano 3 lampeggi cadenzati ogni 10 secondi. Se il led rimane accesso la comunicazione con il cellulare non è andata a buon fine. E’ possibile collegare a scopo di debug un terminale RS232 (19200 b/s 8N1) sulle porte 12 e 13 del PIC (segnali TX/RX) Layout su millefiori e realizzazione:

Page 10: Controllo apertura cancello GSM

[email protected] marzo 2010

Impostazione del sistema

Prima di usare il circuito, è necessario predisporre il cellulare: inserendo una SIM valida, disattivando il codice PIN (perché in caso di prolungata assenza dell’alimentazione il telefono deve tornare operativo senza alcun intervento manuale) e cancellando tutti i messaggi in memoria (consultare la guida di riferimento); è bene anche conoscere il numero IMEI del cellulare in quanto sarà richiesto in fase di teleprogrammazione: in questo caso è possibile digitare sul telefono la sequenza: *#06#. La capienza della lista dei numeri abilitati è fissata in 22 numeri telefonici. Inviando messaggi SMS al cellulare con un apposito formato sarà possibile : aggiungere un numero alla lista degli abilitato, cancellare un numero dalla lista. In tutti i casi si manda un messaggio SMS con la seguente sintassi:

1234.c.nnnnnnnnnnnn

• dove 1234 sono le ultime 4 cifre del numero IMEI del cellulare • c è il comando e vale 1 per le aggiunte, 0 per le cancellazioni • nnnnnnnnnnnn è il numero di telefono nella forma

<pref.int.le><pref><numero> es: 390521304019 senza il simbolo + Se il messaggio non è conforme alla sintassi indicata o le prime 4 cifre non corrispondono alla parte finale dell’IMEI il messaggio viene ignorato. Come conferma il telefono invia uno squillo breve in caso positivo o uno squillo lungo in caso negativo. NB questa funzione si basa sul fatto che mediamente per comporre un numero e attendere il primo squillo passano un certo numero di secondi (ONE_RING o TEN_RINGS); ma questo è influenzato anche da altri fattori come la qualità del segnale sia del trasmittente che del ricevitore: tanto maggiore sarà il tempo di composizione/attesa quanto minore la qualità del segnale.

Programma

Il programma è stato scritto in C (mikroC) e riutilizza, per la funzioni della decodifica PDU, i sorgenti di una application-note AVR (vedi file AVRSMS_zip.c). Prevede come sviluppi futuri la possibilità di usare una memoria seriale esterna tipo 24LCXXX al posto della EEPROM del PIC (vedi file Memory.c). La comunicazione col telefono avviene principalmente attraverso 2 procedure “GET_Data” e “GET_Data_TimeOut”; entrambe utilizzano un buffer di massimo 55

caratteri “CmdBuf” che viene sovrascritto ogni volta. La prima è bloccante e attende la

ricezione di un numero n di caratteri <cr>, la seconda, non bloccante, attende fino ad un determinato intervallo di tempo (“max_timeout_USART” circa 40ms). Il buffer non è

sufficiente per contenere tutta la stringa PDU dell’SMS, ma in caso di ricezione di un messaggio, viene conservato in “TelNoSender” il numero del mittente per dare una

segnalazione (tramite squillo) dell’avvenuta operazione. Per trasmettere i comandi al telefono viene usata la funzione “PUT_Data”, la quale

preleva dalla ROM una stringa e la scrive sulla usart harware.

Page 11: Controllo apertura cancello GSM

[email protected] marzo 2010

La funzione “DecodeIMEI” si occupa di estrarre dal buffer di ricezione il numero IMEI e

conservare nella variabile “this_IMEI” gli ultimi 4 caratteri numerici (in modo da

confrontarli con i primi 4 caratteri dell’SMS ricevuto). La funzione “Buffer_Contain” si occupa di verificare se all’interno del buffer di

ricezione è presente una sequenza di caratteri tipica di una risposta ad un certo comando La funzione “DecodeRING” si occupa di estrarre dal buffer di ricezione il numero del

chiamante e inserirlo nell’array “BCDNo” in formato BCD per occupare meno spazio; è in

grado anche di interrompere la chiamata usando il comando “AT+CHUP\r”.

La funzione “DecodeMESS” si occupa di estrarre dal buffer di ricezione il messaggio,

controllando la codifica con i primi 4 caratteri dell’IMEI , il comando (aggiunta , cancellazione) e il numero del telefono da aggiungere alla lista La funzione “SMSFeedback” si occupa di dare una messaggio squillo corto/lungo a chi

invia il messaggio di teleaggiornamento La funzione “ONOFF_Pin” si occupa di commutare il relè a seconda della impostazione

(monostabile/bistabile) Il loop principale è così composto

1. GET_Data_TimeOut 2. ci sono elementi nel buffer ? Decode_RING C’è un numero chiamante ? Il numero è nell’elenco abilitato ? OnOff_PIN 3. Decrementa contatore timer SMS 4. Timer SMS a zero ? Imposta contatore SMS a valore inziale Leggi SMS alla posizione 1 Decrementa Timer batteria SMS valido ? Comando aggiungi ? Se non già in lista, aggiungi numero, dai feedback Comando cancella ? Se già in lista, elimina dalla lista

Cancella SMS Timer batteria a zero ? Gestisci batteria

Page 12: Controllo apertura cancello GSM

[email protected] marzo 2010

Pinout connettore

Applicable to A/C/S/M/SL, 4x, x25, x35,

Pin Name Dir Description

1 GND - Ground

2 SELF-SERVICE

in/out Recognition/control battery charger

3 LOAD in Charging voltage

4 BATTERY out Battery (S25 only)

5 DATA OUT (TX)

out Data sent

6 DATA IN (RX)

in Data received

7 Z_CLK - Clock line for accessory bus. Use as DCD In data operation

8 Z_DATA - Data line for accessory bus. Use as CTS in data operation

9 MICG - Ground for microphone

10 MIC in Microphone input

11 AUD out Loudspeaker

12 AUDG - Ground for external speaker

Le righe evidenziate sono quelle usate in questa applicazione.

Page 13: Controllo apertura cancello GSM

[email protected] marzo 2010

Alimentatore

un semplice alimentatore universale può essere realizzato seguendo il classico schema per il 317 (tratto da Nuova Elettronica)

R2A R2B sono state sostituite da un trimmer da 2.2K

Page 14: Controllo apertura cancello GSM

[email protected] marzo 2010

Schemi millefori

Lato componenti

Lato rame