Projet GPS-Arduino

Hello,

J'ai comme projet de fabriquer une antenne GPS NMEA2000 à base d'Arduino.
Je cherche des conseils et des expériences, l'avez-vous déjà fait ?

L'idée finale et d'ajouter à notre traceur Raymarine Axiom une antenne GPS externe (pas extérieure), pour avoir une meilleure réception et éviter ainsi les décrochages de réception satellite et donc du pilote.
Une antenne GPS NMEA2000 1OHz du commerce avoisine les 280€-350€, une faite-maison devrait à peine dépasser le 50€ avec le plaisir de la programmer.
Là où j'ai besoin de conseils c'est sur la partie GPS proprement dite. Pour la partie NMEA2000, je sais faire.
J'envisage d'utiliser une antenne de type NEO M8. L'avez vous déjà utilisée ou bien une M6 ou M7 ? L'avez-vous reprogrammée avec U-center ou bien l'avez vous utilisée avec les paramètres de base ?
Quelles trames avez vous récupéré ?
Quelle libraries avez vous utilisé ? Quelle est la plus complète et rapide car je ne souhaite pas récupérer que la position latitude/longitude, mais le maximum de données issues de l'antenne pour vraiment la substituer à l'antenne interne du traceur.

Merci pour vos contributions. Amicalement.
FX

L'équipage
04 jan. 2022
04 jan. 2022

La NEO M6 peut suffire.
La trame RMC est suffisante.
Personnellement, pour un tel projet, une librairie n'est pas utile.
L'ESP32 est bien plus performant que l'Arduino (même programmation).


fxvt:Hello,D'après ce que j'ai lu le NEO 6M envoie à 5Hz maxi. Le traceur AXIOM qu'on a a un GPS intégré à 10Hz. Donc tant qu'à faire ce serait dommage de ne pas faire au moins aussi bien. Sinon je n'aurais qu'à utiliser la position GPS que l'AIS peut envoyer sur le réseau N2K.Un ESP32, j'y ai pensé, c'est vrai qu'en plus ça consomme moins, mais comme j'ai des cartes Arduino Mega en rab, je vais au moins prototyper à partir de ça. Et d'après ce que je lis plus bas, (BlackNav) il semble qu'un petit Arduino Nano convient déjà.Amicalement.FX·le 04 jan. 2022 14:37
CapCool:C'est vrai, le M6 est limité à 5 Hz. C'est déjà pas mal.·le 04 jan. 2022 19:06
04 jan. 2022

J'ai pas mal joué avec les Neo6m, et avec ucenter pour les reprogrammer (vitesse du bus, taux de rafraichissement), c'est plutot facile.
Quant à l'arduino, effectivement, surtout si tu veux faire du 10hz, c'est pas le meilleur choix, ou alors dans les dernieres variantes arm. L'esp8266 ou esp32 tournent beaucoup plus vite pour un prix équivalent


fxvt:Hello ATCFrog,Sur le Neo6M, quelle antenne et quelle sensibilité as tu constaté ?As tu utilisé la petite antenne céramique qui a un fil court, ou bien a tu ajouté une antenne externe ?Amicalement.FX·le 05 jan. 2022 10:41
04 jan. 2022

Je l'ai fait avec un module uBloc intégrant un chip SIRF 4. Aucun problème à 10 Hz avec un Arduino Nano.
Ci-joint mon code pour le décodage du flux NMEA0183 en provenance du chip. Tu lui envoies caractère par caractère le flux, et tu récupères les infos via les accesseurs du fichier *.h



fxvt:Hello BlackNav,Merci pour le code, je vais lire ça avec attention.Amicalement.FX·le 04 jan. 2022 15:59
04 jan. 202204 jan. 2022

Question
GPS NMEA 2000 : est-ce une conversion du signal GPS NMEA183->N2K ?
Ou partir du signal du satellite et en faire une sortie NK.


