Plusieurs arduinos sur un seul port USB (alimentation + communication)

Bonjour,

je présente mon projet : je suis en train de concevoir et construire un volant + retour de force + pédalier pour du SIM RACING (voitures) sur PC. c'est un ordinateur portable sous Win10 avec le jeu assetto corsa.

Le volant est équipé de : 1 carte arduino leonardo pour le contrôle des boutons sur le volant et d'un FT232RL USB to TTL Module Board auquel est rlié un écran LCD pour de l'affichage de données (vitesse, rapport de boite, température, etc...). Il faut pouvoir donc relier ces deux cartes ensemble car ma sortie de volant se fait sur 4 branches (GND, 5V, D+, D-).

Le retour de force est géré par une carte LEONARDO.

Le pédalier est géré par : une carte LEONARDO pour les deux pédales (gaz et freins via 2 potentiomètres) et une carte UNO pour la gestion de deux petits moteurs vibratoires pour simuler soit le patinage des roues, soit blocage des roues.

Toutes les parties programmations et interface fonctionnels avec le jeu fonctionnent sans AUCUN problème.

Le hic : je n'ai pas assez de ports USB sur mon PC pour utiliser toutes les cartes en même temps). Il faut donc pouvoir relier plusieurs LEONARDO ensemble via un HUB USB (si je ne raconte pas de bêtise).

J'ai acheté 2 hub USB en 2.0 mais cela ne marche pas. Pour chaque assemblage, je ne vois qu'un seul COM et non 2 ou 3.

Je ne suis pas ingénieur en électronique, donc s'il vous manque des données pour mieux comprendre, dites le moi. Merci

Vos hubs ne semblent pas avoir d'alimentation independante. Est ce qu'un PC portable peut fournir assez de courant sur son USB aux arduini(+ mulot,+...)?
(et serez vous heureux en branchant un disque externe pour des sauvegardes)?

