AVARGESNANO.NAROD.RU


MIDI DJ CJ CONTROLLER 2.0 USB

Новая версия моего диджейского контроллера вышла замечательно, а сделать я её решил по нескольким причинам: простой вариант с двумя крутилками - это не очень круто, тем более, если подключение по миди-интерфейсу. Так что решено было сделать подключение по USB, 8 крутилок и 5 кнопок с подсветкой + 5на5 дисплей из светодиодов, но так как светодиодов мне не прислали вовремя, решил что их приделаю "как-нибудь потом". Плюс ко всему я решил оставить в качестве альтернативы вариант подключения по МИДИ, хотя мне было бы вполне достаточно одного USB.

ВЕРСИИ ПРОЕКТА:
MIDI-DJ-CJ-CONTROLLER-2.0-USB-14.02.10.zip (добавлена программа, прошивка обновилась)
MIDI-DJ-CJ-CONTROLLER-2.0-USB-04.02.10.zip

Прототип внешнего вида, к которому я стремился:
MIDI DJ CJ CONTROLLER 2.0 USB

а вот готовый вариант:
MIDI DJ CJ CONTROLLER 2.0 USB

Почти одинаково! Кроме того, вечером радует глаз:
MIDI DJ CJ CONTROLLER 2.0 USB

Теперь ближе к делу, понимаю что читателю не очень интересно рассматривать красивые картинки, а хочется потрогать... как это делается своими руками. В данной статье я собираюсь рассказать как сделать вот такой контроллер, а может просто рассказать как это делалось. А начал с картинок я не зря, на самом деле может хоть я кое в чём и педант, но по жизни не акуратист и такую вот красивую штуку мне из себя было выжать довольно непросто. Но когда-то, когда это всё начиналось с радиолюбительства, я вспоминаю какая была куча простеньких схемок на платах, как оттуда торчали во все стороны провода и помню как в один день я высыпал этот ящик безжалостно в мусоропровод, когда думал что с радиолюбительством уже поконечно, но не всё так просто, ведь где-то в шкафу начал пылиться почти новенький диплом инженера-радиотехника. И не то чтобы я жалкий хвастунишка, просто возможно кое что для меня, имея запас знаний, кажется довольно простым, но я вспоминаю как несколько лет назад, когда я ещё и не был студентом и пришёл в радиолюительство для меня было принципиально важно если в схеме написано что резистор 220 Ом, то найти именно такой или там к примеру транзисторы: если уж МП42Б, то МП42Б и никак не А,В или вообще замена на любой обыкновенный p-n-p (что я бы себе позволил сейчас). Хотя сейчас оно проще, интернет... чуть какой вопрос пишешь на форум и сразу набежит пару десятков "профессоров" и с удовольствием решат всё за тебя, к тому же гугл всегда натолкнёт на опыт "предков".

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



Схема устройства базируется на микроконтроллере ATMega16 (уж такой у меня был), и я решил раз уж у меня так много ножек (40 штук) в запасе, надо их обсадить поплотнее, хотя оно в принципе если бы был атмега8 со своими 28 ногами, то и на нём можно было засесть, поступая поэкономичнее к ножкам.

Принцип действия:
каждые 5 миллисекунд микроконтроллер считывает данные о положение 8 крутилок и о нажатости 5 кнопок и, если что-то изменилось за это время, посылает через USB кабель в компьютер (или через МИДИ кабель по выбору пользователя).

