DETTAGLI UNITA' REMOTA GSM AUDIO/VIDEO CON MODULO GM862-PCS (TOP05)
Tutti i documenti relativi al Top Project sono contenuti in un file ZIP da 5,257 Mb.
 
Una una volta scaricato e decompresso tale file, saranno disponibili tre cartelle con i dettagli hardware/software del progetto ed un file PDF contenete tutte gli articoli con la descrizione di cui presentiamo l'anteprima:
All'interno della cartella CS sono presenti i master del circuito di cui riportiamo un'anteprima:
All'interno della cartella datasheet sono presenti i manuali completi sia del modulo Telit che della telecamera.
 
All'interno della cartella firmware è presente il programma col quale è stato programmato il microcontrollore che gestisce tutto il dispositivo. Sono presenti sia il file .hex che il file .bas di cui forniamo l'anteprima:
 
'***************************************************
'* MF535
'* Video GSM
'* Si basa su cellulare telit GM862
'* Il sistema è basato su un PIC16F876 lavorante a 20 MHz
'* Ultimo aggiornamento 21/02/2004 

'******************************************************************************

DEFINE OSC 20

DEFINE DEBUG_REG PORTB
DEFINE DEBUG_BIT 5
DEFINE DEBUG_BAUD 9600  
DEFINE DEBUG_MODE 0  

'Configurazione usart 9600
DEFINE HSER_RCSTA 90h 
DEFINE HSER_TXSTA 20h
DEFINE HSER_BAUD 9600
DEFINE HSER_CLROERR 1 'Hser clear overflow automatically 

@		DEVICE HS_OSC
@		DEVICE BOD_OFF

SYMBOL	INC      =PORTC.0		'Ingresso di allarme a contatto
SYMBOL	INV      =PORTC.1		'Ingresso di allarme a tensione
SYMBOL	MOV      =PORTA.3		'Ingresso di allarme su movimento
SYMBOL	PIR      =PORTA.2		'Ingresso di allarme PIR
SYMBOL	POWERLT  =PORTA.1		'Alimentazione regolatore 
SYMBOL	POWERGSM =PORTC.4		'ON/OFF GSM
SYMBOL	RESET    =PORTC.5		'RESET GSM
SYMBOL	RING     =PORTB.1		'RING GSM
SYMBOL	LEDGSM   =PORTB.0		'Status led GSM
SYMBOL	LEDV     =PORTC.2		'LED VERDE
SYMBOL	LEDR     =PORTC.3		'LED ROSSO
SYMBOL	P1       =PORTA.5		'PULSANTE



Input	INC 
Input	INV 
Input	MOV
Input	PIR
Input	RING
Input	LEDGSM
Output	POWERLT
Output	POWERGSM
Output	RESET
Output	LEDV
Output	LEDR

TMP             VAR     BYTE
TMP1            VAR     BYTE
TMP2            VAR     BYTE
TMP3            VAR     BYTE
TMP4            VAR     BYTE
ERR1            VAR     BYTE
ERR2            VAR     BYTE
FOTO            VAR     BYTE
ABILITATO       VAR     BYTE
SMS             VAR     BYTE[80]
MITT            VAR     BYTE[20]
LUNMITT         VAR     BYTE
LUNSMS          VAR     BYTE
FRASE           VAR     BYTE
TIME            VAR     WORD
GEST            VAR     BYTE
NUMERO          VAR     BYTE
FOTOABILITATA   VAR     BYTE
SMSABILITATO    VAR     BYTE
PIRABILITATO    VAR     BYTE
MOVABILITATO    VAR     BYTE
AUXABILITATO    VAR     BYTE
RESETTARE       VAR     BYTE
TENTATIVI       VAR     BYTE
MESSAGGIO        VAR     BYTE


LOW RESET
LOW POWERGSM
LOW POWERLT
PAUSE 1000


Clear


ADCON0=0
ADCON1=7
OPTION_REG.7=1	'DISAbilita resistenze di pull-up

EEPROM 200,[1]          'NELLA POSIZIONE 100 METTO SE IL DISPOSITIVO DEVE ESSERE ABILITANO O NO (SI)
EEPROM 201,[0,0,1]      'tempo di inibizione 1 minuto
EEPROM 205,[0]          'PRESENZA NUMERO ABILITATO
EEPROM 206,[1]          'FOTO ABILITATA
EEPROM 207,[1]          'SMS ABILITATO
EEPROM 208,[0]          'PIR DISABILITATO
EEPROM 209,[0]          'MOV DISABILITATO
EEPROM 210,[1]          'AUX DISABILITATO
EEPROM 220,[0]          'NUMERO DI TENTATIVI DI FARE LA FOTO
EEPROM 225,[0]          'messaggio di allarme


