Futurashop/OpenElectronics GSM GPRS GPS Shield - TOPIC DI SUPPORTO

Salve a tutti,
apro questo post per raccogliere consigli e segnalazioni di bug/malfunzionamenti/richieste riguardo lo shield di Futurashop/Open-electronics "GSM GPRS GPS Shield for Arduino".
La libreria è open-source quindi è ben accetto qualunque aiuto e collaborazione.

PROBLEMI NOTI

-MEMORIA RAM
La libreria occupa di per sé parecchia RAM, lasciandone a disposizione una quantità limitata per lo sketch. Arduino in caso di saturazione della RAM si riavvia e posta in output caratteri strani.
E' in corso una modifica per spostare tutte le stringhe non variabili su EEPROM per liberare RAM.
La versione 3.02 ha quasi la totalità delle stringhe su memoria flash. Dovrebbe avere molta più RAM a disposizione dello skecth.

-METODO POST PARZIALMENTE IMPLEMENTATO
Il metodo post, al contrario del GET che funziona correttamente, essendo stato preso da un'altra libreria non è stato ancora adattato e testato.

-GPS NON FIXA
Verificare:

  1. di aver chiuso il ponticello J1 che porta l'aliemntazione all'antenna GPS;
  2. di alimentare lo shield con una sorgente esterna di circa 12V ed almeno 1A;
  3. collegato le antenne correttamente e di aver posto l'antenna GPS in campo aperto.

Per discriminare tra un problema HW e uno SW, è necessario caricare lo sketch
AT+CGPSPWR=1
AT+CGPSRST=1
(attendere qualche decina di secondi per il fix)
AT+CGPSSTATUS? (restituisce lo status del fix del GPS, verificare che l'antenna sia collegata e posta in campo aperto)
AT+CGPSINF=0 (resitutisce i dati del GPS se il fix è stato effettuato)
Se tramite questa procedura il GPS funziona è possibile escludere un problema HW.

-LIBRERIA RESTITUISCE STATUS ERRATO
"i risultati sono stati che con arduino UNO le funzioni base le ha fatte subito, ma con la parte gps mi ha dato problemi, usando il codice scaricato dal sito ritornava position unknown, mentre lanciando gli stessi comandi at dalla linea di comando di arduino ritornava (at+cgpsatatus?) 3d/2d fixed e (atcgpsinf=0)"
Risolto nella versione 3.02

Per chiunque voglia aiutare questo è il sito dove è hostata la libreria:
http://code.google.com/p/gsm-shield-arduino/
eventualmente chiedetemi pure di aggiungervi come collaboratori per proporre modifiche al codice.

Saluti,
Marco

invece della Eeprom puoi considerare di usare la funzxione di scrittura in flash F(), cosi' si risparmia l'uso della libreria eeprom.h

Sono molto interessato anche io a questa cosa visto che ho comperato tutto ciò che serviva per il funzionamento,shield,antenne e modulo SIM908........ho appena finito di montare lo shield ed appena ho tempo provo a caricare gli sketch degli esempi e vedo che succede,non credo di poter essere di molto aiuto visto che non son bravo con la programmazione ma se posso tornare utile per delle prove resto volentieri a disposizione ....

Ciao

Aggiungo di postare i codici che hanno problemi.

e.....

  1. di aver chiuso il ponticello J1 che porta l'alimentazione all'antenna GPS;

a volte il problema è solo questo.

Salve,

volevo sapere, siccome il problema riguarda l'eccessivo utilizzo della RAM, il problema si potrebbe risovere utilizzando un Arduino ATmega 2560?

giannilucia:
Salve,

volevo sapere, siccome il problema riguarda l'eccessivo utilizzo della RAM, il problema si potrebbe risovere utilizzando un Arduino ATmega 2560?

Se ti riferisci allo sketch che mandi ad Arduino, il mega2560 ha 8K di sram contro 2k del mega328P, quindi dipende da cosa stai realizzando. In caso contrario puoi ricorrere a Progmem per usare parte della flash in emulazione ram.

Ti ringrazio per la risposta, ma volevo sapere se il problema relativo alla libreria gsm potesse essere,"risolto", utilizzando AT Mega

giannilucia:
Ti ringrazio per la risposta, ma volevo sapere se il problema relativo alla libreria gsm potesse essere,"risolto", utilizzando AT Mega

direi di sì, loro dicono (v. primo post) che la libreria lascia poca ram per lo sketch, quindi occupa meno di 2K, tu gliene dai 8, poi dipende da che software vai a scrivere tu, se non è niente di stratosferico risolvi al volo.

Grazie sei sempre molto gentile,un ultima cosa, c'è un modo per vedere quanta RAM utilizzo nei miei sketch?

giannilucia:
Grazie sei sempre molto gentile,un ultima cosa, c'è un modo per vedere quanta RAM utilizzo nei miei sketch?

sinceramente non lo so, è un problema che mi sono posto e che mi pare sia stato affrontato ma non ricordo se ci fosse una soluzione, magari se passano Leo o Astro ci danno risposta certa, se non erro qualcosa di utile era stato aggiunto alla 1.0.1, purtroppo non so dirti di più. :disappointed_relieved:

Si può vedere la memoria RAM usata staticamente (quindi come stack e creazione di variabili) dopo aver compilato il proprio sketch. Basta spostarsi nella cartella temporanea che l'Arduino crea in /tmp/buildxxxxxxxxxxxxxxxxxx (su Windows non mi ricordo dove la mette), aprire un terminale e dare "avr-size nome_file_sketch.elf -C".
Ti verrà restituita l'occupazione di flash e di Ram.

A livello dinamico (ossia con lo sketch in esecuzione) puoi provare questo:
http://arduino.cc/playground/Code/AvailableMemory

Grazie mille, sei stato molto esauriente!!!

Scusate, ma per usare questo dispositivo mi serve questo shield, o funziona anche collegandolo direttamente ad arduino?

hai postato due volte lo stesso link :slight_smile:

cmq il secondo che volevi postare e' solo un aiuto al montaggio, se replichi il circuito tu stesso con i componenti ti funziona.
per chi non vuole sporcarsi le mani ci sono appunto questi "adattatori"

Testato:
hai postato due volte lo stesso link :slight_smile:

Scusate la coglionaggine :-), il secondo link era questo:

