image
image
image

Votre IP : 54.90.236.179
Dernier ajout : 29 mars
Visiteurs connectés : 39

image Conception
Développé sous SPIP
Informations légales

image
image
Recherche image

Pratiques et Techniques de la Plaisance

image

Accueil du site > Forum technique > Electronique, instruments -forum- > Bus NMEA/Seatalk > Port serie et trame NMEA

Rubrique : Bus NMEA/Seatalk

__________________________________________________________________________________________________________________

Port serie et trame NMEAVersion imprimable de cet article Version imprimable

Publié Mars 2013, (màj Mars 2013) par : Jolimousi  image   

Copyright : Les articles sont la propriété de leurs auteurs et ne peuvent pas être reproduits en partie ou totalité sans leur accord
S'identifier pour s'abonner par mail Inscrit aux forum vous pourriez transmettre cette page à un ami plaisancier

Bonjour,
En préambule : je ne suis ni marin ni informaticien....
Je vais essayer d’expliquer clairement mon problème :
Je désire cartographier un plan d’eau...
J’ai un GPS qui m’envoie une trame NMEA sur un port série (date, heure, position....). Ce n’est pas un GPS de navigation mais un GPS de topographe en mode RTK (précision de quelques centimètres en coordonnées planes Lambert 93)...J’ai environ une position toutes les 0.2s...
J’ai un sondeur qui envoie aussi une trame NMEA sur un autre port série. Le message est beaucoup plus simple : une information sur la profondeur (pas de date...)
Il faut donc que je puisse associer les trames arrivant sur deux ports séries différents...
Je cherche un logiciel qui me permettrait de :
-lire la trame GPS à intervalle régulier.
-lire immédiatement après la trame provenant du sondeur.
-associer les deux.
-recommmencer.
-ecrire tout ça dans un fichier ASCI.

Merci à tous ceux qui pourront me suggérer quelques pistes...

UP


Répondre à cet article
(pour répondre à un message en particulier, voir plus bas dans le fil)

19 Messages de forum

__________________________________________________________________________________________________________________

