Communication en mode série via USB Host Shield 2.0

Salut,

Mon projet consiste à réaliser une liaison bluetooth entre un quadri-copter et une tablette. L'arduino va me servir de passerelle entre le drone et la tablette via un pont bluetooth afin de paramétrer l'appareil en vol (et plus si affinité). La connectique côté drone est une prise USB qui cache par derrière une simple liaison série. Les commandes sont de type "telnet". Mon idée est donc de lire ce qui arrive depuis le drone, l'envoyer vers la liaison bluetooth et inversement (communication bi-directionnelle).

Je me suis donc procuré le matériel suivant :

  • Arduino UNO
  • USB Host shield
  • Transmetteur bluetooth

Niveau branchement, c'est OK (pas compliqué non plus...). Je suis tombé sur la library USB Host Shield 2.0 qui semble faire l'affaire. J'arrive à identifier le drone au niveau USB :

Device descriptor: 
Descriptor Length:	12
Descriptor type:	01
USB version:		0110
Device class:		00
Device Subclass:	00
Device Protocol:	00
Max.packet size:	40
Vendor ID:		10C4
Product ID:		EA60
Revision ID:		0100
Mfg.string index:	01
Prod.string index:	02
Serial number index:	03
Number of conf.:	01

Configuration descriptor:
Total length:		0020
Num.intf:		01
Conf.value:		01
Conf.string:		00
Attr.:			80
Max.pwr:		32

Interface descriptor:
Intf.number:		00
Alt.:			00
Endpoints:		02
Intf. Class:		FF
Intf. Subclass:		00
Intf. Protocol:		00
Intf.string:		02

Endpoint descriptor:
Endpoint address:	81
Attr.:			02
Max.pkt size:		0040
Polling interval:	00

Endpoint descriptor:
Endpoint address:	01
Attr.:			02
Max.pkt size:		0040
Polling interval:	00


Addr:1(0.0.1)

Jusque là, pas de problèmes. En revanche, je ne vois pas trop comment communiquer en mode "liaison série" via USB...

Si une âme charitable pouvait me montrer le chemin, je saurai me débrouiller par la suite niveau code.

Merci d'avance :slight_smile:

Après quelques recherches, je suis tombé sur l'exemple de support FTDI . Bien évidement, ça ne marche pas car il semblerait que mon VendorId et le ProductID ne correspondent pas à la norme FTDI...

Selon la norme, ça donne :

Le drone :
Vendor Id : 0x10c4 Cygnal Integrated Products, Inc.
Product Id : 0xea60 CP210x UART Bridge / myAVR mySmartUSB light

La norme indique :
FTDI_VID 0x0403 Future Technology Devices International, Ltd
FTDI_PID 0x6001 FT232 USB-Serial (UART) IC

A suivre...

Bonjour

Si j'ai bien compris :
-le quadricopter possède un adaptateur serie/USB équippé d'un CP2102 de Silicon Labs (ex Cygnal)
-la librairie USB Host ne contient pour l'instant que les 'drivers' pour FTDI232 ou PL2303 Prolific. Pas encore de driver CP2102 Silabs. (avec ces 3 références on couvre 90% des adaptateurs Usb/série)

Trafiquer les VID/PID ne suffira peut être pas pas.
Un driver de client USB/Série contient en général un peu de code pour permettre à l'hôte de configurer la puce cliente.... et chaque puce à ses particularités.
Il faudrait comparer les fichiers cdcftdi(.cpp et .h) et cdcprolific(.cpp et .h) pour s'en assurer.... ça donnerait des idées pour des futurs cdcsilabs(.cpp et .h)

En se rapprochant de l'équipe qui travaille sur la librairie (http://www.circuitsathome.com/about) il est sans doute possible de participer (ou au moins surveiller) le travail sur un 'indispensable' driver pour CP2102 Silabs. Ce n'est pas insurmontable car Silabs documente ses puces et fournit de quoi développer. On doit pouvoir mettre la main sur des sources de drivers et s'en inspirer pour programmer ce qu'il faut. USBXpress USB Connectivity Bridges - Silicon Labs

Autres solutions :
-hacker le quadricopter et le doter d'un adaptateur à FTDI232 ou à PL2303 supportés, eux, par la librairie Host Shield 2 actuelle, voire remplacer par un adaptateur série/BlueToooth

al1fch:
Autres solutions :
-hacker le quadricopter et le doter d'un adaptateur à FTDI232 ou à PL2303 supportés, eux, par la librairie Host Shield 2 actuelle, voire remplacer par un adaptateur série/BlueToooth

C'est peut être la solution la plus simple.
Trois fils, un vers le GND, un vers Tx et un vers Rx, cela éviterai d'avoir la "usb host shield" et tout le code quelle requière pour fonctionner, et il suffirai alors d'utiliser Serial ou SoftwareSerial à la place.

It has been resolved, go to this topic:
http://forum.arduino.cc/index.php?topic=333216.15