GSM – Come collegare il modulo TELIT GM862 al PICMICRO

GSM Telit862 e PICmicro

Come collegare il modulo TELIT GM862 al PICMICRO.

L’applicazione usa il collegamento tra la UART del PIC e la UART del TELIT tramite Level Shifter (realizzato con 2 transistor NPN-PNP) per adattare i segnali a 5V del micro con quelli a 2V8 del modulo. Si potevano anche usare dei BCR22PN ad esempio oppure un 74HC125 per trasferire i segnali da 2V8 –> 5V mentre da 5V–> 2V8 un diodo in serie con il catodo verso i 5V ed una resistenza di pullup tra anodo e 2V8 (in uscita dal PowerControl del modulo).
In generale per il Level Shifter si possono usare anche dei CMOS buffer come il 4049 (invertente) e il 4050 (non invertente).

Inoltre l’alimentazione del Modulo Telit è stata realizzata con un regolatore ADJ (LM350) con 3V8 di uscita in grado di supportare (tramite i condensatori) la corrente di picco richiesta dal modulo in fase aggancio rete.

Altre alternative di alimentazione sono: Alimentatore switching o Alimentatore economico con [(5V) (2 DIODI) (3V6)] ma in quest’ultimo caso la capacità del condensatore sull’alimentazione del modulo è determinante… almeno 2200uF

Schema elettrico collegamento TelitGM862 – Picmicro
pic2gm862.png

Schema elettrico pic2gm862.pdf

Inizializzazione del modulo TELIT GM862 realizzata con MPLAB C18 Microchip quindi C

Il PIc è collegato al GM862 tramite la UART, in modo da poter utilizzare la funzione putrsUSART();
(fare riferimento al manuale del C18 scaricabile dal sito microchip).

Una volta acceso invio il comando AT, considerando che il GM862 è in autobaude per default,
poi disabilito l’autobaude, settando il baude-rate che preferisco.

Posso anche disabilitare l’echo, per evitare di occupare troppa ram durante la risposta quindi avere un buffer di ricezione minore.

Setto come attivo l’identificativo del chiamante,quindi posso vedere il numero di chi chiama.

Attivo la presentazione estesa degli errori, quindi posso controllare il tipo di errore tramite il manuale GM862 Telit.

Setto il formato dell’sms (text o pdu), vivamente consigliato text altrimenti dobbiamo fare la routine di conversione

Disabilito i messaggi non richiesti (unsolecited) quando ricevo un sms (se non uso questa funzione ovviamente).

Attivo la SIM come dispositivo di memorizzazione della rubrica, quindi uso la rubrica della SIM

//———————————————————————————
// Telit GM862 initialize C18
//———————————————————————————
setup_gm862:
gm_POWER_ON(); // accendi il modulo telit e verifica accensione, else ri-accendi
// autobaud
lungh = 0; // reset ram pointer
putrsUSART ((const far rom char *)”AT\r”); // AT command test
Delay10KTCYx (50); // response: AT
// set_baud
lungh = 0; //
putrsUSART ((const far rom char *)”AT+IPR=9600\r”);// set_baude_rate 300,1200,2400,4800,9600,19200……
Delay10KTCYx (50); // response: OK
// disable_echo
lungh = 0;
putrsUSART ((const far rom char *)”ATE=0\r”); // Disable echo command
Delay10KTCYx (50); // response: OK
// caller_id
lungh = 0;
putrsUSART ((const far rom char *)”AT+CLIP=1\r”); // Set CALLER ID; 1=on
Delay10KTCYx (10); // response: OK
// error_code
lungh = 0;
putrsUSART ((const far rom char *)”AT+CMEE=1\r”); // Enable extended error code ; 1 =numeric
Delay10KTCYx (10); // response: OK
// sms_format
lungh = 0;
putrsUSART ((const far rom char *)”AT+CMGF=1\r”); // SMS format type; 1=text
Delay10KTCYx (10); // response: OK
// unsolecit_ind
lungh = 0;
putrsUSART ((const far rom char *)”AT+CNMI=0,0,0,0,0\r”); // DISABLE New message unsolecited indication +CMTI
Delay10KTCYx (10); // OK
// storage_set
lungh = 0;
putrsUSART ((const far rom char *)”AT+CPBS=\”SM\”\r”); // AT+CPBS=”SM” setta phonebook normal SIM
Delay10KTCYx (50);

//———————————————————————————-

Inizializzazione del modulo TELIT GM862 realizzata con MPLAB MPASM Microchip quindi ASSEMBLER
Il PIC è collegato al GM862 tramite la UART
Trasmette con la routine TransWt e riceve sotto Interrupt (ISR) presentando i dati nella RAM
quindi verrà resettato il puntatore FSR=0xA0 (nell’esempio viene anche cancellata la ram)

Da notare che nel listato ci sono alcune verifiche della risposta OK (check_ok)

;======================================================
; Telit GM862 initialize ASM
;======================================================
setup
call clear_ramA0 ; cancella ram da A0h a EFh e da 120h a 14Fh preset FSR=0xA0
call at ; at_command
call clear_ramA0
call _ipr ; fix port rate @ 9600

call clear_ramA0
call ate ; Disable command echo

