19.10.2008

Танцевальный коврик с USB интерфейсом (USB DANCE PAD)

1. Введение

Данный проект представляет собой коврик, для игры в танцевальные игры. Такие как Stepmania (http://www.stepmania.com/), In The Groove (ITG) и др. Представляет собой квадрат 90см на 90см, разделенный на квадраты по 30х30 см, шесть из которых являются активными кнопками.

1.1 Общие возможности

Основные возможности устройства:

  • работа через USB без установки драйверов, как стандартный джойстик,
  • полная автокалибровка,
  • полное отсутствие механических частей,
  • индикация активности устройства и нажатия кнопок,
  • два режима: джойстик с 6 кнопками и джойстика с 2 кнопками и 2 осями,
  • надежная, удобная, стойка поверхность коврика,
  • полностью разборная конструкция (шнур USB, электронный блок, сенсорная часть).

1.2 Аналоги

Не могу сказать, что очень сильно искал, но найденные аналоги были сделаны или только с 4-мя кнопками, или без индикации или на игровой порт, а не USB. Двухрежимных вариантов вообще не нашел. Кроме того, все ни использовали схему, которая не показала себя надежной. Также были варианты на PIC-контроллерах, с которым я дела вообще не имел, и связываться пока не хочу.

2. Теория и технологии

2.1 Сенсор

Принцип действия основан на технологии емкостного сенсора. Базовая схема была собрана, протестирована и описана некоторое время назад. Краткая заметка есть здесь: http://www.artem.ru/cgi-bin/news?c=v&id=738

Принцип прост. Две ноги МК связаны друг с другом резистором большого номинала, мы выводим на одну ногу единицы и считаем, с большим разрешением, сколько тиков пройдет до момента появления 1 на другой ноге. Если после резистора подключить площадку из проводника, то емкость станет значительной и счетчик покажет какое-то значение. Если же к проводнику дотронется человек, то так как его емкость довольно значительна (кажется около 100pF), то показания счетчика значительно вырастут (на реальном устройстве значение без человека были около 2000, а с качанием около 4000-6000). Причем человек может и не дотрагиваться до проводника - они могут быть разделены не очень толстым диэлектриком.

Основная проблема - это перекрестное влияние одной кнопки на другую. Если, например, использовать одну ногу МК как принимающую, а 4 ноги, как отдающие сигнал на зарядку площадок кнопок, то, как было проверено, возникает довольно сильное перекрестное влияние площадок друг на друга, вплоть до того, что определить, какая именно кнопка была нажата, или было ли нажатие одной или нескольких кнопок одновременно, представляется невозможным.

Поэтому я пошел самым прямым путем, который себя хорошо зарекомендовал и ни разу меня не подвел - на каждую кнопку выделил свою пару ног МК. Это расточительно, но очень надежно, да и потребности в ногах все равно большой нет.

В первой версии коврика, которую пришлось разобрать, выяснилось, что особо важно, чтобы провода в коврике проходили без налегания друг на друга, не были сильно перепутаны, а также соединение коврик - электронный блок должно быть хорошего качества, с максимальной изоляцией соседних проводов и без электрических помех. В первой версии для соединения использовался разъем IDC-14, по которому также подавалось питание на 4 светодиода встроенных в коврик. К сожалению, упаковка проводов в IDC оказалась или слишком плотной или просто неудачной, но одна кнопка мешала другой (спонтанные срабатывания или недозаряд), а также, включение или выключение светодиодов оказывало влияние на получаемый сигнал. В итоге, от светодиодов в коврике пришлось отказаться, а разъем сделать однорядный 8 контактный, что также уменьшило количество проводов под ковриком, что улучшило чувствительность и точность замера.


Отладка макетной версии (еще до первой).

2.2 USB

Для подключения USB использовался популярный проект AVR USB http://www.obdev.at/products/avrusb/index.html, который позволяет на копеечной электронной базе создать низкоскоростной программный USB стек. Для джойстиков более чем достаточно.

За основу кода для джойстика был взять код джойстика из проекта http://avrusb.wikidot.com/project:usbjoy

2.3 Крепеж

Везде по ходу проекта используется ТЕРМОКЛЕЙ! Без него это было бы невозможно. Огромное спасибо изобретателю термоклея.

Для тех, кто не знает что это, вот его фото:

Второе, что надо для крепежа - клей "жидкие гвозди".

3. Электронная часть

3.1 Схема


электронный блок


разводка в коврике

3.2 Перечень деталей

б/о - atmega8-16 (корпус PDIP 28)

D1  - стабилитрон (диод Зеннера), 3.6В
D2  - стабилитрон (диод Зеннера), 3.6В
D3  - светодиод 5мм (индикатор нажатия)
D4  - светодиод 5мм (индикатор нажатия)
D5  - светодиод 5мм (индикатор нажатия)
D6  - светодиод 5мм (индикатор нажатия)
D7  - светодиод 5мм (индикатор питания)

C1  - коденсатор керамический 100 nF
C2  - коденсатор керамический 100 nF
C3  - коденсатор керамический 22 pF
C4  - коденсатор керамический 22 pF
C5  - коденсатор электролитический 10 мкФ

R1  - резистор 0.25Вт, 2.2 Мом, но можно в диапазоне 1.8-2.7 МОм
R2  - резистор 0.25Вт, 2.2 Мом, но можно в диапазоне 1.8-2.7 МОм
R3  - резистор 0.25Вт, 2.2 Мом, но можно в диапазоне 1.8-2.7 МОм
R4  - резистор 0.25Вт, 2.2 Мом, но можно в диапазоне 1.8-2.7 МОм
R5  - резистор 0.25Вт, 2.2 Мом, но можно в диапазоне 1.8-2.7 МОм
R6  - резистор 0.25Вт, 2.2 Мом, но можно в диапазоне 1.8-2.7 МОм
R7  - резистор 0.25Вт, 220 Ом
R8  - резистор 0.25Вт, 220 Ом
R9  - резистор 0.25Вт, 220 Ом
R10 - резистор 0.25Вт, 220 Ом
R11 - резистор 0.25Вт, 220 Ом
R12 - резистор 0.25Вт, 1 МОм
R13 - резистор 0.25Вт, 68 Ом
R14 - резистор 0.25Вт, 10 КОм
R15 - резистор 0.25Вт, 1.5 КОм
R16 - резистор 0.25Вт, 68 Ом

Q1  - низкопрофильный (корпус HC-49S) кварцевый резонатор 16Mhz первой гармоники

PB1 - узкая кнопка (нормально разомкнута) типа TC-3121

X1  - гнездо (папа) IDC 10 на плату
X3  - USB гнездо на плату USBB-1J
X2  - 8 Pin угловой разъем (папа) (типа 6604PRA-08, можно взять больше: 10, 12..., и отломать лишнее)
б/о - разъем на кабель 8pin (для X2), мама, типа 2226A-08
    - вкладки в разъем на кабель (лучше взять 10-12, так как могут быть дефекты и можно испортить)

КОРПУС - пластиковый, 10 х 6х 2.5 см 

3.3 Пояснения

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

Выход GND на разъем коврика сделан "на всякий случай", так как при тестировании выяснилось, что у меня в доме есть одно месте, где идут особенно сильные ЭМ помехи. Это место находится в районе компьютера, у которого внизу корпуса установлена помпа для водяного охлаждения. В радиусе около метра коврик просто отказывался работать как надо (нажатие на кнопку не приводило к срабатыванию, или же кнопка периодически "помигивала", когда нога стоит на ней, вместо того, чтобы постоянно "гореть"). В этой ситуации, если подключить провод к GND устройства и положить его кольцом вокруг коврика, то ситуация улучшается, однако, все равно периодические глюки остаются. Это, вполне возможно, связано с тем, что у меня в текущей квартире просто нет вообще никакой земли в розетках.

3.4 Изготовление

  1. Делаем плату по технологии ЛУТ или фотоспособом. (если ступор по этому поводу, то см. Яндекс). Внимание! Берите хороший текстолит! У плохого под светодиодами могут отслоиться дорожки.
  2. Монтируем все компоненты на плату. Светодиоды и кнопку надо закрепить так, чтобы они были ниже, чем крышка предполагаемого корпуса. Чип впаивается на плату, а не в сокет, так как надо бороться с паразитными емкостями.
  3. Делаем проводные перемычки между точками А-А, B-B, также между 0-0,1-1,2-2,3-3,4-4 (это около МК, через его корпус, к четырем светодиодам).



  4. Подключаем программатор и USB
  5. Если плата доступна программатору, то компилируем код (или берем готовый hex файл) и заливаем. Если плата недоступна программатору, то или решаем проблему или все выкидываем.
  6. Выставляем правильно FUSES!!! Здесь ошибка может быть подобна смерти! Помните, что 0 - это запрограммировано, а 1 - нет. Если все сделано правильно и все работающее, то после этого windows должна сразу найти новое устройство "USB DANCE PAD" и замигают по кругу светодиоды.
  7. Запускаем панель управления, "игровые устройства", там должно быть это устройство. Кликаем на нем дважды. Будет видно, что у него 6 кнопок.
  8. Проверяем работоспособность прикасаясь к контактам разъема коврика по очереди. Кнопки на экране должны загораться по очереди.
  9. Вставляем плату в корпус, прикидываем ее положение, высверливаем дырки для USB разъема, разъема для коврика, дырки под 5 светодиодов сверху, очень маленькую дырку (1-2мм) ровно над кнопкой, для переключения режима булавкой или иглой.
  10. Вставляем плату, фиксируем ее термоклеем, особенно хорошо фиксируем USB разъем. Также термоклеем фиксируем светодиоды и кнопку, так как они расположены на слишком длинных ножках и лишняя на грузка на них может оторвать и пайку и дорожки.
  11. Зарываем крышкой. Тестируем еще раз. Мозги готовы.


я выбрал неправильную высоту светодиодов, поэтому коробку пришлось разворотить


3.5 Материалы для скачивания

Схема Eagle
Схема PDF
Схема коврика Eagle
Схема коврика PDF
Разводка платы (sprint layout 5)
Смотрелка плат Sprint Layout
Разводка платы в PDF
Перечень компонентов
Готовый hex файл
Проект AVR Studio

ВНИМАНИЕ! Доступна новая прошивка и процедура настройки!! Смотрите здесь

4. Механическая часть

Для механической реализации коврика сначала планировалось взять нечто упругое, но гибкое на столько, что можно свернуть и поставить в угол.

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

Для верха была взята ДВП (HDF), аналогичная той, из которой сделан зад шкафов, толщиной 3мм. Компактность это особо не ухудшило, а может и улучшило, так как теперь его можно просто спрятать за шкаф (толщина всей конструкции около 1 см).


В первой версии было взят размер центральной части 40х40 см, а боковые 30х40. Т.е. получился квадрат 1м х 1м. Эксплуатация показала, что это многовато. Поэтому был взят квадрат 90х90 см и размечен на квадраты 30х30 см. У нас с женой рост 175 и 180. Если рост намного больше или меньше, то надо адаптировать размеры.

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



Отрезки фольги и провода были заранее подготовлены, разумеется. Провод - обычная витая пара для локальный сетей с оголенный концом 15-20 см. закрученным спиралью радиусом около 10 см.

Размер фольги для основных кнопок (вверх-вниз, влево вправо) был взять 25 х 20 см. Более длинной стороной к центральному квадрату с отступом в 5 см (от края тоже получается 5 см). Диагональные кнопки были сделаны поменьше (20х15 см) и сдвинуты в угол коврика, тоже отступом в 5 см от краев. Это сделано для того, чтобы при "съезжании" ноги от центра основных кнопок диагональные не задевались.

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

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

Я взял два слоя материала для светонепроницаемых штор. Но можно взять много что, главное, чтобы он был твердым достаточно, чтобы не деформироваться под весом и достаточно толстым, чтобы не делать много слоев. Два слоя у меня были склеены тонким тонким слоем "жидких гвоздей".

Так как нога часто не просто прыгает или переступает, но и скользит, то подъем на эти 2 мм должен быть плавным, чтобы были исключены травмы, а также боковую нагрузку на отрыв на сам выступ. Эта проблема была решена толстым слоем автомобильной алкидной эмали.

Разумеется, провода и контактные площадки внизу должны быть чем то закрыты. Сначала был опробован 7 мм материал, который используется как амортизатор при укладке ламината. Это оказалось слишком много. Из-за своей толщины он сильно гасил силу прыжка и создавалось ощущение, что прыгаешь по чему то вязкому. Тот же материал толщиной 4мм вполне подошел.

В принципе, можно было бы использовать такую же ДВП снизу, но тогда упала бы возможности ремонта в случае "если что", а также стала бы меньше звукоизоляция. В выбранном же варианте соседям снизу будет легче :)

