[железо] Наиболее дешёвый способ детектить замыкающиеся контакты

bleyman

Мне кажется что сюда, а не в Hard & Soft где люди обсуждают совсем не то.
Вот внезапно мне дико захотелось применить свои программисткие скиллы к моему хобби — фехтованию на саблях, а именно сделать ghetto scoring device как можно дешевле (стоимость уже имеющихся вещей, вроде ноутбуков, не учитывается).
Задача: нужно поиметь возможность программно детектить замыкания в двух парах контактов. Типа, player 1 sabre + player 2 electric jacket, и наоборот.
Система, насколько я понимаю, должна игнорировать контакт между player 1 sabre and player 1 jacket (ну, если сам себя нечаянно коснулся). Я не уверен что это действительно так уж сильно нужно, но насколько я понимаю электричество, если сделать эту фигню при помощи двух отдельных цепей, вроде двух батареек с LED и шняжкой которая заставляет диод продолжать гореть после контакта, это физически можно сделать. Ну то есть что соединение второго плюса с первым минусом не генерит ток.
Ах, ну и типа должна быть фича что если между первым и вторым контактом проходит 120 мс или меньше, то загораются оба диода, иначе соответствующий первому контакту.
Ну и вот, как такую хрень можно сделать наиболее дёшево, чисто для тренировок?
Мои варианты:
1. разобрать дешёвую мышь, поподсоединять контакты к кнопкам, написать прожраммку на питоне чтобы детектить нажатия кнопок. Проблема: наверняка у них общая земля, так что де факто получится три провода вместо четырёх, и самоконтакт будет защитываться противнику.
2. разобрать дешёвую клавиатуру, использовать клавиши ctrl и alt, которые вроде бы могут замыкаться отдельно. Проблема: нифига не гарантирует что у них не общая земля (см. выше), только что у них отдельные детектящие ножки.
3. Попытаться поискать в интернетах как можно доступиться к пинам USB/Ethernet/COM-ports напрямую. Ну, я попытался, не помогло, алсо, опять же, кроме Ethernet я дико не уверен что у них не общая земля.
4. Забить на использование ноутбука и купить какой-нибудь Arduino. Они дорогие, от 50 евро начинаются, но это ок. Проблема в том, что я блджад по-прежнему не уверен что у ихейных ножек не общая земля, так что я смогу детектить замыкание первой пары контактов или второй пары, но не замыкание напряжения первой пары с землёй второй. Алсо, какое самое дешёвое ардуино-подобное устройство которое не требует наличия отдельного программатора для микрочипа?
Ваши варианты?

PooH

а если модулировать сигналы от разных шпаг
но это все фигня
думаю разбирающийся электронщик тебе за пиво схему набросает, а еще заодно пиво и микруху разведет и прошивку зальет
по сути там 2 источника сигнала и 4 пути их прохождения, думаю, что и на транзисторах собрать можно

margadon

во-первых, ардуины дешевле стоят
во-вторых, любая ардуина, на которой есть усб-порт, не требует программатора

bleyman

@: ну я не люблю паять сам, и просить кого-то тоже не хочу (хотя тоже вариант конечно).
Мне бы понапокупать в интернетах дешёвую хрень у которой множество ножек с независимыми землями (оптически развязанные это же не то, да?).
@spin:
> во-первых, ардуины дешевле стоят
где?
> во-вторых, любая ардуина, на которой есть усб-порт, не требует программатора
Ну да, но я спрашивал про что-то совсем наиболее дешёвое, скажем за 20 евро, и не обязательно Ардуино.
Алсо, ни у кого нет идей как всё же приспособить ноутбук для DSP? Ну, там, я не знаю, ещё идея:
6. использовать порт микрофона. Он, правда, один, вроде. Мне нужно два. Line-in может ещё быть в типичном ноуте?
EDIT: а вот кстати никто не знает, типичный microphone in jack, он обычно сделан как моно в материнках, или если я туда воткну разобранные наушники и буду замыкать контакты, то он мне позволит различить замыкание левого и правого канала с землёй?

Dasar

если будешь подключать к ноуту, то проще тогда взять usb-платку с дискретными входами.

bleyman

