Arduino peut-il sinterfacer avec des périphériques USB sans le bouclier hôte USB?

Je cherche à connecter divers périphériques USB à un Arduino Uno (en particulier, une manette de jeu et une webcam, mais je suis intéressé par le cas général ). Est-ce possible sans utiliser le bouclier hôte USB, puisque lUno dispose dun port USB et dun convertisseur USB-série? Je pourrais utiliser le bouclier, mais je « suis curieux de savoir si / pourquoi cela est nécessaire.

Le site Web Sparkfun déclare que:

Le bouclier hôte USB SparkFun contient tous les circuits logiques et analogiques numériques nécessaires pour implémenter un contrôleur de périphérique / hôte USB pleine vitesse avec votre Arduino.

Est-ce que lArduino ne contient pas déjà cela, juste besoin du logiciel approprié (bien quil soit évidemment plus facile dutiliser la bibliothèque déjà écrite pour le Host Shield). Ou y a-t-il des limitations matérielles?

Selon Un dongle USB Ethernet peut-il être à la place du bouclier Ethernet pour arduino? (réponse de Majenko), cela peut, en théorie, être fait avec le Due, mais pas avec lUno . Dans ce cas, est-ce parce que lUno utilise lATmega16U2 au lieu du FTDI FT232RL pour la communication USB?

Commentaires

  • I don ' Je ne pense pas que ce soit impossible, lUSB est une sorte de bus série avec des protocoles spécifiques, cest-à-dire le marquage de périphériques répartissant les périphériques sur des plages de temps spécifiques (certains protocoles similaires comme un fil). Je pense que la seule limitation est la vitesse, donc la synchronisation de toutes les commandes et données spécifiques à lUSB est ce qui cause des problèmes,
  • @GeneralChaos You ' a raison ' nest pas " impossble " – mais cest très peu pratique. Il existe une implémentation logicielle dun périphérique USB (VUSB) qui ne nécessite ' aucun matériel spécial. Il ' est incertain au mieux et fonctionne à peine dans le meilleur des cas. Il ny a aucune raison pour que vous ne puissiez pas ' écrire un équivalent hôte – cependant, cela ne pourrait jamais fonctionner à plus de 1,5 MHz de lUSB 1.0 " Low Speed ", donc ne pouvait jamais parler à autre chose qu’un simple clavier ou souris. Des choses comme Ethernet ou les webcams sont complètement impossibles sans le matériel hôte ou OTG, que le Due a intégré à la puce principale.

Réponse

Tout dabord, vous devez apprendre les bases du fonctionnement de lUSB.

En USB, il y a deux« choses »principales: les hôtes et les appareils.

Vous avez un hôte (généralement votre ordinateur) et de nombreux périphériques (tels que des Arduinos, des imprimantes, des scanners, des webcams, des dongles WiFi, etc.).

Être un hôte implique de savoir quels périphériques vous allez vous connecter et comment communiquer avec eux. Être un appareil signifie simplement communiquer avec lhôte à votre manière.

Comme vous pouvez le voir, cest un travail beaucoup plus complexe dêtre un hôte que dêtre un appareil.

Les Arduinos sont des appareils . Les petites puces dinterface USB quils utilisent sont de très faible puissance et ne peuvent être quun périphérique, jamais un hôte.

Si vous voulez brancher un périphérique sur quelque chose, il doit être un hôte (note: je suis exprès ignorant les hubs ici).

LArduino Due utilise une puce beaucoup plus puissante, et qui est capable dêtre un hôte (en utilisant ce que lon appelle le mode On-The-Go).

Pour le faire avec tout ce qui est moins puissant quun Due, vous avez besoin dun matériel supplémentaire spécialement conçu pour être un hôte USB – et cest là que le bouclier dhôte USB entre en jeu. Il a une puce spécialement conçue pour être un hôte USB afin que vous puissiez brancher un périphérique dedans.

Aucune des puces de lUno nest conçue pour être un hôte. Ils nont tout simplement pas le pouvoir.

Réponse

Non. USB fait une distinction stricte entre les rôles dhôte et de périphérique. Quelques puces ont des blocs fonctionnels capables de jouer lun ou lautre rôle, mais les 8u2 / 16u2 ne sont pas des exemples de cela.

Les convertisseurs série USB typiques comme le FT232, CP210x, CH340, PL2303, etc. sont également strictement des appareils et incapables dêtre hôtes

Il existe des MCU peu coûteux capables dhéberger comme le Kinetis KL25Z, mais pour les utiliser sous leur forme la moins chère, vous auriez besoin dune approche logicielle différente (par exemple mbed plutôt quArduino) et beaucoup plus defforts personnels. Le Teensy-LC est lié, mais vous payez plus pour lassistant de chargement de code Arduino dessus que pour le MCU qui exécute votre programme lui-même.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *