Testeur trame NMEA Wifi et RS422 Outils autonome d'analyse à base d'ESP8266
janvier 2020
Fabrication d'un outil de test NMEA autonome pour liaison wifi ou RS422
Depuis quelques temps j'avais envie de réaliser un petit outil qui m'aide à identifier
les éventuelles problèmes sur la config nmea du voilier, vérifier la portée du wifi... Je me suis donc fixé un petit cahier des charges :
Un outil qui soit petit et facilement manipulable.
Un testeur autonome qui fonctionne sur batterie et qui puisse se recharger avec des panneaux solaires intégré.
La possibilité de se connecter à un réseau wifi en toute autonomie.
Pouvoir pister des trames NMEA et AIS sur le réseau wifi du bateau.
Pouvoir pister des trames NMEA et AIS sur le réseau nmea 0183 (liaison RS422).
Pouvoir émettre des trames NMEA sur le réseau nmea 0183 (liaison RS422).
Pouvoir faire facilement évoluer le testeur.
Ne pas avoir à ressaisir les paramètres de connexion à chaque démarrage.
Ce type de projet est inenvisageable si l'on ne dispose pas d'un moyen de saisie pour paramétrer l'outil, j'ai cherché sur internet et je n'ai
pas trouvé de librairie qui permette ceci avec un écran affichant suffisamment de ligne et qui consomme très peu. J'ai donc été obligé
de concevoir deux objets logiciel pour créer une interface utilisateur simple sur écran Oled à l'aide d'un encodeur rotatif. Le code développé sera
donc disponible dans le domaine public et j'espère que cela permettra à des amateurs comme moi la réalisation de nouveaux projets.
Sur cette petite vidéo, j'essaie de montrer ou j'en suis du projet.
On peut voir :
L'intégration des trois cellules solaires.
L'appareil se commande à l'aide d'un bouton (commutateur rotatif sans fin)
on le tourne pour faire défiler les choix et on le presse pour valider un choix.
Un petit écran permet de visualiser les menus et les résultats des commandes. Il aurait été facile d'utiliser
un écran plus grand mais la consommation aurait explosée et l'autonomie du testeur aurait été compromise !
On peut voir l'interface RS422 avec son connecteur à vis (4 fils qui correspondent Out + et -, In + et -) nmea0183.
L'antenne wifi externe (optionnelle mais elle permet un signal plus puissant.) se replie pour diminuer l'encombrement.
Les menus permettent le paramétrage du wifi :
Détection des réseaux wifi alentours, sélection de votre choix et saisie du mot de passe.
Saisie de l'adresse IP et du numéro de port.
Connexion au réseau wifi sélectionné.
Tous les paramètres sont sauvegardés dans une mémoire eeprom qui conserve les données quand l'alimentation est coupée
ce qui permet une connexion directe au réseau utilisé à la dernière connexion au démarrage suivant.
Choix de la vitesse de l'interface RS422 nmea0183.
Choix de la liaison utilisée (wifi ou RS422) pour les tâches suivantes (c'est évolutif...) :
- Affichage des trames NMEA et AIS reçues.
- Comptage des 12 types de trames les plus couramment reçues.
- Affichage des principales données des trames $GPRMC reçues (heure, latitude et longitude).
Emission de trames sur la liaison RS422
A suivre...
Nous trouvons donc dans les entrailles du testeur :
La batterie, qui est rechargée soit par un câble USB soit par les cellules solaires qui sont sur le dessous du testeur.
L'esp8266 qui est le cœur du montage, j'ai utilisé un Wemos D1 mini Pro qui possède entre autre une prise permettant de raccorder
une antenne wifi externe même si une antenne céramique est installée sur le CI du composant. Ce circuit se programme directement
depuis l'IDE ARDUINO qui est disponible gratuitement et sur tous les systèmes.
Je n'ai utilisé que des circuits "LEGO", inutile d'être informaticien ou électronicien, il suffit de savoir tenir un fer à souder
pour raccorder des fils entres eux ! Ce montage est super simple et facile à réaliser.
On retrouve dans les circuits "LEGO" : Un circuit pour gerer l'alim TP4056 (chargeur solaire, pile, usb et alim.).
Un circuit OLED qui est un petit écran LCD, celui que j'utilise est le 1306 (attention il y en a des bicolores
(1ere ligne jaune et le reste bleu) ils ne correspondent pas vraiment au besoin, perso j'ai choisi un blanc (j'ai désoudé celui de la photo
pour le remplacer par un blanc comme sur la vidéo ci-dessus.).
Un bouton rotatif sans fin ( le mien doit être un 30 pas mais cela n'a pas d'importance ), dans le programme je ne compte pas les tours
mais seulement les pas en avant ou en arrière).
Un circuit qui gère l'interface nmea RS422 qui est protégé contre toutes les erreurs de manipulation par photo coupleurs.
Un bouton, une led et le boitier que j'ai conçu sur Freecad et qui est imprimable sur une imprimante 3D.
Le cout total du montage ne dépasse pas les 25 euros.
Emission de trame sur la liaison nmea0183 (RS422).
Le testeur envoi sur la liaison deux types de trame :
$GPRMC avec modification des latitudes et longitudes de façon à visualiser sur une carte de GPS une mini promenade
dans le Perthuis Breton au nord de l'ile de Ré (l'heure et les autres infos de la trame n'évoluent pas, par contre
la checksum est recalculée pour éviter les erreurs sur le lecteur GPS). Cette simulation de promenade est plus que
basique, il sera toujours possible de la faire évoluer ultérieurement...
$SDDBT est une trame généralement envoyée par les sondeurs, le testeur fait donc évoluer la profondeur en mètres
par pas de 10 cm ce qui permet de suivre l'évolution sur un lecteur GPS. (Comme pour la trame RMC les autres infos de la trame ne
sont pas modifiées mais la checksum est là aussi recalculée.)
Sur la vidéo ci-contre j'ai relié la sortie du testeur vers une clé usb (adaptateur nma RS422 vers usb) sur une entrée d'un micro
équipé d'OpenCpn sous ubuntu (/dev/ttyUSB0), on peut voir l'interprétation des trames reçues par le logiciel OpenCpn, le bateau se
déplace par saccades et la profondeur visualisée dans le Dashboard évolue. Ce n’est pas super, mais on voit que cela fonctionne !
Les trois petites cellules solaires sont là pour recharger la batterie et rendre l'appareil le plus autonome possible !
Il est cependant possible de recharger la batterie par usb sur une petite prise située sous l'antenne wifi (c'est moins fun, mais plus rapide). Il ne faut pas s'attendre
à un rechargement éclair avec le solaire mais ca marche j'ai testé ce type de montage sur mon anémomètre.
Sur le dessus du boitier on peut voir la sortie pour le racordement de fils en nmea0183 (émission/reception) la vitesse est configurable
à 4800 où 38400 (si AIS) (il est également possible de choisir des vitesses autres de façon à pouvoir imaginer d'autres utilisations...).
L'antenne wifi peut être repliée pour la protéger.
Le petit trou que l'on aperçoit sur le dessus permet de voir si le rechargement est terminé led du TP4056 qui passe du rouge au vert.
On voit ici l'encodeur rotatif qui permet de sélectionner les choix des menus et la validation. Un seul bouton,
pourquoi faire compliquer quand c'est possible de faire simple ! Un petit bouton est imprimable. J'ai également scié la tige du bouton qui était trop longue.
Il est donc possible d'afficher les trames nmea et ais qui transitent sur la liaison wifi ou RS422. Dès que le choix est validé, le
défilement commence. Pour l'interrompre, il faut presser une fois le bouton, cela fige la dernière trame. Il faut ensuite un deuxième appui sur le bouton pour revenir au menu.
Le choix "compteur de trame" va compter les douze types de séquences nmea ou ais qui vont apparaitre sur la liaison sélectionnée (wifi ou RS422).
(Les autres types de trame sont ignorées, l'écran étant limité en taille !). La présentation se fait sur deux colonnes, dans l'exemple de la photo, les trames AIS "AIVDM" apparaissent au début de
la deuxième colonne. 1er appui bouton on fige l'écran, 2eme on revient au menu.
Il est également possible de visualiser les principales infos des trames RMC reçues (heure UTA, latitude et longitude) (wifi ou RS422).
Pour la saisie, l'écran est divisé en deux (même si il est déjà petit !).
Dans la partie droite vous choisissez le type de caractère souhaité (Majuscules ou Minuscules ou Spéciaux (les numériques sont avec les spéciaux). Dans cette partie droite
il y a également un choix "Val" qui permet de lancer des actions.
Dans la partie gauche la liste des caractères s'affiche en fonction du choix effectué dans la partie droite.
On passe de la liste de gauche à celle de droite (ou inversement) en allant au bout de la liste.
Le menu "Val" permet "Correction", "Effacer tout", "Validation", "Annulation".
La saisie est un peu rébarbative s'il n'y en a beaucoup mais comme les données sont systématiquement sauvegardées dans une mémoire qui ne se perd pas lors de l'extinction
de l'appareil on prend son mal en patience...
Cette explication est un peu rébarbative alors que c'est trés simple, alors voyons cela en vidéo...
GROSSE HOULE SUR LES VIDEOS QUI SUIVENT ! SUR "CHROME" C'EST OK, SUR "SAFARI" ELLES SONT INVERSSEES ! ET SUR "IE" ELLES SONT COUCHEES !!!
J'espère trouver solution rapide pour éviter ce gros temps...
Menu
=> Modif parametres
=> Parametres wifi
=> Selection du réseau wifi
Le logiciel va lancer une découverte réseau Wifi et va vous présenter dans un menu les cinq premiers pour vous permettre de selectionner votre SSID.
Vous allez ensuite devoir saisir le mot de passe de celui-ci.
Dans le cas de la vidéo la connexion est réalisée vers un boitier QK-A026 avec le mot de passe par défaut 8 8.
Menu
=> Modif parametres
=> Parametres wifi
=> Adresse IP réseau wifi
Menu
=> Modif parametres
=> Parametres wifi
=> Selection du port wifi
Menu
=> Modif parametres
=> Parametres série
=> Choix de la vitesse...
Enfin, tous les paramètres sont ok, alors lançons une connexion sur le wifi mais avant cela si cela n'a pas été fait auparavant
il est nécessaire de choisir le type de réseau que l'on va utiliser :
Menu
=> Modif parametres
=> Parametres wifi
=> Connexion wifi
Tous les paramétres ne se rentrent qu'une fois sauf si l'on change de bateau.
Une petite démo sur l'exploitation de la liaison nmea0183 RS422 en réception.
Pour la démo en émission dans la vidéo en haut de cette page avec la visualisation des trames de gps et de profondeur
sur OpenCpn, j'avais donc utilisé le petit boitier bleu que l'on voit sur cette vidéo et que l'on ne voyait pas dans la première vidéo.
Raccordement pour l'émission :
testeur Z vers RX- du boitier bleu
testeur Y vers RX+ du boitier bleu
Donc pour la réception, les fils d'entrée du testeur sont raccordés sur l'émission du boitier QK-A026.
Testeur A vers NMEA Out+
Testeur B vers NMEA Out-
Lorsque l'on utilise cette interface, il faut veiller à être sur la bonne vitesse dans les parametres de la liaison série.
La vidéo montre dans les paramètres le menu qui permet de basculer du mode wifi à RS422 ou l'inverse, ce paramètre est comme les autres
sauvegardé dans la mémoire eeprom de l'appareil, donc au démarrage on est d'office sur le dernier mode utilisé.
Lorsque l'on a sélectionné le mode les trois choix (trame nmea, type de trame et RMC) sont liés au mode en cours.
Dans cette première version l'émission ne peut se faire qu'en RS422 sur la liaison filaire...
Test d'une sortie nmea0183 sur le transpondeur ICOM MA500TR, ce qui est pratique c'est que dès que l'on positionne les fils sur une sortie nmea
on voit le signal arriver, ce qui permet de confirmer en quelques secondes qu'on est bien sur les bons fils !