Электромассажер
- Войдите на сайт для отправки комментариев
Привет мастерам!
Надо собрать электровибромассажер, состоящий из виброэлементов как этот (и скорее всего конкретно этот): http://www.precisionmicrodrives.com/vibrat...ibration-motors
Магнитный вибратор, от 10 и более штук (до 100-200 - количество должно быть гибким в конфигурации) подключается проводами к устройству и управляется программно, например через ардуино. Управляется отдельно каждый вибратор. Нужно из готовых частей (обозначить список, какие детали нужны, кроме самих LRA -> детали предоставляю или покрываю стоимость покупки) собрать устройство и приготовить API с несложным управлением (на си-подобном). Должно быть приемлемо для закрепления виброэлементов по всему телу с сохранением свободы движений (длина проводов). Например, для последующего вшития в одежду и использования на беговой дорожке.
Дополнительная желаемая опция - возможность подключения к компьютеру-телефону по usb и управление оттуда. В таком варианте крайне желательно, чтобы АПИ было для Java.
Саму программу писать не надо, только АПИ + инструктаж к применению. Плюс желательна небольшая инструкция устройства, в целях дальнейшего самостоятельного развития.
На уровне API нужно в любой момент (тик) держать массив амплитуд (силы) вибрации каждого элемента. Управлять скоростью тика/цикла. Скорость циклов не менее 10гц, без промежутков между ними.
Пишите. Сколько займет и сколько стоит, линк на ваш профиль, а также просто мысли (например... "такую готовую можно купить вот тут!"). Детали обсудить потом.
Привет мастерам!
Добрый день!
Вы уверены, что вам нужен именно программный интерфейс (API) а не пользовательский?
Я затрудняюсь себе представить случай, когда к такому несложному в реализации устройству может понадобится прослойка в виде API. Как мне видится - это просто усложнит устройство.
Хотя, с натяжкой, API можно будет обозвать протокол взаимодействия устройства со смартфоном...
Да, именно программный интерфейс. Суммарное поведение это будет довольно сложный ансамбль, кроме того нужно поле для экспериментов. Когда-нибудь интеграция с внешними источниками (звук итп.).
Я подозреваю, что мы вкладываем разный смысл в понятие API.
Мы говорим о прошивке для микроконтроллера, прошивка не выполняется в операционной среде, как вы планируете получать доступ к ее процедурам?
Или вы ведете речь о библиотеке, а прошивку будете писать сами?
Может вы простыми словами ("на пальцах"), объясните, что хотите получить? Просто задача для меня интересная и я хотел бы разобраться с заданием...
Да, объясню на пальцах, хотя тут просто. Я программист и не схемотехник, мне нужно кроме устройства дать средства разработки, т.е. язык, и все, что под ним, включая драйвера = API, т.е. набор доступных команд, достаточных для реализации нужной логики. Все что я умею, это писать на языке, используя готовые инструменты. Драйвер (управляющий LRA) будет включаться в виде библиотеки для данного языка, выставляя структуры данных (объекты - в данном случае внутреннее представление виброэлементов) и функции, которые я могу вызывать из программы, которую уже напишу сам. Язык си-подобный, может быть тот, что под ардуино, хотя вроде это не так удобно - желательнее, чтобы программа находилась и выполнялась на компьютере (а не закачивалась в плату).
Так что два варианта:
1. Создаете набор готовых функций для разработки под ардуино и объясняете, как этим программно управлять (хелло-ворлд сойдет) и как загружать программу в плату :)
2. Вместо этого создаете интерфейс плата-компьютер (по usb), и драйвер (с теми же функциями, что п.1) - желательно для Java.
Второй вариант предпочтительней, но подозреваю будет более трудоемок, поэтому рассмотрю и первый вариант.
Пример программы = как я хотел бы пользоваться этим (псевдо-си):
Здесь объект-интерфейс VibratorLib предоставляет все что нужно для реализации управления виброэлементами.
01
void
main() {
02
03
double
[] vibrators = VibratorLib.getVibrators();
// инициализация, юзаем API
04
05
double
maxV = VibratorLib.MAX_AMPLITUDE;
// макс. сила вибрации, из API
06
07
double
t =
0
;
double
dt =
0.1
;
double
dv =
0.1
;
08
09
while
(
true
) {
// базовый цикл
10
for
(
int
i=
0
; i<vibrators.length; i++) {
11
// устанавливаем значение каждого элемента (логика неважна)
12
vibrators[i] = Math.sin(t + i * dv) * maxV /
2
+ maxV /
2
;
13
}
14
t += dt;
if
(t >
2
* Math.PI) { t = t -
2
* Math.PI; }
15
16
VibratorLib.setVibrators(vibrators);
// посылаем значения всех элементов на устройство, через API
17
Thread.sleep(
50
);
// спим и вибрируем
18
}
19
20
}
Надеюсь понятно на этот раз, если что, спрашивайте.
Получается, что я вас понял правильно...
У вас, скажем так, сформировалось неправильное представление о программировании микроконтроллеров. По сути - вы очень сильно усложняете.
Если взять за основу ваше первоначальное задание (первый ваш пост) - все это можно сделать, причем без лишних телодвижений в виде создания API.
Сроки определены?
Если хотите - можем продолжить обсуждение по имейл:
StudioGippopotam@gmail.com
Ответил на имейл, жду ответа.
Интересуют расценки (время-деньги) на оба варианта:
1. Создаете набор готовых функций для разработки под ардуино и объясняете, как этим программно управлять (хелло-ворлд сойдет) и как загружать программу в плату :)
2. Вместо этого создаете интерфейс плата-компьютер (по usb), и драйвер (с теми же функциями, что п.1) - желательно для Java.
В обоих вариантах конечно плюс сборка самого устройства.
АPI ввиде DLL библиотеки (для любого языка высокого уровня) подойдет.
Типа подгружаем ddl в интерфейсное приложение( не важно на чем написанно с++, delfi, vbasik);
Далее юзаем экспортируемые функции. плату подключаем к компу через юсб
Колличество функций и их фунционал зависит только от фантазии разработчика тз.
Само устройство с 200(парными) выходами представляяется мне эдаким монстром. Насколько я понимаю изначально такого колличества выходов не требуется, поэтому есть смысл сделать материнскую( базовую) плату , с возможностью подключения к ней плат с выходами для моторов(по 10 штук к примеру) в виде шилдов.
Спасибо, сейчас договариваемся с Gippopotam, если что, напишу. Ваша схема с разделением плат нам тоже кажется самой разумной.
DLL хорошо, но завязано на винду. Возможно драйвер для USB буду писать сам, договорив протокол с контроллером ардуино.