Projet Badge Sixtem
Aweb2u


 Le JMBadge2008 est le support matériel d'une compétition mondiale de conception logicielle intiée par Freescale.
    C'est aussi un kit complet de développement programmable par glisser-déposer grâce à une liaison USB. Il apparaît sur le PC comme un périphérique amovible. Il charge lui même son programme grâce à une amorce de chargement de programme (BootLoader). C'est aussi une interface matérielle humaine (HID): un programme de démonstration permet son utilisation comme souris. La suite logicielle CodeWarrior propose une aide experte de programmation objet de type Visual Basic. L'offre d'une suite logicielle spéciale bridée ou d'une version d'évaluation renouvelable rend l'ensemble particulièrement attractif pour l'étudiant et l'amateur.
   



 

Composants principaux montés sur la carte:


    - microprocesseur 32 bits MCF51JM128 ColdFire
    - microcontrôleur USB
    - accéléromètre à 3 axes MMA7260QT
    - chargeur Li-Ion MC34673
    - senseur à touches capacitives MPR084 (8 touches )
    - 16x5 LED matrix (sur la face arrière de la carte)

 
 

Il existe plusieurs programmes de démonstration fournis avec le JMBadge2008 dont l'écriture d'un message défilant sur le badge.

L'écriture du message se fait en choisissant la lettre à composer dans un alphabet défilant sur l'écran de LEDS.

Nous avons pensé que ce badge de faible côut (30$) pouvait servir de système d'apprentissage du code Sixtem grâce à ses 8 touches capacitives.

En effet le code sixtem nécessite 6 touches pour les symboles et 2 touches de fonction au minimum: espace et effacement.

L'environnement de développement (IDE CodeWarrior) est riche et gratuit si on accepte une limitation du code et des compléments logiciels. La fonction "processor expert" est impressionnante et permet une programmation en C de type Visual Basic à condition de connaître les bases de la "programmation objet".

La présence d'un accéléromètre à 3 axes permet d'envisager une utilisation intéressante: la composition des symboles Sixtem dans l'espace comme avec une manette Wii. On peut toujours rêver...

Nous rassemblerons ici les éléments nécessaires aux différentes phases du projet. C'est une façon de s'obliger à avoir un peu d'ordre...

Nous avons commandé le JMBadge2008 directement chez Freescale après inscription sur le site.

Que ce soit pour le badge ou pour les logiciels vous devrez montrer patte blanche aux services des douanes, sécurité oblige, in english please. Avec "code Sixtem implementation for disabled children" çà ne fait pas penser à une entreprise terroriste... Pour le badge: 30$+20$ de port. par UPS avec suivi par internet.

Avant de recevoir la carte un petit coup d'oeil sur l'IDE CodeWarrior. Le passage du PIC 8 bits au micro 32 bit est un peu impressionnant même quand on a l'habitude de MPLAB. 995$ pour la version standard (pour avoir les "software beans"). Les haricots sont trop chers. Nous nous contenterons des "basics bean" de l'édition standard qui permet 64 K de programme pour le MCF51JM128 ColdFire

Une petite surprise à la livraison du colis par UPS: 23.55 Euros de frais supplémentaires liés à la TVA et aux charges additionnelles sur le dédouanement... ce qui fait 63 Euros pour le JMBadge2008 livré à domicile... ce qui reste correct pour un kit d'expérimentation.

A l'ouverture de la boîte tout est présent et en bon état.

 

Essai de la carte sans USB en suivant les instructions du JM Badge Board User's manual.

4.1 Using the Badge  
     To start using the badge, move the switch, SW1,
 to the “On” position.
     A message will start scrolling across the LED matrix.
This message can be edited by using the Message Edit
application described in Section 4.2.1.1.
 
4.1.1 Unlock the Badge 
     To start using the demo applications on your badge,
 “unlock” it by sliding your finger down the left hand
 side buttons from E1 down to E4.
      Make sure your finger makes good contact with each button
 to ensure it is detected.
      Then press the button of the desired application.
      See Section 4.2.1 for more information
 on the different applications available.
  