High LEDR
LOW LEDV

For TMP1=0 TO 5
	Toggle LEDR
	Pause 500
Next TMP1
Low LEDR

WRITE 7,1
IF INC=0 THEN
    WRITE 7,0 
ENDIF

WRITE 8,1
IF INV=0 THEN
    WRITE 8,0
ENDIF

GOTO START
RIAVVIA:
LOW POWERLT
PAUSE 5000
'LOW LEDR
'HIGH LEDV
'GOSUB ON_OFF

'PAUSE 15000

START:
DEBUG  "Sistem startup v4.2",13,10


LOW  LEDR
HIGH LEDV
GOSUB ON_OFF
low  LEDV

CLEAR



TIME=2
TMP1=0


RESETUP:
FOR TMP=1 TO 16    
    TOGGLE LEDV
    TOGGLE LEDR
    PAUSE 500
NEXT TMP
high LEDV
LOW LEDR

SETUP:


DEBUG " SETUP ",#TMP1,10,13
TMP1=TMP1+1
IF TMP1>5 THEN
    GOTO start
ENDIF

'PAUSE 2000

'HSEROUT ["AT&F",13]
'HSERIN 2000,SETUP,[wait ("OK")]


'DEBUG "AT OK ",10,13
PAUSE 2000
HSEROUT ["AT&F",13]
HSERIN 3000,RESETUP,[wait ("OK")]

PAUSE 2000

HSEROUT ["AT+CMGF=1",13]
HSERIN 2000,RESETUP,[wait ("OK")]

PAUSE 1000

HSEROUT ["AT+GMR",13]
HSERIN 2000,RESETUP,[wait ("OK")]

PAUSE 1000

HSEROUT ["AT#CAP=1",13]
HSERIN 2000,RESETUP,[wait ("OK")]

PAUSE 1000

HSEROUT ["AT+CGDCONT?",13]
HSERIN 2000,RESETUP,[wait ("OK")]

PAUSE 1000

'HSEROUT ["AT#PASSW?",13]
'HSERIN 2000,RESETUP,[wait ("OK")]

'PAUSE 1000


HSEROUT ["AT+CLIP=1",13]
HSERIN 2000,RESETUP,[wait ("OK")]

'DEBUG "TEXT OK ",10,13
PAUSE 1000


HSEROUT ["AT#CAMOFF",13]
HSERIN 2000,RESETUP,[wait ("OK")]
'DEBUG "CAMERA SPENTA",10,13
PAUSE 1000

TMP1=0
HSEROUT ["AT+CGSN",13]
HSERIN 2000,RESETUP,[SKIP 5,TMP]
while TMP<>13
    hserin 10000,RESETUP,[TMP]
    sms[tmp1]=TMP
    tmp1=tmp1+1
    DEBUG TMP
wend
DEBUG "IMEI  -> ",str sms \TMP1,13,10 

FOR TMP=0 TO 5
    TMP2 = TMP1-6+TMP
    WRITE TMP,SMS[TMP2]
    PAUSE 10
NEXT TMP
    
    DEBUG "IMEI "
FOR TMP=0 TO 5
    READ TMP,TMP1
    DEBUG TMP1
NEXT TMP
PAUSE 500

tmp=0






main:


PAUSE 500

GOSUB LEGGISMS
GOSUB CHIAMATA

read 225,messaggio
IF MESSAGGIO=1 THEN
    write 225,0
    GOSUB GESTSMS
ENDIF

IF TIME>4THEN
    TIME=TIME-2
ENDIF


HIGH LEDV
'LOW LEDR


DEBUG "time ",#TIME,13,10        

FOR TMP4=0 TO 150

IF P1=0 THEN           'DA METTERE
'IF TMP4=100 THEN        'DA TOGLIERE
'    WRITE 220,3     'SCRIVO CHE DEVO FARE 3 TENTATIVI DI INVIO FOTO
    GOTO SCATTAFOTO
ENDIF

IF FOTO=1 THEN
    WRITE 220,3     'SCRIVO CHE DEVO FARE 3 TENTATIVI DI INVIO FOTO
    GOTO SCATTAFOTO
ENDIF

PAUSE 1

