Identification et contrôle module gps

Bonjour à tous, je me permets de crée un nouveau topic pour poser quelque question sur mon module GPS

Donc voilà en résumer j'ai récupère un module GPS d'un ancien TomTom sur pda et j'aimerai l'utiliser avec mon arduino mais je ne sais pas si il est compatible

Apprêt avoir démonté mon module j'ai pu identifier la puce sirf gp2a lp-7450

Je me suis balade sur le net mais je n'ai rien trouvé j'ai aussi essayé plusieurs code mais sans succès impossible d'avoir une seul donnée de mon module en plus je ne suis pas certain des pins utiliser j'ai juste pu repère le +et - par leur couleur dans l'ancien câble

J’aimerai utiliser ce module pour enregistrer une " position clef " qui activera un code dans le programme à chaque fois que je m'y rendrai

Malheureusement j'ai des connaissances limitée j'apprends seulement à me servir de l'arduino

Pouvez-vous m'aider ou m’informer ? :slight_smile:

Le datasheet donne quelques infos (cablage, protocole,...), mais en 2 pages c'est vrai que c'est un peu "light":
http://www.datasheetarchive.com/dl/Datasheet-09/DSA00147772.pdf

A mon avis une bibliothèque classique du type TinyGPS++ doit fonctionner si il y a les bons branchements

:wink:

alfredcore:
Bonjour à tous, je me permets de crée un nouveau topic pour poser quelque question sur mon module GPS

Donc voilà en résumer j'ai récupère un module GPS d'un ancien TomTom sur pda et j'aimerai l'utiliser avec mon arduino mais je ne sais pas si il est compatible

...
Pouvez-vous m'aider ou m’informer ? :slight_smile:

Bonjour
C'est probablement une simple entrée sortie TTL , mais attention à :
l'alimentation du module qui est peut etre en 3.3V
aux taud de bauds du TTL
ça vient de quel tomtom ? reference

Merci de vos réponse j'ai déjà pu faire quelque recherche et test en plus, j'ai déjà trouvé d'es info c'est déjà sa :slight_smile: mais aucun test ne me donner des résultats

J’ai essayé ce code que j’ai trouvé grâce à la lib TinyGPS++ mais rien : s

#include <TinyGPS++.h>
#include <SoftwareSerial.h>
/*
   This sample sketch demonstrates the normal use of a TinyGPS++ (TinyGPSPlus) object.
   It requires the use of SoftwareSerial, and assumes that you have a
   4800-baud serial GPS device hooked up on pins 4(rx) and 3(tx).
*/
static const int RXPin = 2, TXPin = 3;
static const uint32_t GPSBaud = 4800;

// The TinyGPS++ object
TinyGPSPlus gps;

// The serial connection to the GPS device
SoftwareSerial ss(RXPin, TXPin);

void setup()
{
  Serial.begin(115200);
  ss.begin(GPSBaud);

  Serial.println(F("DeviceExample.ino"));
  Serial.println(F("A simple demonstration of TinyGPS++ with an attached GPS module"));
  Serial.print(F("Testing TinyGPS++ library v. ")); Serial.println(TinyGPSPlus::libraryVersion());
  Serial.println(F("by Mikal Hart"));
  Serial.println();
}

void loop()
{
  // This sketch displays information every time a new sentence is correctly encoded.
  while (ss.available() > 0)
    if (gps.encode(ss.read()))
      displayInfo();

  if (millis() > 5000 && gps.charsProcessed() < 10)
  {
    Serial.println(F("No GPS detected: check wiring."));
    while(true);
  }
}

void displayInfo()
{
  Serial.print(F("Location: ")); 
  if (gps.location.isValid())
  {
    Serial.print(gps.location.lat(), 6);
    Serial.print(F(","));
    Serial.print(gps.location.lng(), 6);
  }
  else
  {
    Serial.print(F("INVALID"));
  }

  Serial.print(F("  Date/Time: "));
  if (gps.date.isValid())
  {
    Serial.print(gps.date.month());
    Serial.print(F("/"));
    Serial.print(gps.date.day());
    Serial.print(F("/"));
    Serial.print(gps.date.year());
  }
  else
  {
    Serial.print(F("INVALID"));
  }

  Serial.print(F(" "));
  if (gps.time.isValid())
  {
    if (gps.time.hour() < 10) Serial.print(F("0"));
    Serial.print(gps.time.hour());
    Serial.print(F(":"));
    if (gps.time.minute() < 10) Serial.print(F("0"));
    Serial.print(gps.time.minute());
    Serial.print(F(":"));
    if (gps.time.second() < 10) Serial.print(F("0"));
    Serial.print(gps.time.second());
    Serial.print(F("."));
    if (gps.time.centisecond() < 10) Serial.print(F("0"));
    Serial.print(gps.time.centisecond());
  }
  else
  {
    Serial.print(F("INVALID"));
  }

  Serial.println();
}

Et j’ai trouvé d’où j’ai trouvé ce module et quelque info supplémentaire