__________________________________________________________________________________________________________________

  • 9 mars 2013 12:59, par Pil-Poil écrire     UP

    Je vois deux possibilités :

    • faire un petit logiciel, même en visual basic cela se fait facilement, mais il faudra trouver un pote qui sait faire.
      - 
    • utiliser un multiplexeur NMEA à deux entrées http://www.nauticom.fr/store/index-... permettant de ramener sur la même entrée RS232 du PC les deux signaux GPS et sondeur.
      Puis utiliser un logiciel d’enregistrement à la volée de tout ce qui arrive. Par exemple « hyperterminal » de Windows (gratuit, disponible ici : http://www.plaisance-pratique.com/o...) ou bien VisualGPS (gratuit également, http://www.visualgps.net/VisualGPS/...). Ces deux logiciels permettent d’enregistrer à la volée le port COM du PC.

    Répondre à ce message

  • 9 mars 2013 20:48, par Alien écrire     UP  image

    Il y a deux niveaux bien différents au problème.

    En premier lieu enregistrer les données en provenance d’un port NMEA 183 avec un « time stamp » . C’est très simple. il y a différents moyens.
    Sur un PC de bureau avec deux ports série. Un bout de programme en VB, Java, C++, ... .
    Une petite boite noire autonome avec deux entrées NMEA qui enregistre les données sur une SDCard ou une clé USB.
    (surveiller PTP dans les jours à venir, une réalisation simple et économique sera peut-être proposée ;-) )

    Ensuite il faut lire, transcrire et interpréter les données enregistrées.
    Là, c’est un autre problème.
    Le GPS aura transmis un nuage de points horodatés en coordonnées XY.
    Le sondeur aura lui transmis un autre nuage de points horodatés avec des coordonnées uniquement en Z
    Il va falloir créer un troisième fichier de points interpolés
    A chaque point en XY on va chercher à associer une valeur Z.
    A chaque point en Z on va chercher à associer une valeur en XY..
    Ensuite il va falloir associer les deux séries de valeurs pour créer un « mesh » tridimensionnel .
    avec des méthodes d’interpolation plus ou moins sophistiquées : linéaires, splines, heuristique, ....
    Les géomètres et topographes savent faire mais on entre dans le domaine des logiciels professionnels qui valent plusieurs milliers d’€uros plus l’abonnement pour l’assistance et les mises à jour.

    Les GPS de topographie sont ultra précis.
    Les sondeurs de base le sont beaucoup moins
    Il faut déjà les étalonner : immersion de la sonde, calage de la base de temps.
    Un sondeur de bathymétrie prendra en compte au moins la température de l’eau.
    Il aura sans doute plusieurs capteurs à faisceaux étroits,... .

    Répondre à ce message

    • 9 mars 2013 21:24, par yoruk écrire     UP     Ce message répond à ... Animateur

      « surveiller PTP dans les jours à venir, »

      ha ; ha....:-P
      Michel

      Répondre à ce message

    • 9 mars 2013 22:29, par Pil-Poil écrire     UP     Ce message répond à ...

      Alien, le problème est différent : les points de profondeur ne sont pas horodatés (si j’ai bien lu).

      C’est pour cela qu’il faut les synchroniser au moment de l’enregistrement, car l’horodatage de la profondeur n’existe pas après l’enregistrement.

      C’est ce que fait le multiplexeur NMEA, avec la précision (médiocre) de l’intervalle du transmetteur NMEA le plus rapide.

      Dans l’enregistrement (Hyperterminal ou VisualGPS) il y aura alors des séquences de positions et le profondeur alternées qui sont approximativement synchrones deux par deux. Il n’y a rien à interpoler vu qu’il n’y a pas d’horodatage pour la profondeur.

      Le dépouillement sera simplissime : il y aura beaucoup plus de points du transmetteur le plus rapide avec de temps en temps un point du transmetteur le plus lent. Un couple côte à côte des deux valeurs (profondeur-position) sera alors approximativement synchrone.

      Répondre à ce message

      • 10 mars 2013 11:59, par Alien écrire     UP     Ce message répond à ...  image

        C’est la raison pour laquelle il faut horodater .
        D’où la boite noire ;-) !
        Sinon, la période des trames NMEA ne dépassant guère la seconde et est souvent inférieure, il suffit de rester en station une seconde ou de se déplacer lentement pour pouvoir correler les positions xy et z.
        De toute façon la difficulté, c’est l’exploitation du nuage de points .
        Les topographes et les cartographes font ceci tous les jours mais avec des moyens hors de portée d’un amateur.

        Répondre à ce message

        • 10 mars 2013 12:11, par Jolimousi écrire     UP     Ce message répond à ...  image

          Je suis topographe et traiter le nuage de points ne me fait pas peur...

          C’est la collecte des données qui me pose problème.

          Tous mes soucis viennent du fait que le capteur a été donné à mon lycée par une entreprise mais elle ne m’a pas donné le logiciel qui va avec....

          Répondre à ce message

          • 10 mars 2013 12:41, par Pil-Poil écrire     UP     Ce message répond à ...

            Je pense qu’on est toujours plus efficace en privilégiant en première approche la simplicité et en contournant les domaines qu’on ne maîtrise pas.

            Compte tenu des techniques que vous dites ne pas maîtriser , je ne vois pas ce qui pourrait être plus simple qu’acheter un multiplexeur à 2 entrées NMEA et une sortie RS232 pour 100-200€ , et récolter les points à la volée avec un logiciel gratuit comme ceux que j’ai cité ou d’autres qui sont nombreux.

            C’est le multiplexeur qui va implicitement créer la synchronisation en séquençant les informations au fur et à mesure de leur arrivée.

            Le fichier sera un texte ASCII avec des lignes de texte formatées et lisibles par Notepad par exemple, avec sur chaque ligne une information : soit de profondeur, soit de position géodésique.

            Le tri consistera simplement associer chaque profondeur à la position géodésique qui le suit ou le précède dans le fichier (ou l’inverse, associer à chaque point géodésique la profondeur qui le suit ou le précède) pour en faire un vecteur (X,Y,Z)

            Recréer en hardware ou software un horodatage précis à l’entré est inutile pour le sondeur, puisque cet horodatage sera par définition très grossier si les informations transitent en NMEA et que le capteur de profondeur n’a pas une horloge interne pilotée par le même GPS que celui qui capture la position géodésique.

            Le seul problème que je vois, c’est de trouver le financement pour un multiplexeur à 100 ou 200€

            Pour être encore plus concret, je suggère de commencer par brancher le capteur de profondeur sur l’entrée RS232 d’un PC et de tester avec Hyperterminal la réception des trames dans un fichier. Si vous arrivez à faire cela, il ne reste plus qu’à placer entre le capteur le PC un multiplexeur et à brancher sur l’entrée du multiplexeur le GPS.

            Répondre à ce message

        • 10 mars 2013 12:49, par Pil-Poil écrire     UP     Ce message répond à ...

          C’est la raison pour laquelle il faut horodater .

          Horodater la profondeur à l’arrivée dans une « boite noire » ne sert à rien si le sondeur ayant fait la mesure n’envoie pas sur sa trame une information d’horodatage acquise au moment de sa mesure de profondeur par une horloge pilotée par le même GPS que celui qui a acquis la position géodésique.

          Cet horodatage recrée par la « boite noire » ne sait pas quand la mesure a été faite, et aura comme incertitude la durée du transit NMEA additionné de l’intervalle entre deux points de mesure. Exactement aussi imprécis que celui obtenu avec un multiplexeur rassemblant les deux informations pour les sortir sur un seul canal RS232.

          Répondre à ce message

  • 10 mars 2013 17:28, par Pil-Poil écrire     UP

    Pour éviter le multiplexeur, il y a la solution du software « tout prêt » pour quelques dizaines d’euros si le PC a au moins 2 entrées RS232 :

    http://windows.lisisoft.com/apps/67...

    Répondre à ce message

    • 10 mars 2013 19:19, par Alien écrire     UP     Ce message répond à ...  image

      Ou même simplement un port USB avec ça :

      http://eu.startech.com/Cards-Adapte...

      Chipset FTDI, stable et fiable.
      Mémorise les n° de port COM. Ce qui évite d’aller fouiner dans le panneau de configuration.

      Répondre à ce message

      • 11 mars 2013 08:34, par Jolimousi écrire     UP     Ce message répond à ...  image

        Merci de votre contribution à tous...
        Je m’oriente vers une solution Excel et VBA...
        J’ai trouvé des routines capables de lire un port série et de stocker une phrase dans une cellule Excel...
        Immédiatement après avoir lu la trame GPS, j’irai lire la trame du sondeur (compte tenu de la faible vitesse du bateau et de la précision générale du sondeur , le petit décalage en temps n’apporte pas de biais véritable...)
        les multiplexeurs NMEA travaillent en général à 4800 bauds. Mon GPS Leica 1200 debite à 115200 bauds sur le port série.

        Merci à tous ceux qui ont essayé de m’aider....

        Répondre à ce message

        • 11 mars 2013 12:19, par yvesD écrire     UP     Ce message répond à ... Animateur

          J’ai trouvé des routines capables de lire un port série et de stocker une phrase dans une cellule Excel...

          Fais nous en profiter, SVP.

          compte tenu de la faible vitesse du bateau

          à 4nd (2 m/s) il y a fort à parier que, d’une seconde à l’autre, les empreintes au fond successives (celles du sondeur ) se recouvrent allègrement. Le lissage/filtrage vient déjà de là même si de l’étallonage à partir de test sur des vrais fonds connus ...

          Répondre à ce message

  • 12 mars 2013 08:57, par Jolimousi écrire     UP  image

    Bonjour,

    http://cherbe.free.fr/rs232.html

    Sur ce site vous trouverez un exemple d’une macro qui va lire le port série sur lequel est branchée une balance...
    C’est un peu spécial car il faut installer un controle mscomm.ocx et le declarer dans la base de registre.
    Vous devez partir de cet exemple, car si vous n’avez pas VB6 mais uniquement VBA, vous n’avez pas la licence pour utiliser ces fonctions.
    Il faudra donc écrire votre macro en adaptant celle fournie (pesees.xls...)
    Il semblerait que sans licence on ne puisse pas créer des macros mais il est possible d’éxécuter des macros fournis par un tiers qui a la licence !

    Cordialement...

    Répondre à ce message

    • 12 mars 2013 09:18, par Pil-Poil écrire     UP     Ce message répond à ...

      à la grande époque de Visual Studio - VB6 ( 1990-2000), on avait fait une myriade de logiciels de mesures robotisées utilisant les port COM et l’ « ocx » que vous citez.

      La mauvaise surprise est arrivé avec Windows-7 (Surtout 64bits) sur lequel l’installation de VB6 est acrobatique (bien que possible), et parfois certaines applications compilées sous XP ne fonctionnent pas.

      On a fini par y arriver tout de même.

      Si cela peut vous dépanner ....

      GIF

      Répondre à ce message

  • 12 mars 2013 12:30, par Alien écrire     UP  image

    En VB6, on trouve beaucoup de gratuicels NMEA.
    Logger, Interpreter, Libraries, ...
    Par exemple :
    http://gps-nmea.winsite.com/
    Il y a sans doute du bon et du mauvais !
    Il faut certainement creuser un peu.

    Voir aussi :
    http://nmeautil.sourceforge.net/pc/...
    qui génère des donnés lisibles par excel
    il utilise JAVA qui est installé sur quasiment toutes les machines.
    NB : pas encore testé

    Répondre à ce message

  • 28 février 2014 16:51, par Stéphane Lasonde écrire     UP  image

    Voilà une solution qui devrait fonctionner :

    - Télécharger et installer le logiciel Bill Redirect de la société www.BillProduction.com
    - Désactiver toute les sections sauf : Serial Port, Plugin et File
    - Dans la section File placer l’interrupter en mode Write
    - Dans la section File Configuration inscrire le fichier ASCII de sortie
    - Dans la section Serial Port entrer les paramètres de votre GPS
    - Installer le Plugin « Serial Port over Ethernet » qui est dans cette page : http://www.billproduction.com/docum...
    - Configurer ce plugin avec votre Sondeur
    - Avec cette configuration les données du GPS et du Sondeur sont envoyées vers le fichier de sortie ASCII.
    * Par la suite avec la section « Data Filtering Configuration » il est possible de faire de l’analyse et +
    Manuel du logiciel Bill Redirect : http://www.billproduction.com/Bill_...

    Pour voir les données de communication passer utiliser la section DEBUGGER

    Mes connaissance s’arrête à ce point ;) Pour plus d’information contacter la compagnie Bill Redirect qui offre le support Technique gratuitement.

    Répondre à ce message

  • Bien sur la référence autour de ces problèmes d’interconnection est la doc de ShipModul, ici http://www.shipmodul.com/downloads/... dans les premières pages du document (cf p. 4 à 6)

    On en parle aussi ici http://www.plaisance-pratique.com/C... et ailleurs sur PTP.

    Répondre à ce message

    • Toujours à propos des références, ce coup ci sur le NMEA 183.

      C’est en fait la FAQ que Peter Bennet entretenait dans les années 1998. On en trouve de multiples copies sur internet, dont ici http://fort21.ru/download/NMEAdescr...

      On peut y lire, à propops du niveau electrique  :
      2. Electrical Interface
      NMEA 0183 devices are designated as either talkers or listeners (with some devices being both),
      employing an asynchronous serial interface with the following parameters :
      Baud rate : 4800
      Number of data bits : 8 (bit 7 is 0)
      Stop bits : 1 (or more)
      Parity : none
      Handshake : none
      NMEA 0183 allows a single talker and several listeners on one circuit. The recommended interconnect wiring is a shielded twisted pair, with the shield grounded only at the talker. The standard dos not specify the use of a particular connector. Note : The new 0183-HS standard (HS = high speed) introduced in version 3.0 uses a 3-wire interface and a baud rate of 38400. This type of interface is not discussed here.

      Its is recommended that the talker output comply with EIA RS-422, a differential system with two signal lines, « A » and « B ». Differential drive signals have no reference to ground and are more immune to noise. However, a single-ended line at TTL level is accepted as well. The voltages on the A line correspond to those on the TTL single wire, while the B voltages are inverted (when output A is at +5 V, output B is at 0 V, and vice versa. This is the unipolar RS-422 operation. In bipolar mode ±5 V are used).

      In either case, the recommended receive circuit uses an opto-isolator with suitable protection circuitry. The input should be isolated from the receiver’s ground. In practice, the single wire, or the RS-422 « A » wire may be directly connected to a computer’s RS-232 input. In fact even many of the latest products, like hand-held GPS receivers, do not have a RS-422 differential output, but just a single line with TTL or 5V CMOS compatible signal level.

      Ce texte clarifie ce que j’ai souvent lu à propos de B qu’on connecte à GND, en fait B c’est le même signal qu’en A mais inversé. Le forcer à 0V REF, pourquoi pas ?

      Ceux qui comme moi on adoré le débat autour des USB fusibles lancé par fulup (ici : http://www.plaisance-pratique.com/a... ) seront enchantés de lire The input should be isolated from the receiver’s ground

      Enfin pour ceux qui tiennent à lire la norme in-extenso, gogol interrogé avec « nmea 0183 protocol » rend du gros. Cette lecture n’est pas inutile et clarifie encore qui doit faire quoi au niveau électrique.

      extrait page 9 avec le schéma d’isolation électrique joint.
      On y voit la confirmation que c’est coté talker qu’on doit, si on le souhaite, raccorder l’écran (la tresse de protection) à une terre. le § 3.5.4 m’inquiète un poil.

      Répondre à ce message

Répondre à cet article

UP

Copyright et informations légales