READ 200,ABILITATO
READ 7,TMP2                 
READ 8,TMP3
READ 208,PIRABILITATO
READ 209,MOVABILITATO
READ 210,AUXABILITATO
'READ 220,TENTATIVI

'IF TENTATIVI>1 THEN        
'    TENTATIVI=TENTATIVI-1   'DECREMENTO I TENTATIVI
'    WRITE 220,TENTATIVI
'    GOTO SCATTAFOTO
'ENDIF




    IF (((INC<>TMP2 OR INV<>TMP3)AND AUXABILITATO=1) OR (MOV=0 AND MOVABILITATO=1) OR (PIR=1 AND PIRABILITATO=1) ) AND TIME<5 AND ABILITATO=1 THEN

    WRITE 220,3     'SCRIVO CHE DEVO FARE 3 TENTATIVI DI INVIO FOTO
    
    write 225,1
    
'DEBUG "INC ",#INC," - TMP2 ",#TMP2,10,13
'DEBUG "INV ",#INV," - TMP3 ",#TMP3,10,13
'DEBUG "AUXAB ",#AUXABILITATO,10,13
'DEBUG "MOV ",#MOV," - MOVAB ",#MOVABILITATO,10,13
'DEBUG "PIR ",#PIR," - PIRAB ",#PIRABILITATO,10,13
'DEBUG "AB ",#ABILITATO,10,13
        
        
        
            IF TIME<>1 THEN
                TIME=0
                    READ 201,TMP
                    TIME=TIME+(TMP*100)
                    'debug "time1 ",#time,10,13
                    READ 202,TMP
                    TIME=TIME+(TMP*10)
                    'debug "time2 ",#time,10,13
                    READ 203,TMP
                    TIME=TIME+TMP
                    'debug "time3 ",#time,10,13
                    TIME=TIME*60
 '                   debug "time ",#time,10,13
            ELSE
                TIME=2
            ENDIF  
            
        READ 206,FOTOABILITATA                    
              
        IF FOTOABILITATA=1 THEN
    
            TMP2=0
    
    SCATTAFOTO:

            DEBUG "TENTATIVI ",#TENTATIVI,10,13
            FOTO = 0 
            TMP2=TMP2+1
            IF TMP2>10 THEN GOTO main
        
                DEBUG "SCATTAFOTO",10,13
                HIGH LEDR
                LOW LEDV
                pause 500
    
'    GOTO MAIN   '**** DA TOGLIERE
                HSEROUT ["AT#CAMON",13]
                HSERIN 2000,SCATTAFOTO,[wait ("OK")]
                pause 20

                HSEROUT ["AT+CREG?",13]                
                HSERIN 2000,SCATTAFOTO,[wait ("+CREG: "),TMP,TMP1,TMP1]
                PAUSE 100
                IF TMP="0" AND TMP1="1" THEN
                    DEBUG "REG",10,13
                ELSE
                    DEBUG "NON REG",10,13
                    for tmp=1 to 5
                        toggle ledv
                        low ledr
                        pause 1000

                    next tmp
                        
                    GOTO SCATTAFOTO
                ENDIF
                
                HSEROUT ["AT+CGATT?",13]                
                HSERIN 2000,SCATTAFOTO,[wait ("+CGATT: "),TMP1]
                PAUSE 100
                IF TMP1="1" THEN
                    DEBUG "GPRS REG",10,13
                ELSE
                    DEBUG "GPRS NON REG",10,13
                    PAUSE 1000
                   ' HSEROUT ["AT+CGATT=1",13]  
                   ' PAUSE 1000
                    for tmp=1 to 5
                        toggle ledr
                        low ledv
                        pause 1000
                        IF P1=0 THEN
                            HIGH LEDR
                            GOTO FAIFOTO
                        ENDIF
                    next tmp
                    GOTO SCATTAFOTO
                ENDIF
                
                HSEROUT ["AT#MONI",13] 
                
                PAUSE 1000
                
                HSEROUT ["AT+CSQ",13] 
                
                PAUSE 1000
    
FAIFOTO:
    
                'DEBUG "CAMERA OK ",10,13
                
                PAUSE 1000                   
    
                'DEBUG "SCATTO LA FOTO..",10,13
                HSEROUT ["AT#TPHOTO",13]
