mardi 19 mai 2015

Tuteur de code morse

Cet article décris un tuteur de code morse, c'est à dire un petit circuit qui aide à l'apprentissage du code morse.

code morse

Le code morse est un code à rythme, c'est à dire que l'information est encodée dans la durée relatives des éléments, aussi bien la durée des sons que le silence entre ceux-ci porte une signification. Ainsi un son court appelé DIT est l'unité de base du tempo, tous les temps sont relatif à la durée du DIT.

Il y a deux durées sonores et 3 durées de silence.

  • DIT est un son court.
  • DAH est un son long dont la durée est 3 fois celle du DIT.
  • A l'intérieur d'un caractère le silence entre les sons dure 1 DIT.
  • Entre les caractères d'un mot le silence dure 3 DIT.
  • Entre chaque mot le silence dure 5 (Amérique) ou 7 (Europe) DIT.
Le nombre de symboles varie d'un caractère à l'autre. Les caractères les plus utilisés sont plus courts et les moins utilisés plus long.

En Amérique du nord l'apprentissage du MORSE n'est plus requis pour obtenir une licence radio-amateur. Mais lorsque c'était requis un appliquant devait-être en mesure de lire et de produire un message en morse à la vitesse de 5 mots par minute pour obtenir la licence de base. Ce tuteur émet et lit à la vitesse correspondant à 5 mots par minute. C'est la constante DIT définie au début du fichier source qui détermine le tempo, en diminuant sa valeur on accélère le tempo.

Le circuit

Le circuit est réalisé avec un PIC10F322. Il utilise une LED bicolore rouge/verte pour signaler différents états et un petit haut-parleur pour émettre les codes. La clé morse est branchée sur l'entrée RA3. Il s'agit d'une clé simple (straight key).

Le fonctionnement est le suivant, le tuteur émet un caractère et l'élève doit reproduire celui-ci. Si l'élève échoue parce qu'il n'a pas le bon rythme la LED clignote 3 fois en rouge avant de réémettre le même caractère. Si le rythme est bon mais que la séquence n'est pas bonne la LED clignote 4 fois en rouge. Si l'élève réussi à reproduire correctement le code morse la LED allume brièvement en vert avant que le tuteur n'émette le caractère suivant. Pendant l'émission du caractère la LED allume orange et l'élève doit attendre que la LED éteigne avant de commencer à reproduire le code.

Il y a 4 groupes de caractères et le tuteur passe de l'un à l'autre lorsqu'un groupe est complété.

  1. lettres 'A' - 'Z'
  2. chiffres '0' - '9'
  3. ponctuations '!' - '/'
  4. ponctuations ':' - '@'
A l'intérieur de chaque groupe l'ordre est celui de la table ASCII. Si l'élève n'arrive pas à reproduire un caractère il peut sauter au suivant en tenant la clé enfoncée jusqu'à ce que la LED allume rouge. À ce moment l'élève doit relâcher la clé, à la suite de quoi le caractère suivant est émis.

le code source

Une clé fait maison

Après avoir fait des recherches dans l'internet et constater qu'une clé morse même la plus simple de type Straight key coûte plus de 50US$ j'ai décidé d'en fabriquer une avec les matériaux que j'avais sous la main.

Fabrication:
  • base: chêne 60mm x 120mm x 20mm
  • levier: chêne, longueur 90mm, épaisseur 5mm, hauteur 10mm.
  • Un bouton collé avec de la colle chaude à l'extrémité du levier.
  • Appui du levier: petit bloc de chêne, hauteur 22mm, largeur 18mm, profondeur 15mm. Découpé en U.
  • contacts: 2 boulons chromés. Celui vissé dans la base a la tête limée pour formé une surface plate. Les fils son bobiné 3 tours sur ces boulons et soudés.
  • Le ressort de rappel proviens d'un stylo à bille à pointe rétractable. Un trou est percé dans la base pour le maintenir et un petit boulon passe à travers le levier et glisse à l'intérieur du ressort.
  • Un autre boulon à l'autre extrémité du levier passant à travers celui-ci permet d'ajuster la distance entre les contacts. Son extrémité est appuyé sur un autre petit bloc de chêne collé à la base.
  • 2 petites équerres disponibles dans n'importe quelle quincaillerie servent de support aux prises jack 4mm.
  • On ne peut le voir sur la photo mais les points de pivot du levier sont constitués de 2 têtes de vis que j'ai d'abord limé et ensuite rendu concave en utilisant un foret. l'extrémité des vis qui passent à travers le bloc supportant le levier appuient dans la cavité des têtes de vis pour former un pivot stable.

