

Sky-Watcher commercialise un module GPS qui peut se connecter sur le port « Multi Purpose » des raquettes SynScan, qui permet de s’affranchir d’une grande partie de la saisie des paramètres (ne restent à saisir que fuseau horaire et heure d’été, qui demeurent en outre dans la mémoire non volatile). Au vu du prix actuel des modules GPS, on pourrait penser qu’il eut été malin d’en intégrer un directement dans la raquette ou dans la monture, mais l’économie de marché en a décidé autrement : il est question de commercialiser cela sous forme d’un accessoire optionnel, pour la modique somme de 167€ (!). Et encore, ça c’est pour le tarif Sky-Watcher, chez Celestron (donc toujours Synta, mais sous la marque premium), c’est 260€ ! (avec certes un produit de bien meilleure facture que le machin low-cost vendu hors de prix par Sky-Watcher, mais quand même).
Un module GPS compact doté d’une interface série TTL, de fabrication chinoise, coûte une poignée d’euros. Il fut un temps possible d’utiliser directement ce type de modules dès lors que la partie RS232 était électriquement compatible (niveaux 12V) et que le protocole NMEA 0183 était supporté par le module ; Sky-Watcher a plus tard décidé de fermer cette possibilité. Depuis, un protocole propriétaire, ou en tout cas moins répandu, semble empêcher l’utilisation d’autres modèles que l’ «officiel».

En m’intéressant à la question, j’ai pu lire que le protocole à présent utilisé était un protocole binaire, au sens « non ASCII », ce qui implique donc que contrairement à NMEA, il ne peut être interprété par une simple lecture humaine. (J’ignore toujours à ce stade le nom de ce protocole, peut être «LocSense» ?).
À titre indicatif, et si le sujet vous intéresse, vous trouverez ici une liste non exhaustive des différents systèmes utilisés.
Pour aboutir à un système GPS compatible SynScan, nous devons donc trouver un module GPS NMEA classique, doté d’une interface série TTL, concevoir une interface de traduction LocSense/NMEA et enfin s’interfacer avec le port « multi-purpose » de la raquette SynScan (RS232 +12V sur RJ12).
Tout le travail consiste à converser :
- d’une part avec la raquette (essentiellement répondre à la détection du module GPS, pour signifier qu’il est présent, puis répondre favorablement par un ACK à chacune des sollicitations et enfin envoyer les paramètres au moment opportun) ;
- d’autre part avec le module GPS pour recueillir ses messages et préparer la réponse qui sera envoyée à la raquette, une fois le FIX obtenu.
Ce travail d’interprète diplomatique peut tout à fait être assuré par un module Arduino Mini. C’est d’ailleurs le choix que « Tazounet » (aka Deedlo sur webastro : cf ce thread) a fait et qui m’a servi de base pour mon travail (un grand merci à lui, donc, pour avoir posé les bases et ainsi m’avoir évité de réinventer la roue).
Je n’ai pas utilisé exactement les mêmes composants que lui, mais le principe est le même.
Réalisation
Schéma de raccordement