'                HSERIN 10000,RIAVVIA,[TMP]
                HSERIN 5000,SCATTAFOTO,[wait ("K")]
                DEBUG "FATTA...",10,13
                high ledv
                
                PAUSE 1000
                HSEROUT ["AT#CAMOFF",13]
                HSERIN 2000,SCATTAFOTO,[wait ("OK")]
                DEBUG "SPENTA",10,13
                pause 2000
                
                'HSEROUT ["AT#SKTRST",13]
                'HSERIN 2000,SCATTAFOTO,[wait ("OK")]
                'DEBUG "RESET SOK",10,13
                'pause 2000

'    GOTO MAIN   '**** DA TOGLIERE
    
                TMP2=0
    INVIAFOTO:              
           
    	    HIGH LEDV
                TMP2=TMP2+1
                IF TMP2=10 THEN GOTO continua
                

    
                DEBUG "INVIAFOTO",10,13
     '               HSEROUT ["AT#EADDR=",34,"MAGMA78@VODAFONE.IT",34,13]
     '               HSEROUT ["AT#EADDR=",34,"3200109484@WIND.IT",34,13]
     
                    HSEROUT ["AT#USERID=",34]
                    for tmp=130 to 160
                        READ TMP,TMP1
                        IF tmp1<>"#" THEN
                            HSEROUT [TMP1]
                        ELSE
                            HSEROUT [34,13]
                            TMP=250
                        ENDIF
                    NEXT TMP
                    HSERIN 10000,INVIAFOTO,[wait ("OK")]
                    PAUSE 1000
                    
                    HSEROUT ["AT#USERID?",13]
                    PAUSE 2000
                    
                    HSEROUT ["AT#PASSW=",34]
                    for tmp=160 to 170
                        READ TMP,TMP1
                        IF tmp1<>"#" THEN
                            HSEROUT [TMP1]
                        ELSE
                            HSEROUT [34,13]
                            TMP=250
                        ENDIF
                    NEXT TMP
                    HSERIN 10000,INVIAFOTO,[wait ("OK")]
                    PAUSE 1000
                    
                    
                    HSEROUT ["AT#EADDR=",34]
                    FOR TMP=130 TO 200
                        GOSUB ESTRAPOLA                     
                    NEXT TMP
                    READ 9,GEST
                    SELECT CASE GEST
                        CASE 1
                            HSEROUT ["@TIM.IT",34,13]
                        CASE 2
                            HSEROUT ["@VODAFONE.IT",34,13]
                        CASE 3
                            HSEROUT ["@WIND.IT",34,13]
                    END SELECT
                        
                    
     '               HSEROUT ["AT#EADDR=",34,"ALLARME",34,13]
                    HSERIN 2000,INVIAFOTO,[wait ("OK")]
    
                    DEBUG "EMAIL OK ",10,13
                    PAUSE 500
    
            '        HSEROUT ["AT#ESMTP=",34,"MAIL.POSTA.TIM.IT",34,13]     'ATTENZIONE TOLTO
            '        HSERIN 2000,INVIAFOTO,[wait ("OK")]
    
                    HSEROUT ["AT#ESMTP=",34]
                    FOR TMP=100 TO 200
                        GOSUB ESTRAPOLA                     
                    NEXT TMP
                    HSEROUT [34,13]
                    HSERIN 2000,INVIAFOTO,[wait ("OK")]
                    DEBUG "SMTP OK ",10,13
    
    
            '        HSEROUT ["AT#SEMAIL=",34,"BORIS.LANDONI@FUTURANET.IT",34,",",34,"FOTO",34,",1",13]
                    PAUSE 1000  
                    HSEROUT ["AT#SEMAIL=",34]
                    FOR TMP=10 TO 50
                        GOSUB ESTRAPOLA                     
                    NEXT TMP
                    HSEROUT [34,",",34,"FOTO",34,",1",13]
            
            
                    PAUSE 1000
                    HSEROUT ["ALLARME",26]
                    'HSEROUT ["A",26]
                    DEBUG "INVIO IN CORSO",10,13
            '        PAUSE 20000
            '        DEBUG "PASSATI 20 SEC",10,13
                    HSERIN 60000,attendi,[wait ("O"),TMP]
                    'DEBUG "TMP ",TMP,13,10
                    IF TMP = "R" THEN 
                        GOTO INVIAFOTO
                    ENDIF
                    GOTO INVIATA
    attendi:        
                    DEBUG "ATTENDI",10,13
                    HSERIN 60000,attendi2,[wait ("O"),TMP]
                    'DEBUG "TMP ",TMP,13,10
                    IF TMP = "R" THEN 
                        GOTO INVIAFOTO
                    ENDIF
                    GOTO INVIATA
    attendi2:                    
                    DEBUG "2",10,13                    
                    HSERIN 60000,attendi3,[wait ("O"),TMP]
                    'DEBUG "TMP ",TMP,13,10
                    IF TMP = "R" THEN 
                        GOTO INVIAFOTO
                    ENDIF
                    GOTO INVIATA
                    
    attendi3:                    
                    DEBUG "3",10,13                    
                    HSERIN 60000,INVIAFOTO,[wait ("O"),TMP]
                    'DEBUG "TMP ",TMP,13,10
                    IF TMP = "R" THEN 
                        GOTO INVIAFOTO
                    ENDIF
    inviata:
                    DEBUG "INVIATA",10,13     
                    PAUSE 5000
                    
                    WRITE 220,0     'SCRIVO CHE DEVO NON DEVO PIù INVIARE LA FOTO PERCHè è ANDATA
                    
                    RESETTARE=1
                    
                    
                    
                    
        ENDIF
        