4.1.2 Sleep Mode 
     After a prolonged period of inactivity,the badge will go
 into a sleep mode to conserve power.
During this mode, a single LED will flash on and off. 
Press and hold any button on the badge to wake it up.   

 

4.1 Utilisation du Badge
     Pour commencer à employer le badge, déplacer le commutateur, SW1, en position "ON".
     Un message commencera à défiler à travers la matrice de LED.
Ce message peut être édité en employant l'éditeur de message, application décrite dans la section 4.2.1.1.
 
4.1.1 Déverrouiller le Badge 
     Pour commencer à employer les applications de démo sur votre badge, le dévérouiller en glissant votre doigt vers le bas des boutons du côté de la main gauche à partir
d'E1 vers le bas à E4.     
     S'assurer que votre doigt établit un bon contact
avec chaque bouton pour s'assurer qu'il est détecté. 
     Appuyer sur alors le bouton de l'application désirée.
     Voir la section 4.2.1 pour plus d'information sur les différentes applications disponibles.

 4.1.2 Mode sommeil 
     Après une période d'inactivité prolongée, le badge entrera dans un mode sommeil pour économiser l'alimentation.
Pendant ce mode, une LED simple clignotera.
Appuyer sur et tenir n'importe quel bouton sur le badge pour le réveiller.   

 

Mise en place de l'amorce de chargement de programme

4.3 Bootloader
     One of the major features of the JM Badge Board is that it includes a USB bootloader that allows simple "drag and drop" reprogramming. This section will describe how to use the bootloader. Please see the Errata document for important information about the s19 files that the bootloader can accept.

4.3.1 Obtaining the S19 file
     The bootloader accepts S19 files that it uses to program the board. In the example projects this file can be found in the <project directory>/bin/ folder and will end in a ".s19" file extension. This file will get overwritten every time the project is compiled.
     To create an S19 file, click on the "Standard Settings…" button on your project, and look for the Linker category. Select "ColdFire Linker" and make sure that the "Generate S-Record File" option is checked. Also make sure that the "Max S-Record Length" field is set to 32.
     The example projects on the Can Your Badge Do This? website are already set up to create an S19 file. Note that not just any S19 file will work correctly with the badge board. The software that produced the S19 file must follow certain guidelines outlined in Section 4.4. The S19 files provided on the Can Your Badge Do This? website will correctly download to the board and can be used to test out the bootloader.

4.3.2 Using the Bootloader
     With the badge turned off, plug the badge into a Windows computer. A message stating "Press E4 for bootloader" will scroll by. Press E4 before the end of that message, otherwise the USB Mouse demo will launch instead (see Section 4.2.2.1). The badge board will then enumerate as a Mass Storage Device. The far left column of the LED matrix will blink as it enumerates and will remain steady once it is connected.. Inside the newly added storage device, there will be an empty file named "READY.TXT".
 

4.3 Amorce de chargement de programme
     Une des caractéristiques principales de la carte JMBoard est d'inclure un bootloader USB (amorce de chargement de programme) qui permet la programmation du microprocesseur par "drag and drop" (glisser-déposer). 

     Cette section décrira comment utiliser l'amorce de chargement. Veuillez voir le document Errata pour des informations importantes sur les fichiers s19 que l'amorce de chargement peut accepter.

4.3.1 Obtention du fichier S19
     L'amorce de chargement accepte les fichiers S19 qu'elle utilise pour programmer la carte.  Ce dossier peut être trouvé dans les projets d'exemple dans le <project directory>/bin/folder. Elle se termine par l'extension «.s19 ». Ce fichier sera réécrit chaque fois que le projet est compilé.
     Pour créer un fichier S19, cliquer sur le bouton "Standard Settings…" de votre projet, et rechercher la catégorie "Editeur de liens". Choisir "ColdFire Linker" et assurez vous que "Generate S-Record File"  est coché. Assurez-vous également que "Max S-Record Length" est placé à 32.
     Les projets d'exemple du siteWeb sur Can Your Badge Do This? sont déjà configurés pour créer un fichier S19. Notez que n'importe quel fichier avec une extension S19 ne fonctionnera pas correctement avec la carte badge. Le logiciel qui a produit le fichier S19 doit suivre certaines directives décrites dans la section 4.4. Les fichiers S19 fournis sur le site Web Can Your Badge Do This? téléchargeront correctement la carte et peuvent être employés pour tester l'amorce de chargement.

