Clé USB sur microcontrôleur

Enregistreur de données sérielles
Clé USB sur microcontrôleur

Le projet permet de connecter directement une banale clé USB à un système à microcontrôleur.
Ces mémoires non volatiles sont des outils éprouvés et bon marché, l’idéal pour l’enregistrement, le transport et le transfert des données d’un microcontrôleur. Le branchement réclame toutefois un contrôleur hôte et, pour l’enregistrement des données, des fonctions de journalisation. Un
PIC24FJ64GB002 de Microchip s’est dévoué pour remplir ces deux tâches et il s’en tire avec élégance.


Même le plus petit des microcontrôleurs dispose d’une interface sérielle (UART).
Cette interface se voit souvent confier l’échange de paramètres de confguration ou l’évaluation de l’état de fonctionnement courant. On peut ainsi échanger des infor-mations à l’aide d’un ordinateur de com-mande. Il arrive que l’on ait besoin d’en-registrer des données sur une durée assez
longue, pour essayer un circuit, de façon à pouvoir suivre assez longtemps son com-portement. Les conditions locales peuvent ne pas convenir à l’utilisation d’un PC pour cette tâche, d’autant que l’ordinateur n’est pas très économe et que le sortir pour si peu relève du gaspillage.
Pourquoi ne pas utiliser le microcontrôleur présent ? Il faudrait prendre le temps et la peine d’y intégrer des fonctions de journali-sation et d’enregistrement de grandes quan-tités d’informations. Des composants comme les RAM et les EEPROM ne sont pas trop faits pour des enregistrements de longue durée. La solution économique et universelle est celle de l’enregistreur de clé USB : il enregistre dans un fchier de la clé USB toutes les données que le système à microcontrôleur existant envoie par son interface sérielle.

Matériel
Le circuit (fgure 1) se compose pour l’es-sentiel du microcontrôleur PIC24FJ64GB002 de Microchip. Notre choix s’est porté sur ce composant parce qu’il dispose d’une fonction USB-2.0-OTG, où OTG signife « on-the-go », instantané. Il s’agit d’un complément de la spécifcation USB-2.0 qui contient une fonction limitée d’hôte USB et d’alternance entre les rôles
d’hôte et d’unité USB. Cette dernière per-met aussi la communication entre deux appareils disposant tous deux de la fonction USB-OTG. Nous n’utiliserons que la fonction d’hôte USB de façon à établir la communi-cation avec une clé USB par l’intermédiaire d’une prise USB-A normale que l’on ne trouve normalement que sur les PC.Le coeur du microcontrôleur fonctionne sous 3,3 V. Cette tension est mise à disposi-tion par le régulateur de tension IC2. L’inter-face sérielle est accessible sur des entrées qui tolèrent 5,5 V et protégée par des résis-tances série de 220 Ω. La tension de 5 V du montage fournit aussi la tension du bus (VBUS) de la clé USB. Pour éviter une sur-charge, elle est appliquée à la prise USB par l’intermédiaire d’une protection réarmable.

Figure 1. Le circuit de l’enregistreur à clé USB pour données sérielles se compose, pour
l’essentiel, d’un microcontrôleur avec fonctions d’hôte USB.




La LED D1 et la touche S1 sont connectées directement au microcontrôleur. La LED témoigne des transferts de données. Un appui sur S1 met fn à l’enregistrement des données. Une interface est prévue avec K3 pour la programmation du microcontrôleur sur le montage. Elle est compatible avec les adaptateurs de programmation connus PIC-kit 3 ou ICD2/ICD3 de Microchip. 
Le cava-lier JP1 est prévu pour une évolution ulté-rieure du microprogramme. Dans sa version
actuelle, il n’est pas encore utilisé.Grâce à sa platine (figure 2), le montage est très simple. L’implantation ne com-prend aucun CMS et tous les composants se posent sur la face supérieure de la platine. Vous pouvez, bien sûr, monter le micro-contrôleur sur un support. La fgure 3 pré-sente la platine de l’exemplaire réalisé au laboratoire.


