Port com, nmea, etc...


Beaucoup de questions posées sur le forum concernent la connexion des instruments NMEA à l’ordinateur de bord ou aux équipements. Ceci est une modeste contribution d’ordre général à ce sujet.

Cet article est le reflet très partiel des expériences acquises en bidouillant les ordinateurs et en tentant de les connecter entre eux et aux différents systèmes de mon bateau, le tout avec plus ou moins de succès.

Un peu de terminologie …

Ports de communication : C’est une porte d’entrée/sortie de données entre un système d’exploitation et l’extérieur.

Port de communication série : Pour faire simple, c’est un port de communication qui transmet les données par signaux successifs sur un même fil. Les ports USB, les ports Ethernet, et bien sûr les ports COM sont des exemples de ports série. Les ports parallèles, comme leur nom l’indique, n'en sont pas car ils transmettent les données par signaux simultanés sur plusieurs fils. Exemple : port parallèle d’imprimante.

Bus : C’est un « tuyau » dans lequel circulent des données. Il peut être série ou parallèle. Il exige une « gestion de partage » pour que chaque appareil connecté ait l’exclusivité du bus au moment ou il émet des données.

Etre relié par des fils ne suffit pas pour communiquer, encore faut-il que les caractéristiques physiques de transmission de l’information soient définies.

Port COM : C’est un port de communication de type série dont les caractéristiques physiques sont normalisées sous le standard RS-232. En gros, cette norme précise comment chaque « paquet d’information » ( un octet) est représenté par les variations de tension sur le fil, à quels débits ils peuvent êtres envoyés, etc. Elle définit également un certain nombre d’autres fils dans lesquels circulent des signaux de contrôle de transmission. En RS-232 les données circulent dans un seul sens sur le fil : il y a donc deux fils data(un pour chaque sens)

Remarques :
– Le système est en principe ‘point à point’ : on ne peut normalement relier directement que deux appareils entre eux. La raison est que la norme RS-232 ne prévoit pas de système de gestion du « bus » qui permet à plus de deux appareils de communiquer entre eux (contrairement au bus Seatalk) Cependant, les appareils qui nous intéressent ici (GPS, AIS, Navtex, etc.) n’utilisent pratiquement jamais les fils de contrôle prévu dans la norme. Ils n’utilisent que trois fils : données transmises, données reçues et fil de masse.
– Ces mêmes appareils qui nous intéressent utilisent presque toujours le protocole de communication NMEA 183. Entre autres caractéristiques, ce protocole ne prévoit pas de vérification des données transmises entre celui qui émet et celui qui reçoit. Ceci veut dire que ces instruments n’attendent aucune réponse quand ils envoient des données, et qu’ils n’utilisent donc pas le fil «transmission de données » des appareils qui reçoivent.

Conclusion de ces deux remarques : on peut dans ces conditions connecter directement un appareil qui émet des données à plusieurs appareils qui les reçoivent. On peut connecter un GPS à plusieurs PC, au pilote automatique, à la VHF etc .. Il faut évidemment que les appareils «récepteurs» travaillent à la vitesse de transmission de l’émetteur. Attention : le fil d’émission des données de celui qui émet doit être relié au fil (aux fils) de réception des données (de) des appareils qui reçoivent. On peut également connecter le fil émission de données d’un seul appareil récepteur à l’appareil émetteur ou à un autre récepteur. (par exemple quand on veut garder la possibilité de charger les points tournants ou les routes du PC vers le GPS quand celui-ci le permet)

COM-USB
Les ordinateurs récents n’ont pas tous de connecteur série COM car les ports USB sont plus performants et plus pratiques pour une connexion point à point. (Ils disposent en particulier d’un fil +5 volts qui permet éventuellement d’alimenter le périphérique connecté)
Quoique tous les deux de type série, les caractéristiques de transmissions COM et USB sont totalement incompatibles pour une connexion fil-à-fil : il faut passer par un adaptateur qui transforme les signaux. Il en existe de toutes sortes, mais tous ne sont pas identiques. En conséquence, bien que rarement, il peut arriver que certains appareils COM ne fonctionnent pas avec certains adaptateurs USB. La raison en est souvent que les connexions RS-232 prévoient des fils de contrôle de flux en plus des trois fils sur lesquels circulent les données. Coté USB, il n’y a que trois fils (sans compter le + 5 volts), coté RS232, il y a 8 fils. Si l’appareil qui émet utilise les signaux transmis sur ces fils de contrôle pour fonctionner, il faut impérativement qu’ils soient correctement gérés par l’adaptateur. Par exemple, si un appareil attend un signal « terminal ready » (broche n°4 sur une prise COM DB-9) pour émettre, il n’enverrait jamais de données si l’adaptateur n’émulait pas cette broche, car le fil correspondant n’existe pas du coté USB. Le problème se situe souvent au niveau du driver de l’adaptateur. On rencontre parfois le même genre de problème avec les adaptateurs PCMCIA-COM qui ne sont pas conçus avec les puces standard RS232 (UART 16550 par exemple).
Pour un GPS ou un AIS, il ne devrait pas y avoir de problème car la plupart n’utilisent que les deux fils de transmission. C’est surtout avec les modems que la question se pose.

