Управление компьютером по usb
У меня, как и многих читателей Overclockers.ru, в связи с деятельностью большая часть дня проходит за компьютером. Неудобное кресло, сидячий образ жизни, постоянный дискомфорт - думаю, что многим читателям с достаточно бюджетными рабочими местами это близко. А сейчас, когда на дворе середина лета, хочется держаться от компьютера подальше, чтобы лишний раз не испытывать на себе жар от системного блока. Но сейчас компьютеры настолько плотно вошли в нашу жизнь, что большинство из нас так или иначе привязаны к ПК: работа, развлечения, общение - все в персональном компьютере. Скажу честно - в моем доме компьютер является центром всего - это и музыкальный аппарат, и кинотеатр, и "печатная машинка", и хранилище информации, и рендер-машина, и средство связи с внешним миром, и игровая станция - всего не перечислить.
реклама
И вот незадача: как сохранить связь с ПК, занимаясь в течение дня своими делами? Для себя по данному вопросу я нашел эффективное решение достаточно давно - удаленный рабочий стол прямо с телефона. Это настоящий "персональный компьютер в кармане", тот самый "пульт управления", который, я уверен, многие из вас искали, раз зашли на данную статью.
Удаленный рабочий стол прямо в телефоне - это настоящий "Must-have" для лентяя. Представьте: вы лежите на диване, смотрите кино с подключенного к системному блоку телевизора, время позднее, чувствуете, что засыпаете, но вставать так лень - достали телефон, удаленно закрыли фильм и выключили компьютер - спите спокойно.
Или другая, более специфичная ситуация: вы майнер, помимо добычи криптовалюты вынуждены ходить на работу в офис или на завод. Вы буквально привязаны к своей ферме, потому что какая-либо ошибка, временно пропало соединение - часики тикают, ферма простаивает - несете убытки. И тут опять же вам поможет удаленный рабочий стол - заходим в компьютер прямо из своего смартфона, перезапускаем майнер и продолжаем получать доход. Красота ведь?
реклама
var firedYa28 = false; window.addEventListener('load', () => < if(navigator.userAgent.indexOf("Chrome-Lighthouse") < window.yaContextCb.push(()=>< Ya.Context.AdvManager.render(< renderTo: 'yandex_rtb_R-A-630193-28', blockId: 'R-A-630193-28' >) >) >, 3000); > > >);А самое главное, такие ситуации, их тысячи - а иметь "пульт" для компьютера было бы полезно и майнеру, и энтузиасту, и геймеру, и даже домохозяйке! Хотите сделать это просто, бесплатно и, самое главное, быстро? Тогда прошу ознакомиться с предоставленным материалом.
Выбор программы для создания удаленного рабочего стола
Итак, всего существуют несколько программ, позволяющих создать "компьютерный пульт". Зайдя в Pay маркет, можно увидеть целый список разнообразных приложений для создания удаленного рабочего стола:
Есть как достаточно известные приложения, такие как: TeamViewer, Remote Desktop от Microsoft и Удаленный рабочий стол Chrome от Google; но существуют и малоизвестные "пульты", скачивать и взаимодействовать с которыми я бы не решился. Мой выбор, собственно, пал на Удаленный рабочий стол Chrome от Google, потому что это наиболее простой в освоении, установке и использовании "пульт". На самом деле, пользуюсь я им уже около двух лет и проблем не наблюдалось как на iPhone под операционной системой IOS, так и на Android-смартфоне. Ну и если это продукт Google, то я не беспокоюсь за сохранность своих данных, ведь корпорация большая, а выпускать некачественный продукт для них просто непозволительно.
реклама
Но вы, собственно, можете выбрать для себя любой другой удаленный рабочий стол, я думаю, что процесс установки у них идентичен. А я же, собственно, приступаю к установке программы и ее настройке.
Как установить и настроить Удаленный рабочий стол Chrome от Google?
Итак, для начала мы скачиваем приложение из App Store или Play маркета на свой смартфон. Я думаю, что процесс установки приложения на смартфоне описывать нет никакого смысла - все происходит автоматически.
Далее вам потребуется браузер Google Chrome, установленный на вашем ПК. Если же по какой-то причины у вас нет этого браузера, вам не составит труда скачать его бесплатно.
И в браузере Google Chrome, и на вашем смартфоне должна быть одна учетная запись Google. Если таковой по каким-то причинам у вас еще нет, то, как бы странно это не звучало "зарегистрируйтесь в Google".
реклама
Далее в адресной строке Chrome набираем следующее:
Далее вы просто устанавливаете web-приложение себе в браузер Chrome как расширение, а также скачиваете инсталятор chromeremotedesktophost:
Запускаете инсталятор и выполняется простейшая установка.
Следующая задача - предоставить доступ устройства (смартфона) к вашему рабочему столу. Тут все предельно просто: запускаем на компьютере браузер Chrome, в адресной строке вводим ранее известную ссылку, либо же можете нажать на иконку удаленного рабочего стола в Chrome:
Нажимаете на кнопку "Включить", когда вам предложат настроить удаленный доступ.
Далее вам будет предложено создать имя компьютера:
И далее создаем PIN-код длиной не менее 6 цифр:
Жмем на кнопку "Запустить", и ваш рабочий стол готов к эксплуатации.
Но на этом еще не все - переходим к настройке удаленного рабочего стола на смартфоне:
- запускаем ранее скачанное приложение (убедитесь, что в браузере Chrome и в приложении используется одна учетная запись Google);
- ждем, пока прогрузится список "Мои компьютеры";
- кликаем на свой компьютер;
- вводим придуманный ранее PIN-код.
Вас можно поздравить: теперь вы имеете удаленный доступ к своему ПК из любой точки мира при условии, что на обоих устройствах есть подключение к сети Интернет.
Впечатления от использования Удаленного рабочего стола Chrome
В принципе, Удаленный рабочий стол Chrome позволяет вам управлять своим ПК практически также, как бы вы управляли им, была бы у вас сенсорная панель вместо экрана. Сочетания горячих клавиш, конечно, зажать не получится, но требуется ли оно обыкновенному пользователю, которому надо удаленно выключить компьютер, переключить плейлист, включить фильм? В принципе, вам ничего не составит труда теоретически играть таким образом в игры, но данное удовольствие уж точно для искушенных, хотя мне ничего не помешало, например, выключить с телефона компьютерную игру, находясь на улице:
Если вы плохо видите или не можете попасть, то вам не составит труда растянуть нужный участок рабочего стола, выполнив на дисплее смартфона простое растягивающее движение пальцами.
Также вам ничего не мешает включить экранную клавиатуру, нажав на соответствующую кнопку, чтобы напечатать в нужном вам месте текст, как бы вы сделали и в операционной системе при непосредственном контакте с ПК и реальной клавиатурой.
При использовании данного рабочего стола не стоит забывать о задержке. Ваши действия происходят на компьютере с небольшой задержкой, но, к слову, это не является проблемой при использовании, если вы не додумались играть таким образом в компьютерные игры. Теоретически таким образом можно смотреть кинофильмы, которые есть на вашем компьютере, прямо через смартфон, но звуковая дорожка серьезно отстает от видеоряда, который, к тому же, сильно подтормаживает, и картина превращается в слайдшоу.
Возможно ли заниматься оверклокингом при использовании Удаленного рабочего стола Chrome?
Естественно, что способность к разгону придется испытывать непосредственно в операционной системе. И ничего кроме видеокарты силами ПО в Windows серьезно разогнать не получится.
Итак, я запускаю MSI Afterburner, чтобы попробовать подразогнать GTX 1060. Но, к сожалению, возможность ввести точные значения почему-то отсутствует, утилита просто не реагирует на вводимые мной значения при помощи экранной клавиатуры.
Но за то ползунки отлично реагируют на клики, хотя, как бы я не пытался выставить более или менее точное значение, это оказывается сделать чертовски сложно.
Конечно, чисто теоретически таким образом вполне реально разогнать видеокарту, если вам хочется вывести оверклокинг на дистанционный уровень, разгоняя прямо с дивана или из кухни, занимаясь попутно варкой борща. Но я бы таким заниматься не стал и вам, собственно, не советую.
Заключение
По итогу Удаленный рабочий стол Chrome показал себя как прекрасный помощник в работе с ПК. Оперативной памяти такое решение потребляет совсем немного и практически не нагружает процессор.
Если вы ищите способ дистанционного управления компьютером, то, вполне возможно, что Удаленный рабочий стол Chrome - это ваш выбор, лично я рекомендую данное решение как проверенное и надежное.
А пользовались ли вы другими программами для обеспечения удаленного доступа к компьютеру, и какое у вас сложилось мнение о них?
У меня нет телевизора. Совсем. На антресолях где-то лежит старый маленький пузатик, но кабель антенны давно свернут, а телевизор этот — скорее издевательство, разве что на кухне поставить и то маловат.
Поэтому в качестве музыкального центра и телевизора я использую свой ПК. И все бы хорошо, но лень — это не только двигатель прогресса, но и фактор, который портит удовольствие, заставляя встать с дивана, на котором уютно устроился с кружкой чая, чтобы запустить программу или выключить колонки после просмотра фильма перед сном.
Существует множество ИК приемников, практически все они могут управлять компьютером и даже могут его выключить, но не могут его включить. И вот в этот момент компьютер перестает быть столь же удобным сколь телевизор или музыкальный центр. Но и проект Igor HID не порадовал своим софтом. Вроде все умеет, а неудобно. И не влезешь в него, исходников нет. Вот поэтому я собрался и сделал свой проект, открытый и доступный всем.
Сделал я его с нуля до законченного комплекта. А поскольку мой опыт в разработке и программировании электронных девайсов до него можно сказать был нулевым, то я считаю, что повторить это сможет каждый, кому это интересно.
Называется он USB-IRPC (USB Infrared Remote Personal Computer Control — «Юэсби-ИРПиСи» или ИРПЦ, кому как больше нравится :). Буква R на самом девайсе — просто сокращение от моего ника.
Важным преимуществом девайса является то, что он программно совместим с Arduino и в случае отсутствия уверенности в своих силах в ЛУТ может быть сделан на основе Arduino на макетной плате. Это, конечно, не так компактно и аккуратно, не так дешево, но зато доступно практически всем, даже навыки пайки особые не потребуются.
Если стремление к комфорту вам не чуждо и идея превратить свой компьютер в медиацентр, а заодно поуправлять электророзетками с пульта вам интересна, тогда вперед.
Просьба, если соберетесь делать устройство после прочтения статьи, задавайте вопросы в комментариях. По опыту предыдущих статей: вас довольно много и вопросы вы задаете одинаковые :)
Я лучше один раз отвечу всем, добавив в статью или в комментариях. Уведомления о комментариях с вопросами я просматриваю и стараюсь отвечать.
Итак, идея устройства
- Включать и выключать компьютер с пульта от телевизора или любого другого ИК пульта.
- Включать и выключать розетки, в которые воткнуты настольная лампа и колонки (две розетки, управляются отдельно).
- Управлять розетками с ПК программно, чтобы не искать пульт, оставленный на диване, когда сидишь перед компом или включать колонки для работы ПК в качестве будильника по расписанию с утра :)
- Запускать программы на ПК по нажатию кнопки на пульте.
- Выполнять custom задачи по нажатию кнопок — какие запрограммирую.
- Устройство не требует драйверов, работает и под Win7 х86, Win7 x64, Win 8 x64.
- Не требует прав администратора при подключении и использовании.
- В системе определяется как HID устройство (USB Input Device).
- Никаких дополнительных .dll типа lubusb тоже не потребуется.
- Под Linux не проверял, но не думаю, что будут проблемы. Правда написать софт я не смогу — под Linux я этого не умею.
Недостатки
- Пока на мой взгляд распознавание нажатий кнопок пультов не идеально. Можно сделать лучше, уверен. Но это исправляется программно.
- Вшитые функции, работающие и без ПК, можно поменять только перекомпилировав прошивку, а для этого придется скачать AVR Toolchain — писать прошивку в Arduino IDE сплошное мучение для меня, поэтому я пользуюсь Code::Blocks. Но залить прошивку в Arduino не составляет никакой проблемы. Даже в консоль лезть не придется. Позже можно будет и программно назначить эти функции любым кнопкам пульта.
- Программа на английском. Я знаю, что у подавляющего большинства проблемы с английским и знаю привычку все и вся русифицировать.
- Русские надписи почти всегда длиннее английских либо имеют уродливые сокращения.
- В русском языке не сложилось однозначной терминологии для ИТ и надписи на элементах интерфейса часто больше путают чем проясняют.
Я расскажу сначала как сделать на основе Arduino, затем расскажу как сделать самому с нуля, а если найдутся желающие, напишу отдельно как с этим устройством работать программно с ПК.
USB-IRPC на основе Arduino
На самом деле я и начинал устройство на основе Arduino. Я использовал дешевую Arduino Pro Mini и кусочек макетной платы:
«IRPC v1»
Эта версия не имела связи с ПК, умела только управлять розетаками и питанием ПК, но проработала у меня больше 9 месяцев — с ноября 2011го.
Как обычно, начинаем с закупки деталей.
Нам понадобится:
1. Arduino (любая с питанием от 5В) — примерно от $7
Модуль управления розетками:
2. Плата с реле на 220В, управляемая сигналом 5В. Если хватает опыта, можете сделать сами. У меня была в хозяйстве вот такая, давно думал, куда ее приспособить:
Да, релешек на ней 4, а используется только 2, потому что во-первых — у меня был только 4проводный кабель под рукой, а для 4 реле жил нужно 6 (+- и 4 сигнальных), а во-вторых под рукой было только 2 одинарные розетки, а удлинителей не на общей шине, а с проводами к каждому гнезду отдельно я не нашел на рынке. Мне она досталась за дикие $17, но купил я ее давно. Сейчас она есть на ebay по $3.82, более того, советую вам взять для этого проекта с двумя реле — дешевле и компактнее:
Недостаток реле в том, что они щелкают при переключении. И если бы у меня не валялись без дела, я бы сделал на симисторах BT138 с гальванической развязкой на MOC3063 примерно вот по такой схеме (не моя, дернул кусок из найденной гуглом картинки):
3. Кабель 4-проводный (можно использовать UTP, если есть, тогда розеток можно сделать больше). Длина — чтобы хватило от ПК до места где будет лежать блок розеток.
4. Коннектор PBS-4 для окончательного варианта или вилка PLS-4, если будете делать на Arduino.
5. Кабель медный для подключения розеток к реле — 2 куска примерно сантиметров по 20.
6. Кабель электрический с вилкой Schuko (CEE 7/4) или любой другой, имеющийся под рукой, который выдержит нагрузку:
7. Две настенные накладные розетки (или больше, если релешек больше и кабель UTP) — примерно 30 рублей штука.
8. Кусок фанеры и коробочка для крепления платы с реле и розеток.
Я смонтировал в обычную картонную коробку, прикрепил к куску пластика болтиками и закрепил кабели стяжками. получилось вот так:
«USB-IRPC 2-sockets 220v module»
Под столом это смотрится довольно аккуратно. Розетки разные, да, других не было :) Одну купил, вторая осталась от апгрейда настенной розетки на двойную.
«RPC-2PWR»
Оформительские изыски оставляю на ваше усмотрение.
Модуль ИК приемника
9. ИК приемник TSOP1738, TSOP1736 или IRM_3638. Найдете аналог — попробуйте его. У меня IRM3638 работает лучше всего.
10. Резистор на 10кОм
11. Светодиод + резистор на 100-390 Ом (какой есть такой и берите), на крайний случай можно обойтись встроенным в Arduino на Pin 13 если под рукой ни резистора ни светодиода нет, будет без выносной индикации.
12. 2 Коннектора PBS-4 для окончательного варианта или вилка PLS-4, если будете делать на Arduino.
13. Четырехпроводный кабель такой длины, чтобы хватило от системного блока ПК (девайс установим внутрь) до места, где приемник удобно закрепить, чтобы он был на прямой видимости с дивана (я закрепил на ножке монитора).
Модуль управления питанием ПК
14. Коннектор PBS-2 для подключения к материнской плате вместо кнопки питания.
15. Коннектор PLS-2, для подключения кнопки питания от корпуса параллельно, чтобы не терять возможность ей пользоваться. (можно просто купить одну линейку пинов PLS-40 и откусить кусачками от нее куски с нужным количеством пинов).
16. Оптопара PC817 или ее аналог. По идее стоит 4-8 рублей, но на Царицынском радионыке барыги за нее потребовали 40 рублей.
Можно и реле использовать, но это совсем изврат получится, хотя работать будет :)
17. Токоограничительный резистор на 100-150 ом любой мощности, что найдется под рукой.
Интерфейс с ПК (V-USB)
18. USB кабель, нас интересует только USB A вилка для подключения к ПК, на другом конце может быть что угодно, мы его все равно отрежем. Так что можно использовать любой ненужный кабель. Лишь бы целый был со стороны компа.
19. 2 стабилитрона на 3.6В желательно 0.25 Вт, но можно больше.
20. 2 резистора на 68 Ом.
21. 1 резистор на 2.2 кОм. К мощности особых требований нет.
Паяльник, припой, флюс (канифоль сойдет), немного монтажного провода (да любые проводки, какие есть под рукой).
Какой-нибудь пульт с кодировкой RC-5 типа такого:
«IR RC»
У меня также отлично работает пульт от AverMedia.
Если будете собирать на макетной плате, то понадобятся она и немного проводов, нечто в этом роде :)
Это только кажется что всего много, но на самом деле затраты невелики. Разве что будете покупать все в Чип и Дипе :)
Разбираемся как собрать и как это работает
Если у вас Arduino Pro Mini или Arduino nano, устанавливаем ее на макетную плату типа Breadboard или как в моем случае на кусочек макетки с пятачками для пайки, припаяв ее туда напрямую или с помощью коннекторов, чтобы можно было снять:
Обычную придется подключать к макетной плате проводками.
Подключаем ИК приемник.
Сигнальную ножку напрямую к пину 8 (D8). Между сигнальной и ножкой питания включаем резистор на 10к, ну и оставшуюся ножку заземляем:
у TSOP 1738 сигнальная ножка на фото справа:
Средняя — питание (+5В), левая — земля (GND).
Это три провода, четвертый — для выносного светодиода, я его поставил рядом с приемником, чтобы показывать, что нажатие кнопки принято. Подключаем его через резистор анодом к пину D9, катодом к земле.
Подключаем плату с реле
- VCC к +5 Arduino
- GND к GND Arduino (земля)
- IN1 к пину 6
- IN2 к пину 5
Подключаем управление питанием ПК
Кнопка питания на корпусе просто замыкает два контакта, мы сделаем то же самое с помощью оптопары PC817.
Когда подаешь 5В на вход светодиода, сопротивление между ножками фотодиода падает почти до нуля (на самом деле не до 0 но для наших целей сойдет). Для того, чтобы выход микроконтроллера не спалить, включаем последовательно токоограничивающий резистор.
Резистор подключаем к выходу А2 Arduino, второй контакт резистора к 1й ножке PC817 (отмечена точкой). Вторую ножку на землю. К 3й и 4й подключаем двумя проводами с двухконтактным разъемом те два пина на материнской плате, что обозначены как PWR + и PWR-, сюда же параллельно подключаем кнопку от корпуса ПК, чтобы она тоже могла замыкать эти контакты.
Подключаем к USB
В моем проекте используется программная реализация USB для AVR известная как V-USB.
Берем USB кабель, отрезаем конец, который подключался к устройству
Красный — VCC (пин 1 на схеме справа)
Черный — GND (пин 5 на схеме справа)
Зеленый — D+ (пин 3 на схеме справа)
Белый — D- (пин 2 на схеме справа)
D+ подключаем к пину 2 через резистор 68 Ом, D- подключаем к пину 4 через резистор 68 Ом.
резистором на 2.2 кОм соединяем ножки D3 и D4 (подтяжка).
Стабилитроны включаются в обратном направлении катоды (сторона с черной полоской на корпусе) к — D2 и D4 соотвественно, аноды — на землю.
VCC и GND подключаем соответственно к таким же пинам Arduino — питаться она будет от USB.
Все, наша схема собрана.
Внимательно проверьте все по шагам, чтобы не спалить при подключении ничего.
Если все проверили — прошиваем с помощью AvrDudeR. Дело в том, что писал я прошивку на С, компилировано с помощью AVRToolchain. Проект в Code::Blocks. Исходники проекта выложу чуть позже на странице проекта
Настройки такие:
COM порт указываем тот, который назначился для Arduino, для Duemillanove скорость 57600, для UNO 115200.
Файл прошивки берем этот.
Если прошилось все успешно, можно отключить Arduino от компа, подключаем теперь нашим USB проводом, который мы развели на плате через стабилитроны и резисторы. Одновременно лучше не подключать и хвостом самой Arduino и коннектором проекта.
Если все сделали правильно, в системе определится USB Input Device.
Управление с помощью плагина к MKey
Плагин позволяет назначать кнопкам пульта любые функции MKey.
Качаем MKey, устанавливаем, мой плагин к нему кладем в папку Plugins.
Запускаем MKey, на вкладке настроек включаем плагин R USB-IRPC.
Настройка простая. Жмем Add, открывается окошко, где предлагают нажать кнопку, жмем ее на пульте, даем ей название как на пульте и назначаем для нее действие.
Для того, чтобы управлять реле программно, понадобится моя программа:
- управлять реле и выносным светодиодом
- программно «нажать» кнопку питания на ПК
- автоматически отключается от устройства при засыпании ПК
- автоматически подключается при пробуждении ПК.
- опрашивает устройство каждые 300 мс по умолчанию (настраивается)
- выводит состояние реле и индиакторного светодиода, код последней нажатой с момента опроса кнопки пульта
- включить/отключить прием нажатий кнопок ИК пульта.
- сохранить в EEPROM состояние реле и считать его оттуда. При включении USB-IRPC считывает из EEPROM состояние реле и устанавливает их.
- соответствие названий кодам кнопок пульта считывается из простого текстового файла, выбранный файл конфигурации пульта загружается при старте программы автоматически.
- запуска программ по нажатию кнопки
- передачи нажатий кнопки в запущенную программу
- назначения устройству самостоятельной реакции на выбранные кнопки пульта одной из встроенных функций: переключение реле, нажатие кнопки питания ПК. (сейчас такая функциональность в прошивке встроена для одного конкретного пульта).
Я постарался рассказать максимально подробно для самых начинающих, потому что постоянно получаю множество простых одинаковых вопросов в почте, поэтому объем статьи получился большой.
Во второй части расскажу как сделать устройство, изображенное на самой первой фотографии самостоятельно с нуля, а не на основе Arduino.
Все исходники я немного причешу и выложу на страницу проекта, чтобы функционал можно было изменить под себя. Если будут желающие, отдельно расскажу что и как работает с программной точки зрения.
Часть 2 — изготовление с нуля и программный интерфейс.
К настоящему времени разработано достаточно много самых разных решений для ДУ персональным компьютером. Все они имеют разную сложность и функциональность. Для радиолюбительских устройств можно условно провести разделение:
1. Приемный модуль не совмещен с декодирующей частью. Декодирование ИК посылок осуществляется на ПК специальной программой. Как правило, схема приемника предельно проста. Подключение может быть реализовано через COM или LPT порты.
2. Прием и декодирование сигнала происходит в устройстве аппаратно. На ПК отправляется уже распознанная посылка. Распознавание может быть выполнено в виде реального кода, либо некого условного кода, который хоть и не является реальным для данного пульта, но обеспечивает однозначную идентификацию нажатой кнопки.
Обеим способам присущи достоинства и недостатки. Например, недостатки для первого типа: такие порты как COM и LPT встречаются в компьютерах все реже и реже, а в ноутбуках уже практически перевелись. Декодирование на ПК требует реалтаймового доступа к портам, что не гарантируется, в результате чего не всегда верно принимается посылка. Достоинства: простота, отсутствие необходимости программировать железо, существование программ способных распознать большинство протоколов. К плюсам второго подхода следует отнести возможность использовать интерфейс USB, не обязателен реалтайм. Недостатки – более сложная аппаратная часть, необходимость ее программирования.
Вашему вниманию предлагается приемник-декодер, подключаемый по интерфейсу USB, позволяющий управлять приложениями на ПК по инфракрасному каналу. В устройстве происходит распознавание реальных кодов, таких протоколов как: NEC, SAMSUNG, JVC, RC5, SONY SIRC (15 bit). Этого достаточно для подавляющего большинства используемых пультов. В компьютер отправляется последовательность вида:
(toogle,device_low,device_high,command:system). Например, в случае посылки по протоколу NEC, где младшая часть адреса устройства 134, старшая –107, код команды -18: в ПК будет отправлена строка (0,134,107,18:NEC_CODE).
Значение toogle будет либо 0, либо 1 – чередование от нажатия к нажатию. При удержании кнопки значение данного параметра не будет меняться. В стандарте RC5 это штатная функция. В других форматах этого нет, поэтому приемник программно определяет удержание для протоколов, отличных от RC5.
Приемник может работать используя один из классов USB устройств – CDC или HID, в зависимости от прошивки. Это сделано из-за того, что имеются определенные преимущества и недостатки в работе этих классов друг перед другом.
Преимущества CDC:
Поскольку CDC это виртуальный COM порт, то принципы работы с ним простые и ничем не отличаются от работы с обычным COM портом. Не требуются специальные драйвера со стороны ПК (используются inf-файлы для разных ОС). Работает в XP, Vista, Win7. Можно увидеть посылки устройства обычным терминалом, в случае необходимости. Не загружает процессор – посылки отрабатываются только во время приема.
Недостатки CDC:
Как и с реальным портом, требуется постоянное соединение устройства. Отсоединенное устройство придется вручную присоединять в приложении на ПК (переоткрывать порт) – в некоторых случаях это может быть неудобно.
Преимущества HID:
Можно отсоединять и присоединять устройство "на горячую", программа на ПК будет автоматически его отслеживать и по цвету значка в трее, возможно определять состояние подключения.
Недостатки HID:
Для работы приложения требуется специальный драйвер. Был использован драйвер libusb-win32-filter-bin-0.1.12.1, который работает пока только на WinXP 32 bit. Если у вас другая операционная система, то остается CDC. Программа периодически опрашивает устройство, поэтому мизерная загрузка процессора в простое все же есть.
Контроллер – Atmega8 16AI (без индекса V, это важно). Светодиод D1 применен для снижения напряжения питания контроллера (5В), чтобы улучшить согласование уровней напряжения от МК с интерфейсными линиями USB (3.3В). Его переход обладает также стабилизирующими свойствами. Я применил яркий смд светодиод, выпаянный из ленты. Падение напряжения на диоде должно быть около 1.5В. В тоже время ИК приемник IR1 питается от 5В, поэтому диод D2 (лучше взять германиевый или Шоттки – с малым падением напряжения на переходе) защищает вход контроллера от перенапряжения. Переключатель SW1 применяется для переключения в режим программирования устройства. Об этом ниже.
Монтаж выполнен преимущественно смд элементами, вариант конструкции:
Для того, чтобы в последующем было удобно перепрограммировать устройство, в первый раз следует прошить бутлоадер (см. архив проекта, папка tools) по интерфейсу ISP любым удобным программатором. Прошивка рабочей программой далее выполняется по USB. Для этого следует замкнуть переключателем SW1 пин PB1 микроконтроллера на землю и присоединить устройство к порту USB. После этого запустить программу Upload.exe (оболочка для BootloadHID.exe) из папки default (или папки в которой находится hex-файл) соответствующего проекта. Откроется окно:
В строчку Firmware необходимо внести имя файла прошивки (без расширения). После этого нажать CMD Flash и подтвердить выбор. В окне:
Нажать кнопку CONFIRM и начнется процесс загрузки прошивки в контроллер. Остается только извлечь устройство, отключить PB1 от земли выключателем SW1и подключить снова к USB порту. Если был выбран класс устройства HID, то запроса на установку драйверов не последует. В диспетчере устройств можно увидеть новое оборудование. Для CDC класса в запросе на установку драйвера, необходимо указать нужный inf файл из папки inf (см. проект), в зависимости от ОС. После этого в системе появится виртуальный COM порт, в который будут приходить распознанные посылки.
Рассмотрим настройку программы, которая, в отличие от других приложений, достаточно проста. Главное окно программы:
Для того чтобы в клиенте было удобней задавать соответствие команд управляющим воздействиям, предусматривается задание командам и имени пульта информативных имен.
Для этого устанавливаем переключатель в положение Naming (Именование) и нажимаем любую кнопку на пульте. Если для этого пульта (его адреса) нет соответствующего файла настроек, то появится запрос на введение имени пульта:
Вводим имя (например, MSI) и жмем ОК. После вторичного нажатия на кнопку, программа определит, что имя данного пульта уже ассоциировано и предложит поименовать команду:
Вводим имя команды и жмем ОК (или Enter). Таким образом, можно ассоциировать все нужные кнопки пульта. Настройки сохраняются в папку с исполняемым файлом сервера. Имя файла состоит из частей адреса устройства, расширение irs. При необходимости файл ассоциаций можно редактировать блокнотом. В итоге, получается следующее:
В данном случае видно, как отличается принятая и отправленная строки, а также реакцию управляемого клиента (Mkey), настроенного на команду right от пульта MSI (регулировка громкости).
Остальные настройки:
-Use only named: Передаваться клиентам будут только именованные команды от именованного пульта. Сделано для исключения реакции на посторонние пульты или ненастроенные/ненужные команды.
-Unnamed enable: помимо именованных команд будут переданы и неименованные (если таковые примет приемник).
-Naming disable: будут передаваться посылки напрямую, без именования.
Как правило, наиболее комфортна работа с включенной опцией Use only named после задания соответствия имен.
Кнопка ОК сворачивает приложение в трей, Cancel – закрывает приложение.
В архиве проекта присутствуют все необходимые файлы и исходные коды
Проект предоставляется "как есть". Все работы по подключению данного устройства к ПК проводятся на ваш риск. Автор ответственности не несет.
Для одного проекта необходимо было сделать управление компьютером при помощи ардуинки. Почитав информацию в интернете нашел, что такое возможно только при помощи Ардуинок с atmega 32u4 или Due. Мне такой вариант не подошел, так как у меня уже была готовая разведенная плата с atmega328, поэтому пришлось искать другой вариант, которым я и хочу с вами поделиться.
Берем любую ардуинку, например Uno и подключаем к ней кнопку (в моем случае один контакт к pin 2, другой к GND
bool buttonClicked = false;
if ((digitalRead(2) == LOW) && (buttonClicked == false))
if (digitalRead(2) == HIGH) buttonClicked = false;
Теперь перейдем к компьютеру.
Создаем примитивное фоновое приложение
$key = StringReplace($key, @LF, "")
$key = StringReplace($key, @CR, "")
if ($key = "KEY_UP") then Send("")
В строке _CommSetPort(5, $err) 5 - заменить на номер соответствующего COM порта, на котором висит ардуинка
Теперь по нажатию кнопки подключенной к Arduino у нас на компьютере будет эмулироваться нажатие кнопки ВВЕРХ в любом окне, даже в играх.
Таким образом эмулировать можно нажатие любой кнопки, комбинации кнопок, движение мышки и все, что вам будет угодно.
Arduino & Pi
1.1K поста 18.1K подписчиков
Правила сообщества
В нашем сообществе запрещается:
• Добавлять посты не относящиеся к тематике сообщества, либо не несущие какой-либо полезной нагрузки (флуд)
• Задавать очевидные вопросы в виде постов, не воспользовавшись перед этим поиском
• Рассуждать на темы политики
Спасибо за програмку autoit) давно такую искал
я вот смотрю всем можно через эту ардуину управлять, а женьщинами можно ?
Создаем примитивное фоновое приложение"
Как эти пользоваться ?)
Можно обойтись без AutoIt если собрать простой шилд.
Вот видео (На английском, но идея должна быть понятна)
Здравствуйте. Не могу понять почему не работает. Подключил кнопку, загрузил скетч в ардуинку. Затем скачал autoit и библиотеку. Закинул файл CommMG.au3 (который был в zip файле) в папку Include в autoit. Выбрал нужный COM порт. Нажал GO и НИЧЕГО НЕ РАБОТАЕТ . .Может я что-то не так с библиотекой делал?
Опять здравствуйте. Вы не знаете как можно из кнопки переключатель сделать. Например есть 2 кнопки. 1 отвечает за SPASE на клавиатуре, а при нажатии на 2 кнопку, кнопка 1 начинает отвечать за DELETE например. И так по кругу.
Ну тогда нормально. Программное устранение дребезга самое рациональное решение, для снижения стоимости платы.
Хм.. А это точно будет работать ? Разве на ардуино есть преобразоватьель уровней из TTL -> RS-232 ? Да и дребезг контактов не мешало бы устранить. Хотя бы простой RC цепочкой, хотя это и не совсем корректно. А то вместо одного нажатия вполне реально и несколько получить (зависит от скорости RS-232).
А не проще было сразу HID устройство реализовать? А то как-то костыльно получается.А разве Ардуина не умеет работать в качестве HID при подключении к USB? И тогда на самом компе вообще ничего не надо делать, Ардуина сама будет и клавиатурой, и мышью.
The Legend VST Synth Special Controller
У музыкантов диайвайщиков, появилось новое направление реализации своего таланта в устройствостроении, а именно: делать миди контроллеры под определённый виртуальный инструмент. Мой друг довольно успешно реализовал контроллер для Артуриевского Минимуга или просто Mini V. Знакомый испанец с канала Nerd Musician, также делал контроллер под MiniV . Но всё это делалось из фанеры и выглядит довольно громоздко.
Для себя, я находил в интернете магазин, где один интузиаст делал контроллеры под разные виртуальные инструменты.
Итак, Максим, заразил меня этой интересной идеей. Ну что-же? Будем делать свой МУГ!
Из многочисленных реализаций Муга в виде вст, мне лично, очень понравился виртуальный синтезатор : The Legend от Synapse Audio. Скажу даже больше: я влюбился в него. Для заядлого берлинщика, он буквально идеален, правда секвенсора в нём нет!
Взяв за основу оригинальный дизайн веэстешки, я перерисовал его под свои размеры в "иллюстраторе". Распечатал на лазернике и заламинировал.
Ещё со старой работы, у меня есть корпуса Gainta G 756, но они очень высокие. Поэтому я его располовинил, дно вырезал из старого оргстекла.
За основу проекта, конечно же берём Ардуино Леонардо и четыре штуки мультиплексора CD4067. Пользуемся библиотекой Control Surface, которая позволяет запрограммировать это всё очень быстро и просто. По началу я даже думал и не выкладывать код, но всё таки в конце - вы его найдёте. )))
Хитрость, разве что в подключении светодиодов, которые я расположил на корпусе. На самом деле ничего хитрого - паралельно контактам сигнал и минус на переключателе, последовательно, через килоомное сопротивлению (чтоб не сжечь). Да, кстати переключатели - подключены аналогично, обычным потенциометрам, и в коде ничем от потенциометров не отличаются: то есть плюс и минус на крайние ножки и с центральной - сигнал.
Заказал детальки на Алике и в конце концов собрал сие чудо! Деталек, я должен сказать, много: 38 потенциометров с колпачками ручек, 12 свитчей (на 2 положения), 9 светодиодов с держателями, леонардо, 4 мультиплексора.
Можно было заморочиться и сделать вместо некоторых потенциометров переключатели ( как на советских телевизорах), по аналогии с оригиналом. Но нога у этого переключателя - огромная, а тут и так 59 элементов на площади меньше чем лист формата А4.
Замапил все элементы управления как глобальные, что бы в любом проекте, контроллер вёл себя адекватно. Кстати можно замапить и на ту же Артурию Мини.
У оригинального, виртуального The Legend, есть ещё и "задняя" панель на которой расположены ручки управления эффектами и ещё какой то ерундой, которая ни на что не влияет. Хочу сделать, в будущем, контроллер и для задней панели. Ручек там, конечно, немного, но есть идея сделать внизу обычные нотные клавиши, реализовав это на кнопках.
Ну вот такой вот. замечательный зверь у меня получился.
Терпение и упорство, реализуют любую идею, чего и Вам желаю.
Control_Surface.begin(); // Initialize Control Surface
Control_Surface.loop(); // Update the Control Surface
USB хаб с принцессами и драконами
С идеей создания многофункционального USB-хаба я носился довольно давно, но это ж обычное дело - сначала для других, а уж потом (читай - никогда) - для себя, любимого.
В общем, когда я, наконец, собрался, это был уже основательно выношенный проект.
Выглядит он почти как настоящий радиоприбор, и, по сути, таковым и является :)
Правда, сперва я просто хотел засунуть в какую-нибудь небольшую коробочку все те прибамбасы, которые я использую во время работы и которые обычно занимают почти всю свободную поверхность стола : программатор, всякие переходники-с-USB-на-что-то-другое, лог. анализатор, т.н. USB-доктор (вольт/ампер-метр), частотомер и прочее.
И первоначальный вариант выглядел так себе :
Не стал его домучивать, на полдороге разобрал и отобрал наиболее нужное и то, что действительно нуждается в общем корпусе :
Зеленая платка - собственно, сам хаб, затем по кругу - светодиодный дисплей для частотомера, тот самый "USB-доктор", переходник USB-UART, GPS-приемник со своей антенной и преобразователь напряжения на LM2596.
Будущий корпус - алюминиевый профиль, из которого делают офисные перегородки и двери. Его сечение 50х100мм, длина - 80мм.
Окошки и отверстия вырезаны на домашнем фрезере
Заводская краска на нем держится очень крепко, обычно, если вдруг надо, ее снимают пескоструем. Но один добрый человек предложил просто замариновать этот кусок в растворителе. Я так и сделал : налил в пакет 647-й растворитель, положил в него железяку и выставил на солнце. К вечеру краска облезла большими лоскутами :
Боковые стенки я вырезал из 1,5-миллиметрового листа и немного прошелся напильником, устраняя "несовершенства"
Краска - порошковая, не знаю ее код по таблице RAL, мастер (тот самый добрый человек) называет ее "черный крокодил". Наносится, как и всякая другая, тонким слоем, но при запекании дает такую необычную поверхность :
Основная печатная плата - двухсторонняя, сделана фоторезистивным способом (я только развожу, сам платы не делаю). Отверстия, те, что НЕкруглые, вырезались вручную, поэтому вид у них не очень.
На этом фото, кроме заводских - плата с разъемами и небольшая платка со светодиодами, которые показывают выбранный рабочий режим.
В собранном виде это выглядит так :
С обратной стороны - микроконтроллер, генератор на 20MHz, гребенки для подключения к другим платам и всякая мелочь
С платы USB-хаба один внутренний порт выводится на лицевую панель (4-пиновый разъем), два других - на заднюю (длинный разъем под гребенку), а последний, четвертый, занят переходником USB-UART.
Для крепления платы приемника я вырезал прокладку из акрила. Антенна - на ее обратной стороне.
Тут они все перед финальным броском
Хаб принимал участие в недавнем конкурсе на "Радиокоте", поэтому на боковой стенке - соответствующая гравировка.
Осталась самая малость - закрыть антенну крышкой, наклеить стекла поверх индикаторов и сделать ручку для энкодера
Тут для самых стойких технарей, поэтому можно не читать :)
Основное назначение - как ни странно, хаб : один порт - на лицевой панели, два других - сзади.
Встроенный амперметр дает возможность замерять ток потребления USB-девайсов.
Верхний тумблер переключает напряжение, от которого можно запитывать какие-то внешние устройства (3,3 и 5 вольт). Нижним тумблером можно выбрать длительность измерения для частотомера (1/10/50 сек).
Есть LC-метр, он сейчас делается в виде выносного блока, который подключается через разъем DB-9 ( на лицевой панели). Задний DB-9 - резервный, пока не занят ничем.
Частотомер имеет несколько рабочих режимов, которые выбираются энкодером : частота, период, скважность, длительность одиночных импульсов. Набортный GPS-приемник дает возможность калибровать и этот частотомер, и что-то другое - с него снимается сигнал 1pps, который имеет погрешность 10 в минус шестой (или седьмой ?) степени и высокую стабильность при изменении температуры.
Помимо этого, когда хаб "просто стоит и ничего не делает", на дисплей можно выводить время, принимаемое с GPS-спутников (на видео) или какую-то информацию с компьютера (пока только загрузку ЦП и памяти, но я еще что-нибудь придумаю :).
Читайте также: