lundi 12 janvier 2015

         
   
 

Une liaison HF USB entre ordinateurs à module AUREL XTR903

Ce lien radio utilise le tout nouvel émetteur/récepteur Aurel XTR903 pour permettre des échanges de données sans fil entre deux PC. L’appareil se sert des ports USB sur lesquels il prélève la tension d’alimentation. Il peut fonctionner à 433 ou 868 MHz avec une vitesse de transmission de 9 600 à 38 400 bits/s.
Cette liaison HF USB utilise le fameux circuit intégré FT232BM avec lequel il est possible d’effectuer la conversion des données de format USB provenant d’un PC en données de format sériel RS232 : en effet, le montage proposé ici se fonde sur le nouveau module Aurel émetteur/récepteur XTR 903 qui va de pair avec ce FT232BM. Cette liaison, permettant de relier entre eux deux PC sans fil (ou par pont radio), met en oeuvre le module Aurel et les ports USB des PC. Les prestations (en terme de probabilité de perte d’un caractère transmis), nous le verrons, sont plus que bonnes.
Notre but, au-delà de la réalisation d’une liaison HF USB, est de découvrir le nouveau module Aurel que nous utilisons pour la première fois, ainsi que les circuits intégrés Nordic, numéro 1 mondial dans le domaine des puces HF. Ce nouveau module constitue une solution simple et économique au problème de l’émission/réception de données par HF.
L’emploi d’un microprocesseur incorporé dans le module permet en effet un transfert transparent en logique TTL sans avoir à faire de mise en paquet ni à utiliser de codifications d’équilibrage, ce qui permet à l’usager d’éviter l’écriture complexe d’une routine de gestion (voir figure 2).
Il existe trois versions du module, mais deux, surtout, sont disponibles : XTR903-A4, travaillant sur la bande des 433 MHz et XTR903-A8 sur celle des 868 MHz. Ici nous utilisons le A8 à 868 MHz et le circuit intégré FT232BM est utilisé pour la liaison entre le module et le port USB du PC, ainsi que pour la conversion des données provenant de ce dernier. Le module proprement dit est utilisé pour l’émission et la réception HF. Analysons notre circuit en portant un regard attentif à ce module : il permet l’émission et la réception des données à travers une communication sans fil par transfert transparent en logique RS232. Cela signifie que l’usager final doit seulement fournir au port sériel du module (à travers un microcontrôleur, un PC, etc.) les données à transmettre au format RS232, ce qui réduit le temps de développement des applications.
Les seules opérations laissées à l’usager sont la conversion des niveaux de tension vers ceux utilisés par le microcontrôleur (typiquement 0 et +3 V) et l’éventuel contrôle de la perte des données en émission. Le XTR903 supporte trois vitesses de transmission (9 600, 19 200 et 38 400 bits/s) sélectionnables au moyen de deux lignes numériques “d’input” (SP1 et SP2). À chaque vitesse est associée une redondance différente sur les données à envoyer : en particulier à la vitesse de 9 600 bits/s est associée une double codification de Hamming plus Manchester, à 19 200 bits/s on a associé seulement la codification Manchester et à 38 400 bits/s une codification “Scrambling”. Par conséquent, avec une vitesse de transmission de 38 400 bits/s aucun contrôle d’exactitude des données n’est présent, à 19 200 bits/s un contrôle de la détection d’un seul bit erroné par donnée est présent, enfin à 9 600 bits/s un contrôle plus sûr réussissant à corriger un seul bit erroné par donnée est présent.
La technique de modulation utilisée par le module est de type FSK (“Frequency Shift Keying”) qui, par rapport à la modulation d’amplitude, offre une plus grande immunité aux perturbations. La puissance HF, de concert avec la sensibilité, permet de couvrir une distance d’environ 200 mètres en espace libre quand on se sert d’antennes omnidirectionnelles, comme le montre la figure 1. La bande disponible est divisée en dix canaux et le module peut émettre à l’intérieur d’un seul canal à chaque fois, mais cela (nous le verrons très bientôt) peut être sélectionné à chaque instant à l’aide d’une commande AT.
Le module est caractérisé par cinq états de fonctionnement : “idle mode” est l’état initial de repos, dans cet état le module est en attente de données provenant tant du canal HF que du port sériel.
“Power down mode” (sélectionné en mettant la broche PWRDN à +3 V) est l’état d’épargne d’énergie et par conséquent il ne permet pas au module d’émettre ni de recevoir des données. “Transmit mode” est l’état où le module envoie sur le canal HF les données provenant du port sériel. Les délais permettent un écoulement de 20 ms entre l’envoi des données et leur réception effective : ce retard minime inclut le délai nécessaire au module pour passer de RX en TX et transmettre un “header” (en-tête) de synchronisation.
“Receive mode” est l’état où le module reçoit les données provenant du canal HF et les fournit au format RS232 à son port sériel (dans cet état, toute donnée en entrée sur la sérielle est ignorée). Enfin, avec l’état “command mode”, le module accepte l’introduction de certains paramètres de fonctionnement : pour entrer dans ce mode, il est nécessaire d’envoyer au module la séquence des caractères “+++” consécutifs et sans pause entre un caractère et le suivant. Il est alors possible de programmer ou lire certains paramètres au moyen d’une commande AT.