Все выступы были приклеены теми же "жидкими гвоздями".

Покраска оказалась сложнее, чем планировалось. План был такой: покрасить все в черный глянец, а потом по трафарету нанести кнопки. Однако, оказалось, что одного большого баллона на всю поверхность мало. Надо полтора. А красной краски не было в больших баллонах, так что тоже не хватило, пришлось два покупать. Кроме этого, выяснилось, что красить я не умею, поэтому трафареты плохо прилегали и местами есть "заплывы". Но в целом получилось сносно.

Итак, общий план:

  1. Вырезать квадрат 90х90 см.
  2. Разметить карандашом как сверху, так и снизу на квадраты 30х30 см.
  3. Вырезать из фольги все площадки: 4 шт. 25х20 и 2 шт. 15х20.
  4. Замерить, отрезать, зачистить провода, прикинуть, чтобы все подходило и в точке выхода с коврика был запас 15 см. (лишнее потом отрежется).
  5. Приложить фольгу к своим местам с отступами от краев в 5 см., обозначит карандашом все углы фольги. Снять, отложить в сторону. Кстати, для полной ясности, фольга клеится только в нижней стороны ДВП, которая к полу.
  6. ПО ОДНОМУ намазать тонким слоем "жидких гвоздей" прямоугольник под фольгой, положить провод, как следует, аккуратно уложить фольгу, без пузырей и хорошо разгладить. Повторить для каждой площадки.
  7. Термоклеем закрепить провода, так, как они должны проходит.
  8. Прикрепить на расстоянии 5-10 см к проводам разъем для электронного блока. Нумерация контактов в разъеме на плате (именно НА ПЛАТЕ, а не в электрической схеме): 0 - вправо, 1 - вниз, 2 - влево, 3 - вверх, 4- вверх - влево, 5 - вверх - вправо. НЕ ПЕРЕПУТАЙТЕ направления, когда будет проверять. Помните, что коврик перевернут верхом вниз! Никакой пайки тут не надо, просто зажимаете провод во вкладках и все.
  9. Подключить электронный блок, проверить, все ли работает как надо касанием ладони к каждой фольгированной площадке. Если нет, то выяснить в чем дело или отнести все на помойку.
  10. Вырезать закрывающий амортизатор под низ размером 90х90 см.
  11. Медленно раскатывая его, прикреплять к коврику точкой из термоклея каждый 10 см. (т.е. должна получиться решетка из точек, квадрат которой 10х10 см).
  12. Хорошо проклеить термоклеем боковины.
  13. Закрепить термоклеем выходные провода к коврику.
  14. Закрепить термоклеем разъем проводов (чтобы не вырвались).
  15. Проверить еще раз, что все работает как надо. Или испытать экстаз или выкинуть все на помойку.
  16. Подготовить выступы (полоски и стрелки).
  17. Наклеить все выступы на "жидкие гвозди", проверить, что все хорошо держится.
  18. Запаковать разъем в целлофановый пакет.
  19. Покрасить алкидной краской всю верхнюю поверхность. Надо 2 слоя потолще или 3 потоньше. Следуйте инструкции к краске.
  20. После полного высыхания (через сутки), прикрепить трафареты для всех выступов и диагональных стрелок (всего должно быть 10 трафаретов: 4 стрелки, 2 диагонали, 4 для прямоугольников центральной части). Как их крепить - не знаю. У самого проблемы с этим.
  21. Тщательно закрыть всю остальную поверхность.
  22. Мелкой наждачкой (320) слегка зачистить места, которые надо красить (иначе краска не прилипнет хорошо) и протереть влажной тряпкой. Можно еще спиртом, если есть. Подождать пока высохнет.
  23. Покрасить 2-3 слоя другой краской (рекомендую красные, оранжевые, голубые цвета).

  24. Ждать сутки.
  25. Аккуратно снять трафареты, протереть влажной тряпкой.
  26. Все подключить и опробовать. Получить экстаз или повеситься.

