2010-01-29 16 views
13

Estoy pensando en hacer un controlador físico (¿dispositivo?) Con perillas, botones y LED. Me gustaría interactuar con él usando Java (responder a las perillas, encender los LED, etc.). La razón por la que menciono Java es doble: primero, conozco bien Java . Segundo, escribí el resto del programa con el que necesito interactuar en Java (aunque hay formas de hablar con el programa Java desde otro idioma).Hacer un dispositivo USB, controlarlo En Java

Me gustaría que el dispositivo se conecte a través de USB y sea una plataforma (informática) independiente.

No tengo la menor idea de por dónde empezar, excepto para comenzar a leer el sitio web de Arduino. ¿Es esta mi mejor/única opción? ¿Hay algo más adecuado para comunicarse con Java?

Nota: sé que Arduino tiene algo que ver con Java (no sé qué), pero parece que el código debe ser escrito en un subconjunto de C.

¿Cómo voy a empezar a moverse en este ¿tema?


1 - No risa, por favor.

+3

risas Muffled ....: P – t0mm13b

Respuesta

5

El entorno de desarrollo Arduino está escrito en Java.

Pero el lenguaje estándar para escribir un programa para la plataforma Arduino es efectivamente C++.

La plataforma Arduino se basa en un chip Atmel AVR. Hay al menos un Java VM for AVR chips. Hay otros idiomas disponibles para el AVR como Forth y BASIC (aunque solo pude encontrar versiones comerciales, así que si quiere encontrarlos, busque "AVR BASIC").

El Arduino usa un puerto COM virtual para comunicarse entre la computadora host y él. Un puerto COM virtual emula una línea serie de estilo antiguo, pero está hecho con USB. Puede usar el Java communication API para que un programa Java que se ejecuta en la computadora host se comunique con su dispositivo físico.

+0

@R Samuel Klatchko: Tengo curiosidad, ¿es independiente de la plataforma, por ejemplo, Linux, lo sobre los conductores? He escuchado muchas buenas críticas sobre Arduino ... :) – t0mm13b

+0

El IDE es independiente de la plataforma, pero el controlador de puerto COM virtual no. Dicho esto, creo que las versiones recientes del kernel de Linux tienen incorporado el controlador necesario. –

+0

+1 Cosas fascinantes, especialmente el enlace al NanoVM. Aún digiriendo todo esto, pero parece que lo más fácil, aunque no suena como eso, es hacer la parte Arduino en el lenguaje Arduino ...? –

0

¿Acepta la plataforma de la computadora? ¿A qué plataformas te diriges? Eso dependería del controlador y del soporte para esa plataforma, ¿qué hace el dispositivo usb? Es un dispositivo de almacenamiento masivo ... Es posible que tenga que mirar a su alrededor y ver si puede encontrar un controlador de dispositivo que pueda comunicarse con el dispositivo ...

Espero que esto ayude, Recuerdos, Tom.

+0

Gracias por eso, lo siento si la pregunta no estaba clara: el dispositivo aún no está construido. –

+0

@yar: ¡no hay problema! :) – t0mm13b

0

Sé para el puerto serie que había bibliotecas que existían para interactuar con él (biblioteca rs232). Google para Java y USB devolvió varias respuestas (la primera se llamó jUSB). Ese sería el primer tipo de cosa que estaría buscando.

+0

Correcto, pero ¿qué harías? Saca tu soldador e improvisa? Tampoco tengo idea de cómo construir un dispositivo USB, aunque sí tengo personas que pueden soldar cosas para mí y seguir esquemas (aunque personalmente no sé nada al respecto). –

1

¿Puede ampliar su necesidad de un dispositivo personalizado? Me parece que el diseño de hardware tiene una barrera bastante alta para la entrada y que la mayoría de las aplicaciones en las que puedo pensar se resolverían mejor mediante la reutilización de una pieza existente de hardware del controlador del juego. Si realmente necesita hardware nuevo, entonces le sugiero que empiece por buscar en Google el "kit de desarrollo USB" o "placa de desarrollo USB" que le proporcionará enlaces como this, this y this.

En cuanto al trabajo con hardware USB de Java, he jugado un poco con la biblioteca JUSB y parece prometedor, pero parece estar limitado a Linux solo porque la versión de Windows de la biblioteca nativa no se ha escrito Las alternativas se pueden encontrar buscando en Google 'HID java'.

+0

Gracias Jherico. El dispositivo tendría algunos de estos "codificadores rotatorios sin fin con anillos LED: estos controles no tienen puntos finales, por lo que ofrecen un movimiento total de 360 ​​°. Estos controles ofrecen una resolución variable dependiente de la velocidad, por lo que mover el codificador lentamente proporciona una resolución más fina que mover el codificador con rapidez." También tendría algunos "botones con respaldo LED". Eso es todo por primera vez ... Espero que ayude un poco. Ahora que realmente lo escribo, suena desalentador. –

3

Para algunos codificadores y botones, es probable que desee implementar un dispositivo USB HID. Si va a producir más de un par de ellos, querrá hacer una tabla personalizada. Consulte V-USB, una biblioteca de código abierto para hacer dispositivos USB HID que utilizan microcontroladores Atmel. Tienen muchos ejemplos de proyectos que usan esta biblioteca.

Probablemente pueda hacer que parezca un joystick HID, utilizando los codificadores para producir información del eje X/Y y que los botones actúen como botones. Podrían utilizar las API de juegos Java estándar para leer los valores del joystick.

+0

Genial, gracias, investigaré esto. –

Cuestiones relacionadas