Par exemple :
- à travers la commande ATS1, il est possible de connaître la bande dans laquelle le module travaille,
- à travers la commande ATS2, il est possible de lire ou modifier le numéro du canal de communication utilisé,
- à travers ATS3 il est possible de lire ou paramétrer le niveau de puissance émis par le module (sélectionnable à l’intérieur de la fourchette –8 dBm à +10 dBm), enfin,
- à travers ATS16 il est possible de lire le niveau de puissance du signal reçu.

Pour plus de détails sur la syntaxe des diverses commandes AT, voir figure 7.
Pour sortir de l’état “command mode” il est nécessaire d’utiliser la commande ATCC.
Toutes les valeurs entrées ont une validité temporaire (c’est-à-dire qu’elles sont perdues à l’extinction du module) à moins d’être sauvegardées, à travers la commande ATWR, dans l’EEPROM du module.


Figure 1 : Fonctionnement de l’ensemble du système.

Figure 2 : Brochage de l’émetteur/récepteur XTR903.
 


Le module Aurel XTR 903 comporte, en son sein, un “transceiver” (émetteur/récepteur) nRF903 Nordic VLSI constituant, sur une puce unique, un émetteur/récepteur UHF multicanaux sur 433 MHz (XTR903-A4) ou 868 MHz (XTR903-A8) en modulation FSK. Ce même circuit intégré présente une interface vers l’extérieur divisible en trois parties : la première est mise en oeuvre pour l’envoi et la réception des bits, la deuxième pour le contrôle du module et la troisième pour la configuration/programmation du circuit intégré.
La gestion du nRF903 est assez complexe à réaliser soi-même, c’est pourquoi le module Aurel incorpore un microcontrôleur Atmel ATMEGA8L déjà programmé en usine pour la gestion.
Le rôle du microcontrôleur est donc de fournir une interface extérieure simplifiant la mise en oeuvre du nRF903 par l’utilisateur final. Le module permet en particulier un transfert transparent en logique RS232, évitant à l’usager d’avoir à mettre les données en paquet, à réaliser des “headers” (en-tête) ou des blocs de fin de paquet dans le but de synchroniser l’émetteur et le récepteur, etc. La configuration du nRF903, la sélection du canal et de la puissance d’émission sont en outre simplifiées.


 