Еще для ясности. Вот в каком порядке должны идти все слои сверху вниз:

  1. нога
  2. краска
  3. в некоторых места выступы
  4. ДВП
  5. клей для фольги
  6. проводки к разъему
  7. фольга
  8. закрывающая поверхность-амортизатор (та, которая для укладки ламината)
  9. пол

5. Если лень

Если все лень, то вот на чем можно сэкономить время и деньги:

  1. Сделать все из спортивного коврика.
  2. Сделать только 4 кнопки, а не 6 (плата та же, просто не подключать 2 кнопки).
  3. На плату не монтировать светодиоды и резисторы к ним, а все проверять на компьютере.
  4. Не красить.
  5. Не клеить выступы.
  6. Не делать разъем для коврика, а запаять провода прямо в плату.

6. Работа устройства

При включении нельзя стоять на коврике. Он должен находиться примерно там, где и будет использоваться и должен быть полностью пуст.

Сразу после включения загорится светодиод питания и начнется автокалибровка устройства.

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

Если устройство находится в режиме джойстика с двумя кнопками и двумя осями, то светодиоды будут загораться парами по очереди "вверх - вниз" и "влево - вправо".

Калибровка длиться около 10-15 секунд. После этого все светодиоды направлений потухают. Устройством можно пользоваться.

