Le port série est un port indispensable en électronique. Il est très souvent utilisé pour faire l’échange des données entre deux périphériques sur une carte électronique. Vous pourriez avoir besoin de rapatrier ces données sur un ordinateur ou même d’en envoyer et je vais vous montrer ici comment faire.
Qu’est ce que c’est qu’un port série ?
Comme je vous l’expliquais au dessus le port série sert a l’échange de données. Il est principalement utilisé en électronique entre deux composants avec le SPI et l’I2C .
Voici comment il se compose:
Ici un connecteur standard DB9 que je vais utiliser pour vous illustrer le port série. Les plus anciens se rappelleront avoir vu ces connecteurs sur leurs souris d’ordinateur il y a 25 ans. Ce connecteur avec un câblage standard que je vais vous décrire.
- Pin 1 : DCD Carrier Detector
- Pin 2: RXD Receive Data
- Pin 3: TXD Transmit Data
- Pin 4: DTR Data Terminal Ready
- Pin 5: GND GrouND
- Pin 6: DSR Data set Ready
- Pin 7: RTS Request To Send
- Pin 8: CTS Clear To Send
- Pin 9: RI Ring Indicator
Dans la plupart des cas seule 3 pattes vont nous intéressés. Le RX en pin 2, le TX en pin 3 et le GND pin 5. Les autres pattes sont des pattes de contrôles qui permettent de mettre en attente les données de l’émetteur parce que le récepteur n’est pas prêt. Elles ne seront pas utile dans vos montage le plus souvent ,ceux-ci dit c’est bien de savoir qu’elles existent.
Pour établir une communication entre deux ports série il vous faudra croiser le RX et le TX entre l’émetteur et le récepteur.
Evidement la communication de ce port est bidirectionnelle ainsi l’émetteur pourra devenir le récepteur .
Les émetteurs / récepteurs de bus
Il se peut que vous trouviez sur une liaison série un émetteur / récepteur de bus. Le plus connu de ces circuits est le MAX232 .Il sert essentiellement a améliorer la communication lorsque vous avez un câble avec un peu de distance a parcourir. Il produit pour ca une tension plus élevée afin de permettre au signal le parcourir le câble en limitant les risques de perte.
Vous ne le trouverez généralement pas entre deux périphériques sur la même carte en revanche dés que vous aurez un connecteur avec un câble vous aurez de fortes chance de le trouver.
Différentes tensions de liaison série
Il existe différentes tensions de liaison série, c’est a vous de faire attention a quelle tension vous avez a faire. Ces tensions peuvent être 5 Volts , 3.3 Volts , et 1.8 Volts . Si vous branchez un port série 5 Volts sur un 3.3 v le récepteur 3.3 Volts risque d’être endommagé.
Pour le savoir si vous souhaitez vous y connecter prenez simplement un voltmètre et mesurer la tension entre le GND et le TX , comme je vous le montre dans cet article.
Se connecter a un PC
Il est très rare aujourd’hui de trouver un port série sur un PC. Vous allez devoir convertir les signaux de votre port série depuis l’USB qui lui est présent sur tout nos ordinateurs. Il en existe des tout prêts comme celui-ci.
Sinon je vous montre comment est fabriqué cette liaison ici.
Les terminaux
Les terminaux sont de petites applications qui permettent de scruter les données des ports. Vous pouvez émettre et recevoir des données depuis ces applications. C’est très pratique pour scruter ou tester le fonctionnement d’un périphérique directement sur son PC. Je vous mets un lien vers un terminal gratuit que j’utilise souvent.
Ouvrir un port série en python
Il vous faudra installer la bibliothèque pySerial et évidement Python avec un Editeur comme Sublim Text dont je vous parle ici .
Voici un exemple simple en Python avec pySerial
import serial #Importation de la bibliothèque « pySerial »
ser = serial.Serial(port= »COM6″, baudrate=115200,timeout=1) #Création du port lié au COM6 a une vitesse de 115200 bauds et un timout d’une seconde
ser.close() #Cloture du port pour le cas ou il serait déjà ouvert ailleurs
ser.open() #Ouverture du port
if ser.isOpen():
print(ser.name + ‘ is open…’)
print(ser.get_settings()) #Grace a ces 3 lignes lorsque le Port est ouvert c’est indiqué dans le LOG
ser.write(b‘hello’) #Ecriture de « Hello » sur le port
x = ser.read() # copie d’un caractere lu dans la variable « x »
s = ser.read(10) # copie de 10 caracteres lu dans la variable « s »
line = ser.readline() # copie d’une ligne entiere jusqu’a \n dans « line »
Voila j’espère que cet article vous aura donné quelques informations intéressantes , merci pour votre lecture.
Sylvain Altmayer