20210430 100326 Lors de mes activités SOTA, j'ai souvent enragé sur le fait que le manipulateur CW intégré à mon transceiver QRP SW-3B ne possédait qu'une seule mémoire...
Il est en effet bien pratique d'en avoir plusieurs afin de libérer les mains pour faire autre chose comme finir d'écrire le dernier QSO sur le carnet de trafic ou lancer un appel un peu spécifique.
L'idée a donc germée de réaliser un manipulateur CW à mémoires qui remplirait les conditions suivantes : 
  • 3 mémoires programmables à la volée.
  • Alimentation autonome par piles facilement approvisionnables
  • Consommation réduite
  • Dimensions réduites
  • Facilement reproductible

Ayant déjà construit un prototype du fabuleux manipulateur de K3NG, j'ai décidé d'utiliser ce projet en l'adaptant à mes besoins.

Étude :

Pour l'alimentation, j'ai choisi une paire de piles type AAA qui fournissent donc 3V, sont assez petites et en vente partout ce qui est pratique pour un projet qui doit être utilisé en déplacement et peut nécessiter un changement non prévu des piles.
Le cœur du montage est un Arduino Mini car j'en avais plusieurs en stock et qu'il est facilement modifiable pour en réduire la consommation. Il ne possède pas d'éléments tels qu'un port USB qui ne sont pas utiles dans mon projet et consommeraient inutilement du courant. L'Arduino est alimenté en 3 V directement via la pin VCC.

Pour limiter la consommation, il est fait appel à la fonction SLEEP du logiciel qui fait passer le module en veille au bout d'un certain temps d'inutilisation. La courant utilisé est alors très faible ce qui m'a à l'origine fait envisager de ne pas utiliser d'interrupteur M/A, mais j'en ai rajouté un pour éviter les appuis intempestifs sur les touches pendant le transport. En fonctionnement, le manip consomme environ 3.3 mA et en veille moins de 1 uA!

Pour limiter la taille et poids, il a été choisi de ne pas installer de potentiomètre de réglage de vitesse. La vitesse est modifiée à l'aide des touches du manipulateur après être passé en mode commande.

Afin de faciliter la construction, j'ai choisi d'utiliser un circuit imprimé avec tous les composants y compris les connecteurs, boutons-poussoir, interrupteur, boîtier à piles et LED. Les composants sont soudés sur les 2 faces, le boîtier à piles sur le dessous et les touches + LED au dessus.
L'intégration se fait dans un petit boîtier TEKO 2/A-1 aux dimensions de 72x57x28 mm.

Construction :

Le schéma du manipulateur au format PDF.

Afin de réduire au maximum la consommation de l'Arduino Mini, il est nécessaire de dessouder tout ce qui ne sert à rien à savoir le régulateur de tension et la LED de mise sous tension comme indiqué ci-dessous.
20210430 091404
Afin de programmer l'Arduino, il est nécessaire de souder les 5 broches à gauche sur l'image ci-dessous, mais SOUS le circuit imprimé afin de réduire la hauteur du montage.

L'Arduino peut être soudé directement sur le circuit imprimé avec l'inconvénient d'être ensuite difficilement dessouder. Il est préférable de mettre un support.
J'ai utilisé des broches femelles vendues en longueur de 40 broches et coupées à 12. Pour gagner en hauteur, les broches mâles seront soudées sur l'Arduino sans la partie plastique. J'ai d'abord soudé la barrette avec le plastique pour faciliter le soudage et j'ai ensuite enlevé ce plastique.

20210501 061706

Souder tous les composants CMS du côté composants en commençant par les résistances, condensateurs, transistors, connecteurs, support de piles + Arduino et buzzer. L'interrupteur M/A peut être soudé sur le dessus ou le dessous du circuit imprimé en fonction de votre souhait.

Souder ensuite les boutons-poussoirs et la LED sur le dessous du circuit imprimé.
L'implantation permet d'utiliser 2 types de touches, un modèle de la série D6 plus cher qui permet l'intégration de la LED de contrôle dans la touche et un autre modèle CMS très bon marché et avec une LED séparée.
D6SMd button

 J'ai acheté des petits cabochons qui s'insèrent sur les touches, mais on peut faire sans si on choisit des touches avec un bouton suffisamment long.

Keyer component side Keyer solder side 20210430 084442 20210430 084540

Pour ceux qui seraient intéressés, j'ai quelques circuits imprimés que je peux céder avec l'interrupteur M/A et les 4 boutons-poussoirs.

 Le circuit sera ensuite intégré dans le boîtier TEKO 2/A.1.
Plan de percement du capot.
K3NG SOTA percement capot

Le percement des côtés du boîtier dépend de la hauteur souhaitée des boutons. Le circuit est maintenu en place par les 2 fiches jack et quelques mousses placées sur le fond du boîtier.
completed keyer

Logiciel :

Afin de "tenir" dans un Arduino Mini, le logiciel est calibré avec un nombre de fonctions limitées. Exit tout ce qui ne sert à rien...
Ci-dessous les paramètres à modifier dans les fichiers de configuration.