Si vous avez accès (fût ce temporairement - à un PC sous GNUlinux ou un RPi, des diagnostics précis lors du branchement des periphériques sont disponibles par la commande "dmesg"

Je ne suis pas convaincu que la liaison par USB soit la mieux appropriée.

En gros l'USB n'est qu'un conteneur pour une liaison série qui utilise le protocole de la RS232 ( mais pas les niveaux électriques attention, juste le protocole).

Il existe d'autres protocoles de liaisons série ( de nos jours les liaisons parallèles ont disparues).
I2C, SPI, RS485, etc

L'I2C utilise deux fils (plus la masse) et un système d'adresse pour identifier les modules
Le SPI utilise (en plus de la masse) 3 fils pour les dialogues plus une sortie de micro par module
RS485 je connais moins mais combine deux fils birectionnels et un système d'adresse à ce que j'ai compris.

Je pense avoir amorcé la pompe et je suis confiant que d'autres plus au fait de ces techniques vont se manifester.

dbrion06:
Vos hubs ne semblent pas avoir d'alimentation independante. Est ce qu'un PC portable peut fournir assez de courant sur son USB aux arduini(+ mulot,+...)?

Pour l'alimentation, ce n'est pas un problème. Je peux mettre une alimentation externe en +5V et GND. Et brancher la GND également sur le PC.

dbrion06:
Si vous avez accès (fût ce temporairement - à un PC sous GNUlinux ou un RPi, des diagnostics précis lors du branchement des periphériques sont disponibles par la commande "dmesg"

Je ne suis pas en possession de Linux. Et pour l'instant je vais attendre d'avoir d'autres solutions avant de me mettre sur Linux...

@68tjs
C'est du Tinois pour moi vos solutions. Mais Google est mon ami :wink: Et effectivement, nous allons attendre si d'autres solutions peuvent exister.

Dassault27:
@68tjs
C'est du Tinois pour moi vos solutions. Mais Google est mon ami :wink:

Et effectivement, nous allons attendre si d'autres solutions peuvent exister.

Si tu veux utiliser des microcontrôleurs sans mettre tes mains dans le cambouis pour connaitre les possibilités des protocoles de communication et comment on les utilise je crains que ton aventure s'arrète très vite.
Dans les messages épinglés nous conseillons de prendre son temps et de commencer avec le tuto d'Eskimon.
Et nous savons ce que nous faisons.
Je ne parlais pas d'autres solutions, je parlais de conseils plus précis que les miens en particulier sur le RS485 multi point d'accès. Mais pour cela il faut donner envie aux autres bénévoles d'intervenir en montrant qu'on est actif et qu'on fait des efforts.
L'I2C et le SPI sont des protocoles indispensables à connaitre. Ce n'est pas la documentation qui manque.
Des bibliothèques qui les gèrent existent et il y a même des exemples dans l'IDE arduino.

Est cve que, lorsque vous branchez un seul arduino, il est alimenté -sa LEd d'alimentation luit elle?- ?
Est ce qu'il est reconnu (désolé, je ne connais pas les diagnostics de tous les types d'ordinateur) ou du moins, semble-t-il fonctionnel?
qu'en est il de l'arduino suivant (toujours isolé?)

Dassault27:
Pour l'alimentation, ce n'est pas un problème. Je peux mettre une alimentation externe en +5V et GND. Et brancher la GND également sur le PC.
Je ne suis pas en possession de Linux. Et pour l'instant je vais attendre d'avoir d'autres solutions avant de me mettre sur Linux...

@68tjs
C'est du Tinois pour moi vos solutions. Mais Google est mon ami :wink: Et effectivement, nous allons attendre si d'autres solutions peuvent exister.

Bonjour
Ton probleme vient essentiellement de la methode d'énumération USB par l'OS de ton ordinateur
Sous windows (W10) qui est un OS trés indigent de ce coté là , selon ce que tu lui connecte l'énumération peut conduire à des aberrations ( plusieurs dispo physique USB géré par # 32U4 par exemple)
çà peut venir des drivers installés qui ne sont pas capables de bien se faire reconnaitre unitairement lorsque plusieurs dispo identiques sont connectés ( à chaud je pense aux CH34x)

Un utilitaire intéressant pou regarder/vérifier les dispo usb sous windows est
USBdevview

Dassault27:
Et pour l'instant je vais attendre d'avoir d'autres solutions avant de me mettre sur Linux...

Il est très facile de démarrer un PC sous Linux à partir d'un CD ou DVD, sans rien installer sur le PC.
Il suffit de télécharger une distribution dite "live", de la graver, et hop.

Je sais bien que Windows n'est pas très malin mais il devrait quand même énumérer les différents périphériques. Que remonte le gestionnaire de périphérique si tu connectes les périphériques l'un après l'autre?

Autrement, il me semble que le volant le pédalier et les moteurs devraient, sans doute, pouvoir être pilotés par une seule et même carte. Ce n'est quand même pas une grosse charge de travail même pour un petit microcontrôleur.

biggil:
Il est très facile de démarrer un PC sous Linux à partir d'un CD ou DVD, sans rien installer sur le PC.
Il suffit de télécharger une distribution dite "live", de la graver, et hop.

Cette solution se trouverait grandement facilitée si:
a) on disposait de CD ou DVD (on doit en trouver d'occasion)
et
b) le portable de Monsieur Posteur avait un lecteur de CD/DVD; o,n peut pallier à ce manque en utilisant ... un lecteur/ecrivain de CD/DVD externe, branchable sur l'USB (mais dans le cas de ce fil, est ce vraiment la solution)

Une solution encore plus simple est d'utiliser VBox (mais les périphériques doivent être reconnus par Windows avent d'être apssés au système émulé: dans ce fil, ce n'est pas tellement optimal) ou d'attendre quelque temps que M$ ait rendu convivial son mariage avec GNUlinux ....

