Aller au contenu

Réalisez vous-même un module GPS sans fil


ben

Messages recommandés

8eme et dernière étape, chargement du code

pour cette opération, il est nécessaire de déconnecter l'alim du module Bluetooth et connecter l’Arduino via le port USB. Installer l'appli Arduino et téléverser le code ci dessous.

Lien détaillant l'utilisation de l'appli Arduino:

https://wiki.mchobby.be/index.php?title=Guide_démarrage_Arduino

le code sans quoi tout ce travail ne servirait a rien!

en fichier joint :

loggerGPS-SD.ino

en ligne de code... :

*************************************************************************************************************************************************************************************************

#include <SoftwareSerial.h>

// Connect the GPS RX/TX to arduino pins 8 and 9
SoftwareSerial serial = SoftwareSerial(8,9);

const unsigned char UBX_HEADER[] = { 0xB5, 0x62 };


const char UBLOX_INIT[] PROGMEM = {
  // Disable NMEA
  0xB5,0x62,0x06,0x01,0x08,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x24, // GxGGA off
  0xB5,0x62,0x06,0x01,0x08,0x00,0xF0,0x01,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x2B, // GxGLL off
  0xB5,0x62,0x06,0x01,0x08,0x00,0xF0,0x02,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x32, // GxGSA off
  0xB5,0x62,0x06,0x01,0x08,0x00,0xF0,0x03,0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x39, // GxGSV off
  0xB5,0x62,0x06,0x01,0x08,0x00,0xF0,0x04,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x40, // GxRMC off
  0xB5,0x62,0x06,0x01,0x08,0x00,0xF0,0x05,0x00,0x00,0x00,0x00,0x00,0x01,0x05,0x47, // GxVTG off

  // Disable UBX
  0xB5,0x62,0x06,0x01,0x08,0x00,0x01,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x17,0xDC, //NAV-PVT off
  0xB5,0x62,0x06,0x01,0x08,0x00,0x01,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x12,0xB9, //NAV-POSLLH off
  0xB5,0x62,0x06,0x01,0x08,0x00,0x01,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x13,0xC0, //NAV-STATUS off

  // Enable UBX
  0xB5,0x62,0x06,0x01,0x08,0x00,0x01,0x07,0x00,0x01,0x00,0x00,0x00,0x00,0x18,0xE1, //NAV-PVT on
  //0xB5,0x62,0x06,0x01,0x08,0x00,0x01,0x02,0x00,0x01,0x00,0x00,0x00,0x00,0x13,0xBE, //NAV-POSLLH on
  //0xB5,0x62,0x06,0x01,0x08,0x00,0x01,0x03,0x00,0x01,0x00,0x00,0x00,0x00,0x14,0xC5, //NAV-STATUS on

  // Rate
  //0xB5,0x62,0x06,0x08,0x06,0x00,0x64,0x00,0x01,0x00,0x01,0x00,0x7A,0x12, //(10Hz)
  0xB5,0x62,0x06,0x08,0x06,0x00,0xC8,0x00,0x01,0x00,0x01,0x00,0xDE,0x6A, //(5Hz)
  //0xB5,0x62,0x06,0x08,0x06,0x00,0xE8,0x03,0x01,0x00,0x01,0x00,0x01,0x39, //(1Hz)
};

struct NAV_PVT {
  unsigned char cls;
  unsigned char id;
  unsigned short len;
  unsigned long iTOW;          // GPS time of week of the navigation epoch (ms)
 
  unsigned short year;         // Year (UTC)
  unsigned char month;         // Month, range 1..12 (UTC)
  unsigned char day;           // Day of month, range 1..31 (UTC)
  unsigned char hour;          // Hour of day, range 0..23 (UTC)
  unsigned char minute;        // Minute of hour, range 0..59 (UTC)
  unsigned char second;        // Seconds of minute, range 0..60 (UTC)
  char valid;                  // Validity Flags (see graphic below)
  unsigned long tAcc;          // Time accuracy estimate (UTC) (ns)
  long nano;                   // Fraction of second, range -1e9 .. 1e9 (UTC) (ns)
  unsigned char fixType;       // GNSSfix Type, range 0..5
  char flags;                  // Fix Status Flags
  unsigned char reserved1;     // reserved
  unsigned char numSV;         // Number of satellites used in Nav Solution
 
