Le convertisseur USB RS485 est le raccord qui manque à tout ordinateur récent. Un PC n’a plus de port série, et un port USB ne sait rien faire d’une liaison RS485 : il lui faut un intermédiaire qui parle le langage du bus côté machine, et celui de l’USB côté ordinateur. C’est exactement ce que fait ce boîtier en forme de clé USB : un connecteur USB type A mâle d’un côté, un bornier à vis de deux positions de l’autre. Entre les deux, la conversion est transparente — l’ordinateur y voit un port série ordinaire, auquel on parle comme à n’importe quel COM ou ttyUSB.
Le RS485 n’est pas une variante du RS232 : c’est une liaison différentielle à deux fils, où l’information voyage dans l’écart de tension entre deux conducteurs au lieu d’un seul. Ce qui la rend insensible au bruit, capable de traverser des centaines de mètres dans un atelier, et de desservir plusieurs appareils sur la même paire. Automates, compteurs d’énergie, variateurs de fréquence, capteurs Modbus, centrales de mesure : l’immense majorité du matériel industriel parle de cette façon. Ce convertisseur est le seul chaînon à ajouter entre ce monde et un ordinateur.
À quoi sert un convertisseur USB vers RS485 ?
Un port USB ne peut pas piloter une paire RS485, pour deux raisons qu’aucun câble ne contourne :
- Les niveaux et le mode de transmission sont différents. L’USB est une liaison point à point, à niveaux logiques référencés à la masse. Le RS485 est un bus multipoint, en différentiel, où chaque appareil écoute et où un seul prend la parole à la fois.
- Un convertisseur USB vers TTL ne suffit pas. Il ne produit que des signaux logiques simple extrémité, parfaits pour un microcontrôleur, incapables d’attaquer un bus RS485. Il faut un transducteur différentiel, qui est ici intégré au boîtier.
Le convertisseur se charge de tout : niveaux électriques, aiguillage émission / réception, et protection de l’entrée du bus. Le logiciel n’a qu’à ouvrir le port série et écrire des octets. C’est ce qui rend l’outil si commode pour dialoguer avec un automate, relever un ou plusieurs compteurs Modbus RTU, superviser une machine, ou simplement diagnostiquer un bus existant depuis un ordinateur portable.
Caractéristiques techniques
| Côté ordinateur | USB 2.0, connecteur type A mâle solidaire du boîtier |
|---|---|
| Côté bus | Bornier à vis, deux positions, pour la paire différentielle |
| Alimentation | Par le port USB : aucun bloc d’alimentation, aucun fil d’alimentation |
| Type de liaison | RS485, différentiel deux fils, semi-duplex |
| Débit | 9600 à 115200 bauds sans réglage particulier — le débit se choisit dans le logiciel, pas sur l’appareil |
| Longueur de ligne | Jusqu’à 1200 mètres selon le standard, au débit le plus faible ; cette longueur diminue à mesure que le débit augmente |
| Appareils sur le bus | 32 charges unitaires selon le standard, davantage avec des émetteurs à faible charge |
| Signal sur la paire | Quelques volts d’écart entre A et B, en polarité inversée selon le bit transmis |
| Sensibilité au bruit | Très faible : le bruit capté par les deux fils est soustrait, donc annulé |
| Boîtier | Plastique noir, forme allongée de clé USB, stries latérales de préhension |
| Voyant | Aucune fenêtre de voyant sur les faces photographiées du boîtier : le diagnostic se fait dans le logiciel, pas à l’œil |
| Systèmes | Windows, macOS, Linux — l’appareil apparaît comme un port série supplémentaire |
Le bornier : deux fils, et rien d’autre
Toute la mise en service tient dans un bornier à vis de deux positions. Aucun réglage, aucun cavalier, aucune alimentation à prévoir.
| Les deux positions | La paire différentielle du bus — les repères varient selon les lots : A et B, parfois D+ et D− |
|---|---|
| Le troisième fil | Il n’y a pas de borne de masse. Elle n’est pas nécessaire sur un câble court, et devient utile sur une longue liaison entre deux appareils alimentés séparément |
| Le type de câble | Une paire torsadée, si possible blindée. Le torsadage est ce qui rend la liaison insensible au bruit ; deux fils quelconques en parallèle en captent beaucoup plus |
Si A et B sont inversés, rien ne casse — la liaison reste simplement muette. Le RS485 ne craint pas l’inversion de polarité : intervertissez les deux fils et l’échange repart. C’est le premier geste à faire devant un appareil qui ne répond pas, avant de soupçonner la vitesse ou le logiciel. Sur un bus long, deux résistances de terminaison posées aux deux extrémités de la ligne — de l’ordre de 120 ohms — suppriment les réflexions qui rendent les trames erratiques.
Ce que le boîtier ne laisse pas voir
Le boîtier est opaque, et les photos ne montrent ni le circuit imprimé ni la puce de conversion. C’est le cas de tous les modèles de ce format : la puce qui dialoguent avec l’USB et le transducteur différentiel sont à l’intérieur, et aucune sérigraphie extérieure ne les nomme.
Cela n’a aucune importance à l’usage — l’appareil fonctionne — mais cela décide du pilote à installer sur Windows. Le seul moyen de le savoir sans ouvrir le boîtier est de le brancher et de lire l’identifiant annoncé par l’ordinateur :
- sous Windows, le gestionnaire de périphériques, rubrique « Ports COM et LPT », nomme le fabricant de la puce ;
- sous Linux, la commande
lsusbet la ligne correspondante dedmesgdonnent le même renseignement, et le nom du pilote chargé ; - sous macOS, le nom du périphérique affiché dans
/devcommence partty.usbserialoutty.wchusbserial, ce qui distingue déjà deux familles.
Les puces qui équipent ce format de boîtier — CH340, FT232, CP2102 et apparentées — sont toutes reconnues nativement par les noyaux Linux et macOS récents. Windows demande parfois une installation manuelle, une fois, après quoi l’appareil est vu comme un port série ordinaire et n’est plus jamais une source de souci.
Mini-projet : relier un Arduino à un ordinateur par un bus RS485
Le montage fait dialoguer une carte Arduino et un ordinateur sur une vraie paire RS485, avec ce convertisseur côté PC et un module TTL / RS485 côté carte. C’est le banc d’essai de toute liaison industrielle : une fois qu’il fonctionne, remplacer la carte par un automate ou un compteur ne change rien à la méthode.
Ce qu’il faut
| Côté ordinateur | Le convertisseur USB RS485 de cette page |
|---|---|
| Côté carte | Module de conversion TTL / RS485 — c’est lui qui produit la paire différentielle |
| Le cerveau | Uno R3 + câble USB |
| La mesure | Une entrée analogique libre suffit ; avec un capteur DHT22 ou une sonde DS18B20, la valeur transmise devient plus parlante |
| Le support | Plaque d’essai 830 points |
| Les liaisons | 10 × fil mâle-femelle, plus deux fils pour la paire du bus |
Le câblage
| USB | Le convertisseur se branche directement sur un port de l’ordinateur — il n’y a rien d’autre à câbler de ce côté |
|---|---|
| Bornier A du convertisseur | → borne A du module TTL / RS485 |
| Bornier B du convertisseur | → borne B du module TTL / RS485 |
Module VCC | → Arduino 5V |
Module GND | → Arduino GND |
Module DI | ← Arduino D3 — les données que la carte émet |
Module RO | → Arduino D2 — les données que la carte reçoit |
Module DE et RE | Reliés ensemble, puis à Arduino D4 — c’est la broche qui décide si la carte parle ou écoute |
Le convertisseur n’a que deux fils : c’est la seule connexion entre l’ordinateur et le bus. La masse n’est pas ramenée par ce bornier, et sur une liaison de quelques dizaines de centimètres, cela ne pose aucun problème.
Le programme
À téléverser dans la carte, puis à ouvrir dans le moniteur série de l’ordinateur :
/*
* Noeud RS485 : l'Arduino publie sa mesure sur le bus, l'ordinateur l'ecoute
* Cote TTL / RS485 : D2 (reception), D3 (emission), D4 (sens de l'emission)
* Le convertisseur USB RS485 est branche sur la paire A / B du bus.
*
* Composants, brochage et fiche complete : www.marocproduits.com
*/
#include "SoftwareSerial.h"
const byte PIN_RX = 2; // RO du module TTL / RS485
const byte PIN_TX = 3; // DI du module TTL / RS485
const byte PIN_DE = 4; // DE et RE relies ensemble
SoftwareSerial bus(PIN_RX, PIN_TX);
void setup() {
pinMode(PIN_DE, OUTPUT);
digitalWrite(PIN_DE, LOW); // au repos, la carte ecoute le bus
bus.begin(9600); // debit du bus RS485
Serial.begin(9600); // moniteur serie, pour le diagnostic
Serial.println("Noeud RS485 pret, debit 9600 bauds.");
}
void loop() {
int mesure = analogRead(A0);
int millivolts = map(mesure, 0, 1023, 0, 5000);
digitalWrite(PIN_DE, HIGH); // la carte prend la parole
delay(2); // laisse le transducteur s'installer
bus.print("#1;MV=");
bus.print(millivolts);
bus.write(10); // 10 = code ASCII du saut de ligne
delay(2); // laisse la derniere trame partir
digitalWrite(PIN_DE, LOW); // la carte relache le bus et se remet a ecouter
Serial.print("Trame envoyee : #1;MV=");
Serial.println(millivolts);
delay(1000); // une mesure par seconde
}Comment ça marche
- Le bus est partagé, donc on ne parle qu’un à la fois. Le RS485 relie plusieurs appareils sur la même paire, mais un seul peut émettre : les autres écouteraient du bruit. La broche
D4place le module en émission le temps de la trame, puis le relâche. Sans elle, deux appareils qui parlent ensemble rendent le bus inutilisable. - Le préfixe
#1est l’adresse du nœud. C’est la convention qui permet d’ajouter des cartes : chacune annonce son numéro, et le logiciel côté ordinateur ne garde que les trames qui l’intéressent. Sans adresse, deux cartes deviennent indiscernables dès la deuxième. - Les deux côtés sont au même débit. Le programme règle le bus à 9600 bauds ; le logiciel de l’ordinateur doit ouvrir le port à la même valeur. Une différence de vitesse ne produit pas une erreur : elle produit des caractères incompréhensibles, ce qui fait perdre beaucoup de temps.
- D2 et D3 forment un port série logiciel. L’Arduino Uno n’a qu’un seul port série matériel, celui du câble USB. La bibliothèque SoftwareSerial en simule un second sur n’importe quelles broches, ce qui laisse le port USB libre pour afficher le diagnostic. En contrepartie, elle tient mal les débits élevés : restez à 9600 ou 19200 bauds.
- On compte environ une mesure par seconde. Le délai final règle la cadence ; les deux courtes pauses autour de l’émission, elles, sont nécessaires — le transducteur a besoin d’un instant pour basculer.
Pour lire les trames depuis l’ordinateur, ouvrez le port série créé par le convertisseur à 9600 bauds et regardez ce qui arrive : les lignes #1;MV=... doivent s’afficher une fois par seconde. Si rien n’apparaît, intervertissez A et B avant toute autre recherche — c’est la cause la plus fréquente, et la plus rapide à écarter.
Variante : plusieurs appareils sur la même paire
C’est l’intérêt principal du RS485, et il ne demande aucun matériel supplémentaire. Chaque nœud reçoit un numéro, et un seul parle à la fois : plusieurs modules TTL / RS485 peuvent partager la même paire, chacun avec sa carte et son adresse, tous reliés aux mêmes deux bornes du convertisseur. Le logiciel de l’ordinateur, lui, voit toujours un seul port série — c’est dans le contenu des trames que les appareils se distinguent.
Deux règles rendent ce bus fiable. D’abord, la ligne doit être une chaîne qui passe d’un appareil au suivant, et non une étoile avec des départs dans tous les sens : les embranchements créent des réflexions. Ensuite, au-delà de quelques mètres, deux résistances de terminaison aux deux extrémités de la ligne absorbent ces réflexions. Un bus qui fonctionne parfaitement à 9600 bauds sur un mètre peut devenir erratique à 115200 sur cinquante mètres : c’est la longueur et le débit ensemble qui décident.
Questions fréquentes
Faut-il installer un pilote ?
Sous Linux et macOS récents, non : la puce est reconnue et le port apparaît aussitôt. Sous Windows, cela dépend de la puce présente dans le boîtier — voir la section sur ce que le boîtier ne laisse pas voir. Si l’appareil apparaît avec un point d’exclamation dans le gestionnaire de périphériques, c’est un pilote manquant, pas un appareil défectueux.
L’appareil alimente-t-il le bus en courant ?
Non. Il est alimenté par le port USB et ne fournit aucune puissance sur la paire : le RS485 ne transporte que des données. Les appareils du bus ont chacun leur alimentation, ou sont alimentés par une alimentation commune.
Peut-on relier deux ordinateurs avec deux convertisseurs ?
Oui, et c’est le test le plus simple pour valider un convertisseur avant de l’utiliser sur un vrai matériel. Branchez les deux sur la même paire — A avec A, B avec B —, ouvrez les deux ports série à la même vitesse, et tapez d’un côté : les caractères doivent apparaître de l’autre. Si rien n’arrive, inversez A et B sur un seul des deux convertisseurs, jamais sur les deux à la fois.
Est-ce compatible avec le protocole Modbus RTU ?
Oui. Le convertisseur est transparent : il ne regarde pas ce qui circule, il le transporte. Modbus RTU, trames propriétaires d’automate, protocole maison entre deux cartes — tout passe de la même façon. C’est le logiciel de l’ordinateur qui doit, lui, connaître le protocole et les adresses des esclaves.
Pourquoi des trames se perdent-elles de temps en temps sur une longue ligne ?
Trois causes, dans l’ordre de fréquence : l’absence de résistances de terminaison aux extrémités, un câble qui n’est pas une paire torsadée, et une vitesse trop élevée pour la longueur. Une différence de masse entre deux appareils alimentés séparément produit le même symptôme sur un câble long ; ramener une masse commune, ou intercaler un coupleur isolé, le règle.
Peut-on le laisser branché en permanence ?
Oui. Il est alimenté par l’USB, ne consomme presque rien et ne chauffe pas. Un poste de supervision peut donc l’interroger en continu, sans intervention.
À combiner avec
Ce convertisseur prend tout son sens avec le module de conversion TTL / RS485, qui place une carte Arduino sur le même bus, et une carte Uno R3 pour tenir le nœud côté machine. Si votre interlocuteur parle en logique TTL et non en RS485, le convertisseur USB vers TTL suffit ; s’il s’agit d’un vrai port série ancien, c’est le MAX232 qu’il faut intercaler. Pour mesurer quelque chose d’utile dès le premier essai, un capteur DHT22 ou une sonde DS18B20 se branche sur la carte, une plaque d’essai 830 points et des fils mâle-femelle montent le tout sans soudure, et une alimentation 5 V stabilisée affranchit le montage du port USB de l’ordinateur.











