Me gustaría aprender a hacer mis propios dispositivos USB.

He estado escribiendo controladores de dispositivos de caracteres de Linux para cosas de otras personas durante algún tiempo. Me gustaría encontrar un nuevo pasatiempo y la idea de hacer mis propios artilugios USB me parece genial.

Me encantaría poder controlar algunos LED, servos y motores paso a paso. Realmente disfruto aprendiendo cosas nuevas por mi cuenta y la emoción cuando algo finalmente funciona. No he hecho ninguna programación seria de MC, pero conozco mi camino.

¿Alguien puede recomendar algunos kits que serían útiles para un novato completo? Idealmente, son:

  • Compatible con Linux
  • Capaz de realizar envíos internacionales (actualmente vivo en Asia)
  • Ofrecer kits de placa de pruebas

Si tiene el tiempo y la inclinación, los enlaces a proyectos en los sitios de otras personas que incluyen esquemas y listas de piezas serían muy apreciados. Quiero estudiar a partir de ejemplos, pero buenos ejemplos, por eso pregunto aquí.

Mi objetivo final es hacer mis propios recolectores de datos, desde lluvia hasta decibelios promedio y niveles de luz. Lo siento si esto se ha preguntado antes, hice una búsqueda (y busqué etiquetas).

Respuestas (11)

El Arduino es muy popular y es un hardware de código abierto, por lo que existen variaciones , incluidos Freeduinos de terceros llamados Bare Bones Board , Really Bare Bones Board y Boarduino , que son muy buenos para usar con placas de prueba. El Arduino estándar se adapta usando cosas llamadas Shields. Puede hacer su propio escudo de tablero o comprar algo como este kit de ProtoShield.

El Arduino utiliza un chip o cable FTDI USB-RS232. [El Arduino estándar lo tiene incorporado, mientras que la mayoría de las placas de prueba usan un cable especial que tiene el chip adentro y le ahorra algo de dinero]. Hay un controlador incorporado para Linux, Mac OS X y Windows. los usuarios pueden descargar un controlador. Efectivamente, esto significa que el Arduino actúa como un dispositivo que se comunica en un puerto serie, por lo que es muy fácil comunicarse con él.

Para usarlo, también descarga software. Viene con un IDE, una cadena de herramientas AVR-GCC, una biblioteca realmente agradable y software para cargar su programa en el chip. Te oculta la mayoría de los detalles y tiene una gran comunidad. Está programado en un lenguaje llamado "Wiring", pero en realidad es C++.

Por último, al ser hardware de código abierto, existen esquemas. De hecho, creo recordar haber leído que era bastante fácil construir un modelo anterior. Buscar "esquemas de Arduino" en su motor de búsqueda favorito le dará buenos resultados.

En cuanto a los kits, Maker Shed ofrece una gran cantidad de artículos relacionados con Arduino en stock. Parece que se envían a todo el mundo. Algunos de interés incluyen:

The Shoppe en Wulfden (EE. UU.) tiene buenos kits para experimentadores y parece enviarse internacionalmente.

Solarbotics (Canadá) tiene un ARDX Arduino Experimenter's Kit , un Freeduino Starter Bundle - Ultimate y un Arduino Starter Bundle - Basic (y Ultimate ), y parece enviarse internacionalmente.

La página principal de "compra" de Arduino enumera los proveedores de Arduino en todas las áreas del mundo.

Otros lugares que revisaría incluyen Adafruit Industries y Sparkfun Electronics (ambos en los EE. UU.).

Guau. ¡Gracias por el tiempo que dedicaste a una respuesta tan informativa!
Me alegra oír eso. Después de escribir la respuesta, pensé: "¡No puedo creer que acabo de pasar cuarenta minutos respondiendo una pregunta en Internet!"
Gran publicación, pero debe tenerse en cuenta que no todos los Arduinos usan el chip FTDI. Por ejemplo, uso mi Arduino Uno R3 en OS X sin ningún controlador instalado. (Ese usa un Atmega 16U2 para la comunicación USB).
Estoy tratando de hacer exactamente eso en un Arduino Due. Estoy escribiendo un CDC_EEM (controlador de emulación de Ethernet). Encontré que el módulo PluggableUSB pierde algunas funciones clave, carece de un mecanismo para registrarse en interrupciones USB y algo de inicialización.

El Arduino es una gran herramienta para comenzar cuando desea construir dispositivos electrónicos y podría llevarlo a su objetivo final de construir un registrador de datos . Sin embargo, no es adecuado para el desarrollo de USB real, ya que emula un puerto serie antiguo. No le permitirá convertirlo en otra cosa (como un dispositivo de interfaz humana (ratón/teclado) o un dispositivo de almacenamiento masivo (lector de tarjetas/unidad extraíble)).

Si desea fabricar dispositivos USB "reales", visite el sitio de Jan Axelson . Escribe libros para "principiantes" sobre USB. Sin embargo, el desarrollo de dispositivos que usan USB en este nivel puede no ser adecuado para principiantes, por lo que la experiencia de Arduino definitivamente lo pondrá en camino.