Une solution (plus proche de l'optimum) serait de disposer d'un autre PC ou d'un RPi avec GNUlinux installé... ou d'avoir accès aux messages d'enumération (M$ doit le faire, selon Artouste #6)
En attendant, verifier que chaque periferique est alimenté (voyant d'alimentation), puis qu'il est fonctionnel (dans l'ordre du titre) quand il est tout seul n'est pas absurde, mais implique que la panne n'ait pas tétanisé un cerveau (rendant la lecture de la doc avant la résolution de la panne inutile; lire la doc avant la manifestation de la panne ou après sa résolution est un autre problème)

Bonjour,

je viens de faire quelques essais avec le logiciel "USB Network 8.1".

Quand je branche en direct une carte LEONARDO sur la prise USB du PC, tout fonctionne sans problème. La carte est reconnue avec son port COM affecté. Je peux télécharger via l'IDE arduino les programmes.

Quand je branche cette même carte sur le HUB USB 2.0, et ce HUB branché au PC, la carte est toujours reconnue avec son port COM. Cependant, il m'est impossible de télécharger un programme via l'IDE (téléchargement infini...), ni d'utiliser la carte. Elle est reconnue par le PC, mais la communication entre la carte et le PC ne fonctionne pas....

Des idées sur le problème ? Merci

Bonjour Dassault27

Dassault27:
Bonjour,
je viens de faire quelques essais avec le logiciel "USB Network 8.1".

De quel constructeur ?

Cordialement,
bidouilleelec

bidouilleelec:
Bonjour Dassault27
De quel constructeur ?

Cordialement,
bidouilleelec

Bonjour, le constructeur est Nirsoft (conseillé par Artouste dans des messages précédents)

Avez vous un hub USB avec alim externe ? (de disponible: c'est fort utile pour des disques externes, mais pas la peine de 'en acheter un pour un test)

dbrion06:
Avez vous un hub USB avec alim externe ? (de disponible: c'est fort utile pour des disques externes, mais pas la peine de 'en acheter un pour un test)

Non mais je peux modifier le HUB existant en alimentant avec une alimentation extérieure. Mais sincèrement, je ne vois pas comment cel apourrait résoudre le problème. je vais tester dans tous les cas :wink:

dbrion06:
Avez vous un hub USB avec alim externe ? (de disponible: c'est fort utile pour des disques externes, mais pas la peine de 'en acheter un pour un test)

Bonjour, j'ai fait le montage suivant :

  • GND / 5V du HUB USB branché sur une alimentation externe délivrant 5,15V avec 2A max de courant
  • GND / D+ / D- du HUB USB branché au PC

Avec une seule carte LEONARDO, tout est OK. Quand je branche une seconde LEONARDO, la première carte n’apparaît plus dans les ports COM (et la seconde non plus). Dans le gestionnaire de périphériques/contrôleurs de bus, le message d'erreur code 043 s'affiche pour les deux cartes.

Any suggestions ? Merci

Bonjour Dassault27

Dassault27:
Dans le gestionnaire de périphériques/contrôleurs de bus, le message d'erreur code 043 s'affiche pour les deux cartes.

Postez (copier/coller) l'intégralité du messge d'erreur Windows ou une photo.

Cordialement,
bidouilleelec

Dassault27:
Dans le gestionnaire de périphériques/contrôleurs de bus, le message d'erreur code 043 s'affiche pour les deux cartes.

Windows a arrêté ce périphérique car il présente des problèmes. (Code 43)

Échec d’une demande de descripteur du périphérique USB.

Bonjour Dassault27

Dassault27:
Windows a arrêté ce périphérique car il présente des problèmes. (Code 43)

Échec d’une demande de descripteur du périphérique USB.

Quelle version de Windows?
En connectant d'autres périphériques (non arduino , un clavier , une souris, ...) sur le hub, ces périphériques fonctionnent-ils?
Cordialement,
bidouilleelec

bidouilleelec:
Bonjour Dassault27
Quelle version de Windows?
En connectant d'autres périphériques (non arduino , un clavier , une souris, ...) sur le hub, ces périphériques fonctionnent-ils?
Cordialement,
bidouilleelec

C'est sous Win10 Famille. J'ai refait quelques essais mais d'après mes recherches et de vos commentaires, il vaudrait mieux que j'utilise un HUB avec une alimentation externe. Je vais en acheter 1 et je verrai la situation (fin août car je pars en déplacement entre temps).
Je vous remercie de votre aide