Для переключения режима надо освободить коврик, как при включении, и нажать кнопку переключения режима (нажать на 1 секунду, отжать). При этом произойдет отключение устройства от USB, переконфигурирование, после чего оно снова подключится к USB и снова пройдет актокалибровка.

В режиме "2 кнопки 2 оси" количество кнопок в панели управления для этого джойстика не изменится, но работать будут только кнопки 1 и 2 (диагональные), а при нажатии на другие направления будет изменяться положение джойстика. При одновременном нажатии противоположенных кнопок джойстик центрируется по этой оси.

Последний режим устройства запоминается в EEPROM и при следующем включении используется именно он.

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

Врагом коврика является статическое электричество. Иногда он просто перестает работать. Это происходит редко, при совпадении множества странных условий. Он включается, проходит калибровка, но реакции на нажатие кнопок никакой нет. Чтобы это "вылечить", надо поднять его, намочить ладонь и провести ее по нижней стороне коврика. У меня опять же подозрение, что это связано с: отсутствием земли в моей квартире, помпой в компьютере на небольшом расстоянии, материалом, из которого сделан ковролин в комнате и амортизатор коврика, материалов носков или обуви на ногах. Радует в этой ситуации то, что если он включился и начал работать, и далее им пользоваться, а не бросать просто включенным, то во время игры он ни разу не начинал себя так вести. Это происходит или сразу после включения или если бросить его включенным на долгое время.

Также, надо обратить внимание на заднюю кнопку. Так как для срабатывания нужна достаточная поверхность соприкосновения, то задняя кнопка может "страдать", так как многие при отводе ноги назад ставят ее не на всю площадь, а только на пальцы. Проверено, что просто касание одним большим пальцем сенсора не приводит к его срабатыванию. Заступ на него всеми пальцами плоско работает нормально, но лучше немного поворачивать корпус и ставить ногу полностью.

В режиме "2 кнопки 2 оси" с помощью коврика можно играть в другие игры, в которых есть управление джойстиком. В частности, Arkanoid и Тетрис - интересные игры, чтобы попробовать.

Комментарии
Артем (Урюпинск, Россия) 2008-10-20 19:12:06 #1 link
"работа через USB без установки драйверов, как стандартный джойстик" Блин, я думал такое только на заводах делают. А вообще, очень удобно для геймеров, наверное, как дополнение к системе мышь+клава. Можно спелсы ногами кастовать, например)) И моторику развивает.

А у меня вот уже лет 5 не выходит из головы идея спаять энцифалограф, регистрирующий волновую активность мозга и разные сочетания волн ассоциировать с командами комьютеру. Как то даже начал собирать детальки для схемы из проекта OpenEEG, но внезапно понял, что моих скилов не для этого не достаточно. Готовый девайс в инете стоит минимум 150 000 р, а стоимость деталей для OpenEEG - 2500-3000 р. А вы этой темой не интересовались, случайно?
Артем Кучин (Москва, Россия) 2008-10-20 22:03:02 #2 link
Для подножного управления лучше собрать полоску одну с несколькими педалями, а в ПО прошить эмулятор USB клавиатуры, чтобы по нажатию педали посылалось нажатие кнопок. Но жена сказала, что ей такое на фиг не надо :)

OpenEEG пока не интересуюсь, но как нибудь посмотрю, чего там и как.
Сергей (Псков, Россия) 2008-10-25 15:00:39 #3 link
Автору респект за сие творение, сам блок почти собрал, осталось с ковриком разобраться.
В принципе всё понятно за исключением: с какой стороны клеится фольга с обратной (той что к полу), с передней (к ногам), или с обоих :)
Жаль что день рождения у дочки был 23го, а так отличный подарок вышел бы.
Артем Кучин (Москва, Россия) 2008-10-25 17:53:42 #4 link
Прошу прощения, что этот момент описал не очевидно. Сейчас поправлю текст.
Клеить фольгу надо только в нижней стороны (та, которая к полу). Т.е. если смотреть в разрезе, СВЕРХУ ВНИЗ, то все
идет в таком порядке:
1) нога
2) краска
3) ДВП
4) клей для фольги
5) проводок к разъему
6) фольга
7) закрывающая фигня (которая амортизатор для ламината)
8) пол

