Предистория
За диджейским пультом я не стоял лет десять. А тут вдруг возжелалось свети парочку любимых треков, как говорится, для души. Скачать Traktor и загрузить треки — дело нехитрое. Но грядущая радость была сразу омрачена тем, что работать в этой программе мышкой – удовольствие сравнимое с набиванием длинного письмо на виртуальной клавиатуре. Тогда в дело пошла клавиатура – Traktor очень гибко настраивается под нее, и на любую команду можно задать произвольную клавишу. Однако и это решение было совершенно неудовлетворительно.
Именно тогда родилась идея проекта и была сформулирована техническая задача или, если хотите, концепция.
Поскольку программа полностью управляема с клавиатуры, то можно взять мозги из старой USB клавы и, имитировав нажате клавиш с помощью набора переключателей, реализовать полноценный пульт при минимальных затратах.
Клавиатура
Мозги USB клавиатуры представляют собой, как известно, небольшую плату с набором контактов, ютящуюся в уголке корпуса. Вот она на фотографии, правда уже распаянная и установленная в корпус контроллера.
Кроме того в стандартной клаве имеются два прозрачных листа, наложенные один на другой, с наненесенными на них токопроводящими дорожками и контактными площадками под каждой из клавиш. Когда мы нажимаем клавишу происходит замыкание соответствующих контактов на этих двух листах, приводящее к замыканию двух контактов на мозгах.
В моей клаве нашлось две группы контактов: 8, которые с черными проводами и ответные 20 – с синими. Простым замыканием черных на синие добиваемся всего, что может клавиатура.
«Минутку! – воскликнет в этом месте вдумчивый читатель, коим ты, без сомнения, являешься, — Но ведь диджейский пульт – это не только кнопки, но и ручки! Как же имитировать плавное вращение ручки с помощью клавиатуры?» Автор должен в этом месте сказать что-то вроде «За мной, читатель, и я открою перед тобой двери мира электротехники…»
Ручки плавной регулировки
Конструирование ручек было самой интересной частью проекта. Не будь ее, писать было бы не о чем.
Итак, Traktor предлагает несколько вариантов: самое простое – при удержании какой-либо кнопки на клавиатуре будет происходить постепенное нарастание или убывание уровня какого-либо параметра. Однако в этом случае нет возможности регулировать скорость вращения. Поэтому этот вариант я сразу отверг. Не стоило и заморачиваться с ручками, можно было бы просто определить одну кнопку на увеличение, а другую не уменьшение. Не интересно и не практично.
Но Traktor готов изменять любой параметр ступенчато, при каждом нажатии кнопки на 1%, 3%, 13%, 25% или 100%. Таким образом, задача сводилась к тому, чтобы сконструировать простое механическое устройство, умеющее распознавать направление и скорость вращения, и дробно замыкающее пару контактов в соответствии с ними.
Конечно, я сразу обратил свой взгляд в сторону компьютерных мышек, а именно их скроллинга. Действительно, скроллинг только и делает, что распознает направление и скорость вращения колесика. Однако большинство современных мышек оснащаются оптической системой из светодиода и сенсора. Очевидно, было бессмысленно искать там короткое замыкание на выходе, а от использования электроники, как вы помните, я строго отказался по причинам близким к идеологическим. Хотя на самом деле, это был просто спортивный интерес и необходимость уложиться в минимальный бюджет. А главное, нарастающие приступы вдохновения, которые вели меня в совершенно определенном направлении.
Итак, поскольку мышки временно отпали, а иные изящные и простые идеи топтались в сторонке, стесняясь заглянуть в мой загрустивщий было ум, было решено собрать примитивный тестовый стенд, чтобы хоть чем-то развлечь себя.
Тут все просто. Вращаясь, шестеренка отклоняет центральную пластину и закорачивает ее на одну из боковых. Когда она проскакивает через зубчики шестеренки, цепь прерывается.
Как ни странно такая штука исправно работала. Подпаяв ее к мозгам клавиатуры можно было напечатать слово из двух букв. Например «НО». И действительно, «но» этот вариант в работу не пошел из-за своей громоздкости и очевидной ненадежности. Однако был и положительный момент – мне приглянулся материал, который был использован для контактов. Оцинкованая жесть или что-то вроде того. Дешевый, пружинистый, нержавеющий и прекрасно паяющийся. Мы с ним еще встретимся далее по тексту.
Тогда я вновь обратил свой взор, уже гораздо более пристальный, в сторону мышек. Оказалось, что многие старые и самые дешевые из современных до сих пор оснащаются механическими энкодерами. Вот такими:
Однако при ближайшем рассмотрении оказалось, что эти энкодеры, сами по себе, не умеют распознавать направление вращения. Если кому-то интересно я расскажу как они работают. Если не интересно, смело пропускайте следующий абзац, к DJ контроллеру он не относится.
Энкодер имеет два основных положения: все три контакта замкнуты и все три разомкнуты. Когда энкодер вращается в опреденную сторону, происходит кратковременное замыкание одной пары, а потом и второй. При вращении в обратную сторону сначала на мгновение замыкается вторая пара, а потом к ней присоединяется первая. Фактически же, направление распознается мышкиными небогатыми мозгами, которым однако хватает этого короткого замыкания, чтобы встать на соответствующую блокировку.
Вывод. Такой механический энкодер подойдет для распознавания скорости вращения ручки (он будет просто прерывать цепь, создавая последовательность импульсов), но к нему нужно будет добавить ключ, специально обученный определять направление.
В результате родилась такая конструкция, не лишенная, согласитесь, некоторого изящества и прекрасная своей незамысловатостью.
Сигнал с мозгов клавиатуры проходит через энкодер (который, как вы помните, будет просто прерывать цепь). Далее сигнал идет на красный проводок, припаянный к контактной пластинке (та самая оцинкованая жесть). Пластинка вклеивается в разрез на резиновой втулке (на самом деле это никакая не втулка, а кусок старого газового шланга). Втулка свободно надевается на алюминиевый стержень, служащий осью. Сверху втулка прижимается пружиной, которая обеспечивает надежное соединение с энкодром (внизу) и слегка препятствует свободному проворачиванию втулки на оси.
Снизу стержень расклепывается, высверливается и в его торец вклеивается предварительно отрезанная от колесика мышки пипка, которая впоследствии должна решительно войти в отверстие на энкодере (поскольку оригинальных пипок не хватило, три штуки были изготовлены из отслуживших свое зубочисток).
Энкодеры крепятся к плате, а по бокам от них можно наблюдать вертикальные стоечки боковых контактов. Стоечки (обыкновенная стальная проволока) обмотаны серебряной проволокой, во избежание недоразумений при прохождении сигнала.
Итак, сигнал с мозгов проходит через энкодер и поступает на контактную пластину. Та, при вращении ручки упирается в одну из боковых стоек и начинает проворачиваться на оси, сохраняя цепь замкнутой. С боковой стоечки сигнал уходит обратно на мозги.
Все регуляторы установлены:
Вид сверху перед установкой регуляторов:
Вид снизу:
«Минуточку, — воскликнет в этом месте вдумчивый читатель уже во второй раз, и будет, кстати, совершенно прав, — а что же будет, если после очередной регулировки энкодер остановится в позиции «замкнуто» и при этом пластинка будет касаться одной из стоечек?» Такое положение будет равносильно залипанию одной из кнопок клавиатуры. И хотя компьютер умеет игнорировать одну или даже несколько нажатых кнопок (иначе была бы невозможна скоростная печать), все равно всему есть предел. Если зажатые кнопки располагаются в непосредственной близости, клава перестает реагировать.
Честно говоря, мне так и не удалось найти простое и надежное решение этой проблемы. Поэтому я предпринял следующие два шага. Разнес стоечки боковых контактов подальше друг от друга, пообещав себе, что буду «откатывать» ручку в нейтральное положение после очередной регулировки. И второе: вывел на экран окошко программы osdHotkey. Оно прекрасно поместилось над неиспользуемой мною частью окна Traktora. Программка умеет показывать последнюю нажатую клавишу, и если там вдруг побежит строка из одной буквы, это будет для меня сигналом.
Впрочем, после нескольких дней тестовых испытаний такая проблема не выявлена.
Блок кнопок
Тут можно рассказать забавную историю. Первоначально я присмотрел красивые белые кнопочки подходящего дизайна и стоимости. Однако, обойдя все магазины в городке мне удалось насобирать только триннадцать штук из искомых тридцати. (В скобках замечу, что живу я в Индии и совсем не в столице. Выбор радиодеталей здесь весьма ограничен и это явилось дополнительным аргументом в пользу максимального упрощения конструкции).
Искомые 17 белых кнопок обещали привезти «завтра». Но не завтра, а через неделю пришли кнопки красные, а о белых мне строго-настрого велели забыть навсегда. Пришлось докупить красных и изменить дизайн верхней панели. Получилось очень даже миленько и весело.
Когда я распаял кнопки (а эта операция была оставлена на потом, как самая тривиальная) и подключил контроллер к компу для тестого испытания, меня поджидал эпик фэйл. Ничего не работало! Даже то, что работало раньше. Не давая себе пасть духом, я вооружился мультиметром и через несколько секунд выяснил, что белые кнопки, в отличие от красных, подло работают на размыкание… Пришлось в срочном порядке докупать красных (благо в продаже они все еще имелись).
Корпус
От первоначальной идеи делать деревянный корпус я быстро отказался в пользу алюминия. Однако мне не улыбалась перспектива выпиливать в алюминиевой пластине 30 квадратных дырочек под кнопки. И тогда мне на глаза попался чудесный материал. К сожалению, продавец не говорил ни на одном из языков, принятых для общения между народами, поэтому точное название материала осталось для меня загадкой. Однако погуглив я пришел к выводу, что это ламинированная отделочная панель. Долго и тщательно я подбирал цвет и оттенок. (А потом на всякий случай покрасил все это дело в черный цвет.)
С помощью международных жестов и изощренной мимики мне удалось объяснить продавцу желаемый результат. После чего он лихо нарезал пластик на циркулярке, а потом при помощи вот такого, с позволения сказать, лобзика вырезал надлежащие дырочки.
Далее в ход пошли алюминиевые уголки и саморезы, и корпус был готов. Интерфейс верхней панели напечатан на лазерном принтере.
Вид сверху за секунду до привинчивания верхней панели:
Бюджет
Энкодеры от мышек удалось собрать по друзьям (спасибо, друзья!). Клавиатура нашлась в офисе. Колпачки регулировочных ручек и кнопки обошлись 540 руппий ~10 долларов. Остальные стройматериалы около 20 долларов. Итого стоимость контроллера порядка 30 долларов (если не считать закупленные, но не пошедшие а работу материалы).
Бонусы
Чертежи и дизайн верхней панели разработаны в InDesign. Расшифровка мозгов клавиатуры и назначение на каждую кнопку определенной функции записывались в Excel таблицу. Врядли эти два файлика могут быть кому-нибудь полезны. Но если надо – пишите.
Демонстрация работоспособности (лучше в 720p HD):
ссылка на оригинал статьи http://habrahabr.ru/post/160383/
Добавить комментарий