Le schéma électrique
La liaison entre les deux PC est de type “half duplex” (ne peut émettre qu’un PC à la fois) : si le module est en état de réception (“receive mode”), les données en entrée sur la ligne sérielle sont ignorées.
Analysons le schéma électrique de la figure 3 : U1 FT232BM est utilisé comme interface entre le port USB du PC et l’émetteur/récepteur U2 XTR903. Ces deux composants disposent d’un port sériel RS232 pour communiquer avec l’extérieur, c’est pourquoi la liaison entre les deux est réalisée au moyen d’une simple connexion constituée de deux lignes. Notez que, dans notre montage, on n’a besoin d’aucun réseau électrique particulier de conversion des niveaux de tension utilisés : en effet, bien que U1 soit un TTL travaillant en +5 V, il permet (par la broche VCCIO) de régler les niveaux utilisés par son port sériel (qui, dans ce cas, sont réglés à une tension de +3 V compatible avec les niveaux du module émetteur/récepteur).
La sélection de la vitesse de transmission utilisée par le XTR903 est réalisée à travers un dip-switch à deux microinterrupteurs (DS1) relié aux broches SP1 et SP2 de U2. Par effet des résistances de “pull-up” R1 et R2, pour attribuer aux lignes SP1 et SP2 une valeur “haute” (+3 V), il est nécessaire que les deux micro-interrupteurs soient ouverts, au contraire, pour régler une valeur basse, il faut les fermer.
La section d’alimentation est très importante : la tension est prélevée directement sur la broche 1 du port USB fournissant +5 V pour les éléments TTL.
Ensuite le potentiel est abaissé à +3 V environ à travers la série des trois diodes D1 à D3. Le +3 V est utilisé pour alimenter le module XTR903. En outre, nous l’avons vu, il est reporté sur la broche VCCIO de U1 de façon à l’obliger à utiliser le port sériel. Pendant les essais et la mise au point de notre prototype nous avons constaté que la tension d’alimentation est assez critique, en particulier pendant l’émission. Dans notre cas, le circuit étant alimenté par le port USB (qui n’est pas en mesure de fournir un courant élevé), ce problème est encore plus accentué. C’est pourquoi nous avons inséré les condensateurs C8 et C9 (et R9 pour leur décharge rapide à l’extinction) afin de faire face aux pics de courant inévitables en émission. Avec ce procédé, nous avons réussi à améliorer de façon décisive les prestations du système (en envoyant à travers l’Hyper-Terminal une série de caractères ASCII, nous avons remarqué que la probabilité de perte d’un caractère était notablement réduite). Tenant compte de ces vérifications, pour une application réclamant une transmission plus sûre et sans perte de données, nous conseillerions d’utiliser un régulateur à 3 V à la place des trois diodes D1 à D3 en série, ou bien de ne pas prélever l’alimentation sur le port USB, mais d’utiliser une petite alimentation bloc secteur 230 V.

Figure 3 : Schéma électrique de la liaison HF USB entre ordinateurs.

Liste des composants
R1 = 1,5 kΩ
R2 = 1,5 kΩ
R3 = 470 Ω
R4 = 27 Ω
R5 = 27 Ω
R6 = 1,5 kΩ
R7 = 470 Ω
R8 = 470 Ω
R9 = 1,5 kΩ
C1 = 100 nF multicouche
C2 = 1000 μF 16 V électrolytique
C3 = 100 nF multicouche
C4 = 33 nF 100 V polyester
C5 = 100 nF multicouche
C6 = 15 pF céramique
C6 = 15 pF céramique
C8 = 100 nF multicouche
C9 = 2200 μF 6,3 V électrolytique
D1 = 1N4007
D2 = 1N4007
D3 = 1N4007
L1 = self 300 μH
LD1 = LED 3 mm verte
LD2 = LED 3 mm rouge
U1 = FT232BM
U2 = XTR903
Q1 = 6 MHz
DS1 = dip-switch à deux micro-interrupteurs

Divers :
1 prise USB verticale
2 barrettes femelles à 9 pôles

Sauf spécification contraire, toutes les résistances sont des 1/4 W à 5 %.

La réalisation pratique
Un circuit tient sur une petite platine imprimée (mais il en faut deux pour réaliser notre système complet de pont radio entre deux ordinateurs) : la figure 4b en donne le dessin à l’échelle 1. Quand vous avez devant vous les deux circuits imprimés gravés et percés, montez-y tous les composants dans un certain ordre (en ayant constamment sous les yeux les figures 4a et 5 et la liste des composants).
Aucune difficulté particulière. Une attention spéciale doit toutefois être accordée au montage de U1 FT232BM, à monter côté cuivre (il est en pointillé sur la figure 4a) : pour souder ce composant CMS, utilisez un fer de 15 W à panne stylo et du tinol le plus fin possible (0,5 mm au plus), soudez-le bien en place en le maintenant appuyé, d’abord par deux broches opposées en diagonale, puis soudez les broches restantes (attention : le point repère-détrompeur doit regarder l’une des queues de C5).
Pour l’implantation du module radio nous avons utilisé deux barrettes femelles.
Quant à l’antenne, elle peut être constituée d’un morceau de fil rigide isolé de longueur quart d’onde : l m = [(300 : F MHz) : 4] mais une antenne accordée est toujours préférable (voir figure 1).
Le circuit ne fonctionne correctement que s’il est relié à un ordinateur (en effet le FT232BM a besoin d’un “master” ou maître). En outre, il faut installer sur les ordinateurs du système les pilotes de ce même FT232BM : ils servent, en plus de gérer la communication USB entre l’ordinateur et la puce, à créer des ports virtuels VCP.
Pour l’envoi des données on peut utiliser n’importe quel programme de communication sérielle (type Hyper Terminal).
Bien sûr, il est nécessaire que ce dernier soit réglé pour une vitesse de transmission égale à celle du circuit (paramétrée avec les micro-interrupteurs), ainsi que d’utiliser le port vir tuel disponible après l’installation des pilotes USB.