Fichier Keyer_features_and_options (seules ces lignes sont actives)
#define FEATURE_BUTTONS
#define FEATURE_COMMAND_MODE
#define FEATURE_MEMORIES
#define FEATURE_SLEEP
#define OPTION_PROG_MEM_TRIM_TRAILING_SPACES
#define OPTION_DIT_PADDLE_NO_SEND_ON_MEM_RPT
#define FEATURE_COMMAND_MODE_ENHANCED_CMD_ACKNOWLEDGEMENT

Fichier Keyer_settings
#define go_to_sleep_inactivity_time 1 (voir ci-dessous)
#define analog_buttons_number_of_buttons 4

Fichier pin_settings
#define paddle_left 6
#define paddle_right 5
#define tx_key_line_1 10
#define sidetone_line 4
#define potentiometer 0
#define ptt_tx_1 11
#define analog_buttons_pin A0
#define command_mode_active_led 12

Pour faciliter le chargement du logiciel, je fourni ci-dessous des versions compilées au format .HEX.
Pour charger ce fichier dans l'Arduino, on peut utiliser diverses méthodes, notamment le logiciel XLOADER.

Version avec veille de 15s sans réveil par les touches mémoire.
Version avec veille de 15s et réveil par les touches mémoire.

Utilisation :

La mise en veille automatique du manipulateur se fait un bout de 30s (paramétrable). Afin d'éviter un réveil accidentel par un appui sur une touche mémoire lors du transport et avoir oublié d'éteindre le manip , seul un appui sur la clé de droite sort le manip de l'état de veille. Cette fonction est modifiable en changeant le code. (voir le chapitre personnalisation)

Pour programmer les mémoires, changer les paramètres (vitesse, type manip, etc..) il faut passer en mode COMMANDE en appuyant sur la touche CMD. Le mode COMMANDE est confirmé par une double tonalité du buzzer et l'allumage de la LED.
Les commandes sont passées au logiciel en manipulant des lettres suivant les informations ci-dessous.
Pour sortir du mode commande, il faut rappuyer sur la touche CMD ou manipuler la lettre X, la commande est confirmée par une double tonalité inversée par rapport à celle de l'entrée en COMMANDE.

MEMOIRES
1 to 12 - transmet le contenu de la mémoire
Px - programation mémoire x (1 à 12), ou appuyer sur la touche mémoire à programmer
Yxxxx - change le délai de répétition de la mémoire à xxxx ms ( >1000)
Répétition : maintenir la touche mémoire appuyée et toucher brièvement la clé de gauche, relâcher
Effacer : en changeant le contenu de la mémoire et en le laissant vide
VITESSE
E - Annonce la vitesse
W - changement vitesse de transmission avec la clé gauche (plus) et droite (moins)
M - changement vitesse en mode COMMANDE
La vitesse de transmission peut aussi être changée sans entrer en mode CMD, appuyer sur la touche CMD et utiliser la clé gauche (+1) ou droite (-1)
MONITEUR (ST = SIDE TONE)
F - Changement fréquence moniteur, utiliser les clés pour augmenter ou diminuer la fréquence.
O - Changement mode Monitor, cycle entre ST OFF,  ST ON, ST PD ONLY (monitor en mode CMD uniquement pas en transmission)
MODES MANIP
A - Iambic A mode
B - Iambic B mode
C - Pioche Mode
D - Ultimatic mode
G - Bug mode
T - Tune. Clé gauche Tune permanent, clé gauche Tune temporaire
PAREMETRAGE MANIP
H - Rapport point / trait à valeur par défaut
I - TX marche / arrêt
J -  rapport point / trait
K - Buffer point / trait ( Mode Ultimatic)
L -  Ajustement du poids
N - Inverser les clés
Z - Autospace M/A
STATUS
? Annonce l'état du manip
1) Vitesse en mots/min
2) Mode du manip (A = Iambic A, B = Iambic B, G = Bug, S = Pioche, U = Ultimatic)
3) valeur du poids
4) rapport point / trait

Une RAZ du contenu des mémoires et des paramètres se fait en appuyant simultanément sur les 2 touches et en allumant le manipulateur. Rester appuyer 5 secondes. Le reset est signalé par une double tonalité au démarrage.

Personnalisations

Sortie de veille
Pour modifier la sortie de veille en permettant également un appui sur une des touche mémoire.
Dans le fichier k3ng_keyer.ino changer la ligne :
PCMSK1 = bit(PCINT9); //Turn on pin A1    en    PCMSK1 = bit(PCINT8); // Turn on pin A0

D'origine seule la clé de droite permet la sortie de veille... Fâcheux ... Pour que les 2 clés soient actives, modifier la ligne :
//PCMSK2 = bit(PCINT21); // Turn on pin D5
en
PCMSK2 |= 0b01100000; // Turn on pin D5 & D6
et recompiler le programme.

 Délai de mise en veille
Par défaut, le logiciel ne permet de paramétrer le délai avant mise en veille uniquement en minutes.
Les modifications suivantes dans le sketch permettent de le faire en secondes :
Dans keyer_settings.h
#define go_to_sleep_inactivity_time 30 // délai en secondes
Dans le sketch k3ng_keyer.ino
  if ((millis() - last_activity_time) > ((unsigned long)go_to_sleep_inactivity_time*1000)){