call clear_ramA0
call _clip ; Enable calling line identification
call check_ok ; verify OK
SKPZ ; Z=1 OK
goto setup1 ; error –> no_ok spegni e riaccendi il modulo!

call clear_ramA0
call _cmee ; Enable extended error code =1 numeric
call clear_ramA0
call _cpin ; SIM presence checking (PIN free) READY
call clear_ramA0
call _creg ; Network checking x,1 (home) or x,5 (roaming)

call clear_ramA0
call _cmgf ; SMS format type 1=text
call clear_ramA0
call _csca ; Check SMS Center Service number
call clear_ramA0
call _cnmi ; DISABLE New message unsolecited indication +CMTI:

call clear_ramA0
call _fclass ; AT+FCLASS=8 Attiva Voice mode

call clear_ramA0 ; Set TEXT mode parameters
call _csmp ; 17,167,0,0
call check_ok ; verify OK
SKPZ ; Z=1 OK
goto setup1 ; error –> no_ok spegni e riaccendi il modulo!

setup2
call clear_ramA0
call _cpbs ; AT+CPBS=”SM” setta phonebook normal SIM
call check_ok ; verify OK
SKPZ ; Z=1 OK
goto setup2 ; error –> no_ok loop

;#####################################################

ESEMPIO DI ROUTINE DI COMANDO PER TELIT GM862

Di seguito propongo un esempio di come può essere effettuata una routine di invio comando AT
Il tempo di 500mS finale serve per attendere la risposta e permette di effettuare poi un altro invio.
Ovviamente può essere ridotto, o meglio posso monitorare la risposta e regolarmi poi di conseguenza
Risposta OK –> Continua
Risposta Errata –> analisi errore –> gestione errori

;————————————————————————
; ESEMPIO DI ROUTINE DI COMANDO PER TELIT GM862
;
; AT COMMAND
; AT+CPBS=”SM”
;————————————————————————
_cpbs

movlw ‘A’
call TransWt
movlw ‘T’
call TransWt
movlw ‘+’
call TransWt
movlw ‘C’
call TransWt
movlw ‘P’
call TransWt
movlw ‘B’
call TransWt
movlw ‘S’
call TransWt
movlw ‘=’
call TransWt
movlw ‘”‘
call TransWt
movlw ‘S’
call TransWt
movlw ‘M’
call TransWt
movlw ‘”‘
call TransWt

movlw .13 ;
call TransWt

call t500ms
return

;——————————————————————————–

Risorse
Si consiglia di leggere anche il seguente Post:
UTILIZZARE IL VECCHIO TELEFONINO AL POSTO DEL MODULO GSM [per uso hobbistico]
Troverete un Progetto completo per realizzare un telecontrollo con il vostro vecchio telefonino e molti links a progetti simili che utilizzano telefonini diversi.

Panoramica sulle case costruttrici di moduli GSM

TELIT Moduli GSM/GPRS QuadBand anche con GPS integrato ed in formato BGA

SIEMENS Moduli GSM/GPRS Triband anche con GPS integrato, moduli EDGE quadband. Interfacce SPI and I2C

WAVECOM Moduli GSM e GPS tracking. Interessante la suite Open AT

SONY-ERICCSON Moduli GSM/GPRS EDGE e per il GPS tracking

Links utili

Documentazione GM862 sito TELIT

Documentazione GM862 sito RoundSolutions

Leggere l’articolo su EE01 modulo telit + PIC

DISTRIBUTORE modulo GM862

DISTRIBUTORE modulo GM862

Sito ufficiale del modulo GSM della Telit

Il Forum di riferimento per chi sviluppa con moduli Telit

Ricevitore SMS. Utilizzabile anche come DemoBoard per collegare il GM862 al PC

Apricancello GSM. Esempio di applicazione con PIC e GM862

Tutto sul…mondo GSM

Le specifiche ufficiali del protocollo

Per NON perdersi nel sito ETSI

STAMPA     Tags:, , ,

25 Comments

  1. Emanuele 29 maggio 2007
  2. Emanuele 6 gennaio 2007
  3. Emanuele 6 gennaio 2007
  4. volcane 29 maggio 2007
  5. volcane 14 maggio 2007
  6. Emanuele 28 maggio 2007
  7. Emanuele 30 settembre 2007
  8. volcane 8 gennaio 2007
  9. Emanuele 8 gennaio 2007
  10. Elena 19 febbraio 2008
  11. Emanuele 21 febbraio 2008
  12. Emanuele 12 maggio 2007
  13. Emanuele 29 marzo 2007
  14. Emanuele 9 gennaio 2007
  15. Emanuele 29 marzo 2007
  16. Emanuele 7 gennaio 2007
  17. otsuaf 26 settembre 2007
  18. davide dalla pozza 20 aprile 2009
  19. Emanuele 8 dicembre 2011
  20. Emanuele 8 dicembre 2011
  21. Giovanni123 5 febbraio 2009
  22. Emanuele 11 febbraio 2009
  23. fra83 10 giugno 2009
  24. Emanuele 15 settembre 2009
  25. Emanuele 7 aprile 2010

Leave a Reply

Vuoi leggere un articolo Premium GRATIS?

RFID: un acronimo mille possibilità