В обоих случаях подключения драйвер не нужен, для USB варианта Windows сама устанавливает драйвер при подключении устройства (я тестировал на Vista, Windows XP, Windows 7 x64 и везде работает нормально), для МИДИ варианта (подключаемого через гэймпорт звуковой карты) драйвер уже установлен - он же драйвер звуковой карты, однако дальше чем Windows XP поддержка гэймпорта в драйверах звуковых карт пошла со скрипом, на том же моём ноуте вообще этим портом и не пахло, так что "наше всё" на ближайшие времена это USB порт. Он в принципе очень хитрый порт и мне давно было интересно как-то с ним освоиться и вот мечта свершилась: на микроконтроллерах ATmega, даже не имеющих встроенной поддержки USB, есть возможность работать с USB. Поддержку USB реализовали энтузиасты (такие же как и мы с вами) и назвали свой проект V-USB - http://www.obdev.at/products/vusb/, кроме того моя задача с созданием миди контроллера ещё немного упростилась в связи с существованием похожей разработки от зарубежного автора horo: http://cryptomys.de/horo/V-USB-MIDI/index.html, однако сразу предупрежу вас, что в его разработке прилагаемая программа (прошивка) неполноценна, то есть она демонстрационная. Я не вчитывался, возможно полноценная прошивка там доступна за отдельную плату или автор просто не очень внимательно отнесся к описанию своей разработки, о чём в принципе говорит и схема нарисованная "от руки", к тому же в это чудесной схеме в качестве крутилок использованы переменные резисторы 1 кОм, что недопустимо. Недопустимо потому, что их полный номинал подключен между "плюсом" и "минусом" питания, поэтому когда все 8 крутилок подключено, то получается что их эквивалентное сопротивление 1кОм поделить на 8, то есть 125 Ом - вот мне и интересно что за удовольствие такое нагружать USB порт сопротивлением 125 Ом. Автор видимо подумал, что помехи на сопротивление 1 кОм наводятся труднее и стало быть миди устройство будет работать наиболее предсказуемо, однако могу гарантировать, что если номиналы сопротивлений повысить в 100 раз до 100 кОм то помех не наблюдается и в этом случае, зато устройство кушает от USB кабеля уже не десятки миллиампер, а в 100 раз меньше = 0.4мА (плюс микроконтроллер потребляет всегда фиксированно - порядка 5 мА). Кстати, я так уверенно могу говорить про отсуствие помех на переменных резисторах судя по реализованной функции MIDI Activity LED (смотрите видео) - то есть если помеха произойдёт, тогда она сразу визуализируется на светодиоде:



Схема устройства:

MIDI DJ CJ CONTROLLER 2.0 USB Circuit


На вид схема выглядит сложно, но это всё потому что я развёл все подключения, без сокращений. Так что, если всмотреться, видно что переменные резисторы R5-R11 (50-100 кОм, любые с линейной характеристикой, я взял китайский аналог наших СП3), которые попросту будут "крутилки", все подключены аналогичным образом. На схеме следует отметить 3 основные блока внешней обвязки микроконтроллера: это USB модуль (R3,R4,R19,D1,D2,C1,C2,Q1,X1), модуль устройств ввода(S1-S5,R5-R11) и модуль индикации(LED1-LED6,R1,R2,R13-R16). Все резисторы любые мощностью от 125 мВт, у меня напаяны старые запасы, там и МЛТ-0.25 и всякие. D1,D2 - стабилитроны на 3.6В, можно взять наши КС133А, КС139А. Q1 - кварцевый резонатор 16 МГц. Конденсаторы C1, C2 - 27 пикофарад, керамические, я нашёл в старых запасах, они в виде трубочек. Светодиоды LED1-LED6 - любые на номинальный ток 10мА, прямое напряжение 2.5-3 вольт, цвет на ваш вкус. Также имеются дополнительные детали: C3 (4.7мКф*6.3В)- электролитический конденсатор, служит для стабилизации напряжения питания, C4 (0.1мКф)- керамический конденсатор, защищает микроконтроллер от высокочастотных помех по линии питания, R18 - обеспечивает помехозащищенную логическую единицу на ножке сброса микроконтроллера (если подать логический ноль, тогда микроконтроллер перезагрузится: начнёт программу с начала). X2 это DIN5 миди разъём, вот он на фото:

MIDI DJ CJ CONTROLLER 2.0 USB

Переключатель S6, который тоже можно видеть на фото задней панели устройства, обеспечивает переключение источника питания устройства: между +5 вольт поступающими от миди разъёма и +5 вольт от USB разъема.
Следует отметить, что светодиоды LED1,LED2 работают в статическом режиме, а LED3-LED6 в режиме динамической индикации. Это немного странно выглядит, но не обращайте внимание, схема немного видеоизменялась в процессе разработки. Кстати, если у вас под рукой будут тусклые светодиоды с яркими в перемешку, тогда как раз можно тусклые поставить в статическую индикацию, а яркие в динамическую - как раз динамическая индикация съест частично яркость ярких светодиодов и на вид будет выглядеть одинаково.

MIDI DJ CJ CONTROLLER 2.0 USB

Также яркость светодиодов можно подгонять, меняя номинал токоограничительных резисторов, находящихся соотвественно на линии каждого светодиода, только не меняйте сопротивление в меньшую сторону - только в большую, не рискуйте пожечь микроконтроллер. Отмечу также, что токоограничительные резисторы в цепи светодиода в динамической и статической индикации различаются по номиналу: 100 и 430 Ом соответственно. Просто в динамической индикации каждый светодиод обязательно "моргает", поэтому он не успевает перегреться и сгореть, но в статической индикации этот номер не пройдёт, так что использовать надо резистор 430 Ом или в самом крайнем случае 300 Ом.

Печатная плата:

MIDI DJ CJ CONTROLLER 2.0 USB PCB

При создании печатной платы я не особо экономил место, потому что его в корпусе предостаточно, но можете создать свой, более компактный вариант (перешлите мне, для интереса). На печатной плате красной линией отмечена разводка под разъемы миди и USB, зеленой линией разводка под программирование микроконтроллера при помощи LPT порта, я впаял в эти отверстия линейку штырьков с шагом 2.54, они называются PLS. Картинка уже перевернута для лазерно-утюжного метода создания платы, первая ножка микроконтроллера помечена квадратной контактной площадкой, не запутайтесь. После травления, сверления и залуживание получается вот такая красота:

MIDI DJ CJ CONTROLLER 2.0 USB PCB

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

MIDI DJ CJ CONTROLLER 2.0 USB PCB

Все крутилки, светодиоды, разъемы и кнопки к плате подпаиваются проводками. Знал бы я, что получается полная мешанина из проводков - развёл бы плату под "шлейф", потому что у меня существует также вторая плата в устройстве - фальш панель, на ней прикреплены все крутилки и кнопки, под каждой кнопкой свой светодиод. Соответствие светодиодов кнопкам: S1 - LED3 и LED4 (у меня под этой кнопкой двухцветный светодиод), S2 - LED5, S3 - LED6, S4 - LED1, S5 - LED2.

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

Прошивка и прошивание:

СКАЧАЙТЕ ПРОШИВКУ вместе с проектом, ссылка находится вверху страницы (прошивка это файл DJ-CJ-MIDI@16MHz.hex из архива)

К сожалению, с прошивкой микроконтроллера через PLS штырьки ничего не вышло и я был рад только тому, что не впаял его намертво. Всё дело в кварце - он 16 МГц, когда я подключал плату к ЛПТ порту, мк пытался общаться с портом на скорости 16МГц, что для порта многовато будет, не потянул. Пришлось вынуть микроконтроллер и прошить его отдельно, так как фьюзы я тоже менял, пришлось подключить кроме 6 проводков внешний кварц - 5 МГц у меня справился на ура.