Да, я очень хочу такую штуку, как они называются по-английски и где их купить? И как узнать есть ли у них раздельная земля (и как это называется по-научному и по-английски)?

Dasar

я, в основном, сталкиваюсь с промышленными вариантами - они дорогие (в районе 100-200$ за 8-16 каналов)
искать стоит что-то типа: usb digital input
сейчас бегло посмотрел:
- есть usbmicro: http://www.usbmicro.com/ (но они умеют много больше, чем тебе надо)
- и похоже arduino Uno подходит (пишут, что поддерживает usb и достаточно только написать прогу для компа - в самой arduino уже есть драйвер для прокидывания данных со входов) http://store.arduino.cc/ww/index.php?main_page=product_info&...
ps
цепи ты, кстати, можешь развязать через релюхи - т.е. сами входы могут быть и с одним общим проводом

Eka74

Чтобы обойти проблему с общей землей тебе нужно собрать на ардуино такую схему:
1й чел. костюм подключен к "входу", подтянутому резистором к земле ( 0 вольт) , орудие 2го чела подключено к лог 1( шине питания — +5В)
2й костюм подключен к входу, продтянутому к +5В, орудие 1го подключено к земле. Подтяжка нужна, чтобы избавиться от наводок и ложных срабатываний на входах.
В результате, касания своих костюмов никак не изменят напряжение на входах. На касания противником можно повестиь аппаратные прерывания.
Ещё стоит помнить, что БП компов могут не изолировать от сети 220В , и схема с ноутбуком, подключенным к сети может быть опасна.

elenangel

эм. разобрать две мыши?

beluchy

с мышью можно так:
Vcc - 10кОм - Сабля1
Vcc - 100кОм - выход кнопки1 - куртка1
Vdd - 10кОм - Сабля2
Vdd - 100кОм - выход кнопки 2 - куртка2
касание сабля2-куртка1 генерит скажем Button1 Down
касание сабля1-куртка2 генерит Button2 Up
Самокасания не генерят ничего
Касания сабля-сабля не генерят ничего
Касания куртка - куртка приводят к тому, что на выходах кнопок, откуда считывается напряжение, будет половина напряжения питания. В кмоп логике обычно логический ноль - 0.3Vcc, логическая 1 - 0.7Vcc, т.е. срабатывания кнопок не произойдет. Хотя это может быть не очень надежно.
С контроллером тоже не сложно: нужно 4 ноги (на каждую саблю и куртку). Куртки через сопротивление подключены к земле. Включаем единицу на сабле1, саблю 2 включаем на вход, считываем напряжение на куртке 2. Включаем единицу на сабле2, саблю 1 включаем на вход, считываем напряжение на куртке 1. Повторяем процедуру.

Dasar

если использовать мышь, то как сделать, чтобы она с одной стороны не определялась как мышь (чтобы не мешала работе на компе), а с другой стороны, чтобы с нее можно было читать данные?

yroslavasako

если использовать мышь, то как сделать, чтобы она с одной стороны не определялась как мышь (чтобы не мешала работе на компе), а с другой стороны, чтобы с нее можно было читать данные?
xinput disable - чтобы не мешалась, чтобы считывалось - читай напрямую из файла устройства.

apl13

Лучше сразу мышами драться! :duel:

Dasar

чтобы считывалось - читай напрямую из файла устройства.
что за протокол там будет?

yroslavasako

там что-то вполне посильное, я особо не вникал.

Temach

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

bleyman

