mercredi 12 février 2020

Un HUB 4 ports série


J'ai récemment publié un article  à propos des convertisseurs USB /série.
https://riton-duino.blogspot.com/2020/02/les-convertisseurs-usb-serie.html

Celui-ci m'a donné une idée. Ayant quelques mini-modules FT4232H dans mes tiroirs j'ai décidé d'en tirer parti et de me fabriquer une carte HUB 4 ports série.

En effet je travaille souvent sur des projets embarquant des cartes ARDUINO PRO MINI et il m'arrive parfois d'avoir besoin d'au moins deux ports (1  projet avec un émetteur et un récepteur radio par exemple).

Une autre application est envisagée :
Actuellement sur mon serveur DOMOTICZ (RASPBERRY PI) les 4 ports USB sont occupés :
  • 1 ARDUINO MEGA (passerelle RFLINK)
  • 1 ARDUINO NANO (télécommande infrarouge)
  • 1 ARDUINO NANO (passerelle NRF24L01)
  • un PRO MINI + convertisseur FT232R (passerelle RFM69)
Si je remplace les deux NANO par deux PRO MINI 8MHz il sera possible d'utiliser à la place de trois convertisseurs FT232R un seul FT4232H, ce qui libérera 2 ports USB.
Si je réserve un port du FT4232H en tant que port série 5V, je pourrai également y connecter la MEGA, et cela libérera 3 ports USB.

Le but est donc de remplacer 2, 3 ou 4 convertisseurs USB / série par un seul, pourvu de 4 connecteurs le raccordement de 4 cartes :
  • GND
  • 3.3V ou 5V
  • TX
  • RX
  • DTR
La carte convertisseur sera donc équipée de 4 connecteurs à 5 broches.

Pour d'autre applications il est bien entendu possible d'ajouter d'autres broches de contrôle. Le FT4232H dispose de la panoplie complète (RTS, CTS, DTR, DSR, DCD, RING).

1. Les mini-modules

Avant tout examinons ce mini-module FT4232H de plus près :
  • le FT4232H est un convertisseur USB / série 4 ports
  • le FT2232 existe aussi. Il offre 2 ports
  • deux modes d'alimentation : 
    • alimentation par le connecteur USB
    • alimentation externe 5V
  • le driver est le même que pour les FT232R :
Si l'alimentation se fait pas le connecteur USB, le régulateur 3.3V embarqué AIC1733 peut délivrer 500mA.

La tension d'alimentation du chip FT4232H est de 3.3V (maxi 3.6V).
Ces convertisseurs sont donc adaptés à des processeurs alimentés sous 3.3V :
  • ARDUINO PRO MINI 8MHz 3.3V
  • ESP8266, ESP32
  • STM32
  • etc.
Il est possible cependant d'envisager de l'utiliser avec des processeurs 5V moyennant deux modifications :
  • amener le 5V sur le connecteur série 5 broches
  • insérer un pont diviseur entre la broche RX du connecteur 5 broches et la pin RX correspondante du FT4232H
Sur les 4 ports disponibles, il est possible de réserver 1 ou plusieurs ports 5V.

2. L'offre

Examinons l'offre disponible.

On trouve ces modules chez les revendeurs officiels Farnell, Mouser, RS, etc.
Mais il sont assez chers : 26€ à 27€.
Il existe des clones sur AliExpress pour une dizaine d'euros, ce qui est plus abordable :
Ce module est disponible également sur AliExpress :

Il a des possibilités intéressantes :
  • commutateur d'alimentation (USB ou JACK)
  • commutateur 5V / 3.3V sur RX / TX
  • 4 ports RX / TX / GND / VCC sur connecteurs JST
Le même en version FT2232 :

3. La réalisation

Ces modules seraient directement utilisables tels quels avec des fils DUPONT mais cela risque d'être très fastidieux. L'idée est d'implanter le mini-module sur une carte et de mettre à disposition 4 connecteurs à 5 broches :
  • GND
  • 3.3V ou 5V
  • TX
  • RX
  • DTR
Les broches sont dans le même ordre que le connecteur de chargement d'une PRO MINI, ce qui permettra de relier la carte à l'aide d'un câble à 5 fils droit.

Le brochage du module est le suivant :


Il y a deux connecteurs 26 broches nommés CN2 et CN3, et dans la datasheet du mini-module les broches sont répérées AD0 à AD7, BD0 à BD7, CD0 à CD7 et DD0 à DD7.
Nous avons donc 4 ports A B C D avec :
  • 0 : TX
  • 1 : RX
  • 2 : RTS
  • 3 : CTS
  • 4 : DTR
  • 5 : DSR
  • 6 : DCD
  • 7 : RING
