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 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
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 :
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.
- 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
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
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
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
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-7 | A3 |
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 |
Le dessous. |
Chargement d'une PRO MINI |
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
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