Me gustaría aprender a hacer mis propios dispositivos USB

29

He estado escribiendo controladores de dispositivos de caracteres Linux para cosas de otras personas durante algún tiempo. Me gustaría encontrar un nuevo pasatiempo y la idea de hacer mis propios dispositivos USB parece realmente 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 sí conozco mi camino.

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

  • Linux amistoso
  • Capaz de enviar internacionalmente (actualmente vivo en Asia)
  • Ofrecer kits de tablero

Si tiene tiempo e 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 decibeles promedio y niveles de luz. Lo siento si esto se ha preguntado antes, hice una búsqueda (y busqué etiquetas).

Tim Post
fuente

Respuestas:

26

El Arduino es realmente popular, y es un hardware de código abierto, por lo que hay variaciones , incluidos los 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. Puedes hacer tu propio escudo de tablero o comprar algo como este Kit 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 pan utilizan un cable especial que tiene el chip dentro 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 un software para cargar su programa en el chip. Oculta la mayoría de los detalles de usted 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, hay esquemas por ahí. De hecho, creo recordar haber leído que fue bastante fácil construir un modelo anterior. Si busca "esquemas de Arduino" en su motor de búsqueda favorito, obtendrá buenos resultados.

En cuanto a los kits, el Maker Shed ofrece muchos artículos relacionados con Arduino en stock. Parecen enviarse alrededor del mundo. Algunos de interés incluyen:

El Shoppe en Wulfden (EE. UU.) Tiene un buen equipo de experimentación y parece que se envía internacionalmente.

Solarbotics (Canadá) tiene un kit ARDX Arduino Experimenter , un paquete de inicio Freeduino - Ultimate y un paquete de inicio Arduino - Basic (y Ultimate ), y parece que se envía internacionalmente.

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

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

Clinton Blackmore
fuente
1
Guau. ¡Gracias por el tiempo que pusiste en una respuesta tan informativa!
Tim Post
3
Me alegra oírlo. Después de escribir la respuesta, pensé: "¡No puedo creer que haya pasado cuarenta minutos respondiendo una pregunta en Internet!"
Clinton Blackmore
1
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 controlador instalado. (Ese usa un Atmega 16U2 para comunicación USB.)
exscape
12

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

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

bpijls
fuente
Gracias por el enlace. Seguramente lo comprobaré una vez que salgan las 'ruedas de entrenamiento' :)
Tim Post
Eso no es del todo cierto ... Arduino Leonardo y todas las placas basadas en Atmega32u4 pueden permitirte hacer HID y cualquier otro dispositivo personalizado
Dmitry Gusarov
8

Recomiendo encarecidamente el tutorial del presentador de presentaciones de diapositivas USB Tuxgraphics AVR. Utiliza un microcontrolador Atmel AVR, que tiene una gran comunidad de aficionados (avrfreaks, etc.) y una pila usb1.1 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 datalogger, y algunos de los ejemplos en obdev.org son solo eso (www.obdev.at/products/vusb/projects.html). Está escrito en limpio c, y la lista de piezas es de 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 poseo. (No estoy afiliado, ¡solo soy un cliente muy satisfecho!)

qartis
fuente
8

Otro dispositivo que he querido examinar 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 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 conozca un poco sobre electrónica y pueda codificar en C.

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

Sé que puede obtenerlo de DigiKey.ca . Busqué un digikey equivalente para Asia ; puedes obtener el papel de Farnell .

Clinton Blackmore
fuente
Según el sitio vinculado, parece que el tablero se puede programar a través de Jtag.
SingleNegationElimination
6

También es posible que desee comprobar Teensy .

tuupola
fuente
6

Si termina usando el Arduino, he portado la biblioteca V-USB (anteriormente AVR-USB) para ejecutarlo. 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 usa 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()

--Philip;

seguidor
fuente
5

Hay una serie de placas de desarrollador basadas en AVR-USB ahora.

Personalmente he usado los Teensy y Bumble-B mencionados anteriormente 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 tratar con el código USB de bajo nivel usted mismo. Sin embargo, ambos ejecutarán LUFA si lo desea.

Laen
fuente
4

Object Development ha creado una biblioteca para microcontroladores AVR que le permite crear dispositivos USB muy baratos por su cuenta (desde solo 2-3 $). GCC para AVR es compatible con Linux. Hay montones de dispositivos ya hechos. Echa un vistazo aquí: http://www.obdev.at/products/vusb/projects.html

avra
fuente
0

Depende de qué tipo de gadgets usb quieras hacer y de qué nivel avanzado tengas. Mencionas leds parpadeantes. Ese tipo de control se puede archivar 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. Al menos Microchips de 32 bits uC también admite host y modos 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 de Microchip / USB

varesa
fuente
0

Tenga en cuenta que no tiene que comenzar con un nivel electrónico tan bajo y ahorrar más tiempo de desarrollo para el "gizmo" en sí. Muchas compañías venden dispositivos USB para el mercado de bricolaje, por ejemplo:

http://www.yoctopuce.com

http://www.phidgets.com

martinm
fuente