Ports COM sur un PC.
Un port COM, c’est comme on l’a vu, une porte d’entrée/sortie à la norme RS232.
On peut les classer en trois types :
- Ceux que le système a reconnus au démarrage parce que la partie matérielle de la porte existe sur la carte mère (UART), qu’elle a été déclarée par le BIOS et que les drivers correspondant font partie du système d’exploitation (qui les déclare en général par défaut sous COM1 et COM2 quant il y en a deux)
- Ceux que le système ne reconnaît pas automatiquement au démarrage, soit parce que la partie matérielle n’est pas branchée (cas d’un adaptateur USB quand on le branche après démarrage), soit (ou et) parce que les pilotes correspondant au matériel ne sont pas installés.
- Ceux qui sont purement logiciels (port COM virtuel), qui simulent un port COM physique et qui sont créés par des programmes.

Ouverture d’un port COM.
Pour qu’un programme utilise un port COM, il faut lui indiquer lequel, et lui donner les caractéristiques de la transmission. (principalement la vitesse). Une fois le programme connecté au port, celui-ci lui est réservé : aucun autre programme ne peut l’utiliser. On dit que le port est « ouvert ». Les ports logiciels sont à cet égard intéressants, car on peut créer des « splitters » qui permettent à plusieurs programmes de partager le même port. On peut par exemple très facilement faire fonctionner en même temps plusieurs programmes de navigation différents avec les données GPS provenant d’un seul port COM. « Virtual Serial Ports Emulator », un programme freeware remarquable, fait cela très bien. (http://www.eterlogic.com/Products.VSPE.html )

Multiplexages de données NMEA.
On est parfois tenté par un regroupement des données NMEA provenant de plusieurs appareils sur un même port COM. C’est bien sûr possible, mais il y a quand même des contraintes. On ne peut pas relier directement plusieurs appareils qui émettent sur le même fil de données, car en l’absence d’un système de gestion du bus, les signaux émis se brouilleraient les uns les autres. On est donc obligé de passer par de l’électronique : les multiplexeurs. Il ne faut pas en attendre des miracles pour plusieurs raisons. Les plus simples se contentent de rediriger séquentiellement les différentes entrées vers la sortie et ne fonctionne qu’à 4800 bauds. Evidemment, les données transmises par un appareil au moment où son entrée n’est pas connectée à la sortie sont perdues. Certains, plus sophistiqués, ont des mémoires tampon qui stockent les données reçues en attendant d’être à nouveau commuté vers la sortie. Un autre problème c’est qu’à la vitesse usuelle du NMEA (4800 bauds), on ne transmet qu’environ 480 octets à la seconde. Pour que le système fonctionne, il faut que la somme des octets des sentences NMEA transmises par tous les appareils soit inférieure à ce nombre car, autrement, le «débit se sortie» étant inférieur à celui d’entrée, des données se perdraient. On pourrait imaginer le multiplexeur NMEA idéal avec des entrées dotées de mémoire tampon pouvant fonctionner à différente vitesse pour s’adapter aux instruments et à une sortie à vitesse réglable (Je ne sais pas si cela existe). Dans la pratique, on a rarement l’utilité d’un multiplexeur dans la plaisance.
A noter qu’on peut trouver des multiplexeurs qui enregistrent les données reçues sur des cartes mémoire style SD-Card port com nmea etc . Ils ne consomment que quelques milliampères en 12 volts et permettent à ceux qui le souhaitent d’éteindre le PC tout en enregistrant les données du système de navigation. (enregistrement de la trace en particulier)

NMEA et Seatalk.
Le bus Seatalk de Raymarine est un bus série à deux fils (un fil data, un fil de masse) auquel est ajouté un fil d’alimentation 12 volts. Il fonctionne à 4800 bauds et l’interfaçage RS-232/NMEA n’est pas très compliqué. Raymarine commercialise d’ailleurs un boîtier d’interface. C’est intéressant pour ceux qui veulent rentrer toutes les informations du système de navigation Raymarine dans leur PC ou connecter différents appareils et afficheurs NMEA au réseau Seatalk.
Un lien pour ceux qui envisageraient de réaliser eux même leur interface : http://www.thomas-knauf.de/rap/seatalk3.htm#Uni
Attention, le format des données Seatalk est différent du format des données NMEA. Les interfaces décrites dans ce site ne permettent que de transformer les signaux du bus Seatalk en signaux RS232. Pour pouvoir les exploiter, il faut aussi traduire les données recues en sentences NMEA. Ceci exige des compétences trés sérieuses en programmation.

Il existe une interface qui relie directement le bus Seatalk à un PC via une prise USB en traduisant dans les deux sens les données(www.gadgetpool.de)

Brochage d'une prise DB9-RS232 d'un PC port com nmea etc

Bien que non officiellement normalisé, le brochage de cette prise est universellement adopté.
Pour les appareils transmettant en NMEA, seules les broches 2,3 et 5 sont utilisées.

1 : détection de porteuse (pour les modems)
2 : réception des données
3 : transmission de données
4 : signal terminal prêt
5 : masse
6 : signal données prêtes
7 : signal demande d'émission de données
8 : signal prêt à émettre des données
9 : sonnerie