séance d'apprentissage

On ne voit pas correctement les différentes couleurs de la LED indiquant l'état, mais on peut voir que la LED clignote lorsque j'échoue à répéter correctement le code entendu. Au départ j'avais mis une tolérance de 25% sur les durées mais je l'ai augmenter à 50% car c'était trop difficile à 25%. C'est la fonction symb_len qui contrôle la valeur des durées.


références

  1. code morse
  2. alphabet morse
  3. codes Q

jeudi 14 mai 2015

2 consoles de jeux (couleurs) basées sur PIC32MX

Voici une découverte intéressante que je viens de faire. Il s'agit de 2 consoles de jeux couleurs réalisées avec des moyens très simples. Le signal de sortie est NTSC/couleurs. Cet article est une brève présentation de ces consoles pour ceux qui ne comprennent pas l'anglais (ou le japonais). Le seul composant actif de ces 2 consoles est le MCU le reste n'est que résistances, condensateurs, connecteurs et un cristal 3,58Mhz ou 14,3Mhz pour la deuxième. Suivez le lien ci-haut pour visionner le vidéo des 2 consoles en action.

La première console peut-être réalisée avec un de ces MCU PIC32MX150F128B, PIC32MX250F128B, PIC32MX170F256B ou PIC32MX270F256B. Cette console peut aussi fonctionner sur des PIC32MX120F032B ou PIC32MX220F032B car les graphiques sont basées sur des tables de caractères, une technique qui réduit la quantité de mémoire RAM nécessaire pour le tampon vidéo. Ces MCUs étant disponibles en format PDIP-28 cette console peut-être montée sur une carte à bande ou à points, nul besoin d'un circuit imprimé spécifique. La console peut fonctionner sur 2 piles AA ou AAA ou encore avec un adapteur en y ajoutant un régulateur de tension. Il est nécessaire que le cristal utilisée soit à 3,5795345Mhz. Cette fréquence correspond au signal chroma du NTSC/COULEUR. Ces consoles ne peuvent-être réalisées pour les formats PAL ou SECAM car les modes de modulation couleur de ces 2 standards sont différents. L'auteur précise qu'il a réussi a obtenir une résolution de 256x224 pixels à 16 couleurs sur un PIC32MX150F128B. Dans ce mode le tampon vidéo utilise 28Ko de RAM. Le projet a été réalisé avec MPLAB IDE v8.80, et MPLAB C32 C Compiler v2.02 mais ça ne devrait pas être trop difficile d'adapter le code source pour MPLABX et XC32.

La deuxième console utilise un PIC32MX370F512H et permet de fonctionner en mode graphique vrai pour des jeux plus complexe. Ce MCU n'est pas disponible en format PDIP donc le montage est plus complexe à réaliser. Une solution existe cependant sans avoir à fabriquer un circuit imprimé dédié, il s'agirait d'utiliser un MCU au format TQFP-64 et un breakout board comme celui-ci. Une fois le MCU soudé sur le breakout board il est simple de relier celui-ci à une plaquette à points sur laquelle les autres composants sont montés.

Cette deuxième console permet une résolution de 256x256 pixels avec 256 couleurs. Le cristal utilisé est à une fréquence de 14,31818Mhz (4x3,579545Mhz). Ce MCU peut fonctionner jusqu'à 100Mhz et comme on le voit dans la deuxième partie du vidéo avec le jeux VELUDDA, le MCU est suffisamment puissant pour effectuer une rotation temps réel du bitmap vidéo.