Создайте USB-устройство, управляйте им в Java

Я думаю о том, чтобы сделать физический контроллер (устройство?) с ручками, кнопками и светодиодами. Я хотел бы взаимодействовать с ним с помощью Java (ответить на ручки, зажечь светодиоды и т. д.). Я упоминаю Java по двум причинам: во-первых, я хорошо знаю Java1. Во-вторых, я написал остальную часть программы, с которой мне нужно взаимодействовать, на Java (хотя есть способы общаться с программой Java с другого языка).

Я хотел бы, чтобы устройство подключалось через USB и было независимым от (компьютерной) платформы.

У меня нет ни малейшего представления, с чего начать, кроме как начать читать веб-сайт Arduino. Это мой лучший/единственный вариант? Есть ли что-то более подходящее для связи с Java?

Примечание: я знаю, что Arduino имеет какое-то отношение к Java (не уверен, что), но похоже, что код должен быть написан на подмножестве C.

Как мне двигаться дальше по этой теме?


1 – Не смейтесь, пожалуйста.


person Dan Rosenstark    schedule 29.01.2010    source источник


Ответы (6)


Среда разработки Arduino написана на Java.

Но стандартным языком, на котором вы пишете программу для платформы Arduino, по сути является C++.

Платформа Arduino основана на чипе Atmel AVR. Существует как минимум одна виртуальная машина Java для микросхем AVR. Для AVR доступны и другие языки, такие как Forth и BASIC (хотя мне удалось найти только коммерческие версии, поэтому я Если вы хотите их найти, выполните поиск по запросу «AVR BASIC»).

Arduino использует виртуальный COM-порт для связи между хост-компьютером и ним. Виртуальный COM-порт эмулирует последовательную линию старого стиля, но делается с помощью USB. Вы можете использовать API связи Java, чтобы программа Java, работающая на хост-компьютере, взаимодействовала с ваше физическое устройство.

person R Samuel Klatchko    schedule 29.01.2010
comment
@R Samuel Klatchko: Мне любопытно, не зависит ли это от платформы, скажем, Linux, а как насчет драйверов? Я слышал много хороших отзывов об Arduino... :) - person t0mm13b; 29.01.2010
comment
IDE независима от платформы, но драйвер виртуального COM-порта — нет. Тем не менее, я считаю, что последние версии ядра Linux имеют встроенный необходимый драйвер. - person R Samuel Klatchko; 29.01.2010
comment
+1 Увлекательный материал, особенно ссылка на NanoVM. Все еще перевариваю все это, но кажется, что самое простое, хотя это и не звучит так, — это сделать часть Arduino на языке Arduino...? - person Dan Rosenstark; 29.01.2010
comment
Я использую Arduino уже больше года — отличная кроссплатформенная поддержка Windows и Linux. Возьмите книгу «Начало работы с Arduino», она очень помогла мне, когда я только начинал. Если вы знаете Java, язык Arduino будет несложным. - person JohnForDummies; 12.02.2010
comment
Спасибо @JohnForDummies, я только сейчас увидел этот комментарий. Я проверю это (скоро). Лучший. - person Dan Rosenstark; 27.11.2011

Для некоторых энкодеров и кнопок вы, вероятно, захотите реализовать устройство USB HID. Если вы собираетесь производить больше, чем пару из них, вам нужно будет сделать нестандартную доску. Ознакомьтесь с V-USB, библиотекой с открытым исходным кодом для создания USB HID-устройств. с использованием микроконтроллеров Atmel. У них есть куча примеров проектов, использующих эту библиотеку.

Вероятно, вы могли бы сделать это похожим на HID-джойстик, используя энкодеры для получения информации об осях X/Y, а кнопки действовали как кнопки. Вы можете использовать стандартные игровые API Java для чтения значений джойстика.

person Ben Combee    schedule 01.02.2010

Можете ли вы рассказать о своих потребностях в специальном устройстве? Мне кажется, что проектирование аппаратного обеспечения имеет довольно высокий барьер для входа, и что большинство приложений, о которых я могу думать, было бы лучше решить, перепрофилировав существующую часть аппаратного обеспечения игрового контроллера. Если вам действительно нужно новое оборудование, я предлагаю вам начать с поиска в Google «Комплект для разработки USB» или «Плата для разработки USB», которые дадут вам ссылки, такие как это, это и это.

Что касается работы с USB-оборудованием из Java, я немного поиграл с библиотекой JUSB, и она выглядит многообещающе, но, похоже, она ограничена Linux только потому, что версия родной библиотеки для Windows половина библиотеки не была написана. . Альтернативы можно найти, погуглив «HID java».

person Jherico    schedule 29.01.2010
comment
Спасибо, Джерико. Устройство будет иметь некоторые из этих бесконечных поворотных энкодеров со светодиодными кольцами: у этих элементов управления нет конечных точек, поэтому они обеспечивают полное движение на 360 ̊. Эти элементы управления обеспечивают переменное разрешение, зависящее от скорости, поэтому медленное перемещение энкодера дает более точное разрешение, чем быстрое перемещение энкодера. У него также будет несколько кнопок со светодиодной подсветкой. Вот и все для первого запуска... Надеюсь, это немного поможет. Теперь, когда я на самом деле пишу это, это звучит пугающе. - person Dan Rosenstark; 29.01.2010

Хорошо, компьютерная платформа независима? На какие платформы вы ориентируетесь? Это будет зависеть от драйвера и поддержки указанной платформы, что делает USB-устройство? Это запоминающее устройство... Возможно, вам придется осмотреться и посмотреть, сможете ли вы найти драйвер устройства, который может взаимодействовать с устройством...

Надеюсь, это поможет. С уважением, Том.

person t0mm13b    schedule 29.01.2010
comment
Спасибо за это, извините, если вопрос был не ясен: устройство еще не собрано. - person Dan Rosenstark; 29.01.2010

Я знаю, что для последовательного порта существовали библиотеки для взаимодействия с ним (библиотека rs232). Поиск в Google для java и USB дал несколько ответов (первый назывался jUSB). Это был бы первый тип вещей, которые я бы искал.

person Matt    schedule 29.01.2010
comment
Верно, но тогда что бы вы сделали? Достать паяльник и импровизировать? Я тоже понятия не имею, как собрать USB-устройство, хотя у меня есть люди, которые могут что-то паять и следовать схемам (хотя лично я ничего об этом не знаю). - person Dan Rosenstark; 29.01.2010

пример подключения java usb к микроконтроллеру freescale:

http://javausbapi.blogspot.com/

person jean88    schedule 22.05.2010
comment
возникли проблемы с пониманием, если это относится к делу ...? - person Dan Rosenstark; 22.05.2010