continua:
        
        IF RESETTARE=1 THEN
            RESETTARE=0
                    HSEROUT ["ATZ",13]
                    PAUSE 3000
                    DEBUG "reset hwd",10,13
                    low ledv
                    high reset
                    pause 200
                    low reset
                    for tmp=0 to 30
                        toggle ledr
                        pause 1000
                    next tmp
                    DEBUG "fine reset",10,13
                    low ledr
                    tmp1=0
                    
            goto resetup
            
        ENDIF

    ENDIF
NEXT TMP4

LOW LEDV

        HSEROUT ["AT+CMGL=",34,"ALL",34,13]
        HSERIN 10000,RIAVVIA,[TMP]
        DEBUG "TMP dopo cmgl ",TMP,13,10
        hserin 500,MAIN,[WAIT ("+CMS ERROR"),tmp]
        
        DEBUG "riavvio ",tmp,13,10
        
'        DEBUG STR SMS\15
        GOTO RIAVVIA
    
       
goto main


ESTRAPOLA:

            READ TMP,TMP1
            PAUSE 5
            IF TMP1<>"#" THEN
                HSEROUT [TMP1]
            ELSE
                TMP=250
            ENDIF  

RETURN


GESTSMS:

DEBUG "GESTSMS  ",13,10

        READ 205,NUMERO
        READ 207,SMSABILITATO
        IF SMSABILITATO=1 AND NUMERO=1 THEN
            FOR TMP=170 TO 200
                READ TMP,TMP2
                IF TMP2="#" THEN
                    LUNMITT=TMP-171
                    TMP=222

                ELSE
                    MITT[TMP-170]=TMP2
                ENDIF
            NEXT TMP
            FRASE=6
            DEBUG "LUNMITT  ",#LUNMITT,13,10
            GOSUB INVIOSMS
        ENDIF


RETURN



INVIOSMS:


  
  PAUSE 2000


                        
            HSEROUT ["AT+CMGS="]
            FOR TMP=0 TO LUNMITT
               HSEROUT [MITT[TMP]]
            NEXT TMP
           'PAUSE 1000
            HSEROUT [13]
           
            PAUSE 1000

'            str MITT \LUNMITT
            
       SELECT CASE FRASE
        CASE 1
            HSEROUT ["IMPOSTAZIONE CORRETTA",13]            
        CASE 2
            HSEROUT ["IMPOSTAZIONE NON CORRETTA",13]            
        CASE 3
            READ 200,TMP
            HSEROUT ["ALLARME ",13]
            IF TMP=1 THEN
                HSEROUT ["ABILITATO",13] 
            ELSE
                HSEROUT ["DISABILITATO",13] 
            ENDIF
        CASE 4
            HSEROUT ["IL NUMERO ",13]
            FOR TMP=170 TO 200
                        READ TMP,TMP2
                        IF TMP2="#" THEN
                            TMP=222
                        ELSE
                            HSEROUT [TMP2]
                        ENDIF
            NEXT TMP
            HSEROUT [" E' STATO ABILITATO.",13] 
        CASE 5
            HSEROUT ["IL NUMERO E' STATO DISABILITATO",13] 
        CASE 6
            HSEROUT ["ALLARME ATTIVO",13]
        CASE 7
            READ 208,PIRABILITATO
            READ 209,MOVABILITATO
            READ 210,AUXABILITATO
        
            HSEROUT ["SENSORE PIR "]
            IF PIRABILITATO=1 THEN
                HSEROUT ["ABILITATO",13]
            ELSE
                HSEROUT ["DISABILITATO",13]
            ENDIF
            HSEROUT ["SENSORE DI MOVIMENTO "]
            IF MOVABILITATO=1 THEN
                HSEROUT ["ABILITATO",13]
            ELSE
                HSEROUT ["DISABILITATO",13]
            ENDIF
            HSEROUT ["SENSORI AUSILIARI "]
            IF AUXABILITATO=1 THEN
                HSEROUT ["ABILITATI",13]
            ELSE
                HSEROUT ["DISABILITATI",13]
            ENDIF
        END SELECT

        PAUSE 1000
        hserout [26]

        PAUSE 15000
