Электромассажер

TheMachine
Offline
Зарегистрирован: 19.05.2015

Привет мастерам!

Надо собрать электровибромассажер, состоящий из виброэлементов как этот (и скорее всего конкретно этот): http://www.precisionmicrodrives.com/vibrat...ibration-motors
Магнитный вибратор, от 10 и более штук (до 100-200 - количество должно быть гибким в конфигурации) подключается проводами к устройству и управляется программно, например через ардуино. Управляется отдельно каждый вибратор. Нужно из готовых частей (обозначить список, какие детали нужны, кроме самих LRA -> детали предоставляю или покрываю стоимость покупки) собрать устройство и приготовить API с несложным управлением (на си-подобном). Должно быть приемлемо для закрепления виброэлементов по всему телу с сохранением свободы движений (длина проводов). Например, для последующего вшития в одежду и использования на беговой дорожке.

Дополнительная желаемая опция - возможность подключения к компьютеру-телефону по usb и управление оттуда. В таком варианте крайне желательно, чтобы АПИ было для Java.

Саму программу писать не надо, только АПИ + инструктаж к применению. Плюс желательна небольшая инструкция устройства, в целях дальнейшего самостоятельного развития.

На уровне API нужно в любой момент (тик) держать массив амплитуд (силы) вибрации каждого элемента. Управлять скоростью тика/цикла. Скорость циклов не менее 10гц, без промежутков между ними.

Пишите. Сколько займет и сколько стоит, линк на ваш профиль, а также просто мысли (например... "такую готовую можно купить вот тут!"). Детали обсудить потом.

 

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

TheMachine пишет:

Привет мастерам!

Добрый день!

Вы уверены, что вам нужен именно программный интерфейс (API) а не пользовательский?

Я затрудняюсь себе представить случай, когда к такому несложному в реализации устройству может понадобится прослойка в виде API. Как мне видится - это просто усложнит устройство.

Хотя, с натяжкой, API можно будет обозвать протокол взаимодействия устройства со смартфоном...

TheMachine
Offline
Зарегистрирован: 19.05.2015

Да, именно программный интерфейс. Суммарное поведение это будет довольно сложный ансамбль, кроме того нужно поле для экспериментов. Когда-нибудь интеграция с внешними источниками (звук итп.).

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

Я подозреваю, что мы вкладываем разный смысл в понятие API.

Мы говорим о прошивке для микроконтроллера, прошивка не выполняется в операционной среде, как вы планируете получать доступ к ее процедурам?

Или вы ведете речь о библиотеке, а прошивку будете писать сами?

 

Может вы простыми словами ("на пальцах"), объясните, что хотите получить? Просто задача для меня интересная и я хотел бы разобраться с заданием...

TheMachine
Offline
Зарегистрирован: 19.05.2015

Да, объясню на пальцах, хотя тут просто. Я программист и не схемотехник, мне нужно кроме устройства дать средства разработки, т.е. язык, и все, что под ним, включая драйвера = API, т.е. набор доступных команд, достаточных для реализации нужной логики. Все что я умею, это писать на языке, используя готовые инструменты. Драйвер (управляющий LRA) будет включаться в виде библиотеки для данного языка, выставляя структуры данных (объекты - в данном случае внутреннее представление виброэлементов) и функции, которые я могу вызывать из программы, которую уже напишу сам. Язык си-подобный, может быть тот, что под ардуино, хотя вроде это не так удобно - желательнее, чтобы программа находилась и выполнялась на компьютере (а не закачивалась в плату).

Так что два варианта:

1. Создаете набор готовых функций для разработки под ардуино и объясняете, как этим программно управлять (хелло-ворлд сойдет) и как загружать программу в плату :)

2. Вместо этого создаете интерфейс плата-компьютер (по usb), и драйвер (с теми же функциями, что п.1) - желательно для Java.

Второй вариант предпочтительней, но подозреваю будет более трудоемок, поэтому рассмотрю и первый вариант.

 

Пример программы = как я хотел бы пользоваться этим (псевдо-си):

Здесь объект-интерфейс VibratorLib предоставляет все что нужно для реализации управления виброэлементами.

01void 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}

Надеюсь понятно на этот раз, если что, спрашивайте.

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

Получается, что я вас понял правильно...

У вас, скажем так, сформировалось неправильное представление о программировании микроконтроллеров. По сути - вы очень сильно усложняете.

Если взять за основу ваше первоначальное задание (первый ваш пост) - все это можно сделать, причем без лишних телодвижений в виде создания API.

Сроки определены?

Если хотите - можем продолжить обсуждение по имейл:

StudioGippopotam@gmail.com

TheMachine
Offline
Зарегистрирован: 19.05.2015

Ответил на имейл, жду ответа.

Интересуют расценки (время-деньги) на оба варианта:

1. Создаете набор готовых функций для разработки под ардуино и объясняете, как этим программно управлять (хелло-ворлд сойдет) и как загружать программу в плату :)

2. Вместо этого создаете интерфейс плата-компьютер (по usb), и драйвер (с теми же функциями, что п.1) - желательно для Java.

В обоих вариантах конечно плюс сборка самого устройства.

Колек
Offline
Зарегистрирован: 16.04.2015

АPI ввиде DLL библиотеки (для любого языка высокого уровня) подойдет.

Типа подгружаем ddl в интерфейсное приложение( не важно на чем написанно с++, delfi, vbasik);

Далее юзаем экспортируемые функции.   плату подключаем к компу через юсб

Колличество функций и их фунционал зависит только от фантазии разработчика тз.

 

Само устройство с 200(парными) выходами представляяется мне эдаким монстром. Насколько я понимаю изначально такого колличества выходов не требуется, поэтому есть смысл сделать материнскую( базовую) плату , с возможностью подключения к ней плат с выходами для моторов(по 10 штук к примеру) в виде шилдов. 

 

 

TheMachine
Offline
Зарегистрирован: 19.05.2015

Спасибо, сейчас договариваемся с Gippopotam, если что, напишу. Ваша схема с разделением плат нам тоже кажется самой разумной.

DLL хорошо, но завязано на винду. Возможно драйвер для USB буду писать сам, договорив протокол с контроллером ардуино.