Если есть какие вопросы, то рад будут ответить на них или здесь или через email: artem@artem.ru
Роман (Томск, Россия) 2008-12-05 09:46:20 #5 link
Вот именно из за таких педантичных и ответственных людей,случаются катастрофы. После такого подробного описания и элюстрации материала мнепришлось оказатся от мк PIC так как аналогов подобных этому проекту я не нашел :( . Теперь мне снова придется карпеть над огромными кагами даташита и менять все свои писпособы и по. А пока просто соберу, залью, подключу и буду прыгать пока не забуду все про PICи ихнее тормаза глюки и огромные цены 8). (ATmega8=70р ~схожий сним~ Pic =340р Где справедливось ?)
Такие люди как вы уважаемый Автор, заставляют крутится мир.
Артем Кучин (Москва, Россия) 2008-12-06 13:12:24 #6 link
Ну что поделать. Я тоже PIC не люблю, ну не нравятся мне они. AVR для любителей-электронщиков получче будут, попроще в работе и подешевле.
Я на этих выходных сам буду собирать схему еще раз, вот и проверим такой важный параметр как ПОВТОРЯЕМОСТЬ. :)
Удачи!
Роман (Томск, Россия) 2008-12-09 08:05:19 #7 link
Уже СобраЛ !!! сегодня вечером залью и проверю. Пока мех часть на катоне и фальга меньшего размера но судя по описанию прибор должен адаптироваться. И еще меня подвела память и я купил кварц на 12мгц.
отсюда вопрос будет ли работать юсб инрерфейс ??? или там все на задержках ?
Артем Кучин (Москва, Россия) 2008-12-09 11:56:30 #8 link
Можно и на 12Мгц. Я 16 брал толко по своему "максимализму". Однако, придется проект менять и перекомпилировать под 12Mhz, так как код USB для разной мегагерцовости разный - разное колво зарежек и все такое.
На сколько меньше фольга? Есть предел адаптивности.
Вообще, лучше, конечно, при сборке, собрать МК+SPI+USB вход и сразу проверить как МК поживает через программатор, а потом все остальное допаивать.
Фотки можно прислать на artem@artem.ru
Guyver (Синегорье, РФ) 2008-12-10 16:41:49 #9 link
Блин, я раньше не видел этой статьи :***(

Делал сам подобную вещь, но намного проще:

http://guyverperevod.narod.ru/faqpowerpad.html
Роман (Томск, Россия) 2008-12-11 05:42:22 #10 link
СлучилОсь стрАшное ...

Устройство не распознано ...

Йа весь в шоке. Кнопки читаются это видно по светодиодам но устройсво не инициализируется. USB порт проверен даже поставлен новый порт.
Все дорожки контакты Провереннв по 5 раз тестером.Кварц стоит 16 мгц.

ШтО делать? как быть ? йа не переживу такой потери да и в мусорное ведро всеравно не влезет.

*** *** ***
* * * * * *
* * * *
* * * *
* * * * * *
*** *** ***
Артем Кучин (Москва, Россия) 2008-12-11 11:36:06 #11 link
Без паники!
Макрофото платы с ОБЕИХ сторон на мне мыло artem@artem.ru и дальше по мыло будем решать проблему
Артем Кучин (Москва, Россия) 2008-12-13 22:07:03 #12 link
Кстати! Об устройстве, которое не распознано!
Надо проверить как минимум две вещи:
1) Реальную частоту карца! Я уже нарывался на кварцы, которые выдают указанную частоту на 3-й гармонике, а не на первой. В итоге 24 Мгц кварц работал как 8 Мгц. Надо прошить программу-мигалку с задержкой 1 секудна и посмотреть одна ли там секунда или нет.
2) Микроконтроллер именно atmega8 ? Я сегодня пробовал запустить все на atmega88 - ХРЕН! с 88-й не работает!
Артем Кучин (Москва, Россия) 2008-12-14 02:33:11 #13 link
Собрал еще одну коробочку. Все работает. Сам я уже все забыл, так что делал как написано.
Так что если делать по схеме - все должно пахать.
Роман (Томск, Россия) 2008-12-15 06:14:23 #14 link
Микрофото платы не нужно делать не первое устройство собераю и не такое сложное. Значит методом научной дедукции, частичным усвоением даташита на мегу8 и моей гениальной интуиции было сделано предположение.
На AVR я на стади Чайника програмируя чип боясь его залочить не меняя "фьюзы" (почему фьюзы просто биты конфигурации назвать нельзя было, а то фьюзы)прошил мк.
Следовательно запустил, но не кварц точно.
А эта инверсия ФЮЗОВ воабще мне мозг на изнанку вывернула :( послечего желание прикасатся к фюзам до тотального их изучения отпало на проч.

По этому Артем прошу PrintScreen окошечка с ФЬЮЗАМИ чтоб тока для тупых, все видать было.
Роман (Томск, Россия) 2008-12-15 08:24:39 #15 link
И программу мигалку на эту плату пусть мигает светодиодами направления.
Будет ОЧЕНЬ полезно для теста платы и решения маленьких но глобальных проблем.
Артем Кучин (Москва, Россия) 2008-12-15 21:33:06 #16 link
Нет проблем.
Мигалка: http://www.artem.ru/elektro/1s-atmega8-16mhz.hex
мигает всеми направлениями, 1 секунду горит, потом 1 секунду не горит.

Фьюзы из пони-прога:
http://www.artem.ru/cgi-bin/photo?c=v&id=918
Роман (Томск, Россия) 2008-12-16 06:29:54 #17 link
Вчера все заработало стоило только правильно забить конфигурацию. Но я программирую Uniprof там запрограмированный бит ставится галочка и кварц на 16мгц выглядит CKSEL0=V CKSEL1=V CKSEL2=V CKSEL3=V.
SCOPT=_ . вот так все запутано и туманно.
Но как я уже говорил мех часть у меня макт 1/2 плошадь одного сенсора(фальги) 10х10см в 5 раз меньше оригенального. Устройство не читает не чег0 пока не каснешся поверхности фальги ито дергается так миг__мигмиг_миг______миг.
Это связанно с емкостью или это ограничения введенные в программе.
Но все это фигня разберусь С и исходник перелопачу.
Главный ВОпРОс будет ли читать мех часть если ее сделать 1/1 и по всем технологическим канонам.
(фотки прислать ?)
Zmey (Воронеж, Россия) 2008-12-16 13:22:47 #18 link
Можно Вашу статью разместить на сайте bemaniclub.com ?
Артем Кучин (Москва, Россия) 2008-12-16 21:30:45 #19 link
Роману:

Чувствительно регулируется этой строкой в коде:
#define SENS 5

5 означает, что срабатывание засчитывается, если значение больше чем значение
в состоянии покоя на 1/5. Условно, при автокалибровке было 1000. Тогда срабатываение будет
засчитано, если значение будет 1000+(1000/5)=1200. Т.е. чем больше это число, тем выше чувствительность.

10 на 10 конечно не будет работать с прошивкой по умолчанию. Изменение намного меньше, чем 1/5, так как
оно от площади зависит. А вообще, зачем такой маленький сенсор? Дети такие маленькие не могу в эти игры играть
вообще, а детям побольше и сенсор нужен минимум 20 на 20.



Змею:
Можно, но только с указанием имени автора (т.е. меня) и ПРЯМОЙ ссылки на первоисточник (т.е. сюда на эту страницу)
Роман (Томск, Россия) 2008-12-19 11:33:56 #20 link
Артем еще проблема ...
Еще у меня небыло сопротивления 2 Мом поэтому были соеденины последовательно 2 по 1Мом.но это я думаю не важно

собрал коврик вместо двп фанера 4мм. дазмеры фольги идентичны. длинна соедительного шлейфа 12см.

SENS=5 сигнал не регестрируется при касании фальги мерцание индикатора.

SENS=20 сигнал регестрируется четко но с мерцанием при касании фальги мерцание индикатора.

SENS=100 ложные срабатывания с мерцанием при касании фальги мерцание индикатора.

Как добиться статичного синала?

может фальгу припоять прикрутьть штоли ???
при касании разьема пальцем на пямую сигнал статичный а фальги нет.

/* А-А-А у меня истерика!!! е****й коврик сдохни сдохни

... ну вот отгрыз уголок фанеры от коврика и успокоился. */

Артем мне нужен этот коврик и именно мой. Покупной вариант меня уже не устроит.
Артем Кучин (Москва, Россия) 2008-12-19 21:28:09 #21 link
Вам бы Роман спросить меня, перед тем, как вносить изменения в проект. Фанера 4мм - это крындец. ДВП и фанера отличаются очень сильно по своим электрическим свойствам. Т.е. фанеру заряд просто может не пробивать вообще, особенно 4-ку! SENS больше 15 смысле вообще не имеет, скорее всего.
Я вот не пойму, что значит "касание фольги"? Касаться не фольги надо, а изолятора над ней и не просто касаться, а ногой наступать или полной ладонью.
К чему припаять фольгу? Она приклеена должна быть с несущей поверхности и плотно к ней прилегать.
Вообще, я бы хотел взглянуть на всею конструкцию. Схема чувствительна я паразитным емкостям, каждая пайка, каждый лишний элемент - плохо. Поэтому 2 R по 1М нааамного хуже, чем 1 R на 2М. Кроме этого, если начинаются засады, то R надо поднять. Я рекмомендую не мнее 2.2 вообще, а лучше больше, в районе 3М. Короче, детальные крупные фотки схемы и коврика, с тем, как провода на нем лежат мне на мыло artem@artem.ru
Михаил (Тула, Россия) 2009-03-02 09:19:12 #22 link
Артём, собрал коврик по вашей схеме - всё работает почти замечательно. Почти, ибо один из сенсоров срабатывает не всегда стабильно. Причем, если прикасаться к фольге - то срабатывание 100%, а если в "рабочем" режиме, т.е. сенсорами к полу и касание ДВП, то моргает.
Что в этом случае можно сделать?
У меня есть несколько вариантов:
1. увеличить площадь сенсора, в принципе это возможно, но вот поможет ли?
2. меного приблизить задний сенсор к поверхности, сделав в ДВП углубление (это несложно, но муторно, да и "яму" потом придется замазывать, чтобы не прогибалось ничего)
3. переклеить все сенсоры на верхнюю поверхность, а затем заклеить всё какоё-нибудь тканью. Наверное это поможет. (в этом случае мне интересно, нужно ли будет отдирать фольгу с нижней поверхности, не будет ли она мешать)
4. переписать код программы, на предмет отдельной калибровки каждого сенсора (я не знаю, возможно ли такое, ещё не смотрел код :) ), или выставление чувствительности каждого сенсора.
Если не трудно, помогите советом :)
Никита (Темиртау, Казахстан) 2009-03-02 19:27:57 #23 link
Народ подскажите! Какой мне лучше брать программатор, фирму. Я новичок в этом так что чтонидь попроще.
Михаил (Тула, Россия) 2009-03-03 13:44:02 #24 link
Никита, программатор можно сделать своими руками. Простейших схем в Сети полно. Если совсем попроще, то например вот этот http://easyelectronics.ru/avr-shag-pervyj-programmator.html , если посложнее - то ищи USB программатор. Готовые есть, но я на них даже не смотрел.
Артем Кучин (Москва, Россия) 2009-03-04 10:07:37 #25 link
У меня есть новая прошивка с гистерезисом. Работает намного лучше и стабильнее. Еще есть советы по помехозащищенности. Все это я выложу на днях, может быть на выходных. На этой неделе в общем.
Михаил (Тула, Россия) 2009-03-11 23:16:20 #26 link
Артем, а нельзя-ли выложить прошивку с гистерезисом? уж очень хочется доделать коврик, заклеить всё и отдать на растерзание детям :)
Артем Кучин (Москва, Россия) 2009-03-13 00:34:22 #27 link
Все, новая прошивка и доп информация по настройке доставка здесь:
http://www.artem.ru/cgi-bin/news?c=v&id=770
Серега (Волгоград, Китай) 2009-03-21 16:08:01 #28 link
А перед прошивкой светодиоды отпаивать надо? Они же там на моси, мисо сидят.
Артем Кучин (Москва, Россия) 2009-03-21 20:11:53 #29 link
Ну зачем!? Чем они мешают то! Наоборот, сразу видна активность по ходу рошивки, очень наглядно.
Никита (Темиртау, Казахстан) 2009-05-19 16:01:21 #30 link
Михаил спасибо за ответ. Но у меня новая проблема я что то не понимаю куда подключать программатор громова на схеме танцевального коврика. Помогите пожалуйста.
Серега (Волгоград, Китай) 2009-12-12 00:03:04 #31 link
Подскажите, пожалуйста, как сделать 16 кнопок. Пишу
0x95, 0x10, // REPORT_COUNT (16)
0x75, 0x01, // REPORT_SIZE (1)
0x05, 0x09, // USAGE_PAGE (Button)
0x19, 0x01, // USAGE_MINIMUM (Button 1)
0x29, 0x10, // USAGE_MAXIMUM (Button 16)
выдает ошибку This device cannot start. (Code 10)
в data я дописал остальные кнопки. если вернуть 0x95, 0x06, // REPORT_COUNT (6), то ошибки не будет, но кнопки не работают
видать где-то что-то пропустил
Серега (Волгоград, Китай) 2009-12-12 18:46:51 #32 link
разобрался, размер репорта должен быть кратен 1 байту. заработало
Андрей (Харьков, Украина) 2010-01-27 15:10:28 #33 link
Добрый день Артем
Я хочу сделать данс-пад полностью по размерам соответствующим оригинальному «Pump it up» паду с небольшими доработками...