Le brochage des clones sera assez semblable. La sérigraphie sera même plus claire, car ces module sont plus grands.
Sur la photo du clone ci-dessus il y a 4 bus : ADBUS, BDBUS, CDBUS, DDBUS, et pour chacun des broches numérotées de 0 à 7.

4. Le câblage

Voici le câblage à réaliser :

Liaison FT4232 Connecteurs série
GND CN2.2 CN2.4 CN2.6
CN3.2 CN3.4
A relier ensemble
A1 B1 C1 D1
VBUS 5V CN3-1 CN3-3 (voir remarque 1)
A relier ensemble
(voir remarque 2)
3.3V VIO CN2-1 CN2-3 CN2-5
CN2-11 CN2-21
CN3-12 CN3-22
A relier ensemble
A2 B2 C2 D2
(voir remarque 2)
AD0 (TX1) CN2-7A3
AD1 (RX1)CN2-10 A4
AD4 (DTR1) CN2-14 A5
BD0 (TX2) CN2-18 B3
BD1 (RX2) CN2-17 B4
BD4 (DTR2) CN2-22 B5
CD0 (TX3) CN3-26 C3
CD1 (RX3) CN3-25 C4
CD4 (DTR3) CN3-21 C5
DD0 (TX4) CN3-17 D4
DD1 (RX4) CN3-16 D5
DD4 (DTR4) CN3-13 D6

1) Dans cette configuration (broche CN3-1 reliée à CN3-3) l'alimentation 5V provient du connecteur USB.
Il est possible d'alimenter le mini-module avec une alimentation 5V externe si les 500mA d'un port USB ne suffisent pas.
Dans ce cas il faudra alimenter par la broche CN3-3 et laisser la broche CN3-1 non connectée.

2) dans le cas où l'on envisage de disposer d'un ou plusieurs ports 5V il faudra relier VBUS (CN3-1) à A1, B1, C1 ou D1. Un pont diviseur devra être inséré entre l'entrée RX A4, B4, C4, ou D4 et la broche RX correspondante du FT4232H.
Exemple :

Voici le schéma d'un hub muni de cavaliers permettant de choisir pour chaque port la tension de travail 3.3V ou 5V :


Par exemple si l'on désire faire travailler le port A en 3.3V les deux cavaliers JP1 et JP5 seront enfichés sur les pins 1 et 2, sinon sur les pins 2 et 3 .

5. Photos

Quelques photos pour illustrer :
Le dessus
 La broche +3.3V est repérée au vernis à ongle.

Le dessous.
A gauche le mini-module avec le connecteur CN3 à gauche. A droite les 4 connecteurs DUPONT mâles avec de gauche à droite : GND, VCC, TX (jaune), RX (orange), DTR (marron).


Chargement d'une PRO MINI
Comme on le voit j'ai utilisé une plaquette à pastilles 70mm x 50mm.
Le câblage est réalisé comme suit :
  • des fils rigides nus 0.25mm² pour les lignes GND et 3.3V, au cas où il y ait besoin d'un peu de puissance.
  • du fil à wrapper pour les lignes TX, RX et DTR
Astuce : les fils rigides sont récupérés dans un morceau de câble Ethernet. Il sont dénudés et soudés directement sur les pastilles.

Le câble de liaison avec la PRO MINI est constitué de 5 fils et de 2 boîtiers DUPONT 5 broches (GND, VCC, TX, RX, DTR).

Si l'on envisage de brancher plusieurs cartes dans le but de les faire communiquer par radio, comme avec le RFM69 sur la photo, il serait plus sage de fabriquer des câbles plus longs, 50cm minimum, car les émetteurs / récepteurs radio n'aiment pas trop la promiscuité.

Voici une version complète avec toutes les lignes UART (TX, RX, RTS, CTS, DTR, DSR, DCD, RING) :


Un régulateur 3.3V et un condensateur sont implantés sur la carte, car j'ai grillé celui du mini-module à cause d'un court-circuit entre 3.3V et GND.
Apparemment le régulateur AIC1733 du mini-module est protégé en température et court-circui, mais qu'en est-il vraiment ?
Méfiance donc ...

6. Le test

Après avoir relié la carte au PC par un cordon mini-USB, nous devons donc disposer de 4 ports série supplémentaires. Et c'est bien le cas :

riton@alpha:/mnt/sdc1/riton$ ls /dev/ttyUSB*
/dev/ttyUSB0  /dev/ttyUSB1  /dev/ttyUSB2  /dev/ttyUSB3  /dev/ttyUSB4


Sous Windows il faudra ouvrir le Gestionnaire de Périphériques, après avoir installé le driver FTDI : https://www.ftdichip.com/Drivers/VCP.htm

