djcompact vignette
Durant mon projet de construction d'une station télécommandable, j'ai été rapidement confronté aux problèmes de la limitation des possibilités de télécommande du TS590s. Le premier gros problème a été celui du changement de fréquence. Mon logiciel de carnet de trafic, à savoir LOGGER32, offre pas mal de solutions avec l'utilisation des macros et de la roulette de la souris qui permet de changer la fréquence du VFO, mais l'utilisation au quotidien et durant les contests est assez frustrante...

Les logiciels ARCP et ARHP de Kenwood offrent une solution gratuite et complète, mais nécessitent qu'un ordinateur soit allumé en permanence du côté de la station distante, chose que je voulais éviter. Par ailleurs, l'utilisation au quotidien est assez frustrante et l'interface avec les logiciels de contests ou carnet de trafic n'est pas possible.

Sur Twitter, j'avais vu que certains avaient utilisé un contrôleur DJ pour piloter des SDR ou en lien avec Wintest. J'ai donc commencé à réfléchir à une solution pour le TS590s.

Le contrôleur "DJcontrol compact" est un petit contrôleur MIDI à faible coût produit par Hercules.

Ce contrôleur se connecte à l'ordinateur via un port USB et possède 2 jog wheels ainsi qu'un nombre important de boutons, potentiomètres et un slider. Lorsque ces réglages sont modifiés, un flot de messages MIDI est envoyé vers le port USB. Chaque commande envoie un message lorsqu'elle est appuyée, relâchée ou tournée.
La liste des commandes et les messages MIDI correspondant est disponible dans ce document.

Mon projet était donc de traduire chaque commande en une fonction CAT du TS590s. La première a été de transformer le JOG A en une commande du VFO. Ce gros bouton de 7cm de diamètre est idéal pour cet usage.
Dans le document fourni par Hercules, ce bouton est nommé JOG_DA et le message MIDI correspondant est "Bx30 Value", un tour complet fait 128 incréments.

Le message MIDI pour le JOG A est :
[[0xb0, 0x30, 0x7f, 0x00], 13655]

0xb0 est la valeur attribuée au groupe des réglages rotatifs, potentiomètres et sliders.
0x30 est la valeur assignée au JOG A
0x7F est la valeur pour la rotation anti-horaire, elle passe à 0x01 pour rotation dans le sens horaire.
0x00 n'est pas utilisé pour cette commande
13655 est l'horodatage qui démarre à 0 lorsque le contrôleur est allumé (non utilisé dans ce projet)

Un autre exemple de message MIDI pour la touche SYNC :

[[0x90, 0x23, 0x7f, 0x00], 1185118]

0x90 est la valeur pour le groupe des touches
0x23 celle du bouton SYNC A (côté gauche)
0x7f pour l'appui sur la touche et 0x00 au relâchement.
0 non utilisé.

 
Tout le travail du logiciel est donc de traduire ces messages MIDI en commandes CAT Kenwood pour le TS590s.

Par exemple, la rotation horaire du JOG doit être traduite en " UP; " pour augmenter la fréquence du VFO d'un pas. La rotation ani-horaire du JOG A est traduite en " DN; ".
Si on tourne le JOG A plus rapidement on peut envoyer "UP5; " pour 5 incréments du VFO, etc...

La touche SYNC est assignée pour sélectionner le VFO A, la touche CUE au VFO B, etc... Seule l'imagination limite les possibilités et une bonne répartition des commandes du contrôleur permet une utilisation plaisante !

Le logiciel Midi2TS590

N'étant pas un expert en programmation, j'ai choisi d'utiliser le langage PYTHON pour ce projet. L'apprentissage en est assez facile et il ne m'a fallu que quelques jours pour réaliser ce projet ! Il est également appréciable de pouvoir modifier facilement le code du programme durant son utilisation et de relancer son exécution pendant un concours et ainsi corriger des erreurs ou rajouter une fonction.
J'ai donc écrit un petit logiciel que j'ai nommé midi2ts590.py

J'ai cependant été un peu déçu lorsque j'ai souhaité créer un exécutable pour l'installer sur un autre ordinateur ou pour le distribuer.... Le processus crée un petit exécutable mais qui nécessite également l'installation d'un nombre important de dossiers et fichiers contenant les librairies et autres fichiers nécessaires.
L'utilisation de C++ serait probablement plus intéressante de ce point de vue mais C or C++ ne sont pas aussi facile à apprendre que Python...

Le protocole MIDI est géré par la librairie PYGAME MIDI, ce qui rend sa gestion plus facile !
J'utilise Pyhton 3.x.xx. Il faut installer les librairies pyserial et pygame. A partir de CMD : "pip install pyserial" et "pip install pygame".

Le contrôleur DJCompact peut également être commandé et il est possible d'allumer ou d'éteindre le rétro-éclairage des touches, ce que j'ai fait.

Au démarrage le logiciel recherche une configuration dans un fichier midi2ts590.ini . S'il ne le trouve pas, il en crée un avec une configuration par défaut.
Ce fichier doit alors être modifié pour correspondre à la configuration souhaitée.

[Default]
# midi2hamlib config file
# defaults values created by software
mode = CW
vfo = A