Ho corretto anche l'altro post.

Il punto è: se il modulino GSM ha le uscite seriali per controllarlo, non posso usare SOLO la arduino per controllarlo, senza lo shield? Mando due comandi AT e via, no?

x iscrizione.

jumpjack, credo che il problema sia nelle ridotte dimensioni del modulo, e nella mancanza del circuito antenna.

@evildeejay:
x dimensione sketch:
una buona idea sarebbe quella di eliminare la string.h, che onestamente mi sembra solo una pesantezza in più inutile, quel paio di metodi che usi saranno già nella String che al 90% sarà inclusa dall'utente.
anchew la Print.h della NewSoftSerial può essere eliminata.

x la ram: hai 2 buffer di ricezione: uno di 64 byte all'interno della newsoftserial e uno di 200byte(tantissimo! serve davvero?!) nella GSM_shield. tieni solo quella della newsoftserial, eventualmente aumentando la dimensione, ed elimina quello della tua libreria. In scrittura la NewSofSerial è bloccante, quindi non hai problemi di avere dei buffer.
poi il playground viene in aiuto: Arduino Playground - AvailableMemory

x il supporto arduino 1: la libreria deve essere resa compatibileper arduino 1.0; per cominciare la SoftwareSerial inclusa nell'IDE è la NewSoftSerial (che è diventata ufficiale), quindi ti porti dietro un paio di file in meno, poi devi includere arduino.h al posto di WProgram.h. In teoria con un paio di ifdef dovresti risolvere elegantemente.

jumpjack:
Il punto è: se il modulino GSM ha le uscite seriali per controllarlo, non posso usare SOLO la arduino per controllarlo, senza lo shield? Mando due comandi AT e via, no?

Si, puoi usarlo, controlla alimentazione, se va a 3,3v non basterà la corrente di arduino,

E per la lista dei comandi AT supportati?
E per quelli che controllano il GPS?

RTFM :grin: (read the f***ing manual)

NUOVA VERSIONE 3.02
BETA_GSM_GPRS_GPS_IDE100_v302.zip.zip [BETA VER.] GSM GPRS GPS Shield, SIM908 & SIM900, IDE 1.00, Version 3.02

changelog:

  • Grazie ai vostri suggerimenti, molte stringhe sono state spostate su memoria flash così da ridurre il consumo di RAM
  • Unificato tutte le versioni, SIM900/908 e Arduino Uno/Mega
  • Risolto bug status GPS che rispondeva sempre fixato
  • Risolto bug nelle funzioni per le informazioni sulla batteria