comunicazione tra GSM/GPRS/GPS SHIELD e google maps

powerOn manda il comando "AT" via seriale finchè il modulo non risponde "OK"

il fatto che il comando "AT" arrivi al PC, vuol dire che quel codice non usa una porta seriale visrtuale ma quella fisica (pin 0 e 1) che sono usati per la USB.. quindi o usi il monitor seriale o usi il mduelo GPS.

consigli: inutile saltare da codice a codice, prendine uno e focalizzati. Per usare i comandi AT, devi assicurarti che il tuo modulo funzioni allo stesso modo. Puoi aprire la libreria giusta e vedere come funziona, e datasheet alla mano capire cosa è obbligatorio, e cosa puoi omettere.

la sprintf è una bruttissima cosa su una MCU, o usi una versione "alleggerita" apposta oppure non la usi proprio. strlcpy e simili sono tuoi amici

in realtà dovresti evitare a prescindere l'uso delle stringhe; o meglio, dovresti usare solo le stringhe costanti salvate su flash, e poi usare un sistema a stati (che di solito impiega 2 byte, uno per indicare lo stato attuale (i comandi parzialmente possibili) e uno per indicare a che indice sei arrivato.

per capirci abbiamo 3 stringhe, divise da uno spazio, che possiamo ottenere

CASA
CANE
CIBO

abbiamo un byte che indica i vari stati (diciamo S) e IND che è un byte che indica la posizione dell'array; all'inizio S = 1 e IND = 0
0: in errore, il carattere non era nessuno di quelli validi, azzera IND e resta in attesa di spazio, quando arriva spazio S verrà settata a 1
1: in attesa di primo carattere
2: il secondo carattere era una I, IND++, e continua fino a che non ricevi spazio incementando IND e verifiacnfo che il carattere letto sia uguale all'IND carattere nella stringa (per verificare che arrivi CIBO e non CICCIA, ed esempio)
3: il se secondo carattere è una A, IND++ resta in attesa del prossimo
4: se il terzo carattere è S allora come punto 2 ma con la stringa CASA
5: se il terzo carattere è N allora come punto 2 ma con la stringa CANE

ovviamente ogni errore porta al punto 0