Wired GPS Specifications
Based on SiRFStarII Architecture
Acquisition Time: Cold/Warm/Hot Start: 45/38/8 sec typical TTFF
Reacquisition Time: 0.1 seconds
Support Standard NMEA-0183 v2.0 and SiRF Binary protocol
Support Accurate 1PPS Output Signal Aligned with GPS Timing
Trickle Power Enabled for Power Saving
Superior Sensitivity for Urban Canyon and Foliage Environment
Magnet base for mounting on the car
Operating temperature: -40 ºC to +85 ºC
Power: 5.0 +-5%V DC input internal rechargeable 3V lithium battery
External Power: Universal connector for Pocket PCs
SiRF Binary plus proprietary messages NMEA-0183 v2.0 GGA, GSA, GSV, RMC, VTG, GLL
Baud Rate: 4,800 to 38,400 bps

Par contre pour le taux de bauds du TTL j’ai trouvé quelque info mais aucune idée de ce que je dois utiliser

alfredcore:
Merci de vos réponse j'ai déjà pu faire quelque recherche et test en plus, j'ai déjà trouvé d'es info c'est déjà sa :slight_smile: mais aucun test ne me donner des résultats

J’ai essayé ce code que j’ai trouvé grâce à la lib TinyGPS++ mais rien : s

Par contre pour le taux de bauds du TTL j’ai trouvé quelque info mais aucune idée de ce que je dois utiliser

avant d'utiliser tinygps, il faut déjà voir ce qui sort du module
il y avait quoi comme connecteur sur ce module , ça se connectait comment au PDA ?
les 4 "fils" que l'ont voit partait vers ce connecteur ?
c'est quoi le marquage du composant (fleche jaune) ,

Sa se connectai via un câble rj11 sur la base de soutien du pad et la base se connectai au pad via le port normal

et oui il n'y avai que 4 fil

edit : ha je n'avai pas vu ton "edit" alor le marquage c'est

le logo ST z430
st232B
mrc

alfredcore:
edit : ha je n'avai pas vu ton "edit" alor le marquage c'est

le logo ST z430
st232B
mrc

Alors stop tes essais en direct avec l'arduino pour l'instant :grin:
ta sortie est une sortie RS232 pas TTL
il y a des solutions , je regarde plus tard

complement
test la continuite de tes fils orange et marron vers le ST232B et repere sur quel pin du ST232B cela " atterri"

A l'oeil je vois ça , ce qui correspondrait bien au DS du ST232B 8)

he oui tu as raison :slight_smile:

alfredcore:

he oui tu as raison :slight_smile:

alors tu soude "proprement" 2 fils comme representé là en bleu ciel
il y a meme de la pseudo pastille de prevue :grin:

j'ai eu un petit peut de mal je n'ai plus souder depuis un moment mais c'est fait :slight_smile:

alfredcore:
j'ai eu un petit peut de mal je n'ai plus souder depuis un moment mais c'est fait :slight_smile:

alors pour l'instant ne te preoccupe que du fil connecté sur le pin 11 du ST232B

fais un simple test avec ce bout de code

en connectant le fil "11" du ST232B (1ere fleche bleu ciel en bas à gauche sur la photo) sur le pin 3 de l'arduino

(sans oublier evidemment la liaison commune GND )
tu ouvre le serial monitor de l'IDE standard en 115200
et si tu vois que ça "cause dans le poste" 8) avec des "$G.." tu aura bien avançé 8)
si tu vois apparaitre "des trucs" sans "$G" essaye avec un changement de taux de baud

#include <SoftwareSerial.h>

SoftwareSerial BTSerial(2, 3); // RX | TX
// RX arduino <--- TX cible 
// TX arduino ---> RX cible

void setup()
{
  Serial.begin(115200); // vitesse serial monitor
  
  BTSerial.begin(9600);  // vitesse software serial GPS essaye avec 4800,9600,19200,38400,57600,115200 
}

void loop()
{

  // Keep reading from cible and send to Arduino Serial Monitor
  if (BTSerial.available())
    Serial.write(BTSerial.read());

  // Keep reading from Arduino Serial Monitor and send to cible
  if (Serial.available())
    BTSerial.write(Serial.read());
}

Artouste:
alors pour l'instant ne te preoccupe que du fil connecté sur le pin 11 du ST232B

Du coup tu essaies de lui faire récupérer une trame NMEA?

john_lenfr:

Artouste:
alors pour l'instant ne te preoccupe que du fil connecté sur le pin 11 du ST232B

Du coup tu essaies de lui faire récupérer une trame NMEA?

J'assaie simplement de voir déjà si ill y a de l'activité TTL en sortie de GPS
apres si on reconnait de la sentence NMEA ($G) c'est quasi tout bon
mais si le module est programmé pour cracher de la "SIRF" ça va déjà etre moins simple :grin:
a suivre pour moi , fin de journée, je --->[]