'        hserin 10000,EXIT4,[wait("CMG"),TMP]
'        DEBUG "TMP RICEVUTO SULL'OK  ",TMP,13,10
'        IF TMP="S" THEN
'            DEBUG "SOK",13,10
'            pause 3000   
 '       ENDIF
        
'EXIT4:

RETURN

LEGGISMS:
        

        
        
'AT+CMGL="REC UNREAD"
'OK
'AT+CMGL="REC UNREAD"
'+CMGL:  5,"REC UNREAD","+393355760939"
'Ciao+africa
'OK
DEBUG "LEGGI SMS",10,13
        HSEROUT ["AT+CMGL=",34,"ALL",34,13]
'        HSEROUT ["AT+CMGL=",34,"ALL",34,13]
        hserin 800,EXIT,[SKIP 10, wait(34,",",34),TMP]
'        hserin 1000,EXIT,[SKIP 10, wait(13,10),TMP]

        MITT[0]=TMP
        LUNMITT=1
        HIGH LEDV
'        HIGH LEDR
        while TMP<>34 AND LUNMITT<20
            hserin 10000,EXIT,[TMP]
            MITT[LUNMITT]=TMP
            LUNMITT=LUNMITT+1
        wend
        
        LUNSMS=0
        while TMP<>"#" AND LUNSMS<80
            hserin 10000,EXIT3,[TMP]
            sms[LUNSMS]=TMP
            LUNSMS=LUNSMS+1
        wend
EXIT3:
       LUNMITT=LUNMITT-1
        DEBUG "MITT -> ",str MITT \LUNMITT,13,10 
        LUNSMS=LUNSMS-1
        DEBUG "sms  -> ",str sms \LUNSMS,13,10 
            
            PAUSE 3000
            DEBUG "CANCELLO TUTTO",13,10            
            HSEROUT ["AT+CMGD=0,4",13]   'CANCELLO TUTTI I MESSAGGI
            HSERIN 10000,EXIT,[wait ("OK")]
            PAUSE 1000
            
            GOSUB ANALIZZASMS        
            PAUSE 2000


EXIT:
'    DEBUG "EXIT",13,10

    LOW LEDV
'    LOW LEDR
RETURN


ANALIZZASMS:

FRASE=10
    DEBUG "ANALIZZA",13,10
'    FOR TMP=0 TO 4  
'        READ TMP,TMP1
'        DEBUG "IMEI ",TMP1, " - SMS ",SMS[LUNSMS-5+TMP],13,10
'        IF TMP1<>SMS[LUNSMS-5+TMP] THEN
'            GOTO EXIT2
'        ENDIF      
'    NEXT TMP
'        DEBUG "IMEI OK",13,10 
    
    ERR1=0
    ERR2=0   
        
   	For TMP=0 TO 4
		TMP2= SMS[LUNSMS-5+TMP]
        READ TMP,TMP1
        DEBUG "IMEI ",TMP1, " - SMS ",TMP2,13,10
		IF TMP1<>TMP2 Then
		    DEBUG "ERR1",13,10
			ERR1=1
		EndIF
		LookUp TMP,["15061"],TMP1
		IF TMP1<>TMP2 Then
            DEBUG "ERR2",13,10
			ERR2=1
		EndIF
	Next TMP
	
	IF ERR1=1 AND ERR2=1 THEN
	   GOTO EXIT2
    ENDIF
    
    DEBUG "IMEI OK",13,10 
        
        