Liste des fournitures
- Arduino mini ATMEGA328 5V/16MHz (pas la version 3,3V !)
- Module GPS V.KEL VK2828U8G5LF (puce u-box 8 multi systèmes GPS/GLONASS/Galileo/BeiDou, niveaux TTL)
- Module RS232 SP3232 TTL vers RS232 (UART / RS232)
- Convertisseur DC/DC 12V>5V
- Connecteur mâle RJ12 à sertir
- Câble plat « Télécom » 6 conducteurs
- Fils cuivre de couleurs multibrin à faible section
- Matériel de soudure à l’étain
Prévoir également, pour le prototypage et la programmation :
- Une platine d’essai (plaque « Lab »)
- Un adaptateur UART/USB
- Logiciel Arduino IDE
- Émulateur de terminal série, capable d’afficher/envoyer texte brut et contenu hexadécimal
Paramétrage du module GPS
À l’aide de l’adaptateur UART/USB relié au module GPS et d’un terminal série, il faut modifier quelques paramètres (pour se connecter, utiliser d’abord 9600 bauds 8N1, puis après changement de vitesse, passer à 4800 bauds) :
- Vitesse de communication à 4800 bauds (par défaut à 9600)
- Fréquence de rafraîchissement à 1Hz
- Activation des messages nécessaires : GPDTM, GPRMC, GPGGA, GPGLL, GPGRS
Pour spécifier la vitesse à 4800 bauds, il faut envoyer cette séquence d’octets :
b5 62 06 00 14 00 01 00 00 00 d0 08 00 00 c0 12 00 00 07 00 07 00 00 00 00 00 d3 fc b5 62 06 00 01 00 01 08 22
Fréquence de rafraîchissement à 1Hz (1 lot de données par seconde) :
B5 62 06 08 06 00 E8 03 01 00 01 00 01 39
Activation des messages :
GPDTM :
24 45 49 47 50 51 2c 44 54 4d 2a 33 42 0d 0a b5 62 06 01 03 00 f0 0a 01 05 24
GPRMC :
24 45 49 47 50 51 2c 52 4d 43 2a 33 41 0d 0a b5 62 06 01 03 00 f0 04 01 ff 18
GPGGA
24 45 49 47 50 51 2c 47 47 41 2a 32 37 0d 0a b5 62 06 01 03 00 f0 00 01 fb 10
GPGLL :
24 45 49 47 50 51 2c 47 4c 4c 2a 32 31 0d 0a b5 62 06 01 03 00 f0 01 01 fc 12
GPGRS :
24 45 49 47 50 51 2c 47 52 53 2a 32 30 0d 0a b5 62 06 01 03 00 f0 06 01 01 1c
Enregistrement de la configuration :
B5 62 06 09 0D 00 00 00 00 00 FF FF 00 00 00 00 00 00 17 31 BF
Vérifier dans la sortie que l’ensemble des messages attendus sont bien présents :
$GPDTM,W84,,0.0,N,0.0,E,0.0,W846F $GPRMC,#######.##,A,####.#####,N,#####.#####,E,#.###,,######,,,A74 $GPGGA,#######.##,####.#####,N,#####.#####,E,1,##,#.##,###.#,M,##.#,M,,5B $GPGLL,####.#####,N,#####.#####,E,#######.##,A,A63
$GPGRS,#######.##,1,-#.#,-#.#,-#.#,#.#,#.#,-#.#,,,,,,*45
Décomposition du dialogue
Au démarrage, le système SynScan envoie sur le port dit « multi-purpose » une séquence :
Set Output Format (13h) avec comme Parameter byte 0: no output :

25 25 F1 13 00 E2 0D 0A
À cela, le GPS va devoir répondre par un accusé de réception (« Acknowledge » ou « ACK ») :
%%<06h><Response 13h><CS><CR><LF> : Ack
25 25 06 13 15 0D OA
Ensuite, le SynScan va de nouveau envoyer un message « Set Output Format » (F1 13) avec cette fois-ci le type 3 : Binary :
25 25 F1 13 03 E1 0D 0A
Et là encore il faudra répondre par un Ack :
25 25 06 13 15 0D OA
À ce stade, la raquette SynScan attend un message F2 D1 (User Position, Velocity and Time II) :

25 25 F2 D1 00 00 00 00 00 00
15 03 25 00
> Date : 15/03/2025
57 28 16 00 >
Heure : 16:28:57
80 1F 21 21 >
Latitude :
B0 FF 45 00 >
Longitude :
6D 00
> Altitude :
00 00 >
Heading : 0° (North)
00 00 >
Speed : 0m/s
01 >
Fix indicator : 1 (Differential mode)
FF >
Quality of fix (gps.fixquality_3d – 1 ) : Pb corrigé en forçant à 2
06 >
Nbr of SV (line of sight) : 6
06 >
Nbr of SV in Fix : 6
01 00 01 00 01 71 0D 0A
Pour générer cela, il nous faut d’abord pouvoir exploiter les données fournies en NMEA par le GPS, nous ferons cela à l’aide de la bibliothèque Adafruit_GPS. Il nous faut utiliser une boucle venant récolter les données :
gps.read()
Ensuite, si des données fraîches sont disponibles :
gps.newNMEAreceived()
retournera true, il nous suffira dans ce cas de les récupérer avec :
gps.parse(gps.lastNMEA())
Le reste consiste à constituer le message binaire attendu à partir des données.
(À suivre)