Donc j'ai fait le test que tu m'a conseillé et il ne m'affiche rien sur le moniteur série par contre j'utilise un arduino micro une différence ?

je [] aussi mais normalement la micro ne change rien si tu gardes l'adaptateur branché pour "recevoir" l'affichage sur la liaison série et si tu arrives à uploader le code correctement sans problème.

Éventuellement pour "voir" si ça fonctionne mets toi une led sur le pin 13 et dans le code tu rajoutes ce qu'il faut.

:wink:

mon arduino micro a un port usb il reste toujour connecter j'ai aussi fait les test avec le mega que j'ai mais toujour le meme resultat

alfredcore:
mon arduino micro a un port usb il reste toujour connecter j'ai aussi fait les test avec le mega que j'ai mais toujour le meme resultat

je crois que la micro à une specificité concernant le serial.
le plus simple avec ta mega

  • tu charge l'exemple blink ,pour etre sur qu'il n'y a pas de serial sollicité par programme
  • tu connecte la sortie 11 de ton ST232B sur le pin 1 (TX) de ta mega
    et tu ouvre le serial monitor de l'IDE , là sans prog tu peux changer la taux de baud facilement et regarder si "ça cause dans le post"

NB : J'ai testé la manip avec un dispo basé sur unr sirfIII en sortie TTL , un UNO et ça fonctionne (chez moi , sortie NMEA à 57600)

Ha voilà j'ai enfin une réponse de mon module, effectivement avec le méga et la manip que tu m’as donné j'ai pu récupère via une sortie a 4800 baud :smiley:

Il me donne ceci

$GPVTG,,T,,M,,N,,K,N*2C
$GPGGA,000432.982,,,,,0,00,50.0,,M,,,,0000*28
$GPRMC,000432.982,V,,,,,,,250104,,,N*49
$GPVTG,,T,,M,,N,,K,N*2C
$GPGGA,000433.982,,,,,0,00,50.0,,M,,,,0000*29
$GPRMC,000433.982,V,,,,,,,250104,,,N*48
$GPVTG,,T,,M,,N,,K,N*2C
$GPGGA,000434.982,,,,,0,00,50.0,,M,,,,0000*2E
$GPRMC,000434.982,V,,,,,,,250104,,,N*4F
$GPVTG,,T,,M,,N,,K,N*2C
$GPGGA,000435.982,,,,,0,00,50.0,,M,,,,0000*2F
$GPRMC,000435.982,V,,,,,,,250104,,,N*4E
$GPVTG,,T,,M,,N,,K,N*2C
$GPGGA,000436.982,,,,,0,00,50.0,,M,,,,0000*2C
$GPGSA,A,1,,,,,,,,,,,,,50.0,50.0,50.0*05
$GPGSV,3,1,12,21,00,000,,10,00,000,,25,00,000,,09,00,000,*74
$GPGSV,3,2,12,07,00,000,,03,00,000,,11,00,000,,15,00,000,*7B
$GPGSV,3,3,12,02,00,000,,30,00,000,,01,00,000,,26,00,000,*7E
$GPRMC,000436.982,V,,,,,,,250104,,,N*4D

alfredcore:
Ha voilà j'ai enfin une réponse de mon module, effectivement avec le méga et la manip que tu m’as donné j'ai pu récupère via une sortie a 4800 baud :smiley:

Il me donne ceci

$GPVTG,,T,,M,,N,,K,N*2C

$GPGGA,000432.982,,,,,0,00,50.0,,M,,,,000028
$GPRMC,000432.982,V,,,,,,,250104,,,N
49
$GPVTG,,T,,M,,N,,K,N2C
$GPGGA,000433.982,,,,,0,00,50.0,,M,,,,0000
29
$GPRMC,000433.982,V,,,,,,,250104,,,N48
$GPVTG,,T,,M,,N,,K,N
2C
$GPGGA,000434.982,,,,,0,00,50.0,,M,,,,00002E
$GPRMC,000434.982,V,,,,,,,250104,,,N
4F
$GPVTG,,T,,M,,N,,K,N2C
$GPGGA,000435.982,,,,,0,00,50.0,,M,,,,0000
2F
$GPRMC,000435.982,V,,,,,,,250104,,,N4E
$GPVTG,,T,,M,,N,,K,N
2C
$GPGGA,000436.982,,,,,0,00,50.0,,M,,,,00002C
$GPGSA,A,1,,,,,,,,,,,,,50.0,50.0,50.0
05
$GPGSV,3,1,12,21,00,000,,10,00,000,,25,00,000,,09,00,000,*74
$GPGSV,3,2,12,07,00,000,,03,00,000,,11,00,000,,15,00,000,*7B
$GPGSV,3,3,12,02,00,000,,30,00,000,,01,00,000,,26,00,000,7E
$GPRMC,000436.982,V,,,,,,,250104,,,N
4D

:grin:
Bon et bien voilà
maintenant tu a tout en main pour jouer :
-ton module sort en TTL du NMEA parfaitement standard :grin:
Tapluka adapter 8)