Branchons maintenant une carte PRO MINI 8MHz sur un des 4 connecteurs.

Le chargement par l'IDE ARDUINO se passe bien :

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.01s

avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: reading input file "/tmp/arduino_build_496310/MotionSensor433MHz.ino.hex"
avrdude: writing flash (16074 bytes):

Writing | ################################################## | 100% 8.06s

avrdude: 16074 bytes of flash written
avrdude: verifying flash memory against /tmp/arduino_build_496310/MotionSensor433MHz.ino.hex:
avrdude: load data flash data from input file /tmp/arduino_build_496310/MotionSensor433MHz.ino.hex:
avrdude: input file /tmp/arduino_build_496310/MotionSensor433MHz.ino.hex contains 16074 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 6.05s

avrdude: verifying ...
avrdude: 16074 bytes of flash verified

avrdude done.  Thank you.


L'application chargée est un sketch pour un capteur de proximité MYSENSORS. Au démarrage le moniteur série doit afficher un tas d'informations à 115200 baud.
C'est bien le cas :
_  __       ____
|  \/  |_   _/ ___|  ___ _ __  ___  ___  _ __ ___
| |\/| | | | \___ \ / _ \ `_ \/ __|/ _ \| `__/ __|
| |  | | |_| |___| |  __/ | | \__ \  _  | |  \__ \
|_|  |_|\__, |____/ \___|_| |_|___/\___/|_|  |___/
        |___/                      2.3.2

16 MCO:BGN:INIT NODE,CP=RRNNA---,FQ=8,REL=255,VER=2.3.2
28 TSM:INIT
28 TSF:WUR:MS=0
32 TSM:INIT:TSP OK
34 TSF:SID:OK,ID=2
36 TSM:FPAR
40 ?TSF:MSG:SEND,2-2-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
335 TSF:MSG:READ,0-0-2,s=255,c=3,t=8,pt=1,l=1,sg=0:0
342 TSF:MSG:FPAR OK,ID=0,D=1
2050 TSM:FPAR:OK
2050 TSM:ID
2052 TSM:ID:OK
2054 TSM:UPL
2064 TSF:MSG:SEND,2-2-0-0,s=255,c=3,t=24,pt=1,l=1,sg=0,ft=0,st=OK:1
2084 TSF:MSG:READ,0-0-2,s=255,c=3,t=25,pt=1,l=1,sg=0:1
2091 TSF:MSG:PONG RECV,HP=1
2093 TSM:UPL:OK
2095 TSM:READY:ID=2,PAR=0,DIS=1
2123 TSF:MSG:SEND,2-2-0-0,s=255,c=3,t=15,pt=6,l=2,sg=0,ft=0,st=OK:0100
2140 TSF:MSG:READ,0-0-2,s=255,c=3,t=15,pt=6,l=2,sg=0:0100
2359 TSF:MSG:SEND,2-2-0-0,s=255,c=0,t=17,pt=0,l=5,sg=0,ft=0,st=OK:2.3.2
2435 TSF:MSG:SEND,2-2-0-0,s=255,c=3,t=6,pt=1,l=1,sg=0,ft=0,st=OK:0
4454 TSF:MSG:SEND,2-2-0-0,s=255,c=3,t=11,pt=0,l=13,sg=0,ft=0,st=OK:Motion Sensor
4470 TSF:MSG:SEND,2-2-0-0,s=255,c=3,t=12,pt=0,l=3,sg=0,ft=0,st=OK:1.0
4501 TSF:MSG:SEND,2-2-0-0,s=1,c=0,t=1,pt=0,l=0,sg=0,ft=0,st=OK:
4507 MCO:REG:REQ
4524 TSF:MSG:SEND,2-2-0-0,s=255,c=3,t=26,pt=1,l=1,sg=0,ft=0,st=OK:2
4540 TSF:MSG:READ,0-0-2,s=255,c=3,t=27,pt=1,l=1,sg=0:1
4546 MCO:PIM:NODE REG=1
4550 MCO:BGN:STP
4552 MCO:BGN:INIT OK,TSP=1
0


J'ai fais le même test sur les quatre ports : tous OK.

7. PYTHON

On peut contrôler un FT4232 en bitbang. Voir l'article précédent :
https://riton-duino.blogspot.com/2020/02/les-convertisseurs-usb-serie.html#python

8. Conclusion

Voici donc un petit HUB à 4 ports série parfaitement fonctionnel, qui occupera donc seulement un port USB du PC.


Cordialement
Henri

9. Mises à jour
03/03/2020 : 7. PYTHON

Aucun commentaire:

Enregistrer un commentaire