  long lon;                    // Longitude (deg)
  long lat;                    // Latitude (deg)
  long height;                 // Height above Ellipsoid (mm)
  long hMSL;                   // Height above mean sea level (mm)
  unsigned long hAcc;          // Horizontal Accuracy Estimate (mm)
  unsigned long vAcc;          // Vertical Accuracy Estimate (mm)
 
  long velN;                   // NED north velocity (mm/s)
  long velE;                   // NED east velocity (mm/s)
  long velD;                   // NED down velocity (mm/s)
  long gSpeed;                 // Ground Speed (2-D) (mm/s)
  long heading;                // Heading of motion 2-D (deg)
  unsigned long sAcc;          // Speed Accuracy Estimate
  unsigned long headingAcc;    // Heading Accuracy Estimate
  unsigned short pDOP;         // Position dilution of precision
  short reserved2;             // Reserved
  unsigned long reserved3;     // Reserved
  unsigned char dummy[8];      // dummy not used
};

NAV_PVT pvt;

float vitesseMax;
int incomingByte = 0;   // for incoming serial data

void calcChecksum(unsigned char* CK) {
  memset(CK, 0, 2);
  for (int i = 0; i < (int)sizeof(NAV_PVT); i++) {
    CK[0] += ((unsigned char*)(&pvt));
    CK[1] += CK[0];
  }
}

bool processGPS() {
  static int fpos = 0;
  static unsigned char checksum[2];
  const int payloadSize = sizeof(NAV_PVT);

  while ( serial.available() ) {
    byte c = serial.read();
    if ( fpos < 2 ) {
      if ( c == UBX_HEADER[fpos] )
        fpos++;
      else
        fpos = 0;
    }
    else {      
      if ( (fpos-2) < payloadSize )
        ((unsigned char*)(&pvt))[fpos-2] = c;

      fpos++;

      if ( fpos == (payloadSize+2) ) {
        calcChecksum(checksum);
      }
      else if ( fpos == (payloadSize+3) ) {
        if ( c != checksum[0] )
          fpos = 0;
      }q<c
      else if ( fpos == (payloadSize+4) ) {
        fpos = 0;
        if ( c == checksum[1] ) {
          return true;
        }
      }
      else if ( fpos > (payloadSize+4) ) {
        fpos = 0;
      }
    }
  }
  return false;
}

void setup()
{
  Serial.begin(9600);
  serial.begin(9600);
 
  // send configuration data in UBX protocol
  for(int i = 0; i < sizeof(UBLOX_INIT); i++) {                        
    serial.write( pgm_read_byte(UBLOX_INIT+i) );
    delay(5); // simulating a 38400baud pace (or less), otherwise commands are not accepted by the device.
  }
 
  vitesseMax = 0.0;
 
 
}

void loop() {
  float vitesseCourante = 0.0;
  if ( processGPS() ) {
      if (pvt.fixType==2 || pvt.fixType==3)
      {
          vitesseCourante = abs(pvt.gSpeed)/ 1000.0f / 1000.0f * 3600.0f;
          if (vitesseCourante>vitesseMax)
          {
              vitesseMax=vitesseCourante;  
          }
      }
    
    Serial.print("*f");Serial.print(pvt.fixType);Serial.println("*");
    Serial.print("*v");Serial.print(vitesseCourante);Serial.println("*");
    Serial.print("*m");Serial.print(vitesseMax);Serial.println("*");
    Serial.print("*k");Serial.print(pvt.lon/10000000.0f);Serial.println("*");
    Serial.print("*l");Serial.print(pvt.lat/10000000.0f); Serial.println("*");
      
    /*  
    Serial.print("#SV: ");      Serial.print(pvt.numSV);
    Serial.print(" fixType: "); Serial.print(pvt.fixType);
    Serial.print(" vitesseMax:");     Serial.print(vitesseMax);
    Serial.print(" lat/lon: "); Serial.print(pvt.lat/10000000.0f); Serial.print(","); Serial.print(pvt.lon/10000000.0f);
    Serial.print(" gSpeed: ");  Serial.print(pvt.gSpeed/1000.0f);
    Serial.print(" heading: "); Serial.print(pvt.heading/100000.0f);
    Serial.print(" hAcc: ");    Serial.print(pvt.hAcc/1000.0f);
    Serial.println();
    */
  }
  if (Serial.available() > 0) {
            // read the incoming byte:
            incomingByte = Serial.read();

        if (incomingByte == 'r') {
            vitesseMax=0.0;
        }
    }
}

