Pages: 1 2 3 [4] 5   Go Down
Author Topic: Branchement GPS - Arduino UNO  (Read 6186 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Newbie
*
Karma: 0
Posts: 13
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Mince, je viens tout juste de m'acheter une insoleuse et une graveuse... smiley-sad
Tant pis j'aurai ce matériel !!

C'est très bon à savoir pour 25€, merci pour tous ces renseignements. Avec GPS on peut difficilement descendre en dessous cette précision de toute facon, après faut de la correction EGNOS ou du GALILEO !!!
Logged

France S-O ou exil en IDF
Offline Offline
Edison Member
*
Karma: 25
Posts: 1904
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Et ça correspond aussi au pseudo, hein smiley-mr-green
Ben oui, j'aime pas tanguer d'un coté à l'autre alors je prend le vent toujours du même coté.
« Last Edit: January 23, 2012, 04:27:04 pm by 68tjs » Logged

Offline Offline
Sr. Member
****
Karma: 0
Posts: 278
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

C'était pas un tuyaux percé alors ?  smiley-lol

Non, les yeux fermés j'ai foncé smiley-grin

68tjs, à prendre le vent toujours du même côté, tu risque de dériver... smiley
Logged

Offline Offline
Sr. Member
****
Karma: 0
Posts: 278
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Sinon j'ai trouvé deux bons petits cables pour brancher le GPS facilemment !



Trouvé dans une souris à boule, PS/2.

Donc pour le moment et pour mes tests, ils me seront bien utiles.
Logged

Offline Offline
Faraday Member
**
Karma: 19
Posts: 4178
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset


Pour la seconde, la précision est de 3 mètres si ce n'est tout pile.
Je l'ai pris ce matin pour aller au boulot, j'ai fais quelques photos le long du trajet et testé les coordonnées une fois au travail sur Google Maps et ça correspond super bien (à 3 mètres près).

En intérieur comme maintenant, ça peut varier, déjà la précision s'affine au fur et à mesure que les minutes passent. Donc parfois une 30ène de mètres et parfois moins de 5 mètres.

Hors arduino
un soft sympa pour voir ce que donne (entre autre) une "déviation map"
même si il est publié/fourni par un "constructeur" , il accepte le NMEA et en plus c'est Suisse  smiley-mr-green
http://www.u-blox.com/en/evaluation-tools-a-software/u-center/u-center.html
exemple de rendu


Logged

Offline Offline
Sr. Member
****
Karma: 0
Posts: 278
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

C'est un tireur d'élite qui vise un brocolis ?
Logged

Offline Offline
Faraday Member
**
Karma: 19
Posts: 4178
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Avec GPS on peut difficilement descendre en dessous cette précision de toute facon, après faut de la correction EGNOS ou du GALILEO !!!
EGNOS oui ici en europe , d'ailleurs le module le supporte déjà  
cf DS = WAAS/EGNOS/MSAS/GAGAN support

pour Galileo, il va encore falloir attendre "que ça cause bien dans le poste"   smiley-mr-green  , et avant d'avoir du module OEM exploitable en "amateur" ... smiley-cool

C'est un tireur d'élite qui vise un brocolis ?

Où ... voir l'inverse  smiley-mr-green

« Last Edit: January 23, 2012, 04:47:13 pm by Artouste » Logged

Forum Moderator
Geneva
Offline Offline
Faraday Member
*****
Karma: 24
Posts: 3171
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Mince, je viens tout juste de m'acheter une insoleuse et une graveuse... smiley-sad
Tant pis j'aurai ce matériel !!

Si c'était du circuit imprimé pour lequel tu me posais la question, c'est imprimante laser, solution d'acide chlorhydrique+eau oxygénée.
le typon est fait avec totochop .... oui,oui, je sais , il y a plus simple pour faire ça  smiley-lol
Logged

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

0
Offline Offline
Newbie
*
Karma: 0
Posts: 13
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Oui c'est exactement ca !
Mais alors là je comprends pas ta technique, je vais faire des recherches sur internet et revenir vers toi si je trouve pas tout, je veux pas trop te déranger...
Logged

Forum Moderator
Geneva
Offline Offline
Faraday Member
*****
Karma: 24
Posts: 3171
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Pas de soucis.  smiley-wink
Logged

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

Offline Offline
Newbie
*
Karma: 0
Posts: 39
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Je teste le code donné en exemple avec TinyGPS :

Code:
#include <NewSoftSerial.h>
#include <TinyGPS.h>

/* This sample code demonstrates the normal use of a TinyGPS object.
   It requires the use of NewSoftSerial, and assumes that you have a
   4800-baud serial GPS device hooked up on pins 2(rx) and 3(tx).
*/

TinyGPS gps;
NewSoftSerial nss(2, 3);

void gpsdump(TinyGPS &gps);
bool feedgps();
void printFloat(double f, int digits = 2);

void setup()
{
  Serial.begin(115200);
  nss.begin(4800);
  
  Serial.print("Testing TinyGPS library v. "); Serial.println(TinyGPS::library_version());
  Serial.println("by Mikal Hart");
  Serial.println();
  Serial.print("Sizeof(gpsobject) = "); Serial.println(sizeof(TinyGPS));
  Serial.println();
}

void loop()
{
  bool newdata = false;
  unsigned long start = millis();

  // Every 5 seconds we print an update
  while (millis() - start < 5000)
  {
    if (feedgps())
      newdata = true;
  }
  
  if (newdata)
  {
    Serial.println("Acquired Data");
    Serial.println("-------------");
    gpsdump(gps);
    Serial.println("-------------");
    Serial.println();
  }
}

void printFloat(double number, int digits)
{
  // Handle negative numbers
  if (number < 0.0)
  {
     Serial.print('-');
     number = -number;
  }

  // Round correctly so that print(1.999, 2) prints as "2.00"
  double rounding = 0.5;
  for (uint8_t i=0; i<digits; ++i)
    rounding /= 10.0;
  
  number += rounding;

  // Extract the integer part of the number and print it
  unsigned long int_part = (unsigned long)number;
  double remainder = number - (double)int_part;
  Serial.print(int_part);

  // Print the decimal point, but only if there are digits beyond
  if (digits > 0)
    Serial.print(".");

  // Extract digits from the remainder one at a time
  while (digits-- > 0)
  {
    remainder *= 10.0;
    int toPrint = int(remainder);
    Serial.print(toPrint);
    remainder -= toPrint;
  }
}

void gpsdump(TinyGPS &gps)
{
  long lat, lon;
  float flat, flon;
  unsigned long age, date, time, chars;
  int year;
  byte month, day, hour, minute, second, hundredths;
  unsigned short sentences, failed;

  gps.get_position(&lat, &lon, &age);
  Serial.print("Lat/Long(10^-5 deg): "); Serial.print(lat); Serial.print(", "); Serial.print(lon);
  Serial.print(" Fix age: "); Serial.print(age); Serial.println("ms.");
  
  feedgps(); // If we don't feed the gps during this long routine, we may drop characters and get checksum errors

  gps.f_get_position(&flat, &flon, &age);
  Serial.print("Lat/Long(float): "); printFloat(flat, 5); Serial.print(", "); printFloat(flon, 5);
  Serial.print(" Fix age: "); Serial.print(age); Serial.println("ms.");

  feedgps();

  gps.get_datetime(&date, &time, &age);
  Serial.print("Date(ddmmyy): "); Serial.print(date); Serial.print(" Time(hhmmsscc): "); Serial.print(time);
  Serial.print(" Fix age: "); Serial.print(age); Serial.println("ms.");

  feedgps();

  gps.crack_datetime(&year, &month, &day, &hour, &minute, &second, &hundredths, &age);
  Serial.print("Date: "); Serial.print(static_cast<int>(month)); Serial.print("/"); Serial.print(static_cast<int>(day)); Serial.print("/"); Serial.print(year);
  Serial.print("  Time: "); Serial.print(static_cast<int>(hour)); Serial.print(":"); Serial.print(static_cast<int>(minute)); Serial.print(":"); Serial.print(static_cast<int>(second)); Serial.print("."); Serial.print(static_cast<int>(hundredths));
  Serial.print("  Fix age: ");  Serial.print(age); Serial.println("ms.");
  
  feedgps();

  Serial.print("Alt(cm): "); Serial.print(gps.altitude()); Serial.print(" Course(10^-2 deg): "); Serial.print(gps.course()); Serial.print(" Speed(10^-2 knots): "); Serial.println(gps.speed());
  Serial.print("Alt(float): "); printFloat(gps.f_altitude()); Serial.print(" Course(float): "); printFloat(gps.f_course()); Serial.println();
  Serial.print("Speed(knots): "); printFloat(gps.f_speed_knots()); Serial.print(" (mph): ");  printFloat(gps.f_speed_mph());
  Serial.print(" (mps): "); printFloat(gps.f_speed_mps()); Serial.print(" (kmph): "); printFloat(gps.f_speed_kmph()); Serial.println();

  feedgps();

  gps.stats(&chars, &sentences, &failed);
  Serial.print("Stats: characters: "); Serial.print(chars); Serial.print(" sentences: "); Serial.print(sentences); Serial.print(" failed checksum: "); Serial.println(failed);
}
  
bool feedgps()
{
  while (nss.available())
  {
    if (gps.encode(nss.read()))
      return true;
  }
  return false;
}

Il m'affiche :

Quote
Testing TinyGPS library v. 10
by Mikal Hart

Sizeof(gpsobject) = 103

Mais comme apparement rien d'autre arrive, il n'affiche rien d'autre...

Déjà il est bien alimenté, la tension sur les pins VCC et GND est bien de 4.8V.

Et pour les pins TXD et RXD, je sais pas quoi tester mais j'ai déjà essayé à l'endroit, à l'envers... et toujours rien.

Sur le GPS il y aussi une prise NC et RST, il y a peut être quelquechose à y faire d'abord.

Et ca envoi qqchose même si le GPS ne capte pas ?

Juste une petite question, moi lorsque je test ce ode, cela m'affiche ceci au moment de la compilation : Error: garbage at end of line
Cela pourrais être du a quoi ?

Edit : Problème réglé, j'avais laisse l'ancienne bibliothèque "SoftwareSerial" avec la nouvelle et ca faisait pas bon ménage smiley-sweat
« Last Edit: January 27, 2012, 06:04:37 pm by DragonsNoirs77 » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 28
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Yop,

J'ai réussi à récupérer les données, j'ai trouvé un code sur le net, c'est pas très propre, ça n'utilise pas TinyGPS ni NewSoftSerial mais ça marche. Cependant c'est pas au top.


Tu utilise toujours ce sale code ?
Si c'est le cas, tu pourrais le diffuser, ou dire où le trouver ?

Merci
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 28
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bon, moi aussi ca me saoule ...  smiley-cry

J'arrive bien à recupérer des infos avec :
Code:
/*
Mettre le TX du GPS sur le TX de l'arduino
Sur le moniteur serie : 9600bps
*/

void setup(){
  pinMode(0,INPUT);
  digitalWrite(0,LOW);
  pinMode(1,INPUT);
  digitalWrite(1,LOW);
}

void loop(){
  while(1);
}

Mais rien avec les codes officiels ...
C'est quoi ce délire ?
Logged

Offline Offline
Sr. Member
****
Karma: 0
Posts: 278
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bon, moi aussi ca me saoule ...  smiley-cry

J'arrive bien à recupérer des infos avec :
Code:
/*
Mettre le TX du GPS sur le TX de l'arduino
Sur le moniteur serie : 9600bps
*/

void setup(){
  pinMode(0,INPUT);
  digitalWrite(0,LOW);
  pinMode(1,INPUT);
  digitalWrite(1,LOW);
}

void loop(){
  while(1);
}

Mais rien avec les codes officiels ...
C'est quoi ce délire ?

T'as vu c'est la galère, ce soir je te posterai un code qui fonctionne aussi, qui utilise NewSoftSerial, ça permet de libérer la pin D1 de l'Arduino, seulement c'est le même résultat, ça marche sur le coup, mais si tu débranches et rebranche ton montage ça ne marche plus... Je te tiendrais au courant si jamais je trouve LA soluce.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 28
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

J'y comprends rien ... le code officiel de tinygps fonctionne correctement ce soir !!!!!  smiley-roll

Je reverifié les connexion et tester d'inverser le tx/rx au niveau de l'arduino ....

Code:
Acquired Data
-------------
Lat/Long(10^-5 deg): 4876942, 220891 Fix age: 144ms.
Lat/Long(float): 48.76942, 2.20891 Fix age: 147ms.
Date(ddmmyy): 10212 Time(hhmmsscc): 22145400 Fix age: 167ms.
Date: 2/1/2012  Time: 22:14:54.0  Fix age: 171ms.
Alt(cm): 22450 Course(10^-2 deg): 25078 Speed(10^-2 knots): 0
Alt(float): 224.50 Course(float): 250.78
Speed(knots): 0.00 (mph): 0.00 (mps): 0.00 (kmph): 0.00
Stats: characters: 10401 sentences: 51 failed checksum: 2
-------------

Par contre c'est super lent ... Je m'attendais a voir défiler ce code toute les secondes, comme dans nos exemples qui foncitonnaient ... Il me faut pret de 6-7sec pour avoir une nouvelle position ...
« Last Edit: February 01, 2012, 05:16:18 pm by arsenic » Logged

Pages: 1 2 3 [4] 5   Go Up
Jump to: