Difference between revisions of "Projets:Perso:2012:ArduiKeyer"
(→Projet) |
(→Projet) |
||
Line 83: | Line 83: | ||
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 : | 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 | + | #ifdef FEATURE_LCD_4BIT |
− | //lcd pins | + | //lcd pins |
− | #define lcd_rs 11 | + | #define lcd_rs 11 |
− | #define lcd_enable 10 | + | #define lcd_enable 10 |
− | #define lcd_d4 9 | + | #define lcd_d4 9 |
− | #define lcd_d5 8 | + | #define lcd_d5 8 |
− | #define lcd_d6 7 | + | #define lcd_d6 7 |
− | #define lcd_d7 6 | + | #define lcd_d7 6 |
− | #endif //FEATURE_LCD_4BIT | + | #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 | 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_columns 20 |
− | #define lcd_rows 4 | + | #define lcd_rows 4 |
(par défaut, l'afficheur est configuré pour un LCD en 16x2) | (par défaut, l'afficheur est configuré pour un LCD en 16x2) |
Revision as of 19:14, 23 August 2012
Projet de réalisation d'un Shield Arduino destiné à transformer un "Mega" en manipulateur morse électronique perfectionné.
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.
.
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.)