Les chasseurs de radiosondes se trouvent souvent en possession de plusieurs sondes de type M10.
Plutôt que de les laisser dormir sur une étagère, il est possible de les réutiliser pour différents usages. Le présent article décrit la réutilisation en récepteur GPS avec sortie sur un port série des trames NMEA GNGGA.
Un afficheur OLED permet d'afficher les données principales et ainsi de vérifier le fonctionnement du récepteur.
Ce montage permet ainsi de délivrer une heure "relativement" précise ou les coordonnées GPS à un autre ensemble. Il faudra que ce dernier soit bien sûr en mesure d'interpréter les trames NMEA.
Seule la partie GPS est utilisée. Le synthétiseur, le PA, les sondes de température et humidité sont désactivées.
On pourra éventuellement connecter une antenne extérieure au récepteur GPS, mais le montage perd alors un peu de son intérêt.
Logiciel :
C'est Michel F5ZJ, grand spécialiste de la M10, qui a bien voulu écrire le logiciel répondant à mes besoins. Un grand merci à lui pour le travail et les échanges !
Il met à disposition le fichier au format HEX qu'il faut charger dans le micro-contrôleur MSP430F233.
Certains paramètres peuvent être modifiés en éditant le fichier Hex. Il faut donc disposer d'un éditeur HEX ou mieux, d'un logiciel de programmation qui affiche les données programmes et données. J'utilise MSP340 de OLIMEX à cet effet.
La radiosonde M10 utilise un circuit intégré récepteur GPS du type XM1110.
Normalement, ce circuit délivre les trames NMEA sur la sortie RX (pin 17). Mais sur la sonde M10, les données sont présentes dans un format binaire et ce mode n'est documenté nulle part.
Il est probable que le constructeur SIERRA livre une version spéciale à la société MODEM qui produit la radiosonde.
F5ZJ a donc dû écrire une conversion binaire > NMEA après avoir décortiqué les données transmises dans la sonde.
Deux affichages sont disponibles. Le principal affiche les données les plus utiles avec une fonte double hauteur. Le 2ème affiche plus d'informations.
On passe d'un écran à l'autre à l'aide d'un appui long sur le bouton-poussoir.
On peut rajouter d'autres informations à l'écran détaillé en modifiant le contenu de l'adresse 0x1000
1= affichage de la tension d'alimentation
2= affichage de la semaine
4= émission d'un message supplémentaire : "SEMAINE,170 "
les options peuvent se cumuler exemple: 1+2+4=7
Afin d’économiser l'afficheur OLED, une temporisation coupe l'affichage. Par défaut, elle est réglée à 300 s. Elle peut être modifiée aux adresses 0x1008 et 0x1009
Par exemple pour 300s = 0x012C , donc : 0x1008=2C 0x1009=01
Si on souhaite un affichage permanent, on mettra 0x1008=00 et 0x1009=00.
Un appui bref sur le bouton-poussoir permet de réinitialiser la temporisation.
Les données d'altitude sont transmises dans les trames NMEA par rapport au référentiel géodésique et sont donc décalées par rapport à celles de l'ellipsoïde.
Il n'y a pas de moyen simple d'appliquer la correction d'altitude qui est variable suivant les coordonnées géographiques.
Le logiciel permet cependant d'introduire une correction moyenne en fonction de la zone dans laquelle on se trouve. F5ZJ a appliqué une correction de 35m qui devrait convenir pour l'ensemble de la France continentale.
En Corse, il faut appliquer 51 m !
La correction de l'altitude du géoïde est possible en modifiant le contenu de l'adresse 0x1002. Par défaut, 0x23 correspond en décimal à 35. Si on veut désactiver cette correction, on mettra 0x1002=00
La sortie série s'effectue par défaut à une vitesse de 4800 bds. Elle peut être modifiée en changeant le contenu de 2 adresses dans le fichier Hex, 0x100A et 0x100B.
Le calcul du contenu est le suivant : 4000000 / vitesse en bds.
Exemples:
4000000 / 4800 bds = 833 =0x341 soit 0x100A=0x41 et 0x100B=0x03
4000000 / 38400 bds = 104=0x68 soit 0x100A=0x68 et 0x100B=0x00
Construction :
On commencera par modifier la carte tel que le décrit F5ZJ sur son site.
On dessoudera au préalable la barre de capteurs, bouton-poussoir et LED.
La partie M/A à l'aide du bouton-poussoir et le circuit de mise en veille n'étant pas utilisés, on alimentera donc le régulateur principal avec un fil directement sur l'alimentation générale.
Les concepteurs de la sonde ont utilisé les pins SCL et SDA du bus i2C pour commander les alimentations des régulateurs alimentant le GPS et le synthétiseur. Ces 2 signaux étant à réutiliser pour envoyer les données à l'afficheur OLED, il faut donc couper les 2 pistes et alimenter les régulateurs autrement. La photo de la platine montre où il faut se connecter.
Bien que non utilisé, le régulateur du synthétiseur doit être câblé avec le fil sAlimSynth (niveau bas). Il faut en effet désactiver ce régulateur sous peine de le voir alimenter le synthétiseur. On câblera donc les fils AlimGps et sAlimSynth.
L'afficheur est relié à la platine à l'aide de 4 fils ; GND, VCC, SCL, SDA.
On pourra brancher une batterie de sauvegarde (2 à 4,3 V) sur la pin UbackUp (VBACKUP du XM1110) afin d'accélérer l''acquisition des satellites par mémorisation des données précédentes et la conservation de l'horloge en temps réel (RTC).
On solidarisera les fils avec la platine à l'aide d'un point de colle ou vernis.
Il faudra ensuite programmer le micro-contrôleur avec le logiciel de F5ZJ disponible auprès de lui sur simple demande.
Il y a 2 méthodes pour relier l'ordinateur à la M10: à l'aide d'un programmateur JTAG ou via un port série et on utilisera alors le mode BSL.
J'ai retenu la 2ème solution qui ne nécessite pas de programmateur dont je n'ai aucune autre utilité.
Il faut donc disposer d'un port série avec les signaux GND, RxD, TxD, DTR et RTS.
La plupart des ordinateurs récents ne disposent plus de port série et il faut donc posséder un adaptateur USB <-> RS232.
Attention aux nombreuses versions d'adaptateurs dont certaines n'ont que les données RxD et TxD, ou bien utilisent des contrefaçons de chip qui ne s'installent que mal ou pas du tout !
Câblage du port série pour une utilisation en mode BSL. ATTENTION, les signaux sont ceux de la platine, il faut croiser les fils TXD et RXD avec le PC. Cliquer pour agrandir. |
Le site de F0GYS décrit parfaitement la procédure de raccordement et programmation.
J'ai câblé les 5 fils sur un connecteur DB9 femelle qui servira à la programmation et à l'utilisation.
Utilisation :
Il est fort probable que la réception soit impossible avec la sonde à l'intérieur d'un local. On utilisera donc une antenne GPS extérieure ou on installera le module avec l'antenne intégrée dans un boîtier plastique étanche qui sera installé à un endroit dégagé.
On peut retirer l'antenne intégrée à la sonde en dessoudant les 3 soudures la raccordant au centre de la platine. Il faudra utiliser une antenne passive, l'entrée n'étant pas alimentée.
On reliera le module au PC ou à un autre montage (Raspberry, etc...) à l'aide d'un câble série le plus court possible. Il ne faut pas relier les signaux DTR et RTS qui sont utilisés dans le module pour alimenter la platine et provoquent une RAZ. Pour ma part, je n'ai câblé que les fils GND et RxD.
Par défaut, la vitesse de transmission est de 4800 bds. (modifiable comme indiqué ci-dessus)
Les données présentes sur le port série sont les trames $GNGGA qui contiennent les informations de l'heure, position, altitude, qualités de réception.
$GNGGA,181908.00,3404.7041778,N,07044.3966270,W,4,13,1.00,495.144,M,29.200,M,0.10,0000,*40
Il appartient donc au logiciel du module raccordé au GPS d'interpréter ces données.
Sur la pin 18 du XM1110 on trouve un signal 1PPS qui délivre un créneau de niveau compatible CMOS à 2,8V et qui démarre au début de chaque seconde. Par défaut le créneau dure 100 ms et la précision "serait" de 20 ns.
On peut donc utiliser ce signal pour synchroniser une horloge externe, une référence OCXO, etc... Il faudra réaliser une intégration sur le temps pour s'affranchir de cette (im)précision de 20 ns.
Documentation ;
- Notice technique du XM1110
- Site Web de F5ZJ qui propose aussi d'autres réutilisations de la radiosonde M10.
- Site de F0GYS