Теперь ближе к делу, инструкция для тех, кто собирает схему:
1. Скачайте прошивку
2. Воткните микроконтроллер в ваш программатор (мне нравится простейший LPT-вариант - 6 проводков)
3. Прошейте вашей любимой программой (мне нравится uniprof)
4. Выставите фьюзы так: CKSEL0,1,2,3 = 1, CKOPT = 0, SPIEN = 0, SUT1 = 0, SUT0 = 1 (остальные оставить как есть в чистой ATmega16). Программы для прошивания бывают разные, мои данные по фьюзам - в логических единицах и нулях, не по галочкам каких-либо программ.

Казалось бы просто, надеюсь вы делаете не первую схему с микроконтроллером, если первую то сложнее: тут же начинаются проблемы - либо отсутствие LPT порта, либо отсутствие программатора. Какие есть варианты: найти старый компьютер, где есть LPT порт, пойти к другу-радиолюбителю, у которого есть программатор микроконтроллеров, купить микроконтроллер через интернет и попросить продающего прошить его указанным файлом и выставить фьюзы соответственно, последний вариант: собрать USB программатор. Не знаю насколько это всё будет просто, поэтому если появятся сложности - можете купить у меня микроконтроллер с прошитой прошивкой, по России вышлю в любое место.

Корпус и сборка:
Собрали схему, подпаяли все крутилки, подключили к USB, операционка автоматически устанавливает стандартный драйвер, потрогали любую крутилку - светодиод LED4 отозвался, значит всё работает. Но это всё ещё даже не пол дела, потому что надо изготовить корпус и у меня на приличный вариант корпуса ушло больше времени, чем на всю электронику.
Первое что надо сделать - решить какой будет корпус, вариантов несколько: пластиковый, деревянный, металлический. Металлический я сразу отбросил, потому что осознавал четко что у меня из металла ничего кроме неуклюжего корыта не получится, поэтому пластик или дерево.
Дальше я пошёл искать по ближайшим строительно-хозяственным гипермаркетам материал, какую-нибудь подходящую коробочку, в общем что-то похожее. Прошёл Леруа Мерлен, потом Максидом. Приметил, что есть варианты: очень красивые и недорогие пластиковые стеновые панели есть, есть покрытые красивым шпоном МДФ панели из деревянной стружки, есть на худой конец листы фанеры 3мм, но я нашёл на мой взгляд вариант получше: вентиляционную трубу сечением 110*55мм и длинной, в общем на 2 устройства и всего за 100 рублей. Кстати, есть ещё в радиомагазинах какие-то нелепые черные и серые пластиковые корпуса, тут уж дело вкуса. В вентиляционной трубе мне сразу понравился приятный белый цвет, обтекаемые углы и приличное качество обработки поверхности. Когда сборка подошла к концу, боковины корпуса я сделал из кусочков пластиковой стеновой панели, она по цвету и фактуре подошла как родная.

Кнопки самодельные из мебельных заглушек:
Avarges

На фальш-панели сделал прорези, белую кнопку приклеил термоклеем к фальш панели, нажимаешь - прогибается, дальше только нужно ловко подпаять что-нибудь из этого:

Avarges

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

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

Нанесение надписей:
Та же самая лазерно-утюжная технология, применяемая при создании печатной платы позволяет наносить надписи на панель устройства, процесс такой:
1. На гладкой стороне подложки от самоклейки лазерным принтером печатается рисунок панели. Чтобы принтер эту тонкую бумагу не зажевал, можно нужного размера кусок приклеить к обычному листу офисной бумаги.
2. Наклеиваем поверх распечатанного рисунка куски скотча, либо, что то же самое, цельный лист прозрачной самоклейки - весь рисунок приклеивается к ней.
3. Снимаем пленку вместе со всем рисунком и наклеиваем на панель прибора - вот и надписи, защищенные к тому же этой же самой пленкой.
Получается, однако, что технология не лазерноутюжная, потому что утюг не нужен, но ничего, он ещё пригодится для следующих плат.

Дно:

MIDI DJ CJ CONTROLLER 2.0 USB

