problema antenna gps bluetooth con arduino

cece99,
se non puoi usare i comandi AT è molto limitante - di fatto del modulo master non te ne fai nulla.
Puoi linkare qui il modulo che hai preso?
L'alternativa è che saldi al PIO11 (pin 34)un cavetto, e lo usi per metterlo in HIGH (a 3v3) e portalo alla modalità programmazione.

La buona notizia è che la mia antenna GPS bluetooth funziona allo stesso modo, e penso di fatto sia uno standard.

Effettuando qualche test con pc (ho letto che li hai già fatti, ma queste cose mi dan gioia :D):

$ hcitool scan
Scanning ...
	00:08:1B:00:80:C5	cpit-GPS

query sui servizi:

$ sdptool records 00:08:1B:00:80:C5
Service Name: SPP slave
Service RecHandle: 0x10000
Service Class ID List:
  "Serial Port" (0x1101)
Protocol Descriptor List:
  "L2CAP" (0x0100)
  "RFCOMM" (0x0003)
    Channel: 1

:grin:

Prima ho testato il funzionamento da pc, creando la relativa voce su /etc/bluetooth/rfcomm.conf e poi lanciando un semplice cat sul device (i passaggi si trovano ben spiegati sulla guidina bt relativa alla connessione seriale), mi son trovato di fronte il flusso di dati dell'antenna!

Poi son passato al modulo BT (in questo caso HC05).

Passaggi:

  • impostazione modulo a ruolo MASTER
AT+ROLE=1
  • settaggio codice pairing (impostato quello dell'antenna)
AT+PSWD=0000

attenzione che se non impostato al pin dell'antenna GPS, il pairing fallisce - d'altronde non ho trovato modo di passare eventuali pin

  • pairing con l'antenna
AT+PAIR=0008,1B,0080C5,20

l'address dell'antenna (ma in genere di un dispositivo) va passato nel formato XXXX,XX,XXXXXX
Il ,20 finale rappresenta un timeout per il pairing

  • link all'antenna
AT+LINK=0008,1B,0080C5

l'address dell'antenna viene passato nello stesso formato già citato
(sarebbe lo stesso fare:
AT+LINK=8,1b,80c5
)

A questo punto inizia il flusso dei dati dall'antenna GPS.

Un esempio (considera che son all'interno e non piglia nessun segnale :P):

$GPGGA,000000.000,0000.0000,S,00000.0000,W,0,00,00.0,0.0,M,0.0,M,,*52
$GPGLL,0000.0000,S,00000.0000,W,000000.000,V,A*41
$GPGSA,A,1,,,,,,,,,,,,,0.0,0.0,0.0*30
$GPRMC,000000.000,V,0000.0000,S,00000.0000,W,0.00,0.00,220899,,,A*7E
$GPZDA,000000.000,22,08,1999,01,00*57
$GPVTG,0.00,T,,,0.00,N,0.00,K,A*70
$GPGGA,000000.000,0000.0000,S,00000.0000,W,0,00,00.0,0.0,M,0.0,M,,*52
$GPGLL,0000.0000,S,00000.0000,W,000000.000,V,A*41
$GPGSA,A,1,,,,,,,,,,,,,0.0,0.0,0.0*30
$GPRMC,000000.000,V,0000.0000,S,00000.0000,W,0.00,0.00,220899,,,A*7E
$GPZDA,000000.000,22,08,1999,01,00*57
$GPVTG,0.00,T,,,0.00,N,0.00,K,A*70
$GPGGA,000000.000,0000.0000,S,00000.0000,W,0,00,00.0,0.0,M,0.0,M,,*52
$GPGLL,0000.0000,S,00000.0000,W,000000.000,V,A*41
$GPGSA,A,1,,,,,,,,,,,,,0.0,0.0,0.0*30
$GPRMC,000000.000,V,0000.0000,S,00000.0000,W,0.00,0.00,220899,,,A*7E
$GPZDA,000000.000,22,08,1999,01,00*57
$GPVTG,0.00,T,,,0.00,N,0.00,K,A*70
$GPGGA,000000.000,0000.0000,S,00000.0000,W,0,00,00.0,0.0,M,0.0,M,,*52
$GPGLL,0000.0000,S,00000.0000,W,000000.000,V,A*41
$GPGSA,A,1,,,,,,,,,,,,,0.0,0.0,0.0*30
$GPRMC,000000.000,V,0000.0000,S,00000.0000,W,0.00,0.00,220899,,,A*7E
$GPZDA,000000.000,22,08,1999,01,00*57
$GPVTG,0.00,T,,,0.00,N,0.00,K,A*70
$GPGGA,000000.000,0000.0000,S,00000.0000,W,0,00,00.0,0.0,M,0.0,M,,*52
$GPGLL,0000.0000,S,00000.0000,W,000000.000,V,A*41

Se usiamo la query MRAD (Most Recently Used Authenticated Device), ci mostra l'address della nostra antennina.

AT+MRAD
+MRAD:8:1b:80c5
OK

D'ora in poi, a meno che non si resetti il modulo o non si eliminino i device autenticati dalla pairing list, si dovrà solo effettuare il link.
Quindi, alla prossima occasione, è sufficiente:

AT+LINK=8,1b,80c5

per poter ricevere i dati.

Ovviamente qui ci scappa l'integrazione alla guidina ]:slight_smile: .. è la volta buona che la aggiorno!

UPDATE
qui:
http://aprs.gids.nl/nmea/
la tabella delle sentences NMEA.

Nel mio caso (con antenna all'esterno, funziona tutto a dovere - non pubblico coordinate per ovvie ragioni :roll_eyes:), i dati che mi interessano direttamente sono:
$GPGLL (Geographic Position, Latitude / Longitude and time)
$GPZDA (Date & Time - UTC, day, month, year, and local time zone)
oppure $GPRMC, dove si trovano sia la posizione che data/ora campionamento

Certo poi si possono recuperare info relativamente al numero satelliti agganciati, e altro ancora..