[Midi]
devicein = 1
deviceout = 3

[Radio]
model = TS590s
comport = COM2
speed = 57600
bits = 8
stop = 1
parity = N
xonxoff = 0
rtscts = 0
dsrdtr = 0

[Commands]
#NB OFF
NB0

Au démarrage, tous les périphériques MIDI trouvés sont affichés à l'écran. Il faut alors modifier la section [Midi] du fichier de configuration pour mettre les numéros attribués aux périphériques DJcompact IN et OUT dans la section [Midi].
La section [Radio] doit être modifiée pour correspondre à la configuration du port série. Notamment le numéro du port et la vitesse configurée dans le TS590s. Le reste devrait convenir.
Le mode et le VFO par défaut sont configurés dans la section [Default]
La section [Commands] liste les commandes qui peuvent être envoyées au TS590s à l'allumage pour le configurer à convenance. Il ne faut mette qu'une commande Kenwood par ligne. Un commentaire doit être mis sur une autre ligne.
L'exemple donné est pour mettre le Noise Blanker à l'arrêt.

Si quelque chose manque ou ne correspond pas, un message d'erreur est affiché et il faut alors corriger la configuration.

Si tout est correct, tous les voyants du contrôleur devraient clignoter 3 fois et être prêts à être utilisés. Le TS590s devrait s'allumer.
Un appui sur la touche REC devrait éteindre le TS590.

Page avec la configuration des touches et réglages.

Partage du port série COM

Dans le but d'utiliser le contrôleur en même temps qu'un logiciel de trafic, il est nécessaire de partager le port série sur lequel est raccordé le TS590s.

Pour ce faire, j'ai d'abord utilisé un logiciel nommé VSPE. Depuis, j'ai utilisé l'émulateur com0com et les logiciels rattachés.
J'ai dû galérer pour faire reconnaitre les pilotes sous Windows 10. J'ai trouvé sur ce site une version qui a fonctionné avec des pilotes signés numériquement.
ATTENTION, les logiciels HUB4COM et COM2TCP ne sont pas compris dans le package du logiciel com0com. Sur le site de sourceforge.net, il faut aller dans le dossier "Files". Mais il faut aussi compiler les logiciels... :-(

Avant tout, il faut connaître les ports disponibles sous Windows. Le gestionnaire de périphériques n'affiche pas tous les ports, notamment ceux déjà assignés mais pas en service. Il faut pour cela, modifier la configuration Windows :

Entrer cmd dans la barre de recherche, puis faire un clic droit sur le logiciel cmd.exe trouvé en choisissant "Exécuter en tant qu'administrateur"

Depuis la fenêtre de commandes , entrer : > set devmgr_show_non_present_devices=1

Ensuite lancer le gestionnaire de périphériques : >  devmgmt.msc

Dans le menu "Affichage", cocher "Voir les périphériques cachés", on peut alors visualiser tous les ports COM déjà déclarés et utilisés par Windows.

Utiliser Com0com pour créer des ports virtuels

Le but est de créer 2 ports virtuels qui se partageront un port physique de l'ordinateur.
Dans mon cas, j'ai un port physique COM1 sur lequel est raccordé mon TS590s. Je veux donc créer 2 ports virtuels COM2 et COM3, qui seront utilisés par 2 logiciels différents comme LOGGER32 et mon logiciel midi2ts590. (Se référer à la documentation de com0com et hub4com pour l'installation et l'utilisation.)

1) Créer 2 ports avec la console com0com setup
Lancer la console "Command Setup Prompt" depuis le groupe de programmes com0com

> install PortName=COM2,EmuBR=yes,EmuOverrun=yes -
> install PortName=COM3,EmuBR=yes,EmuOverrun=yes -

2) Vérifier que les ports ont bien été créés à l'aide de la commande "list" :

com0com list

 

J'ai ensuite créé un fichier batch qui lance l'émulateur com0com :

  hub4com --baud=57600 --bi-route=0:1 --bi-route=0:2 --octs=off \\.\COM1 \\.\CNCB0 \\.\CNCB1

Quand ce batch est lancé, le logiciel hub4com routera ce qu'il reçoit sur le COM1 vers les ports virtuels CNCB0 (COM2) et CNCB1 (COM3), et inversement.

Logger32 peut maintenant utiliser le COM2 dans le paramétrage de "radio" et midi2ts590 le port COM3. Les deux logiciels partagent le port COM1 port qui est relié au port COM du TS590s à la vitesse de 57600 bauds.

Conclusion

L'utilisation de ce contrôleur et logiciel, permet d''utiliser à fond les capacités de télécommandes du TS590s. La facilité d'utilisation durant le trafic quotidien sont remarquables, et font oublier que l'on a à faire avec une station déportée.
Le changement de fréquence, de VFO, etc... sont aussi aisées que sur le TS590s, voire même plus facile !
Me contacter si vous souhaitez obtenir le logiciel midi2ts590.

Remerciements
A F6FVY pour ses précieux conseils et sa patience.

Mises à jour
oct 2021 : Ajout de fonctions permettant de lire les données du TS590. Corrections de bugs et améliorations.

Comments est propulsé par CComment