4.3.2 Utilisation de l'amorce de chargement
     Avec le badge à l'arrêt, brancher le badge à un ordinateur Windows. Un message énonçant « presser E4 pour l'amorce de chargement » défilera. Presser E4 avant la fin de ce message, autrement la démo souris USB se lancera à sa place (voir la section 4.2.2.1). La carte du badge s'affichera alors comme un périphérique de mémoire de masse. La colonne à l'extrême gauche de la matrice de LED clignotera pendant la prise en compte du périphérique par le PC et restera stable une fois qu'il sera connecté. À l'intérieur du dispositif de stockage nouvellement ajouté, il y aura un fichier vide appelé « READY.TXT ».

Copy and paste the S19 file into the enumerated drive. Upon successful programming, the left two columns on the badge will light up and the S19 file will appear on the removable drive. Unplug the badge board from the USB connection. The board has now been updated. If an error occurred, the left four columns on the badge will light up. The badge must be turned on and run off battery power at least once before using one of the USB applications.  Copier-Coller le fichier S19 dans le périphérique énuméré. Une fois la programmation réussie, les deux colonnes de gauche de la carte s'allumeront et le fichier S19 apparaîtra sur le périphérique amovible. Débrancher la prise USB du badge. La carte a été maintenant mise à jour. Si une erreur se produisait, les quatre colonnes de gauche sur la carte s'allumeraient. La carte doit être alimentée par la batterie et éteinte au moins une fois avant d'utiliser une des applications USB.
Passons maintenant à l'installation de l'environnement de programmation (IDE)

CodeWarrior Development Studio for Microcontrollers Quick Start

Manuel de l'utilisateur du JM Badge:

Création d'une application pour le Badge

Pour apprendre à manipuler l'environnement de travail un tutorial est proposé dans l'IDE de Code Warrior:
un programme simple faisant clignoter une LED. Il apprend à initialiser la configuration matérielle d'un port d'entrées/sorties à l'aide d'un outil de développement simple mais puissant basé sur la programmation par objets qui génère les routines nécessaires en langage C.
Le "Hello, World" du microprocesseur

La petite LED verte clignotte toutes les 0.5 secondes

     Remettons en place le programme initial pour être certains que le bootloader est toujours opérationel:
     L'interrupteur de la carte étant sur Off, le branchement de la prise USB provoque l'affichage du message: "Press E4 for Bootloader". L'appui sur cette touche provoque l'affichage d'une barre sur le côté gauche de la matrice d'affichage et l'apparition de la carte JMBadge dans les périphériques avec son fichier vide READY.TXT
     Glissez-déposez le fichier JMBadgeApplications.S19 dans ce périphérique. Si le transfert s'est bien passé, une deuxième barre s'allume. Débranchez l'USB et vérifiez que le message "canyourbadgedothis.com" apparait. La carte a été remise dans son état initial.
     Maintenant que nous savons que nous pouvons toujours revenir à l'état initial, nous pouvons commencer à "bidouiller"

Programmation du JMBadge:

    Nous commencerons par l'analyse du programme d'essai LEDapp fourni par le constructeur: C source file ledapp.c

    Nous constatons aussi que ce programme a initialisé la matrice de LEDs et les touches du clavier. Une petite vérification: l'appui successif sur les touches sensitives 1 à 8 affiche une barre verticale correspondant à la touche appuyée: touche 1 --> allume la barre la plus à gauche, touche 2 --> allume la 2ème barre verticale et ainsi de suite... La gestion de l'affichage sur la matrice de LEDs est faite par la sous routine asm( ).

    Allons voir comment le driver du MPR084 (qui gère la liaison I2C avec ce boitier) réalise les fonctions d'initialisation et de lecture du clavier