**************************************************************************************************************************************************************

  • Like 1
  • Winner 1
Lien vers le commentaire
Partager sur d’autres sites

mon Job touche a sa fin, c'est donc maintenant a vous de jouer!

vous pouvez donc réaliser un enregistreur GPS Bluetooth dans sa version "boitier" ou sous gaine thermorétractable afin de gagner notamment en encombrement

 

IMG_20180915_135231830.jpg

IMG_20180921_215520955.jpg

IMG_20180915_125727985.jpg

  • Winner 1
Lien vers le commentaire
Partager sur d’autres sites

Je vais me lancer, vu que ça fait un moment que je cherche infos compact, léger et avec lecture de vitesse au bord de l'eau 

Ou acheter les cartes ?

Le code il faut copier les etoiles aussi ? Je connais rien en Arduino et j'ai pas bien le temps de regarder de prêt 

Tu proposerai une version kit avec programme chargé et juste à souder ?

Lien vers le commentaire
Partager sur d’autres sites

C'est du bon boulot.  Et c'est tentant de le faire.

 

Lien vers le commentaire
Partager sur d’autres sites

Chapeau bas ! :huh:..  Ça c'est du tuto au service de la communauté :fleur:

Ps.. Tu as oublié un "/" et une virgule à la ligne 37;):lol:

Lien vers le commentaire
Partager sur d’autres sites

Est il possible d'afficher l'altitude :rolleyes:???... Je sais que Sunderman a toujours voulu savoir s'il détient le record du plus haut "soleil" avec son Electra vert ! :lol:

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

pour améliorer la lisibilité es qu'un modérateur peux remplacer le code insérer précédemment par le fichier ci dessous et remplacer les deux schéma de début de sujet par cette version définitive.

merci

loggerGPS-SD.ino

schema cablage logger gps 22-09-18.jpg

  • Like 1
Lien vers le commentaire
Partager sur d’autres sites

@Arno 69 je pense que le plus simple c'est que chacun commande le nécessaire, je vais mettre ici des liens. Je vais étudier ta demande.

 

@Maskali XIII Mais bien sûre que c'est possible et bien plus encore! :ok: Nous sommes dans une époque où beaucoup de choses son réalisable, on pourrait imaginer piloter nos modèle avec le smart phone ou faire chauffer le café... la seul limite est votre imagination!:ange:

  • Haha 1
Lien vers le commentaire
Partager sur d’autres sites

Voici les lien vers les boutiques chez qui j'ai acheté les modules, j'essaye autant que possible de ne pas acheter chez les mastodontes américain mais la, les tarifs sont imbattables. Comment font ils?...:ouin::crash:

Arduino nano: https://www.amazon.fr/dp/B00QPUEFNW/ref=pe_3044141_189395771_TE_3p_dp_1

lecteur SD: https://www.amazon.fr/dp/B00YMJVLAS/ref=pe_3044141_189395771_TE_3p_dp_2

module bluetooth HC06: https://www.ebay.fr/itm/HC-06-HC-05-module-bluetooth-emetteur-recepteur-ou-module-base-HC06-HC07-HC05/142503305546?hash=item212ddbe14a:m:mYSHrYZsvbi0buLhF9mwF0g

module GPS: https://www.ebay.fr/itm/272499483857

carte micro SD et son adaptateur: https://www.ebay.fr/itm/151994222160

 

 

Lien vers le commentaire
Partager sur d’autres sites

il y a 50 minutes, Maskali XIII a dit :

Est il possible d'afficher l'altitude :rolleyes:???... Je sais que Sunderman a toujours voulu savoir s'il détient le record du plus haut "soleil" avec son Electra vert ! :lol:

Je ne sais pas s'il a le record en hauteur mais en longueur c'est sûr !

