Projets:Perso:2012:ArduiKeyer

From Electrolab
Revision as of 19:14, 23 August 2012 by Marc (Talk | contribs)

Jump to: navigation, search
Projet de réalisation d'un Shield Arduino destiné à transformer un "Mega" en manipulateur morse électronique perfectionné. 
le manipulateur morse Arduino de K3NG avec un afficheur "shield" provisoire(cliquez pour agrandir)


But de l'opération

Prétexte électronique pour inciter les "hardeux canal historique" tendance dure à s'intéresser un petit peu à la programmation. Pour ce faire, les branchement originels de K3NG ont été notablement modifiés, ce qui poussera l'impétrant électronico-programmeur à plonger dans le code, apprendre superficiellement ce qu'est un paramètre et une fonction, dans le but de faire fonctionner l'appareil.

La structure des programmes destinés à l'Arduino est minimaliste et se limite en gros à 3 étapes :

- appel de bibliothèques de fonctions,

- déclarations des entrées/sorties reliées à un élément extérieur à la carte Arduino (afficheur, écran, extension mémoire, ports de communication série...)

- programme principal qui boucle ad vitam eaternam

C'est donc à la porté de tout joueur de fer à souder

Description

Il s'agit d'un développement Arduino effectué par K3NG de manipulateur électronique morse totalement automatisé. Diverses réalisations, donc certaines semi-commerciales tel que le boitier de DJ0MY, proposent la même chose si l'on possède un numéro de carte bleu.