FRASE=2
            

            DEBUG "sms 1 ",sms[2],13,10 
            select case sms[2]
                case "A"
                    HSEROUT ["AT+CGDCONT=1,",34,"IP",34,",",34]
                    
                    for tmp=6 to 50
                        IF sms[tmp]<>"," THEN
                            'WRITE TMP+4,SMS[TMP]        'SALVO IN MEM L'APN
                            HSEROUT [SMS[TMP]]
                        ELSE
                            'write TMP+4,35    'FINE STRINGA
                            HSEROUT [34,",,0,0",13]
                            TMP1=TMP+6
                            TMP=55
                        ENDIF
                    NEXT TMP
                    HSERIN 10000,EXIT2,[wait ("OK")]
'                    DEBUG "OK CGD",13,10
                    
                    PAUSE 1000
'                    HSEROUT ["AT#ESMTP=",34]
                    
                    for tmp=100 to 130
                        TMP2=   TMP-100+TMP1
                        IF sms[TMP2]<>"*" THEN
                            WRITE TMP,SMS[TMP2]        'SALVO IN MEM L'ESMTP  100÷130
                            DEBUG  SMS[TMP2]
                            select case sms[TMP2]
                            
                                case "T"
                                    IF sms[TMP2+1]="I" THEN
                                        GEST = 1
                                    ENDIF
                                case "V"
                                    IF sms[TMP2+1]="O" THEN
                                        GEST = 2
                                    ENDIF
                                case "W"
                                    IF sms[TMP2+1]="I" THEN
                                        GEST = 3
                                    ENDIF
                            END SELECT   
                            DEBUG "  GEST  ",#GEST,10,13
                            WRITE 9,GEST
                             
                        ELSE
                            write TMP,35    'FINE STRINGA
                            'HSEROUT [34,13]
                            TMP=205
                        ENDIF
                    NEXT TMP
'                    HSERIN 10000,EXIT2,[wait ("OK")]
'                    DEBUG "OK SMTP",13,10

                    
                    FRASE=1
                    
                case "U"
                    
                    HSEROUT ["AT#USERID=",34]
                    
                    for tmp=7 to 37
                        TMP2= TMP+123
                        IF sms[tmp]<>"," THEN
                            WRITE TMP2,SMS[TMP]        'SALVO IN MEM L'USER ID POS 130÷160
                            HSEROUT [SMS[TMP]]
                        ELSE
                            write TMP2,35    'FINE STRINGA
                            HSEROUT [34,13]
                            TMP1=TMP+6
                            TMP=55
                        ENDIF
                    NEXT TMP
                    HSERIN 10000,EXIT2,[wait ("OK")]
                    PAUSE 1000
                    
                    HSEROUT ["AT#USERID?",13]
                    PAUSE 2000
'                    DEBUG "OK CGD",13,10
                    
                    PAUSE 1000
                    HSEROUT ["AT#PASSW=",34]
                    for tmp=TMP1 to 200
                        TMP2=  160 + (TMP-TMP1)                        
                        DEBUG "TMP2 ",#TMP2,13,10
                        IF sms[tmp]<>"*" THEN
                            WRITE TMP2,SMS[TMP]        'SALVO IN MEM LA PASS
                            HSEROUT [SMS[TMP]]
                        ELSE
                            write TMP2,35    'FINE STRINGA
                            HSEROUT [34,13]
                            TMP=205
                        ENDIF
                    NEXT TMP
                    HSERIN 10000,EXIT2,[wait ("OK")]
'                    DEBUG "OK PSW",13,10
                    FRASE=1
                
                case "D"
                    
                    IF SMS[4]="S" THEN
                        
                        DEBUG "DESTINAZIONE",13,10
    '                    HSEROUT ["AT#PASSW=",34]
                        for tmp=7 to 100
                                TMP2=TMP+3 
                            IF sms[tmp]<>"*" THEN
                                WRITE TMP2,SMS[TMP]        'SALVO IN MEM LA DEST PARTENDO DALL'INDIRIZZO 10
    '                            HSEROUT [SMS[TMP]]
                            ELSE
                                write TMP2,35    'FINE STRINGA
     '                           HSEROUT [34,13]
                                TMP=105
                            ENDIF
                        NEXT TMP
    '                    HSERIN 10000,EXIT2,[wait ("OK")]
     '                   DEBUG "OK PSW",13,10
                         
                        FRASE=1
                    ENDIF
                    
                    IF SMS[4]="L" THEN
                        DEBUG "CANCELLAZIONE",13,10
                         WRITE 205,0
                         FRASE=5
                    ENDIF
                case "O"

                    IF SMS[3]="N" THEN
                        WRITE 200,1
                        TIME=2
                    ELSE
                        WRITE 200,0
                        'GOTO RIAVVIA
                    ENDIF
                    
                    FRASE=3
                case "T"
         
