Interface Rotor

Bernard F6BVP / AI7BG s’est attaqué à la question de la poursuite des satellites à orbites moyenne qui ne défilent pas trop vite et peuvent donc être suivis par le radiotélescope. Le logiciel Gpredict, disponible aussi bien sous Linux que pour Windows, est utilisé pour la poursuite des satellites par les radioamateurs depuis de nombreuses années. Il est capable de commander un grand nombre de radios en émission-réception et des moteurs d’antennes.

Le plus souvent la librairie HAMLIB est utilisée à cette fin. Dans notre cas il a semblé plus simple de programmer un petit utilitaire en Python pour récupérer en temps réel les valeurs des angles d’azimut et d’élevation du satellite à suivre pour les transmettre au serveur INDI de manière à piloter le Radiotélescope. La documentation de Gpredict indique que le logiciel transmet ces informations via le port 4533. Une application Python rapidement écrite en suivant un exemple de serveur selon le protocole UDP n’ayant rien donné, Bernard s’est tourné vers la rédaction d’une application utilisant le protocole connecté TCP. Après quelques tâtonnement dus à l‘apprentissage du langage Python, en même temps que le développement en cours, le petit programme de quelques lignes a produit des résultats.

Le plus compliqué a été de lui faire relire la position des moteurs en raison du manque d’information sur le format des données à transmettre vers Gpredict. Mais au final le module serveur_tcp.py en Python fonctionne parfaitement, en relayant les commandes et la position des antennes entre Gpredict et le pilote des antennes.

Le pilote est encore fictif à ce stade, c’est pourquoi les angles affichés en Lecture (23,45° et 67,89°) sont codés en dur dans le module Python pour le moment.

La fenêtre Polar Plot de Gpredict donne les valeurs de Az, El, AD et Dec en temps réel
L’écran de contrôle des moteurs en poursuite automatique ou manuelle

La fenêtre de pilotage des moteurs d’antennes affiche sur des roues codeuses les angles d’azimut et d’élevation (site). Il est possible de régler la précision (Tolérance) et la fréquence (Cycle) des commandes envoyées aux moteurs. En cliquant sur Engage on déclenche l’envoie des valeurs angulaires sous forme de commandes au pilote des moteurs, normalement via la librairie HAMLIB. Mais nous n’avions pas besoin de la librairie en question car nous avons déjà réalisé le pilote des moteurs du radiotélescope commandé par un serveur INDI.

Les commandes de déplacement envoyées aux pilotes des moteurs d’antennes

Un extrait de la sortie du module Python serveur_tcp.py est affichée sur la figure ci-dessus. Il va maintenant falloir incorporer ce code dans l’application de pilotage des antennes, programmé par François-Xavier N5FXH, qui transformera les coordonnées azimutales en coordonnées équatoriales et transmettra les ordres au serveur INDI qui, lui-même s’adressera au pilote (driver) des moteurs du radiotélescope. Compliqué ? En fait non, car l’écriture du pilote a été grandement simplifié grâce à l’appel à des fonctions faisant partie de la librairie INDI. Le plus complexe a été l’étude de la machine à états par Patrick, sous contrôle d’un algorithme d’asservissement et d’un superviseur de manière à prévoir les vitesse à enclencher et le passage en mode poursuite à bon escient (…).

L’application en Python serveur_tcp.py a été développé pour Gpredict sous Linux Ubuntu, mais avec Gpredict sous windows il fonctionne parfaitement.