K3NG pstrotator

A terminer ...
Lors de la construction de ma station télécommandée, j'ai recherché une solution pour télécommander des rotors à distance, donc via Ethernet.

Il existe plusieurs possibilités, mais j'ai finalement adopté celle proposée par K3NG et son interface développée sur Arduino. J'avais déjà construit une interface de ce type pour une commande via USB et mon rotor HAM IV.
Une carte d'extension (shield) Ethernet est nécessaire et doit être connectée à l'Arduino. La documentation de la carte est présentée ici.

J'ai utilisé une platine  Arduino UNO bien que le programme rentre au chausse-pied... Une carte Arduino MEGA est recommandée par l'auteur K3NG.
Cependant, en limitant les fonctions au minimum (pas d'afficheur, boutons, etc...) et en commentant ou décommentant les lignes suivantes dans le fichier rotator_features.h  comme ci-dessous pour économiser de la mémoire, je n'ai pas eu de problème :

//#define DEBUG_DUMP
#define OPTION_SAVE_MEMORY_EXCLUDE_REMOTE_CMDS

Configuration du logiciel:

En plus des configurations à faire pour le type de rotor, il faut valider l'utilisation du protocole TCP/IP.

Le premier fichier à configurer est rotator_features.h, en décommentant les lignes suivantes  :

#define FEATURE_ETHERNET
#define FEATURE_MASTER_WITH_ETHERNET_SLAVE

Le fichier suivant à configurer est rotator_settings.h en modifiant les paramétres IP souhaités:

#define ETHERNET_MAC_ADDRESS 0xAA,0xBB,0xCC,0xDD,0x00,0x01
#define ETHERNET_IP_ADDRESS 192,168,1,173
#define ETHERNET_IP_GATEWAY 192,168,1,1
#define ETHERNET_IP_SUBNET_MASK 255,255,255,0
#define ETHERNET_TCP_PORT_0 23
#define ETHERNET_TCP_PORT_1 24

La platine Ethernet utilise les pins 10,11,12 et 13 pour l'interface Ethernet. La pin 4 est réservée au lecteur de carte SD. Ces pins ne sont donc pas disponibles pour commander le rotor.
J'ai utilisé la pin A5 pour la lecture du potentiomètre qui donne la direction. Les pins 6, 5 et 7 pour les commandes de directions horaires (CW), antihoraires (CCW) et le frein (BRAKE). Les pins 8 à 13 sont utilisables pour l'afficheur LCD dans le cas d'une platine permettant soit une version avec affichage, soit une version Ethernet.

Le fichier  rotator_pins.h doit être modifié en conséquence :

#define rotator_analog_az A5
#define rotate_ccw 5
#define rotate_cw 6
#define brake_az 7

 Après cela, il faut compiler le fichier k3ng_rotator_controller.ino et le charger dans l'Arduino à l'aide de l'IDE Arduino.

Une fois tout cela programmé, il faut vérifier que l'interface fonctionne correctement.
On relie un terminal sur le port COM (dépend de votre environnement et votre configuration) , on envoie la commande C. L'interface devrait retourner l'azimut actuel (qui sera probablement faux). Si ce n'est pas le cas, commencez par régler ce problème !
Ensuite, se reporter à la doc ou mon article au sujet de l'interface pour les autres réglages !

Utilisation :

Pour pouvoir utiliser cette interface sur un logiciel de contest ou de carnet de trafic, il faut établir une connexion Telnet entre l'ordinateur et l'Arduino.

La solution la plus simple est d'utiliser un logiciel qui le fait nativement tel que PSTrotator par YO3DMU qui est un superbe logiciel  ! Mais la solution plus universelle est de créer un client Telnet qui transforme les commandes série envoyées par le logiciel en commandes Telnet vers le serveur (la platine Arduino). J'ai utilisé l'émulateur gratuit en version 32 bits VSPE et/ou com0com .

Client Telnet avec VSPE :

1) Créer un nouveau périphérique avec l'icône  "Créer un nouveau périphérique". Choisir "Connecteur'. Choisir un port COM disponible, par exemple COM3.

2) De la même manière, créer un périphérique  en choisissant "TcpClient". Entrer l'adresse IP de l'Arduino dans "Hôte TCP distant", mettre 23 dans "Port TCP distant".

Dans "Port" série source", mettre le numéro de COM créé précédemment COM3. Cocher la case "DTR/DSR dépendant de l'état de la connexion".

Une fois l'émulation démarrée, si tout est correct, vous devriez voir un nouveau port série dans le gestionnaire de périphériques et dans les choix proposés par les logiciels. Le rotor devrait répondre aux commandes envoyées par l'ordinateur.

Client Telnet avec com0com

Une autre solution que j'ai retenue est d'utiliser le logiciel com0com. A l'aide de l'interface "Setup command prompt", créer une paire de ports virtuels ( par exemple si COM5 est libre ) COM5<->CNCB0 (consulter le fichier com0com's ReadMe.txt pour plus d'infos). Entrer la commande suivante :

command> install 0 PortName=COM5,EmuBR=yes -

Le fichier com2tcp-rfc2217.bat lance une série de commandes qui émule le port créé. J'ai créé un fichier batch avec la ligne suivante  :

com2tcp-rfc2217 \\.\CNCB0 adresse_IP_Arduino 23

Lancer ce fichier batch et com2tcp démarrera et redirigera le port série virtuel COM5 vers le serveur Telnet du rotor via TCP.

Utilisation de PSTrotator :

Dans PSTrotatorAz ouvrir le menu "Communication", sélectionner  "TCP Client". Dans la fenêtre de paramétrage du client TCP, entrer l'adresse IP paramétrée dans le fichier rotator_settings. La connexion devrait s'établir avec le rotor et un voyant vert devrait s'allumer en haut à gauche du cadran azimut.

Ouvrir le menu "Setup" et sélectionner "Start as TCP Client", et choisir une fréquence de rafraîchissement appropriée avec le menu "Refresh rate".

Le rotor est prêt à être commandé.

Utilisation de WTrotator :

Pour l'utilisation de Wintest, il faut passer par l'utilitaire WTrotator.
Avec le menu "Controllers", ajouter un contrôleur en choisissant "K3NG".

Sélectionner le port série virtuel créé précédemment, nommer le Rotor et ajouter au moins une antenne.