'                    HSEROUT ["AT#PASSW=",34]
                    WRITE 201,SMS[6]-48
                    WRITE 202,SMS[7]-48
                    WRITE 203,SMS[8]-48

                    
                    FRASE=1
                case "F"
                        tmp2=0
                        FOTO=1
                        FRASE=1
                case "M"
                    for tmp=5 to 45
                            TMP2=TMP+165
                        IF sms[tmp]<>"*" THEN
                            WRITE TMP2,SMS[TMP]        'SALVO IN MEM IL NUMERO ABILITATO PARTENDO DALL'INDIRIZZO 160÷200
'                            HSEROUT [SMS[TMP]]
                        ELSE
                            write TMP2,35    'FINE STRINGA
 '                           HSEROUT [34,13]
                            TMP=105
                        ENDIF
                    NEXT TMP
'                    HSERIN 10000,EXIT2,[wait ("OK")]
                    WRITE 205,1
                    
                    DEBUG "NUMERO MEMORIZZATO",13,10
                    FOR TMP=170 TO 200
                        READ TMP,TMP2
                        IF TMP2="#" THEN
                            TMP=222
                        ELSE
                            DEBUG TMP2
                        ENDIF
                    NEXT TMP
                                       
                    FRASE=4
                case "D"
                        WRITE 205,0
                        FRASE=5
                        
                case "S"
                    If SMS[5]="1" THEN
                        WRITE 207,1
                        DEBUG "SMS ABI",10,13
                    ELSE
                        WRITE 207,0                    
                        DEBUG "SMS DIS",10,13
                    ENDIF
                    If SMS[10]="1" THEN
                        WRITE 206,1
                        DEBUG "FOTO ABI",10,13
                    ELSE
                        WRITE 206,0
                        DEBUG "FOTO DIS",10,13
                    ENDIF
                        FRASE=1
                case "P"
                    If SMS[5]="1" THEN
                        WRITE 208,1
                        DEBUG "PIR ABI",10,13
                    ELSE
                        WRITE 208,0                    
                        DEBUG "PIR DIS",10,13
                    ENDIF
                    If SMS[9]="1" THEN
                        WRITE 209,1
                        DEBUG "MOV ABI",10,13
                    ELSE
                        WRITE 209,0
                        DEBUG "MOV DIS",10,13
                    ENDIF
                    If SMS[13]="1" THEN
                        WRITE 210,1
                        DEBUG "AUX ABI",10,13
                    ELSE
                        WRITE 210,0
                        DEBUG "AUX DIS",10,13
                    ENDIF
                        FRASE=7                        
                       
                
                    
            END SELECT
            
      GOSUB INVIOSMS      
EXIT2:

DEBUG "EXIT2",13,10
RETURN

CHIAMATA:


IF RING=0 THEN 
    READ 205,NUMERO
    DEBUG "CHIAMATA",13,10
    IF NUMERO=0 THEN
            HSEROUT ["ATH",13]
            PAUSE 1000
            GOTO EXIT4 
    ENDIF
        

    HIGH LEDR
    '+CLIP: "+393355760939",145,"",128,"",0
    HSERIN 5000,EXIT4,[WAIT ("CLIP: "),TMP1]
    TMP2=0
    'DEBUG TMP1
    WHILE TMP<>34
        'DEBUG TMP
        HSERIN 5000,EXIT4,[TMP]
        MITT[TMP2]=TMP
        TMP2=TMP2+1    
    WEND
        lunmitt=TMP2-2
    

    FOR TMP=0 TO lunmitt
        TMP1=TMP+170
        READ TMP1,TMP2
                DEBUG "CHIAMANTE: ",MITT[TMP],"   MEM: ",TMP2,13,10
        IF TMP2<>MITT[TMP] THEN
            HSEROUT ["ATH",13]
            PAUSE 1000
            GOTO EXIT4      
        ENDIF
    NEXT TMP

            HSEROUT ["ATA",13]
            PAUSE 1000
        
    
    
    
    
ELSE
    LOW LEDR
ENDIF

EXIT4:
'DEBUG "EXIT 4 "
RETURN




ON_OFF:    
    HIGH POWERLT
    PAUSE 3000
    HIGH POWERGSM      'accendi il modulo
    PAUSE 1200
    LOW POWERGSM
    PAUSE 10000
RETURN