shield universale per moduli
Transcript
shield universale per moduli
ISTRUZIONI DI MONTAGGIO GSMGPRSSHIELDV2 SHIELD UNIVERSALE PER MODULI GSM/GPRS/GPS (cod. GSMGPRSSHIELDV2) Shield per Arduino in grado di accogliere diversi moduli GSM/GPRS/GPS della famiglia SIM900 della SIMCom che, opportunamente controllato tramite un’interfaccia seriale ed una UART per la gestione della connessione, permette di effettuare chiamate voce, inviare SMS o effettuare delle connessioni alla rete Internet. La disponibilità di nuove librerie di supporto allo sviluppo software, permettono grande flessibilità nella configurazione dei moduli e nello sviluppo di applicazioni voce, dati e basate su WEB. Con delle semplici chiamate a funzioni di alto livello è possibile, ad esempio, leggere un SMS ricevuto o avviare una chiamata ed effettuare tutte le altre operazioni eseguite da un normale cellulare. La scheda, compatibile con Arduino Duemilanove, Arduino UNO, Arduino MEGA, ecc... dispone di due prese per il flusso audio analogico. Grazie a un microfono e ad un auricolare dotati di jack da 3,5 mm (è sufficiente la cuffia standard per computer), è possibile effettuare una chiamata voce a tutti gli effetti. Nel caso di ricezione di una chiamata si udrà attraverso le cuffie una suoneria che avvisa della chiamata in arrivo. Lo shield alimenta il circuito dedicato al RTC (Real Time Clock) tramite un condensatore di elevata capacità. All’interno del SIM900, così come del SIM908, è presente un circuito che si occupa di aggiornare il contatore dell’ora anche in assenza dell’alimentazione. L’intero circuito funziona con una tensione di alimentazione di 12Vdc fornita direttamente dalla scheda Arduino. Durante le operazioni più pesanti dal punto di vista dei consumi di corrente, come l’utilizzo del GPRS, il modulo assorbe una corrente di circa 1A, dunque è necessario che la sorgente di alimentazione sia in grado di fornire tale intensità di corrente. Lo shield prevede un connettore per il collegamento di una batteria esterna ricaricabile, come fonte di alimentazione primaria, utilizzabili solamente con il SIM908. La tensione necessaria per la ricarica della batteria viene prelevata direttamente dalla scheda Arduino (dal pin Vin). L’ingombro massimo dello shield è di 100 x 57mm. Realizzazione pratica Lo shield è di facile realizzazione. Con un saldatore da non più di 30W, saldare sulla scheda i 2 connettori SMD (siglati SIM908 e SIM900), il connettore 3 poli per batteria e successivamente tutti gli altri componenti, dando precedenza a quelli con basso profilo (come resistenze, diodi, micropulsanti, prese jack, ecc). Posizionare sulla scheda il dis- sipatore termico sul quale dovrà essere fissato, mediante vite e dado, il regolatore U1 con i relativi pin piegati a 90°. Effettuare la saldatura del regolatore e di tutti i pin strip assicurandosi che quelli previsti per il collegamento con la scheda Arduino (6, 8 e 10 vie, lunghi) abbiano le rispettive punte rivolte verso il basso. Completate le saldature verificare attentamente che non vi siano falsi contatti o cortocircuiti. Applicate quindi lo shield sulla scheda Arduino ed effettuate le impostazioni seguendo le indicazioni riportate nel paragrafo “Configurazione”. Configurazione Per preservare la compatibilità con l’Arduino Mega, la modalità di comunicazione con il SIM900 (seriale hardware, utilizzando i pin 0 e 1 dell’Arduino Uno o seriale software utilizzando invece i pin 2 e 3) è impostabile tramite jumper ma vi è anche la possibilità di utilizzare i pin a propria scelta tramite un semplice collegamento. In Fig. 1 sono mostrate le tre configurazioni possibili. 1 GSMGPRSSHIELDV2 Schema elettrico ISTRUZIONI DI MONTAGGIO Sempre per preservare la massima flessibilità e personalizzazione, si è predisposta la scheda con delle piazzole da saldare sul retro (Fig. 2), che consentono di andare a effettuare i collegamenti per portare in ingresso alle porte digitali dell’Arduino, i segnali di controllo del flusso dati (CTS, RTS) o segnali di alert per chiamate in arrivo o SMS non letto (RI). È possibile dunque disabilitare questi collegamenti andando così a risparmiare la quantità di ingressi o uscite utilizzati, avendo sempre la possibilità, eventualmente, di sfruttarli come meglio si crede con la realizzazione di un ponticello. La Fig. 3 mostra la presenza di due connettori a pettine sulla parte superiore. Questi ulteriori collegamenti consentono l’utilizzo dello shield anche con i nuovi moduli compatti del SIM900 e SIM908, dotati di un differente pin-out mirato al risparmio di spazio. Il nuovo modulo SIM908 sempre della SIMCom, si caratterizza per la presenza di un localizzatore GPS a 42 canali con un’accuratezza inferiore ai due metri e mezzo. Mediante il jumper BAT/VEXT (Fig. 4) è possibile impostare la sorgente di alimentazione dello shield: posizionare il jumper su VEXT se si desidera alimentare il dispositivo tramite la scheda Arduino oppure su BAT se si utilizza una batteria esterna ricaricabile. Per consentire la ricarica di quest’ultima è necessario chiudere il jumper siglato CHRG (Fig. 5) posto in prossimità del condensatore CRTC. Libreria GSM GPRS La libreria software legata alla scheda GSM GPRS shield è open-source e utilizza il servizio di hosting di Google Project, raggiungibile all’indirizzo http:// code.google.com/p/gsm-shield- 2 ISTRUZIONI DI MONTAGGIO GSMGPRSSHIELDV2 Piano di montaggio Elenco Componenti: R3: 10 kohm R4: 10 kohm R5: 10 kohm R6: 10 kohm C1: 100 nF multistrato C2: 470 µF 25 VL elettrolitico C3: 100 nF multistrato C4: 220 µF 16 VL elettrolitico C5÷C10: 47 pF ceramico C11: 220 µF 16 VL elettrolitico C12: 100 nF multistrato CRCT: Condensatore basso profilo 0,1F U1: 7805 T1: BS170 D1: 1N4007 P1: Microswitch MIC: Presa jack stereo 3,5 mm da CS SPK: Presa jack stereo 3,5 mm da CS Varie: - Dissipatore (ML26) - Vite 10 mm - Dado 3 MA - Strip Maschio 6 vie lungo - Strip Maschio 8 vie lungo (2 pz.) - Strip Maschio 10 vie lungo arduino/. La libreria viene costantemente aggiornata e migliorata con l’aggiunta di nuove funzioni e correzioni di eventuali bug, perciò si consiglia di controllare di avere sempre l’ultima - Strip Maschio 2 vie corto - Strip Maschio 3 vie corto (3 pz.) - Strip Femmina 3 vie (2 pz.) - Strip Femmina 16 vie (2 pz.) release. È stata inoltre prevista la gestione della comunicazione TCP/IP attraverso GPRS. Grazie agli ormai diffusi smartphone e tablet, sono presenti in commercio numerose offerte per l’utilizzo - Presa MMS SMT 2x10 vie passo 2 mm (2 pz.) - Presa 3 vie 90° passo 1,25 mm - Jumper (4 pz.) - Circuito stampato di Internet sui dispositivi mobili. In base alle esigenze ed alle conoscenze dell’utente è possibile implementare diverse funzioni, atte a svolgere, ad esempio, funzioni quali: l’invio di email, la Fig. 1 - A sinistra la configurazione per la seriale software, al centro hardware e, a destra, personalizzata. 3 GSMGPRSSHIELDV2 pubblicazioni di dati attraverso il metodo GET o lo streaming di flussi audio/video. Per una panoramica delle principali funzioni attualmente implementate, si rimanda alle tabelle contenenti l’elenco dei comandi. ISTRUZIONI DI MONTAGGIO Innanzi tutto è necessario avere all’interno della directory libraries, contenuta nella directory principale di Arduino, la cartella GSM_GPRS, contenente tutte le funzioni utilizzabili. Inoltre per poter utilizzare la seriale softwa- re, solamente nel caso si utilizzi un IDE di Arduino precedente alla 1.00, bisogna avere anche la libreria NewSoftSerial (reperibile da www.arduiniana.com) alla quale questo shield si appoggia per la comunicazione. Ora nel Fig. 2 - Dettaglio delle piste dei segnali di controllo del SIM900, con la possibilità di portarli in ingresso ad Arduino tramite una semplice saldatura. Fig. 3 - Strip per il collegamento dei nuovi moduli che equipaggiano i chip della famiglia SIMCom in versione compatta. Fig. 4 - Jumper per la scelta della sorgente di alimentazione (BAT= alimentazione tramite batteria; VEXT= alimentazione tramite scheda Arduino). Fig. 5 - Jumper CHRG. Chiudendo questo ponticello il sistema provvede alla ricarica della batteria esterna eventualmente collegata allo shield. 4 SIM900.h È sempre necessario includere questo file in quanto contiene le funzioni baseISTRUZIONI per l’avvio e la confi del modulo SIM900. Per queste funzioni DIgurazione MONTAGGIO non è necessario istanziare un oggetto gsm, in quanto questa operazione è stata già effettuata all’interno della libreria. Sarà sufficiente chiamare le funzioni utilizzando “gsm.” come prefisso. int gsm.begin(int baudrate) Accende il modulo e stabilisce il baud-rate per la comunicazione. gsm.TurnOn(9600); void SimpleRead() Legge un byte dal buffer della seriale. gsm.SimpleRead(); void SimpleWrite(char* cmd) Scrive la stringa (o un intero) sulla porta seriale. gsm. SimpleRead(“AT+CSQ”); Invia un comando AT passato come parametro, controllando i tempi di timeout per la ricezione di una risposta e tra un carattere e l’altro. Dopo aver ricevuto la risposta la confronta con quella aspettata e se diversa riesegue il comando per il numero di volte impostato. I possibili output sono riportati di seguito, con la relativa enumerazione. AT_RESP_ERR_NO_RESP oppure -1: Nessuna risposta ricevuta. AT_RESP_ERR_DIF_RESP oppure 0: Risposta differente da quella attesa. AT_RESP_OK oppure 1: La risposta contiene la stringa attesa. If(gsm.SendATCmdWa itResp(“AT”,500,50,” OK”,3)== AT_RESP_OK) Serial.println(“OK”); char SendATCmdWaitResp (char const* AT_cmd_string, uint16_t start_comm_tmout, uint16_t max_interchar_ tmout, char const* response_string, byte no_of_attempts) call.h Nel caso si vogliano effettuare delle telefonate, rispondere o semplicemente rifiutare una telefonata in arrivo, è necessario l’utilizzo di questa classe. Per l’utilizzo di tali funzioni è sufficiente istanziare l’oggetto all’interno dello sketch. Nelle funzioni riportate nella tabella seguente si fa riferimento a un oggetto creato con il seguente comando all’inizio dello sketch: CallGSM call; void Call(char* number_string) Effettua una chiamata al numero contenuto nella stringa call. Call(“+393471234567”) void PickUp(void) Durante una chiamata in arrivo, risponde e attiva la comunicazione audio. call.PickUp(); void HangUp(void) Durante una chiamata attiva, riaggancia e disattiva la comunicazione audio. call.HangUp(); Restituisce lo stato riguardo le telefonate. I possibili byte di output sono enumerati con i seguenti nomi: CALL_NONE oppure 0: Nessuna chiamata. byte CallStatus(void); CALL_INCOM_VOICE oppure 1: Chiamata in arrivo. CALL_ACTIVE_VOICE oppure 2: Chiamata attiva. byte CallStatusWithAuth (char* phone_number, byte first_authorized_pos, byte last_ authorized_pos); A differenza del precedente, distingue se la chiamata attiva, o in arrivo, appartiene a un numero salvato sulla SIM, in una posizione compresa tra quella iniziale e finale, passate come parametri. I possibili byte di output sono enumerati con i seguenti nomi: CALL_NONE oppure 0: Nessuna chiamata. CALL_INCOM_VOICE_AUTH oppure 3: Chiamata in arrivo da un numero autenticato. CALL_INCOM_VOICE_NOT_AUTH oppure 4: Chiamata in arrivo da un numero non autenticato. If(call.CallStatus()== CALL_ACTIVE_VOICE) Serial. println(“CHIAMATA IN CORSO”); If(call.CallStatusWithAuth ()==CALL_INCOM_VOICE_AUTH) Serial. println(“CHIAMATA IN ARRIVO DA UN NUMERO AUTENTICATO”); GSMGPRSSHIELDV2 caso si volessero cambiare i pin della seriale software, attraverso l’apposito jumper, è opportuno riportare tale cambiamento anche all’interno della libreria stessa. Tale modifica va effettuata nelle prima riga del file GSM.cpp. Per motivi legati all’utilizzo di memoria, si è scelto di suddividere le funzioni in classi differenti contenute in file differenti, in modo da consentire all’utente di includere o meno le parti di codice necessarie, andando così a risparmiare memoria RAM, lasciandola libera per il resto del programma. Per il funzionamento di base è sempre necessario includere i file SIM900.h e SoftwareSerial.h (o NewSoftSerial.h nel caso di IDE precedente alla 1.00), mentre a seconda delle necessità si può includere call.h (per la gestione delle chiamate), sms.h (per l’invio, ricezione e salvataggio degli SMS) e inetGSM.h (contenente funzioni legate all’HTTP e alla connessione GPRS). Laddove non diversamente specificato si sottintende che la funzione restituisce 1 in caso di operazione completata con successo, altrimenti 0. Esempio per SMS e chiamate Affrontiamo ora, passo-passo, la realizzazione del nostro primo sketch per l’utilizzo dello shield utilizzando la versione 1.00 dell’IDE di Arduino. Realizzeremo un programma che controlla il modulo in modo tale che quando riceve una telefonata da un numero preimpostato (salvato in una determinata posizione sulla SIM), rifiuta la telefonata e invia un SMS in risposta al numero chiamante con il valore letto da un input. Innanzitutto bisogna estrarre dalla cartella compressa i file della libreria all’interno della cartella libraries contenuta all’interno della cartella d’installazione di Arduino. Ora siamo pronti 5 SMS.h Per la gestione dei messaggi di testo bisogna utilizzare questa classe apposita. Come in precedenza è necessario richiamarla all’interno dello sketch GSMGPRSSHIELDV2 ed istanziarne successivamente un oggetto. Ad esempio nelle funzioni seguenti si fa riferimento a un oggetto creato, all’inizio dello sketch, con il comando SMSGSM sms; char SendSMS(char *number_str, char *message_str) Tramite il seguente comando viene inviato un SMS al numero contenuto nella prima stringa passata come parametro con il testo contenuto nella seconda. char SendSMS(byte sim_phonebook_position, char *message_str) Invia un SMS come in precedenza, dove al posto della stringa del destinatario viene passata la posizione del contatto salvato sulla SIM. char GetSMS(byte position, char *phone_number, char *SMS_text, byte max_SMS_len) Legge l’SMS salvato sulla SIM nella posizione passata come parametro, salvando il numero del mittente nella prima stringa passata e il contenuto nella seconda di lunghezza indicata. ISTRUZIONI DI MONTAGGIO sms.SendSMS (“+393471234567”, ”Hello Arduino”); sms.SendSMS (1,”Hello Arduino”); char number[13]; char text[200]; sms.GetSMS (1,number,text,200); inetGSM.h In questa classe vengono incluse le funzioni per stabilire una connessione e gestire le comunicazioni tramite protocollo HTTP. Negli esempi seguenti è stata creato un oggetto con il comando InetGSM inet; int httpGET(const char* server, int port, const char* path, char* result, int resultlength) Invia una richiesta di tipo GET al server indicato, sulla porta specificata, richiedendo un determinato path e salvando la risposta in una stringa di lunghezza specificata. Restituisce il numero di byte letti. int httpPOST(const char* server, int port, const char* path, const char* parameters, char* result, int resultlength) Invia una richiesta di tipo POST al server indicato, sulla porta specificata, richiedendo un determinato path, passando i parametri indicati e salvando la risposta su stringa di lunghezza specificata. Restituisce il numero di byte letti. char text[200]; inet.httpGET (“www.elettronicain. it”,80,”/”,text,200); int attachGPRS(char* domain, char* dom1, char* dom2) Avvia la connessione GPRS utilizzando l’APN passato come primo parametro. Il secondo e terzo parametro sono due stringhe che contengono rispettivamente username e password. Se non è richiesta l’autenticazione è sufficiente passare le ultime due stringhe vuote. inet. attachGPRS(“internet. wind”,””,””); int deattachGPRS(void) Disconnette il modulo dalla rete GPRS. inet.deattachGPRS(); int connectTCP(const char* server, int port) Stabilisce una connessione come client al server passato come parametro, sulla porta definita dal secondo parametro. inet.connectTCP(“www. elettronicain.it”,80); int disconnectTCP(void) Chiude la comunicazione con il server. inet.disconnectTCP(); Pone il modulo in ascolto sulla porta int connectTCPServer specificata in attesa di una connessione (intport) da parte di un client. 6 boolean connectedClient(void) Restituisce true se un client è connesso al modulo, altrimenti false. char text[200]; inet.httpGET (“www.elettronicain.it”, 80,”/”,text,200); inet.connectTCPServer(80); inet.connectedClient(); per la realizzazione del nostro primo programma. Lo sketch dovrà come prima cosa caricare le librerie tramite i comandi #include “SIM900.h” #include <SoftwareSerial.h> Successivamente carichiamo, decommentando opportunamente, i file relativi alle classi contenenti le funzioni che vogliamo usare per la gestione delle telefonate e degli SMS. #include “sms.h” #include “call.h” Dopo aver definito le variabili che ci serviranno eseguiamo la procedura di inizializzazione nel setup. Impostiamo il pin da cui vogliamo leggere il valore che verrà poi inviato tramite SMS, configuriamo la comunicazione seriale e avviamo la procedura di inizializzazione del modulo con la funzione gsm.begin, in cui passiamo il baud-rate (solitamente per una corretta comunicazione dei dati attraverso GPRS è consigliabile non salire sopra i 4800 baud). A questo punto entriamo nel vivo del programma, che dovrà controllare periodicamente lo stato delle telefonate entranti. Per fare questo all’interno del ciclo loop utilizzeremo la funzione call. CallStatusWithAuth salvando il return nel byte dichiarato precedentemente. In caso di chiamata in arrivo o in corso, viene salvato il numero del mittente (o destinatario) della telefonata all’interno della stringa number. Una volta confrontato il valore salvato con CALL_INCOM_VOICE_AUTH, che descrive una chiamata in arrivo da un numero tra quelli impostati, rifiutiamo la chiamata con la funzione gsm. HangUp e dopo aver aspettato 2 secondi, leggiamo il valore dell’input e inviamo il messaggio. ISTRUZIONI DI MONTAGGIO Ricordiamo che il valore letto è un intero e deve essere prima convertito in stringa utilizzando la funzione itoa. Ricordiamoci di inserire un ritardo, all’interno della funzione loop, per far si che il modulo venga interrogato a intervalli non inferiori al secondo. Comandi inviati in rapida sequenza potrebbero compromettere la stabilità del modulo stesso. Nel caso non ricevessimo l’esito di inizializzazione corretta, sarà necessario controllare l’alimentazione. Ricordiamo che è consigliato utilizzare anche una fonte di alimentazione esterna poiché a volte la sola alimentazione fornita dalla porta USB non risulta sufficiente. Se l’alimentazione dovesse risultare corretta, bisogna controllare che all’interno del file GSM.cpp, contenuto nella libreria siano dichiarati correttamente i pin per la seriale. Di base la nuova versione utilizza i pin 2 e 3, mentre la precedente utilizzava i pin 4 e 5. #define _GSM_TXPIN_ 2 #define _GSM_RXPIN_ 3 L’intero programma risulta essere quello visibile nel Listato 1. Esempio per internet Analizziamo uno degli esempi contenuti all’interno della libreria per la connessione a internet. Realizzeremo un programma in grado di ricevere il contenuto HTML da una pagina web e salvarne i primi 50 caratteri. Poiché utilizzeremo solo le funzioni riguardanti la connessione internet e HTTP caricheremo oltre ai file standard della libreria, il file inetGSM.h Istanziamo un oggetto per la gestione delle funzioni Internet tramite InetGSM inet; e come in precedenza eseguia- GSMGPRSSHIELDV2 Listato 1 #include “SIM900.h” #include <SoftwareSerial.h> //carichiamo i file necessari allo sketch #include “sms.h” #include “call.h” CallGSM call; //instanzia un oggetto per le chiamate SMSGSM sms; //instanzia un oggetto per gli SMS char number[20]; byte stat=0; int value=0; int pin=1; char value_str[5]; void setup() { pinMode(pin,INPUT); Serial.begin(9600); Serial.println(“GSM GPRS Shield”); //inizializziamo il modulo e configuriamo il baudrate if (gsm.begin(2400)) Serial.println(“\nstatus=READY”); else Serial.println(“\nstatus=IDLE”); }; void loop() { stat=call.CallStatusWithAuth(number,1,3); //se il mittente della chiamata in arrivo rientra //tra quelli autorizzati (salvati sulla SIM tra la //posizione numero 1 e la 3) if(stat==CALL_INCOM_VOICE_AUTH){ //rifiuta la chiamata call.HangUp(); delay(2000); //leggi lo stato dell’input value=digitalRead(1); //converti il valore in stringa itoa(value,value_str,10); //invia un SMS al mittente della telefonata //salvato in precedenza sms.SendSMS(number,value_str); } //eseguiamo questa operazione con //un tempo di attesa di un secondo delay(1000); }; mo la routine di inizializzazione. Successivamente stabiliamo una connessione GPRS. In questo passo è necessario eseguire il comando “AT+CIFSR” che richiede al provider l’indirizzo IP assegnato al SIM900. Questo passo è fondamentale in quanto con alcuni provider potrebbe non funzionare la connessione 7 GSMGPRSSHIELDV2 se non viene precedentemente effettuata questa richiesta. Tramite la funzione gsm.WhileSimpleRead, contenuta nella classe gsm, chiediamo di leggere, sulla porta seriale, l’intero contenuto del buffer. Una volta svuotato il buffer, lo sketch passerà alle funzioni successive. A questo punto siamo connessi, non ci resta che stabilire una connessione TCP con il server, inviare una richiesta GET per una pagina internet e memorizzare il contenuto di risposta in un array precedentemente dichiarato. Tutto questo viene svolto dalla funzione httpGET nella classe inetGSM. Oltre al server e la porta (80 nel caso del protocollo HTTP), dovremo indicare il path dove è contenuta la pagina richiesta. Ad esempio nel caso si voglia scaricare la pagina di Wikipedia relativa ad Arduino, raggiungibile con il seguente indirizzo it.wikipedia.org/ wiki/Arduino_(hardware) il path sarà descritto da /wiki/Arduino_(hardware) mentre il server it.wikipedia.org. numdata=inet.httpGET(“it.wikipedia.org “, 80, “/wiki/Arduino_ (hardware) “, msg, 50); Ovviamente se desideriamo salvare un numero maggiore di caratteri della risposta, basterà inizializzare una stringa di dimensioni maggiori, ponendo attenzione a non saturare la RAM messa a disposizione da Arduino, altrimenti rischieremo di ottenere comportamenti anomali, come stalli o riavvii (Listato 2). Note Lo shield non comprende il modulo GSM, l’antenna e la batteria, acquistabili separatamente. La scheda è predisposta per accogliere uno dei seguenti moduli GSM (la scelta è funzione delle proprie esigenze): FT900M, 8 ISTRUZIONI DI MONTAGGIO Listato 2 #include “SIM900.h” #include <SoftwareSerial.h> //carichiamo i file necessari allo sketch #include “inetGSM.h” InetGSM inet; //instanzia un oggetto per Internet char msg[50]; int numdata; char inSerial[50]; int i=0; boolean started=false; void setup() { Serial.begin(9600); Serial.println(“GSM Shield testing.”); //inizializziamo il modulo e configuriamo il baudrate if (gsm.begin(2400)){ Serial.println(“\nstatus=READY”); started=true; } else Serial.println(“\nstatus=IDLE”); if(started){ //stabilisci una connessione attraverso l’APN //specificato, solitamente i campi username e password //non sono richiesti if (inet.attachGPRS(“internet.wind”,””, “”)) Serial.println(“status=ATTACHED”); else Serial.println(“status=ERROR”); delay(1000); //leggi l’indirizzo IP gsm.SimpleWriteln(“AT+CIFSR”); delay(5000); //leggi finché il buffer non è vuoto gsm.WhileSimpleRead(); //invia una richiesta GET al server e salva i primi 50 //byte all’interno della stringa msg numdata=inet.httpGET(“www.google.com”, 80, “/”, msg, 50); //stampa i risultati Serial.println(“\nNumero di byte ricevuti:”); Serial.println(numdata); Serial.println(“\nDati ricevuti:”); Serial.println(msg); } }; void loop() { }; ISTRUZIONI DI MONTAGGIO GSMGPRSSHIELDV2 Comandi AT Hayes Molti modem in commercio, siano essi destinati ad utilizzi di tipo mobile, o meno, utilizzano per lo scambio di informazioni con l’utente, determinati comandi sviluppati originariamente per il modem Hayes Smartmodem. Tali stringhe di controllo prendono il nome di comandi AT (dalla parola AT-tention) Hayes e sono per la maggior parte universali a tutti i modem. Nel caso di modem GSM (come per il SIM900), la gestione della rete, l’utilizzo di SMS e il controllo delle chiamate voce è regolamentato da comandi standard universali. Mentre per altre funzioni il comando può essere strettamente proprietario dell’azienda produttrice e non sempre viene reso pubblico attraverso i datasheet. Di seguito sono riportati alcuni dei più utilizzati comandi AT universali nel campo dei modem GSM: AT&F AT+CSQ Ripristina la configurazione di fabbrica Fornisce un numero che indica la potenza del segnale: 0 potenza di segnale inferiore a -113 dBm 1 potenza di segnale tra -113 e -109 dBm 2-30 potenza di segnale tra -109 e -53 dBm 31 potenza di segnale superiore a -51 dBm 99 potenza di segnale sconosciuta AT+COPS=? Restituisce i dati dell’operatore telefonico a cui il modulo è agganciato AT+CREG? Fornisce informazioni riguardo lo stato della registrazione della SIM sulla rete. AT+CMGR=n AT+CMGS=“1234567890” ATD1234567890; Legge l’SMS in posizione n Invia la stringa digitata successivamente tramite SMS al numero indicato Chiama il numero indicato AT+CFUN=1 Piena funzionalità AT+CSCLK=0 Disattiva la modalità standby seriale AT&W Salva i parametri correnti Per l’utilizzo standard del GSM GPRS shield, non è necessario conoscere questa sintassi di comandi, in quanto la libreria è stata sviluppata per rendere il più trasparente possibile l’utilizzo del modem senza alcuna conoscenza specifica nel campo dei comandi AT Hayes. Configurazione seriale dei moduli SIMCOM (es.SIM900): Baudrate 115200bps/8/N/1 I moduli SIMCOM sono configurati di default per andare in standby su lettura seriale nel caso non ricevano proprio su seriale dei dati entro 5 secondi dall’ultimo. FT971 e TDGGSM_900. La batteria da utilizzare deve essere di tipo ricaricabile al litio con tensione nominale di 3,7V (es. cod. BATTGC1800). A tutti i residenti nell’Unione Europea. Importanti informazioni ambientali relative a questo prodotto Questo simbolo riportato sul prodotto o sull’imballaggio, indica che è vietato smaltire il prodotto nell’ambiente al termine del suo ciclo vitale in quanto può essere nocivo per l’ambiente stesso. Non smaltire il prodotto (o le pile, se utilizzate) come rifiuto urbano indifferenziato; dovrebbe essere smaltito da un’impresa specializzata nel riciclaggio. Per informazioni più dettagliate circa il riciclaggio di questo prodotto, contattare l’ufficio comunale, il servizio locale di smaltimento rifiuti oppure il negozio presso il quale è stato effettuato l’acquisto. Prodotto e distribuito da: FUTURA ELETTRONICA SRL Via Adige, 11 - 21013 Gallarate (VA) Tel. 0331-799775 Fax. 0331-778112 Web site: www.futurashop.it Info tecniche: supporto@ futurel.com Aggiornamento: 12/04/2012 9