Go Down

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

cece99

Salve a tutti, rovistando nei cassetti ho trovato un antennina gps bluetooth per palmari funzionante, l'ho subito connessa al pc e ho visto tutti i dati in arrivo via seriale virtuale  ]:D !
Ora vorrei sapere: io ho dei modulini bluetooth per arduino tra cui uno master (HC-05) e vorrei sapere se lo posso collegare all' antennina, la mia preoccupazione è circa l'avvio della comunicazione visto che sarebbe il modulino hc-05 a dover attivare per primo la connessione.
Spero di essermi spiegato bene.
Grazie
Cesare
Il Vero Programmatore non ha bisogno di manuali sull'assembler, sono
  sufficienti i data sheet dei microprocessori.

cece99

Il Vero Programmatore non ha bisogno di manuali sull'assembler, sono
  sufficienti i data sheet dei microprocessori.

pitusso

Ciao  :smiley-yell:

Quote
io ho dei modulini bluetooth per arduino tra cui uno master (HC-05) e vorrei sapere se lo posso collegare all' antennina, la mia preoccupazione è circa l'avvio della comunicazione visto che sarebbe il modulino hc-05 a dover attivare per primo la connessione.


forte, pure io ho una antenna GPS BT (che però era pessima  :smiley-roll-sweat:), me ne ero scordato!
In teoria (dico in teoria, perchè devo provare pure io), dopo aver fatto il pairing (AT+PAIR), effettui una connessione (AT+LINK)


cece99

scusa ma non ho ben capito  :smiley-roll: inoltre non sono mai riuscito ad usare i comandi at sul mio hc-05 su breakout board
Il Vero Programmatore non ha bisogno di manuali sull'assembler, sono
  sufficienti i data sheet dei microprocessori.

pitusso

Ciao,
innanzitutto, che breakout usi (non ricordo)?

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

...attualmente in uso con la libreria tinyGPS, che segnalo:
http://arduiniana.org/libraries/tinygps/


Dario Gogliandolo

Scusate se riapro questo topic ma ho notato una cosa strana:
Io ho due moduli hc-05 che ho collegato a due arduino duemilanove come convertitori seriali.
Il mio intento era quello di configurare i due moduli affinché comunicassero fra di loro allora ho fatto cosi:

Al Modulo hc-05 che ho configurato come master ho passato i segunti comandi:

> AT+ROLE=1
< OK

> AT+BIND=0013,01,050400 (che é l'indirizzo del modulo slave)
< OK

Le password dei due moduli sono le stesse (1234) e quindi non le ho dovute modificare.
A questo punto ho staccato i cavi usb dei due arduino e ho riportato il pin KEY di entrambi i moduli a GND.
Ho riattaccato i due cavi usb e ho aperto 2 monitor seriali e magicamente i due moduli comunicavano.
La cosa strana é che ogni volta che scollego e ricollego i i due arduino al pc, i due moduli continuano a comunicare senza la necessitá di ripassare il comando AT Per effettuare il link... É normale tutto ciò?
Video demonstration of my Dashboard OBDII -> http://goo.gl/m8Pqp

cece99

Il Vero Programmatore non ha bisogno di manuali sull'assembler, sono
  sufficienti i data sheet dei microprocessori.

Testato

una delle funzioni di questi moduli e' proprio di ricollegarsi all'ultimo device usato. se cambi device, ad esempio ti agganci ad un telefono, poi dovrai ridare i comandi.
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

Go Up