Figure 4a : Schéma d’implantation des composants de la liaison HF USB entre ordinateurs.


Figure 4b : Dessin, à l’échelle 1, du circuit imprimé de la liaison HF USB entre ordinateurs.

Figure 5 : Photos d’un des prototypes de la platine de la liaison HF USB entre ordinateurs.

Figure 6 : “Scrambling”, codage Manchester et de Hamming.
Tout système de communication (en particulier sans fil) est sujet à des erreurs de transmission dues à la présence de bruit sur le canal de communication. La probabilité d’erreur sur les données envoyées dépend de divers facteurs (pas toujours prévisibles) : puissance moyenne du signal en réception, vitesse de transmission, densité spectrale du bruit sur le canal, type de canal, réfl exion des ondes électromagnétiques transportant le signal, etc. C’est pourquoi des mécanismes palliatifs ont été étudiés (connus comme codifications de canal) dans le but de minimiser la probabilité d’erreur.
Une première technique est le fameux scrambling prévoyant l’application aux bits émis de transformations pseudo-aléatoires (devant être réversibles en réception) de façon à éliminer les longues séquences de symboles “1” ou “0”. Le but de cette technique est de faciliter la synchronisation entre émetteur et récepteur. Cette technique n’offre de sécurité ni sur la correction d’une erreur éventuelle, ni sur sa détection.
Des techniques plus compliquées (appelées redondantes) prévoient en revanche d’ajouter des bits redondants (non informatifs) à ceux transportant l’information, dans le but de détecter ou même corriger d’éventuelles erreurs de transmission. Bien sûr, l’ajout de ces bits non informatifs implique que l’on envoie plus de bits qu’avec l’autre méthode, ce qui réduit la vitesse de transmission.
Pour la production des bits redondants, on utilise des techniques particulières, dont les principales sont celles connues comme codes à bloc linéaires produisant les bits à ajouter en appliquant des fonctions logiques linéaires aux bits informatifs.
Une première technique linéaire est celle de la parité prévoyant que dans un code à groupes de bits (typiquement huit) on ajoute un seul bit de valeur telle qu’il rende pair ou impair le nombre de “1” de l’ensemble. Comme on peut le comprendre facilement, cette technique est capable de détecter un nombre d’erreurs sur un groupe de bits, mais pas de corriger quoi que ce soit.
Une technique plus complexe et permettant de détecter deux erreurs sur un groupe de bits ou de corriger une seule erreur sur un groupe de bits est connue sous le nom de “Hamming”. Sans trop entrer dans les détails, disons qu’elle prévoit que si un alphabet initial de mots non codifiés est présent, chacun étant composé de m bits et si on leur ajoute (selon des fonctions logiques adéquates) r bits redondants de telle façon que m+r=2r–1, alors il est toujours possible de corriger une erreur présente à l’intérieur d’un groupe de m bits. Par exemple, si l’on divise les huit bits composant chaque symbole du code ASCII en deux parts égales (m=4), on obtient qu’à chaque sous-groupe de quatre bits, il est nécessaire d’en ajouter 3 (r=3). En réception, il faudra utiliser des décodages particuliers lesquels, partant des sept bits reçus, soient capables de sélectionner les quatre informatifs.

Figure 7 : Syntaxe des commandes AT.
 


Figure 8 : Disposition et description des broches

Aucun commentaire:

Enregistrer un commentaire