C source file mpr084.c

    Dans le code Sixtem, un caractère alphanumérique est composé au clavier par l'appui successif de 2 touches
Chaque touche représente un symbole (voir fichier .xls): boucle orientée (D, G, H, B), grande barre, petite barre verticale ou horizontale, Espace, Effacement. (voir les fichiers pdf du code Sixtem réduit: alphabet normal, caractères spéciaux). Lors de l'appui sur la touche, le symbole correspondant doit être affiché: 1ère touche puis 2ème touche qui s'afficheront en statique sur la matrice de LEDs. Etant donné que ces symboles n'existent pas dans le code ASCII, il faut composer les matrices des "caractères" spéciaux et les inclure dans la bibliothèque des fontes qu'utilise le JMBadge.

   Pour l'implémentation du code Sixtem nous utiliserons le programme de démonstration du JMBadge. On le trouve dans le dossier JM_Badge_Board.

    L'image ci-dessous montre les premières modifications apportées au projet: On remplace les fichiers d'origine par les fichiers modifiés



    Il faut bien sur modifier l'inclusion correspondante du nouveau fichier SixtemBoard.h dans le fichier main



   On vérifie que les deux options P&E Multilink et Full Chip Simulation sont opérationnelles.

   Nous utiliserons essentiellement la fonction d'édition du JMBadge, activée dans la démo par l'appui sur la touche 1. Elle appelle la
fonction EditMessage que nous étudierons en premier (commentaires en français). Elle montre comment utiliser la fonction LEDWrite qui va nous permettre d'afficher le symbole corespondant à chaque touche. Cette fonction LEDWrite nécessite un rafraichissemnt permanent à l'inverse de la fonction LEDScroll( ). Nous reprendrons l'algorithme de EditMessage( ) pour programmer l'affichage des symboles lors de l'appui sur une touche dans le programme SixtemBoard.c

    Une petite révision de la manipulation des chaines de caractère en C s'impose* pour réaliser la fonction de trancodage des 2 appuis successifs sur les touches symboles. Nous utilisons Xcode sur mac qui est gratuit et founi sur la disquette système. Le siteduzero permet une mise à niveau rapide pour ceux qui viennent du Pascal, du Basic ou du Java plus riches en fonction de traitement des chaines de caractères. Le C oblige la révision de la notion de pointeurs, ce qui est une bonne chose pour les utilisateurs des microprocesseurs. Vous trouverez ici un petit programme commenté du transcodage à faire.

     J'ai mis dans un dossier zippé tous les fichiers d'un mini éditeur SIXTEM à enrichir de fonctions complémentaires. Il permet l'édition d'un message alphabétique déroulant avec les mêmes caractéristiques que l'éditeur proposé par freescale. Il suffit de télécharger le fichier *.S19 sur le JMBadge. A l'allumage, le message de bienvenue s'affiche. L'entrée dans l'éditeur se fait par un "slide down left" c'est à dire un glissement du doigt sur les touches de 1 à 4. Le message "symboles" s'affiche et le programme attend la composition d'un caractère qui se fait par deux appuis successifs sur les touches-symboles composant la forme de la lettre. Par exemple: touche 5 puis touche 2 pour le a, touche 1 puis touche 6 pour le b etc...
La mise de la lettre en majuscule se fait par 2 appuis sur la touche 1 (le programme efface le caractère précédent et écrit ce même caractère en majuscule à sa place dans le message). Les caractères accentués latins ne sont pas encore programmés mais il font appel à la même logique de composition: on compose le caractère non accentué et ensuite on pose l'accent. Toute composition fait appel à deux appuis de touches sauf l'efffacement d'un symbole qui se fait par l'appui sur la touche 4.

     A suivre....

*"Talent without discipline is like an octopus on roller skates. There's plenty of movement, but you never know if it's going to be forward, backwards, or sideways." — H. Jackson Brown, Jr