@: АХУЕТЬ, ДАЙТЕ ДВЕ. В буквальном смысле, по 20 евро за штуку я пожалуй сразу парочку закажу, буду из них делать роботов если не пригодятся. Офигеть ваще до чего технология дошла, изначально же они за сотни баксов продавались вроде.
Короче, издевательства над мышами и клавиатурами отменяются, они не настолько дешевле стоят чтобы заморачиваться. С Ардуиной получится даже без компа.
@:
> С контроллером тоже не сложно: нужно 4 ноги (на каждую саблю и куртку). Куртки через сопротивление подключены к земле. Включаем единицу на сабле1, саблю 2 включаем на вход, считываем напряжение на куртке 2. Включаем единицу на сабле2, саблю 1 включаем на вход, считываем напряжение на куртке 1. Повторяем процедуру.
А это, дяди из контроля за радиоэфиром по голове не настучат? Я к тому, что если это делать например 1000 раз в секунду (плюс микроконтроллер же пытается прямоугольный край делать), то человек в железной куртке плюс двадцать метров кабеля представляет собой неебическую антенну. То есть даже если маломощность устройства не позволит заглушить всё в каком-то радиусе, не уйдёт ли большая часть пара в свисток, так сказать?
------------
Так, смотрите, чуваки, я внезапно кажется придумал как развести земли.
Добавляем ещё одну батарейку и транзистор, батарейка подключена к коллектору и через размыкатель в виде сабли одного чела и куртки другого к базе. Ещё коллектор подключён к земле Ардуины, а эмиттер — к одной из его читающих ножек (я не знаю есть ли у него опция включить встроенный дикий резистор на +5v там (как у 8051 вроде была), ну можно добавить если чё).
Тогда когда первая цепь разомкнута, транзистор выключен, Ардуина видит 1 на входе. Цепь замыкается, транзистор открывается, Ардуина видит 0.
Вторая пара сабля-куртка подключена к Ардуининой земле и какому-нибудь пину напрямую.
Я набросал схемку, вроде неправильные касания (сабля-сабля, сабля-своя куртка) ни к чему плохому не приводят.
Я последний раз на электрические схемы смотрел в школе, это вообще будет работать? И есть ли у него название? Алсо, я правильно понимаю, что эта вторая батарейка будет практически вечной, потому что даже в замкнутом состоянии через неё не будет течь ток, только совсем немножко при замыкании чтобы превозмочь ёмкость проводов?
Есть ли у нас на форуме места где тусуются более электрически-одарённые люди?

beluchy

А это, дяди из контроля за радиоэфиром по голове не настучат? Я к тому, что если это делать например 1000 раз в секунду (плюс микроконтроллер же пытается прямоугольный край делать), то человек в железной куртке плюс двадцать метров кабеля представляет собой неебическую антенну. То есть даже если маломощность устройства не позволит заглушить всё в каком-то радиусе, не уйдёт ли большая часть пара в свисток, так сказать?
чтобы эффективно излучать нужна антенна хотябы пол длины волны - 150км на частоте в 1 кГц
вообще килогерц - это звуковая частота. тебе еще за наушники на проводе не настучали по голове?
фронт конечно может срезать, но в конце концов тебе и 100 Гц хватит )

beluchy

Так, смотрите, чуваки, я внезапно кажется придумал как развести земли.
Добавляем ещё одну батарейку и транзистор, батарейка подключена к коллектору и через размыкатель в виде сабли одного чела и куртки другого к базе. Ещё коллектор подключён к земле Ардуины, а эмиттер — к одной из его читающих ножек (я не знаю есть ли у него опция включить встроенный дикий резистор на +5v там (как у 8051 вроде была), ну можно добавить если чё).
Тогда когда первая цепь разомкнута, транзистор выключен, Ардуина видит 1 на входе. Цепь замыкается, транзистор открывается, Ардуина видит 0.
Вторая пара сабля-куртка подключена к Ардуининой земле и какому-нибудь пину напрямую.
Ты не попутал коллектор с эмиттером? Биполярный транзистор открывается током через переход база-эмиттер.

beluchy

вобщем если я правильно тебя понял, земля в твоей схеме все равно общая, батарейка не нужна - на саблю достаточно подать напряжение питания через защитное сопротивление 1-10кОм, и фактически ты реализуешь предложение Чупакабры и то что я писал про мышь. Ах да, работать будет )
С другой стороны если ты используешь микроконтроллер, мне кажется, что пара строчек кода лучше чем пара компонентов на плате.

evgen5555

имхо проще через емкостное сопротивление схему мастерить

Temach

попробуй так

beluchy

у тебя либо полярность питания неправильная в схеме, либо транзисторы должны быть npn

vall

http://mchck.org/ очень простая и дешёвая платка. пока ещё не продают.

ppplva

Ну и у китайцев еще дешевле:
http://www.aliexpress.com/item/Free-Ship-Wholesale-IC-Parts-...
Оставить комментарий
Имя или ник:
Комментарий: