¿Cómo uso un cable USB OTG para leer una memoria USB en Arduino Uno?

¿Es posible usar un cable USB OTG (On-The-Go) conectado al conector USB de Arduino Uno (o similar) para leer una memoria USB u otro dispositivo? Si es posible, ¿qué software sería necesario?

Respuestas (2)

No sin ensuciarse las manos o comprar un escudo.

Los Arduinos están configurados por defecto como dispositivos USB esclavos. Los dispositivos esclavos no pueden conectarse a otros dispositivos esclavos, por lo que conectar una memoria USB a través de un cable USB OTG no tiene sentido.

Si no quiere ensuciarse las manos, existe el protector de host USB sugerido por @Kevin que debería funcionar.

Si desea ensuciarse las manos, puede intentar actualizar el nuevo firmware en el chip 8u2/16u2 del Uno. Este chip es lo que le da al ATmega328 principal la capacidad de cargar programas y enviar una salida en serie a través de USB. Se puede reprogramar para que sea varias cosas: un joystick, un mouse, un teclado.

Sin embargo, no se limita a dispositivos esclavos, también se puede programar para que sea un host. Con un Due, ser un Host USB para un mouse o teclado es bastante fácil, pero para otros Arduinos necesita programar el chip 8u2/16u2.

Tenga en cuenta que la programación de un Arduino para comprender un dispositivo de almacenamiento masivo USB aún no se ha realizado. Habrá una cantidad significativa de manipulación del código si desea hacer esto.

Básicamente, utiliza la biblioteca LUFA , específicamente la clase de host de almacenamiento masivo USB . No puedo encontrar nada aparte de esa página de documentos y el código fuente de la clase (que es extenso), por lo que no puedo escribir el código yo mismo. Sin embargo, es posible que desee echar un vistazo a este tutorial sobre cómo hacer un joystick Arduino a través de LUFA para comenzar.

Esto no es exactamente lo que describiste, pero miraría el USB Host Shield . Hay una versión completamente ensamblada por $5 más. Viene con un impresionante conjunto de bibliotecas desarrolladas activamente que le permiten controlar fácilmente una variedad de dispositivos (controlador PS3/Xbox/Wii y más) con buenas API. Le proporciona todo lo que necesita para ponerse en marcha rápidamente con USB. Hay una librería generic_storage que puede ayudar con la lectura/escritura en unidades flash.

Lo he usado para comunicarme con un controlador de PlayStation 3 conectando un dongle Bluetooth con gran éxito.