Go Down

Topic: problema antenna gps bluetooth con arduino (Read 2 times) previous topic - next topic

cece99

ah, ho preso il modulino su una breakout già fatta che mi porta fuori gnd, vcc, tx,rx e mode
Il Vero Programmatore non ha bisogno di manuali sull'assembler, sono
  sufficienti i data sheet dei microprocessori.

pitusso

#6
Jul 20, 2012, 01:34 am Last Edit: Jul 20, 2012, 10:20 am by pitusso Reason: 1
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):

Code: [Select]
$ hcitool scan
Scanning ...
00:08:1B:00:80:C5 cpit-GPS


query sui servizi:

Code: [Select]
$ 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


:smiley-mr-green:

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
Code: [Select]
AT+ROLE=1

- settaggio codice pairing (impostato quello dell'antenna)
Code: [Select]
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
Code: [Select]
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
Code: [Select]
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):
Code: [Select]
$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.
Code: [Select]
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:
Code: [Select]
AT+LINK=8,1b,80c5
per poter ricevere i dati.

Ovviamente qui ci scappa l'integrazione alla guidina  ]:) .. è 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  :smiley-roll:), 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..

cece99

ok, grazio vedo di combinare qualcosa, ma tanto per capire, ogni volta che mi voglio connettere devo dare il comando at?
Il Vero Programmatore non ha bisogno di manuali sull'assembler, sono
  sufficienti i data sheet dei microprocessori.

pitusso

Ciao

Quote
ogni volta che mi voglio connettere devo dare il comando at


ad ora non ho trovato modo di effetture il link automaticamente (mi son limitato a ripassarmi i comandi AT, in rete si potrebbe avere più fortuna).
In ogni caso, se il modulo è connesso ad Arduino, non ci vedo grossi problemi.

pitusso


Go Up