Как вы думаете если сделать обкладки из фольги между ними резину, использовать как конденсатор, при нажатии на кнопку резина будит деформироваться и емкость кнопки меняться. Таким образом ход у кнопки будит минимальный, срок выработки почти не ограниченным. Если такую кнопку подключить к схеме она будит реагировать на изменение емкости? И можно ли увеличить количество кнопок до 16?
Андрей (Харьков, Украина) 2010-06-22 12:17:48 #34 link
В общем собрал, удивительно но все работает, Правда в прошивкой пришлось подолбаться...
Как простой джойстик такую схему использовать нельзя, только с емкостными сенсерами.
были проблемы с кварцем и фьюзами но Гугл в помошь все найдет :-)

Очень много помех, иногда подтормаживает по не понятной причине, иногда кнопки сами нажмаються. В обшем кинул эту затею с емкостными датчиками
Собераю щяс "Mjoy - USB-контроллер джойстика на основе микроконтроллера AVR ATMega8" нашел интересную схему с кучей осей и кнопок, и болие простую в реализации.

Но идея и с емкостями просто супер, можно рукой даже не касаясь датчиков нажимать кнопки :-)
Павел (МОсква, РОссия) 2010-09-23 07:46:13 #35 link
А что делать, если комп определяет dancepad как gamepad, но не автоматически ставит его, а требует драйвер и в последующем отказывается от сотрудничества совсем. Может быть виновата мат. плата? Она у меня с VIA. Кто-нибудь сталкивался с таким?
Спасибо.
ЕгоР (Майкоп, Россия) 2010-10-18 17:21:15 #36 link
А если я раньше с такой техникой не работал, шансы собрать реально работающую установку есть?
Артем Кучин (Москва, Россия) 2010-10-19 22:39:05 #37 link
Даже еслим работали, шансы 50 на 50. Не очень хорошая конструкция, над новой работаю.
Если не работали, то долго займет. Программатор нужен, паяльник, навыки изготовления плат.
Денис (Санкт-Петербург, Россия) 2010-11-13 23:46:57 #38 link
А что будет нового?
Посматриваю на ваш коврик уже второй год. Набираюсь сил сделать. Пока мастерю что-то помельче на AtMega в качестве разминки =)
Александр (Подольск, Россия) 2011-10-02 11:19:39 #39 link
Добрый день!Схемку собрать не проблема.Я не понял по коврику.Вот как я понял что под фольгой провод уложен для надёжного контакта фольги,потом почему то идёт уплотнитель...Скажите а где же второй замыкающий контакт на пластину?Я же понимаю принцип замыкания взять например от мобильных кнопок,там выпуклость контакты при нажатий замыкает.А тут я не совсем понял,или нога так фонит чтоли?Подскажите...
Артем Кучин (Москва, Россия) 2011-10-04 23:34:38 #40 link
вы не поняли принципа работы. см пункт 2.1
Александр (Подольск, Россия) 2011-10-07 19:43:46 #41 link
Нет,вы наверное не так поняли,объясню по другому.Сенсор работает от прикосновения участка тела,но как участок тела будет сенсорить через,цитирую: " Разумеется, провода и контактные площадки внизу должны быть чем то закрыты. Сначала был опробован 7 мм материал, который используется как амортизатор при укладке ламината. Это оказалось слишком много. Из-за своей толщины он сильно гасил силу прыжка и создавалось ощущение, что прыгаешь по чему то вязкому. Тот же материал толщиной 4мм вполне подошел. " как он будет сенсорить через 4 мм материал если он изолирован?Я так и не понял поэтому и спросил...Так как вы трогаете сенсоры голыми пальцами,вследствий чего сенсор срабатывает,но тут амортизатор+носки с которыми вы демонстрируете работу.Подскажите яснее если вас не затруднит.Меня двое детей видели ваш девайс и трясут чтобы я сделал,сделать то я сделаю,не проблема,но по сенсору есть вопросы...
Артем Кучин (Москва, Россия) 2011-10-07 23:00:19 #42 link
Мда.. если дети требуют то это беда ;)
В общем, вы все еще не понимаете, как работает емкостной сенсор. Это не котактное устройство, а по сути полевое. В вводите в ЭМ поле проводник (ПАЛЕЦ, НОГУ и т.д.), и возникает ток утечки, из-за чего емкость конденсатора образованного сенсором изменяется. Это очень кратко. Подробно - ищите в сети и читайте теорию. На русском я вообще не находил, а на английском на гугле по фразе "capacitive sensor" или "capacitive sensing" полно материала.
Ну так вот, как я уже писал в коммента конструкция паршиваю, я бы терерь даже сказал,что просто неправильная. Правильнее было бы сделать совсем другие сенсоры, не просто листы, а листа как бы хитро по кривой разделить на две части, одна на землю, вторую на сенсор, и тогда бы был былее стабильный конденсатор на сенсоре, который бы считал емкость относително земли устрйоства, а не относительно черт знает чего (из-за чего и гдюки у многих) и при вводе ноги в разрез изменялась бы эта емкость вполне предсказуемо и независимо от внешних условий. Однако, это потребует переделки прошики + эксперементальной подборки конкретной конфигурации сенсора. А у меня столько дел на работе и в семье, что не до этих экспериментов (хотя руки ооооочень чешутся).
Если у вас с С все в порядке, то я могу подсказать конфигурации сенсоров, а вы поиграетесь в прошивкой. Есть даже шанс,что и без изменений пойдет (только новую надо использовать, с гистерезисом).
Володя (Донецк, Украина) 2011-12-06 22:03:07 #43 link
Тут появился вопрос можно переделать этот коврик под коврик для Pump it Up?
с вот таким расположение кнопок: http://krokmania.com/forum/images/PiUpad.jpg
(знаю что можно... но все же охота убедиться)
И сможет ли такой коврик как тут в примере потянуть к примеру такую песню:
http://www.youtube.com/watch?v=tdiuMyCggzs
Артем Кучин (Москва, Россия) 2011-12-06 22:27:21 #44 link
1) Да, конечно можно
2) Не знаю, если честно, это зависит от времени заряда - разряда.