Gracias por el enlace. Seguramente lo comprobaré una vez que se quiten las 'ruedas de entrenamiento' :)
Eso no es del todo cierto... Arduino Leonardo y todas las placas basadas en Atmega32u4 pueden permitirle hacer HID y cualquier otro dispositivo personalizado.

Recomiendo encarecidamente el tutorial del presentador de diapositivas USB Tuxgraphics AVR. Utiliza un microcontrolador Atmel AVR, que tiene una gran comunidad de aficionados (avrfreaks, etc.), y una pila usb1.1 solo de software de código abierto de obdev.org. No puede escalar muy alto (almacenamiento masivo, por ejemplo), pero el producto final es un pequeño teclado USB HID con dos botones asignables. Sería trivial usarlo como registrador de datos, y algunos de los ejemplos en obdev.org son solo eso (www.obdev.at/products/vusb/projects.html). Está escrito en c limpia, y la lista de piezas cuesta unos pocos dólares como máximo.

Al mismo tiempo, recomiendo construir o comprar el programador tuxgraphics avrusb500. Es un placer usarlo, y uno de los equipos más confiables que tengo. (No estoy afiliado, ¡solo soy un cliente muy satisfecho!)

Otro dispositivo que he querido investigar es el AT90USBKey . Ha pasado un tiempo desde que lo investigué y no estoy seguro de si puede programarlo sin Windows, pero actuará como un dispositivo USB (como un teclado o un dispositivo de almacenamiento masivo) o como un host USB. en el que conectas otros dispositivos. Hay programas de muestra disponibles, y parece razonablemente fácil trabajar con ellos, siempre que sepa un poco sobre electrónica y pueda codificar en C.

Una búsqueda en Google de AT90USBKey y Linux arrojó resultados prometedores.

Sé que puede obtenerlo en DigiKey.ca . Busqué un equivalente digikey para Asia ; puede obtener la parte de Farnell .

Según el sitio vinculado, parece que la placa se puede programar a través de Jtag.

También es posible que desee comprobar Teensy .

Si termina usando el Arduino, he transferido la biblioteca V-USB (anteriormente AVR-USB) para que se ejecute en él. También está envuelto con una clase para facilitar la interacción.

Puede crear dispositivos USB HID con él, por ejemplo, teclado, mouse o joystick. También puede crear un dispositivo genérico que use libusb en el host para controlarlo, desde Python, C, Processing, etc.

Mi sitio tiene un escudo de PCB que puede hacer que use un enchufe USB y algunas resistencias, etc.:

http://code.rancidbacon.com/ProjectLogArduinoUSB

Puede escribir código Arduino para enviar pulsaciones de teclas tan fácilmente como:

UsbKeyboard.sendKeyStroke(KEY_ENTER);

o con un "controlador" libusb puede enviar datos como:

UsbStream.write(0xff)

o leer datos con:

UsbStream.read()

--Felipe;

Ahora hay varias placas de desarrollo basadas en AVR-USB.

Personalmente, he usado Teensy y Bumble-B antes mencionados y creo que ambos son geniales.

Teensy es agradable, porque se integra muy bien con el entorno Arduino. Esto significa que puede hacer cosas como "Mouse.init; Mouse.move(x,y)" en lugar de lidiar con el código USB de bajo nivel usted mismo. Sin embargo, ambos ejecutarán LUFA si lo desea.

Aquí hay un proyecto PIC USB simple mío:

http://www.leonheller.com/usb

Los PCB están disponibles.

Object Development ha creado una biblioteca para microcontroladores AVR que le permite fabricar dispositivos USB muy económicos por su cuenta (a partir de solo 2-3 $). GCC para AVR es compatible con Linux. Hay cientos de dispositivos ya fabricados. Eche un vistazo aquí: http://www.obdev.at/products/vusb/projects.html

Depende del tipo de dispositivos USB que desee fabricar y del nivel avanzado. Mencionas leds parpadeantes. Ese tipo de control se puede lograr fácilmente con cualquier tipo de microcontrolador con uart y un chip ftdi (arduino es bastante popular y fácil de comenzar). El chip ftdi se conecta al uC en serie y actúa como un convertidor serial <-> USB. También aparece como un puerto COM virtual en su computadora.

Si desea utilizar protocolos, controladores y funciones USB más avanzados, puede obtener un uC con capacidad USB nativa. Microchip tiene muchas fotos (sus microcontroladores) que pueden hacer esto, por ejemplo. Microchip también tiene muchas placas de desarrollo dedicadas a aprender a usar el usb. Atleast Microchips 32-bit uC también es compatible con los modos host y otg, por lo que puede crear un registrador de datos que guarde los datos en una memoria USB común, que puede conectar a su computadora para leer los datos. (Estoy seguro de que muchos otros fabricantes también tienen circuitos integrados y kits de desarrollo similares, pero Microchip es el único que he usado)

Página de inicio/USB de Microchip

Tenga en cuenta que no tiene que comenzar con un nivel electrónico tan bajo y dedicar más tiempo de desarrollo al "artilugio" en sí. Muchas empresas venden dispositivos USB para el mercado del bricolaje, por ejemplo:

http://www.yoctopuce.com

http://www.phidgets.com