Logiciel
Microchip propose des fonctions de com-mande USB dans ses « Microchip Applica-tion Libraries ». Ces bibliothèques prennent en charge, entre autres choses, la classe d’appareils « mass storage device » qui com-prend une clé USB. Le système de fchiers FAT, le plus utilisé par les clés de mémoire, est également pris en charge. Le logiciel a été produit dans MPLAB, l’environnement
de développement de Microchip, à l’aide du compilateur C30. Tous les programmes et bibliothèques nécessaires sont dispo-nibles gratuitement et vous trouverez le programme du micro sur la page d’Elektor de ce projet [1]. Ce logiciel se charge dans le PIC à l’aide d’un programmateur tel que PICkit 3. Vous pouvez également comman-der le contrôleur programmé proposé sur la page du projet [1].Le fux de données entre l’UART et le système de fchiers a été réalisé avec deux tampons ping-pong. Les caractères reçus sur l’inter-face sérielle sont déposés dans l’un des deux tampons. Lorsque celui-ci est plein, il est transmis à la logique du programme pour enregistrement sur la clé USB. Lorsque les informations de la mémoire intermédiaire ont été traitées, celle-ci est vidée et à nou-veau « tournée » vers la réception.


Connexions
La liaison entre l’enregistreur de clé USB et le système à microcontrôleur délivrant les données s’effectue par l’intermédiaire de l’interface sérielle (UART). Le niveau des signaux logiques peut varier entre 3 V et 5,5 V. Si l’enregistreur doit fonctionner sur une interface RS232, un adaptateur de niveau correspondant (RS232/TTL) est nécessaire.
L’alimentation de l’enregistreur demande +5 V, tension généralement présente sur les systèmes à microcontrôleur. La consomma-tion dépend un peu de la clé USB utilisée. Elle est de l’ordre de 50 mA à 80 mA.Les liaisons entre enregistreur USB et sys-tème à microcontrôleur s’effectuent par le connecteur K2. Elles se limitent aux trois connexions de K2 : +5 V (broche 1), Tx du microcontrôleur/Rx de l’enregistreur (log-ger) (broche 9) et masse (broche 10) dans la version de « journalisation » actuelle. Les broches 4, 6 et 8 sont à la masse. La deu-xième ligne de signal de l’interface sérielle (Rx du microcontrôleur/Tx de l’enregis-treur) n’est pas utilisée. Elle est toutefois accessible sur la broche 5 et de futurs com-pléments du logiciel pourront en disposer. Ils disposeront, de même, des broches de




port 16 et 17 du microcontrôleur qui sont                  K2. La lecture d’une clé USB est un exemple
accessibles par l’intermédiaire de résis-tances         d’extension qui vient, naturellement, tout de  de 220 Ω sur les broches 3 et 7 de                             suite à l’esprit. 
Confguration
Les paramètres de la liaison sérielle sont déposés dans un simple fchier de texte sur la clé USB « confg.txt ». Lorsqu’une clé USB est détectée, ce qui peut se produire à l’ap-plication de l’alimentation ou, plus tard, lors de l’introduction d’une clé USB, le contenu de ce fchier est lu et l’interface sérielle est confgurée en conséquence. Sans ce fchier de configuration, les valeurs par défaut sont  : 9600 bauds, 1 bit de départ, 1 bit d’arrêt, sans parité.


Utilisation
Lorsque l’enregistreur est alimenté et relié à une clé USB, il est en mode d’enregistre-ment. Un bref allumage de la LED signale la réception de caractères par l’interface sérielle. Les données reçues sont déposées en totalité dans le fichier «  logging.txt ». Avant de retirer la clé USB, appuyez sur la touche. Les caractères encore présents dans le tampon seront écrits et le fchier journal se fermera proprement. Les données enre-gistrées peuvent être lues sur n’importe 

quel PC : il sufft de brancher la clé sur un port USB et d’ouvrir le fchier « logging.txt »
avec un éditeur de texte.


Suggestions
En dehors de la fonction de journalisation que nous proposons, des extensions du microprogramme pourraient collecter des données sur clés USB. Le montage ne se contenterait plus d’y enregistrer, il en lirait le contenu. Une autre possibilité serait de transformer le montage en enregistreur
autonome. Il enregistrerait automatique-ment, à intervalles réguliers, les états d’en-trées numériques et analogiques sur une clé USB. Le connecteur K2 donne accès à quatre lignes de données en tout du microcontrô-leur PIC. Elles peuvent être affectées à dif-férents signaux de périphérie par l’intermé-diaire d’une matrice interne et permettre ainsi de réaliser, par exemple, une interface SPI ou un UART supplémentaire.

1 commentaire:

  1. j'aimerais intégré l’école de savoir approfondie sur les drivers(pilotes)

    RépondreSupprimer