Винтами внутри корпуса как раз прикреплена основная плата. Ножки против скольжения сделал из обрезков резины от настольного тенниса, у них выдающееся сцепление, хоть устройство и не тяжелое, по гладкому столу на таких ножках даже не подумает двигаться.

Инструкция по использованию:
После того, как устройство собрано можно им пользоваться, однако лучше сначала протестировать. При подключении контроллера к USB операционная система автоматически устанавливает драйверы. В момент включения обычно светодиод миди-активности вспыхивает несколько раз. Чтобы проверить функциональность устройства я использую бесплатную программу MIDI-OX 7.0 с сайта http://www.midiox.com/ - она может отображать все миди события в виде миди-команд. Сначала надо включить контроллер, потом запускать программу, затем в настройках выбрать среди списка Midi Input наш "DJ CJ MIDI", дальше в окне монитора входов будут видны вес подробности в виде спика, например потрогал первую крутилку - сразу придёт сообщение B0 5A XX и вспыхнет светодиод миди-активности, нажал первую кнопку - придёт B0 01 7F и включится светодиод соответствующей кнопке, нажал ещё раз - придёт B0 01 00 и выключится светодиод.

Avarges

Пока ничего не трогать - в программе ничего не изменяется, если летят какие-то события самопроизвольно, то проверьте все ли детали хорошо пропаяны (особенно крутилки).
Также надо протесировать Midi-OUT, для этого переключателем S6 надо выбрать источник питания от миди, затем нажимая и удерживая кнопку S3 включить прибор в гэйм-порт (со внешними миди-устройствами не пробовал), должен зажечься светодиод LED2, далее в программе MIDI-OX в качестве миди входа надо выбрать миди-порт вашей звуковой карты, потом всё аналогично.
Когда устройство протестировано можно начинать им смело пользоваться в FruityLoops например, в Cubase, Ableton.

Avarges

Сам я использую обычно только FruityLoops (FLStudio), его надо запускать после того как устройство уже включено, дальше в настройках миди выбрать среди списка Midi Input наш "DJ CJ MIDI" и нажать Enable - закрыть настройки, дальше если потрогать крутилку, то уже в самом FLStudio будет мерцать индикатор миди активности. А дальше дело техники: навешивать крутилки на нужные спецэффекты и делать прекраснейшую музыку :)

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

Варианты использования устройства:
1. Миди контроллер.
2. Внешний эквалайзер.
3. Внешний регулятор громкости.
4. Светоэффекты.
5. Своеобразный джойстик или руль.
6. Электронный ключ
7. ISP Программатор (при небольшой доработке железа)

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

Програмная часть:



В целях расширения функциональности была создана программа. Которая пока позволяет записывать и считывать по USB миди настройки устройства. Они позволяют установить для каждой крутилки и кнопки свой миди канал (от 0 до 15) и свой номер элемента управления (от 0 до 127). Естественно, надо следить чтобы совокупность двух номер для каждого элемента управления была уникальной, иначе возникнет ситуация, когда несколько разных ручек на приборе будут дублировать друг друга с точки зрения компьютера и миди программ.

MIDI DJ CJ CONTROLLER 2.0 USB

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

Свежая версия программы имеется в архиве вместе с прошивкой и схемой.

Вместо завершения:
Если вы соберете такое устройство или внесете какие-то изменения - присылайте, мне будет любопытно посмотреть на фотки, прошивки. Также я могу ответить на какие-нибудь вопросы, только пожалуйста имейте совесть и по общим вопросам используйте поисковики, например google.com.

Мой email:

АРХИВ ПРОЕКТА МОЖНО СКАЧАТЬ В САМОМ ВЕРХУ СТРАНИЦЫ


ДОПОЛНЕНИЯ:

Stalewar с radiokot.ru прислал свой вариант разводки основной платы и платы крутилок:


motherboard-midi-pcb-alt.zip (в формате Sprint Layout)


AVARGESNANO.NAROD.RU

Hosted by uCoz