@ben, je m'occupe des modifs :ok:

  • Haha 1
Lien vers le commentaire
Partager sur d’autres sites

Pourquoi ne pas tout prendre chez Amazon ? Je penses que tout est dispo......:ok:

Pour ceux qui ont un compte Prime , commandé avant 13h00 , reçu le lendemain ( pour les impatients..... ..)

  • Winner 2
Lien vers le commentaire
Partager sur d’autres sites

il y a 23 minutes, LOULE04 a dit :

Pourquoi ne pas tout prendre chez Amazon ? Je penses que tout est dispo......:ok:

Pour ceux qui ont un compte Prime , commandé avant 13h00 , reçu le lendemain ( pour les impatients..... ..)

C'est ce que je suis en train de regarder aussi

Je m'attendais pas à un prix des composants aussi bas, j'en ai pas forcément l utilité en ce moment mais juste pour le fun je vais essayer merci Ben 👍

Lien vers le commentaire
Partager sur d’autres sites

Coup total, on est pas loin d'un GSM-010.

Bon ok on a le plaisir de le monter soi même avec celui ci :D

Lien vers le commentaire
Partager sur d’autres sites

Il y a 1 heure, newnew95 a dit :

Coup total, on est pas loin d'un GSM-010.

Bon ok on a le plaisir de le monter soi même avec celui ci :D

Mouai pas autant que ça, j’ai vu 60€ le gsm 010 là j’ai commandé le matos pour - de 20€ en tout :ok::ok:

Lien vers le commentaire
Partager sur d’autres sites

Il y a 3 heures, ben a dit :

une carte Sd de 1 ou 2Go est largement suffisant

Les 1 GO sont depuis un bout de temps quasi introuvables.....;)

Lien vers le commentaire
Partager sur d’autres sites

Il y a 1 heure, LOULE04 a dit :

Les 1 GO sont depuis un bout de temps quasi introuvables.....;)

sauf dans les fonds de tiroir peut-être ??...

Lien vers le commentaire
Partager sur d’autres sites

il y a 52 minutes, laurent a dit :

sauf dans les fonds de tiroir peut-être ??...

Non Non , elles sont toutes dans les WII crackées  :P

  • Haha 2
Lien vers le commentaire
Partager sur d’autres sites

Paramétrage de l'application "BluetoothElectronics"

https://play.google.com/store/apps/details?id=com.keuwl.arduinobluetooth&amp;hl=en_US

Cette application permet d'afficher les valeurs générés par le code de l'Arduino qui sont: le Fix qui est la qualité du signal GPS sur trois niveau, la vitesse courante, la vitesse maximum ainsi que la longitude et la latitude.

1/ Pour afficher les deux paramètres qui nous intéressent qui sont la valeur de vitesse maximale et la valeur de Fix il faut ouvrir l'application et éditer une page vierge.

- insérer deux zone de texte de taille moyenne

- éditer la zone de texte et renseigner le nom du paramètre a afficher dans le champ "default text", dans le champs "Receive Caracter" inscrire la lettre en minuscule correspondante a la valeur que vous voulez afficher. fix: f; vitesseCourante: v; vitesseMaximum: m; latitude: k; longitude:l

- valider

2/ Insertion d'un bouton permettant la remise a zéro de la valeur de vitesse maximum

ce bouton peut être intéressant si après votre premier run vous changez un réglage sur votre modèle et que vous souhaitez savoir quelle est la vitesse max lors du second run

-insérer un bouton

- éditer et inscrire la lettre r dans le champ "Press Text"

- valider

 

 

Screenshot_20180923-182611.png

Screenshot_20180923-184708.png

Screenshot_20180923-184834.png

Screenshot_20180923-181737.png

Lien vers le commentaire
Partager sur d’autres sites

Coté carte SD, les données sont enregistrées dans un fichier texte sous la forme Fix, Vitesse, Longitude, Latitude. Pour mettre en forme les données et ainsi faciliter la lecture vous pouvez utiliser un tableur comme OpenOffice ou Excel.

image.png.42e124df1d69a75229527f5af2ef4f12.pngimage.png.2341e07520e95cad6949b26034244292.png

Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...