djcompact vignette
Mise à jour au 27 janvier 2023.
La nouvelle version est bien plus complète et aboutie. Un EXE est disponible

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 "UD; " pour modifier la fréquence des VFO.

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 pour "Midi to TS590".

Le protocole MIDI est géré par la librairie PYGAME MIDI, ce qui rend sa gestion plus facile !
J'utilise Pyhton 3.10.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]
# midi2ts590 config file
# defaults values created by program
# see manual for help in setting
mode = USB
vfo = A
tuningstep = 5
radiosniff = 1

[Midi]
devicein = 1
deviceout = 3

[Radio]
model = TS590s
comport = COM8
baudrate = 57600
bytesize = 8
stopbits = 1
parity = N
xonxoff = 0
rtscts = 0
dsrdtr = 0
polltime = 1000
rxtimeout = 0
txtimeout = 0

[Commands]
# put one or more kenwood commands (see manual) on each following line
# e.g cmd1 = vv;vx0;         set vfo a=b and vox off
# e.g cmd2 = rt0;            will put rit off
# these commands will be sent at startup
cmd1 = VV
cmd2 =
cmd3 =

Au démarrage, les périphériques MIDI sont testés ainsi que les ports COM.
Il faut ensuite modifier les sections 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], tout comme le pas du VFO, et l'option de scanner le TS590 pour mettre à jour régulièrement les boutons de la console.
La section [Commands] liste les commandes qui peuvent être envoyées au TS590s à l'allumage pour le configurer à convenance. 
L'exemple donné est pour mettre les 2 VFO sur la même fréquence.

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 il devrait être prêt à être utilisé. Le TS590s devrait s'allumer.
Un appui sur la touche REC devrait éteindre le TS590.

Page avec la configuration des touches et réglages.

Au démarrage, on peut rajouter des options, par exemple midi2ts590.py -h pour obtenir de l'aide.
-c pour forcer l'affichage des ports COM
-m pour forcer l'affichage des devices MIDI
-v pour afficher beaucoup d'information pour le débugage

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, mais qui n'existe en gratuit qu'en version 32 bits.
Depuis, j'ai utilisé l'émulateur gratuit com0com et les logiciels rattachés.
J'ai dû galérer pour faire reconnaitre les pilotes sous Windows 10, puis j'ai trouvé sur ce site une version qui a fonctionné avec des pilotes signés numériquement.
Pour le routage entre ports, le logiciel HUB4COM n'est pas compris dans le package du logiciel com0com.
Je l'ai trouvé sur le site Sourceforge.net.

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 !
Le logiciel est disponible sur mon dépôt sur mon Github

Un logiciel équivalent basé sur mon idée a été développé par Alexandru et est disponible sur son Github.

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.
nov 2022 : Mise à jour des liens de téléchargement.
janv 2023 : version 0.23 disponible avec corrections de bug et ajout de fonctions.