BlackNav:Le NMEA2000 est basé sur le bus CAN. Le NMEA0183 est basé sur la RS422 pour la norme électrique, et sur un flux alphanumérique pour les informations. Donc oui, c'est une conversion, à la fois électrique, protocole et codage de l'info. D'ailleurs, FXVT, tu t'appuies sur quoi pour l'encodage des infos en NMEA2000 ? ·le 04 jan. 2022 14:27
fxvt:Hello,En fait, ça va revenir à convertir du NMEA0183 en N2K car d'après ce que j'ai vu les shields NEO xM et les libraries que j'ai vu sortent des sentences directement en NMEA0183. Donc l'idée c'est de récupérer les sentences NMEA0183 nécessaires, les parser, et reinjecter les champs nécessaires dans des PGN NMEA2000.·le 04 jan. 2022 14:32
04 jan. 2022

Hello BlackNav,
C'est ça, la différence entre NMEA0183 et NMEA2000 est à la fois dans le protocole et dans le hardware.

Pour le hard, je ne casse pas la tête, j'utilise des ou des qui se marient très bien avec les microcontroleurs comme Arduino, Teensy...

Et pour l'envoi sur le bus NMEA2000 j'avais commencé par tout écrire, c'est assez coton. Je remercie ici TUX (Etienne) qui m'a aidé au départ. Ca fonctionnait, mais ça ne respectait pas vraiment la norme.
Puis j'ai vu qu'un finlandais Timo Lappalainen avait écrit une bibliothèque parfaite:
github.com[...]MEA2000
J'ai l'impression que c'est la référence planétaire en opensouce NMEA2000 (si on considère que NMEA est "open").
Amicalement.
FX


BlackNav:eh bien voila, il n'y a plus qu'à ! J'ai écris également un multiplexeur NMEA0183. On pourrait peut être créer un projet Github avec tous ces morceaux pour faire un convertisseur NMEA0183 à multiples entrées vers NMEA2000 ? Je ne veux plus travailler seul maintenant. ·le 04 jan. 2022 16:16
CapCool:Comme BlackNav. Je suis partant pour un projet collectif. Pour ma part, je connais bien les NEO, et j'ai déjà fait des GPS en USB pour SASPlanet ou en WIFI pour OpenCPN; ce, sans librairie ni U-Center. Le développement vers N2K m'interesserait bien.·le 04 jan. 2022 18:56
a_guy:Partant aussi pour un projet collectif convertisseur 0183 =>2000 multiple entrée sur base autonome (esp 32 ,Arduino,Tennsy ....) mes preference dans l'ordre ,mais je m'adapte sans prb ;=) .·le 05 jan. 2022 09:21
04 jan. 2022

Je comprend mieux le projet à présent, je comprends aussi que le taux de conversion sera plus rapide en C++. Mais ne pensez vous pas que SignalK, fait déjà ce travail ? En assurant aussi le multiplexage avec d'autres instruments que le GNSS. Pour les développeurs il y a quantité de plugins à développer autour de ce projet réellement Open.


05 jan. 2022

Hello,
J'ai trouvé hier soir une library qui semble déjà faire une bonne partie du travail.
registry.platformio.org[...]xamples
Voir l'exemple NMEA0183TONMEA2000
Elle permet de transformer un flux NMEA0183 reçu sur un port Série (N°3 dans le cas de l'exemple) et de le convertir et de d'envoyer les PGN correspondantes sur le réseau NMEA2000.
L'exemple donné permet de traiter les sentences RMC, CGA, HDG et VTG. c'est juste ce qu'il me faut pour mon projet d'antenne GPS N2K.

C'est une library faite par Timo Lappalanen, une fois de plus. Ce type est un bienfaiteur de l'humanité. Ce qu'il fait est très propre et bien foutu. Ses autres libraries NMEA0183 et NMEA2000 sont déjà très bien , j'utilise celle NMEA2000.
Pour voir, j'ai compilé l'exemple NMEA0183TONMEA2000 sans erreur.
Le job est donc déjà fait pour la partie GPS, me concernant ça me suffit. Si on veut aller plus loin, 'étendre à d'autres sentences il faudra se retrousser les manches:
Lire dans le fichier NMEA0183ToN2k.ino:
"...If there is no handler for some message you need,
you have to write handler for it and add it to the NMEA0183Handlers variable
initialization. If you write new handlers, please after testing send them to me,
so I can add them for others use...
"

Si en amont de ce sketch on ajoute le multiplexeur NMEA0183 de BlackNav, ça sera très bien.
Amicalement.
FX


Phare du monde

  • 4.5 (155)

2022