Еще раз говорю, и форма "контактов" и сам подход неудачный. Надо все делать заново,
а емкость мерить большой частотой, около мегагерца, тогда такие песенки пойдут на ура точно.
Володя (Донецк, Украина) 2011-12-06 22:29:48 #45 link
Вау... как оперативно ответили))) Знач буду пробывать подгонять архитектуру под такие песни)))
Александр (Благовещенск, Россия) 2012-05-20 17:27:10 #46 link
Наконец появилось время и возможность собрать свой коврик. Обнаружил данную конструкцию, очень симпатична идея сенсорных кнопок. Поскольку коментариев давно не было хочется спросить, какой опыт за эти годы использования, какие сложности возникают и возможные пути решения? Пока сделал печатную плату в DipTrace:
http://imglink.ru/show-image.php?id=93ccf41ba1d2dccc2b8f7b93452086e9
http://imglink.ru/show-image.php?id=1d051ebdc507cfc82697a3535370be58
Артем Кучин (Москва, Россия) 2012-05-21 01:02:50 #47 link
О всех проблемах сказано в комментах. С тех пор ничего не изменилось. Новую версию за нехваткой времени я так и не выпустил. В особенности см мой коммент от 2011-10-07 23:00:19
Светлана (Ташкент, Узбекистан) 2016-10-28 16:39:20 #48 link
У меня покупной коврик много лет. Танцевальные игры надоели. Хочу играть в обычные. Почему он не работает как джойстик, хотя бы в примитивных играх? Еле нашла в нете игру типа электроники советской, но багнутая.
Добавить комментарий
Ваше имя:
город: страна:
Комментарий:

Введите код "6145" -
Сообщения не по теме будут удалены. Вопросы не по теме следует направлять по электронную почту. Ваши данные будут запомнены в cookie для удобства. HTML запрещен.

(C)1999-2021 Артем Кучин
Email: artem@artem.ru
На письма без темы или без имени отправителя не отвечаю

При использовании материалов ссылка на сайта www.artem.ru обязательна! Автор оставляет за собой право отказать в праве использования материалов на безвозмездной основе без объяснения причин. Материалы сайта защищены законом об авторских и смежных правах.

Цена домена: 1 500 000 руб.