Mais acheter "tout fait" est moins drôle que de bricoler soi-même un "shield" (module d'extension Arduino). En outre, j'avais envie de tâtonner un peu de langage de programmation et de simili langage C. Enfin, DJ0MY utilise une base Arduino Nano qui ne peut accepter l'intégralité du programme...

Car le soft de K3NG est conséquent. Il rempli les fonctions suivantes :

- Vitesse allant du QRSS (télégraphie lente, traits de 6 secondes) au "high speed keying" (255 mots/minute)

- Manipulation en Curtiss iambique A, B, Ultimate (pour les mutants), semi-auto "vibroplex" et même pioche classique pour les vieux routiers

- Extension clavier (pour les tricheurs en CW) essentiellement pour émettre en Hellschreiber et paramétrer/piloter le keyer.

- Pondération des espaces entre lettres (farnsworth)

- Mode apprentissage CW

- Inversion des palettes par soft (pour le gauchers)

- Pilotage au double contact en l'absence de clavier (paramétrage du keyer : vitesse, modes, mémoires etc)

- Emission en HellSchreiber

- Mode balise (V V V de ON4BB) (Tout le monde connait ON4BB )

- 12 mémoires

- Sidetone intégré

- vitesse programmabe via clavier et/ou manipulateur, et ajustable par un potentiomètre

- LCD d'affichage du statu courant du manipulateur

- 3 sorties de pilotage d'émetteur, extensibles à 6

- Trainer CW émulant le système Winkeyd'entrainement au morse sous Windows


Rien n'interdit d'utiliser ce Shield avec un Arduino Duemillanove ou Uno, mais l'espace mémoire des microcontroleurs utilisé forcera l'usager à éliminer certaines fonctions annexes (mode apprentissage, gestion d'un clavier AZERTY, affichage LCD...)

Projet

Comme tout le travail de développement a déjà été réalisé par K3NG, il ne reste plus qu'à se faire les dents sur le "hard". Le projet consiste à fabriquer un "shield" arduino qui soit compatible avec un Arduino Mega, seul modèle capable d'accepter tout le code compilé.


le pcb en question devra être compatible avec l'empreinte connecteur d'un "shield" Arduino Mega (ou plus petit modèle, moyennant des limitations du logiciel). Le shield en question doit pouvoir affleurer une face avant regroupant toutes les commandes (potentiomètre, boutons de commande et mémoires, prise clavier, prise manipulateur, entrée alimentation 13,8 V, afficheur, sorties de commande d'émission)

Il devra être associé à un plan de perçage destiné à faciliter l'intégration du shield dans un boitier.

Coté soft, les modifications par rapport aux programme original sont absolument minimes.

Rappelons tout d’abord que le source du programme est disponible sur Sourceforge. La bibliothèque de fonction spécifique au clavier est également sur ce même dépôt. Elle doit être téléchargée et ne peut être remplacée par la lib "PS2Keyboard.h" que l'on trouve sur le site Arduino... K3NG y a apporté quelques modifications.


- la cartographie du clavier a été adaptée à nos interfaces gauloises. Un fichier File:PS2Keyboard.cpp francisé peut être téléchargé sur le Wiki de l'Electrolab

 Note importante : N'utilisez pas ce fichier pour d'autres bricoles Arduino, 
 les résultats seraient pour le moins bizaroides : en morse, on 
 ne connait pas la notion de "retour chariot" ou de "saut de ligne". En outre, certains 
 signaux bizarres (dits "prosign") n'on pas d'équivalent dans le monde numérique (les couples
 BT, AS ou VA par exemple). Bref, le morse, ça n'est pas de l'Ascii et les équivalences que 
 l'on pourrait trouver sont trompeuses

Le câblage de l'afficheur ne respecte pas l'implantation originelle de K3NG. Pour que votre afficheur fonctionne, modifiez les lignes 258 à 266 avec les variables globales suivantes :

 #ifdef FEATURE_LCD_4BIT
 //lcd pins
 #define lcd_rs 11
 #define lcd_enable 10
 #define lcd_d4 9
 #define lcd_d5 8
 #define lcd_d6 7
 #define lcd_d7 6
 #endif //FEATURE_LCD_4BIT

n'oubliez pas, si vous utilisez un afficheur 4 lignes et 20 caractères comme cela a été le cas sur le proto, de changer les variables des lignes 306 et 307

 #define lcd_columns 20
 #define lcd_rows 4

(par défaut, l'afficheur est configuré pour un LCD en 16x2)

Schéma Kicad

Le fichier SCH sous Kicad est assez éloigné du shéma de principe de K3NG, puisqu'il intègre notamment :

- la totalité des boutons d'appel mémoire - l'afficheur 2x16 backlite (ou plus, selon les fonds de tiroir... il n'y a que deux params row et col à changer) - une alimentation externe un peu plus puissance que celle d'origine sur l'Arduino destinée d'une part à alimenter directement en 5V les composants ou éléments les plus énergivores -afficheur et son rétro-éclairage, clavier PS/2-, et le microcontroleur d'autre part. Le régulateur embarqué n'est pas utilisé. Cette disposition oblige l'usager soit à débrancher l'Arduino, soit à couper le courant du keyer s'il désire télécharger un nouveau firmware.

Le schéma d'origine de l'auteur est très... schématique, et un certain nombre d'éléments ont été éludés pour faciliter la compréhension des fonctions. Ce schéma, en revanche, contient tous les composants nécessaires pour que le manipulateur électronique fonctionne : les 12 boutons d'appel de mémoire ainsi que la touche de mode "commande", l'afficheur au standard d'adressage HD44780, et 4 sorties CW doublées de 4 commandes PTT pour passer d'un émetteur à un autre(4X) sans avoir à débrancher ou brancher quoi que ce soit.

La bibliothèque Arduino utilisée est l'oeuvre de Nicolas C. Lewis, travail superbe comprenant tous les modèles d'Arduino "carte" (Uno, Duemillanove, Mega...). Ces libs, ainsi que les modèles 3D qui ont permis la perspective cavalière du chapitre suivant, peuvent être téléchargées sur Thingiverse

Attention : la totalité des trous de pastilles ont été réduits à 0,4 mm, ce "shield" étant étudié pour être réalisé en gravure "DIY" sans vias métallisés. Le diamètre de 0,4mm facilite le centrage du foret et laisse assez de métal autour du perçage pour garantir une bonne prise de la brasure.

Schéma du shield keyer Arduino (cliquez pour agrandir)



















.

la platine

La réalisation présente deux ou trois légères difficultés :

La première est de concevoir un pcb qui servira de réceptacle à un Arduino Mega branché en "piggy back", platine sur laquelle viendra reposer les différents connecteurs "arrière" du manipulateur : alimentation, sorties de pilotage d'émetteur, connecteur clavier, ainsi que certains composants encombrants (notamment le haut-parleur du sidetone). La densité des connexion d'un shield Arduino avec des moyens techniques "home made" peut en rebuter certains.

La seconde est de réaliser un second pcb relié en "L" sur la platine principale et supportant l'IHM : potentiomètre de réglage de vitesse, afficheur 2x16, boutons de commande et d'appels de mémoires, jack d'entrée CW. Une partie des connecteur (jack manip, connecteur clavier, sortie TX, entrée alim) sont des composants "volants à fil" et ne sont donc pas représentés par la modélisation CAO

La troisième et dernière difficulté est de faire en sorte que les deux circuits soient gravés en "simple face/face aveugle" pour ne pas avoir à imposer la pose de vias (traversées) d'une face du pcb à l'autre.

Comme pour tout projet Electrolab, les fichiers CAO (sous Kicad) sont disponibles en téléchargement libre. (ndla : quelques très légères modifications de formats de composants cms retardent cette mise à disposition. Date de diffusion prévue : 1 septembre au plus tard.)


version quasi définitive. L'afficheur par défaut est un 16x2 et non un 20x4 come illustré ci-dessous. Le pcb compte 2 straps qui auraient pu être très facilement évités mais qui auraient créé quelques longueurs de piste. Cette version du pcb compte 4 sorties CW et 4 sorties PTT pour piloter 4 ou 8 émetteurs différents. Il y a encore assez de place sous l'Arduino pour ajouter deux PTT et 2 sorties CW supplémentaires, et assez de sorties numériques sur la carte du Mega pour relier une vingtaine de tranceivers... mais la mégalomanie a des limites. Un régulateur 1,5 A assure l'alimentation de tous les accessoires (clavier, afficheur) ainsi que de l'Arduino via les 3 broches 5Vcc qui ressortent sur la carte. Le radiateur doit impérativement être isolé de la languette du régulateur, car celle-ci est au point chaud de l'alimentation(cliquez pour agrandir)


Le shield et sa facade de commande.(cliquez pour agrandir)