13 Aug 16

Convertisseur USB/série PL2303

Catégorie : Hack
Étiquettes :

Je viens de recevoir mon convertisseur USB/série commandé chez AliExpress il y a environ trois semaines (les délais sont un peu long parce que ça arrive de directement de Chine). Voici à quoi ça ressemble.

Ce petit module très bon marché permet d’échanger des informations entre une interface série (TTL) et un port USB de l’ordinateur. Il intègre une puce te type PL2303 de chez Prolific Technology. Aucun pilote à installer sous GNU/Linux, la gestion des puces PL2303 est déjà intégrée au noyau, et le module pl2303 est automatiquement chargé dès que le convertisseur est connecté à l’ordinateur.

$ lsmod | grep pl2303
pl2303                 20480  1
usbserial              49152  4 ch341,pl2303
usbcore               233472  12 ch341,btusb,snd_usb_audio,uvcvideo,usbserial,snd_usbmidi_lib,ehci_hcd,ehci_pci,pl2303,usbhid,xhci_hcd,xhci_pci

Description rapide des broches

Le modèle que j’ai acheté dispose de 5 broches.

  • 3.3V : fournit une tension de 3,3V, pour éventuellement alimenter un montage externe
  • 5.0V : idem, avec une tension de 5V
  • TXD : c’est sur cette broche que sont transmises les données du port USB vers le périphérique série qui sera connecté. Il faut relier cette broche à la broche RXD (réception) du périphérique série
  • RXD : broche pour la réception des données. À connecter à la broche TXD du périphérique série
  • GND : la masse, à relier obligatoirement à la masse du périphérique série à connecter

Petit test

Pour tester le module, j’ai utilisé un petit arduino nano qui va jouer le rôle de périphérique série et envoyer des données TTL. Il existe pour cela la bibliothèque SoftwareSerial, qui permet d’effectuer des communications séries sur n’importe quelle broche numérique de l’arduino, de manière totalement logicielle.

Voici le morceau de code utilisé côté arduino :

#include <SoftwareSerial.h>

// RX sur la broche 10
// TX sur la broche 11
SoftwareSerial mySerial(10,11);

void setup() {
  // initialisation de la communication à 4800 bauds
  mySerial.begin(4800);
}

void loop() {
  // chaque seconde, on envoie la valeur du compteur i
  // sur le port série logiciel mySerial
  for( int i = 0 ; i < 1000 ; i++)
  {
    mySerial.println(i);
    delay(1000);
  }
}

J’utilise les broches 10 et 11 de l’arduino pour la réception (RXD) et la transmission (TXD) des données. Ces deux broches sont donc à relier aux broches TXD et RXD du module pl2303. Ne pas oublier également de connecter les masses.

Dans la fonction setup(), on initialise la communication à 4800 bauds (les valeurs possibles côté pl2303 se trouvent dans le tableau page 17 de la datasheet, mais la vitesse de communication côté arduino est limitée à 57600 bauds).

Voici le montage :

Il ne reste plus qu’à compiler et envoyer le programme arduino en utilisant l’IDE, et à visualiser les données qui arrivent sur le port USB. Pour identifier sur quel nœud du système de fichiers apparaissent l’arduino et le pl2303, je vous renvoie vers mon petit script Python.

$ python showttyUSB.py 
╒══════════╤═══════════════════════════╤══════════╤═══════════════════════════╕
│ device   │ model                     │ driver   │ vendor                    │
╞══════════╪═══════════════════════════╪══════════╪═══════════════════════════╡
│ ttyUSB0  │ HL-340 USB-Serial adapter │ ch341    │ QinHeng Electronics       │
├──────────┼───────────────────────────┼──────────┼───────────────────────────┤
│ ttyUSB1  │ PL2303 Serial Port        │ pl2303   │ Prolific Technology, Inc. │
╘══════════╧═══════════════════════════╧══════════╧═══════════════════════════╛

Ici, l’arduino nano est sur /dev/ttyUSB0, et le pl2303 sur /dev/ttyUSB1.

Pour visualiser simplement les données qui arrivent sur le port USB, on peut utiliser l’outil en ligne de commande screen, suivie du port USB et de la vitesse de communication en bauds :

$ screen /dev/ttyUSB1 4800
...
119
120
121
122
123
124
...

On constate comme attendu que chaque seconde, on voit la valeur du compteur qui s’affiche. Les données transmises par l’arduino nano sur le port série logiciel (broches 10 et 11) sont bien réceptionnées par le PL2303, et accessibles sur le port USB de l’ordinateur.

Taper [CTRL]+[D] pour quitter screen.

Il est également possible d’utiliser des outils plus graphiques, comme par exemple cutecom (apt install cutecom sous Debian). Il faut juste configurer le périphérique sur /dev/ttyUSB1, la vitesse de communication (4800 bauds), puis cliquer sur « Open device ».

Là encore, on voit chaque seconde la valeur du compteur s’incrémenter.

C’est tout pour ce petit tuto. J’espère qu’il vous rendra service !