Оглавление:

Технологии для вашего дедушки: 13 шагов (с изображениями)
Технологии для вашего дедушки: 13 шагов (с изображениями)

Видео: Технологии для вашего дедушки: 13 шагов (с изображениями)

Видео: Технологии для вашего дедушки: 13 шагов (с изображениями)
Видео: Когда тренер - твой друг😏 2024, Ноябрь
Anonim
Image
Image

Сколько раз вы приходили в дом своих бабушек и дедушек, чтобы помочь с «технологической проблемой», которая заканчивалась отключением кабеля питания, разряженной батареей пульта дистанционного управления или невозможностью переключить источник на их телевизоре? Знаю, что со мной такое случается довольно часто. Хотя большинство их проблем можно решить, просто побежав в магазин за новыми AA, иногда они могут извлечь выгоду из более индивидуального решения.

Например, дедушка моей девушки купил новый телевизор, и мы пытались научить его, как менять источник, чтобы он мог переключаться между DVD и телевизором, но он просто не мог этого понять. У него также проблемы со зрением, и он не слишком заинтересован в запоминании сложных процессов, он просто хочет смотреть свои шоу, когда хочет. После попытки спокойно объяснить шаги во время нашего последнего визита без особого успеха, я решил, что просто сделаю его собственный простой двухкнопочный пульт дистанционного управления. Это позволило бы ему безболезненно менять источник входного сигнала на своем телевизоре, легко переключаясь между его любимыми DVD Matlock и Price is Right.

Шаг 1: материалы

  • PhidgetIR
  • PhidgetSBC4 (или любой одноплатный компьютер, например Raspberry Pi)
  • Паяльник
  • Боковые фрезы
  • Инструмент для зачистки проводов
  • Провода перемычки
  • USB-кабель
  • Кабель Phidget
  • Вложение
  • Заглушки для сквозных отверстий
  • Термоусадочная трубка

Шаг 2: планирование

3D печать
3D печать

Чтобы создать пульт, мне нужна была возможность отправлять на телевизор команды через инфракрасный порт (CIR). Я решил использовать для этой задачи PhigetIR. PhidgetIR - это управляемое через USB устройство, которое может отправлять и получать команды CIR. Я выбрал это по нескольким причинам:

  • Я хотел закончить этот проект как можно скорее и пустить его в ход, поэтому мысль о том, чтобы вытащить осциллограф и макетную плату, не была привлекательной. Кроме того, насколько вероятно, что мои запаянные вручную схемы все еще будут работать через год или два?
  • PhidgetIR обладает способностью «изучать» команды CIR, что делает разработку чрезвычайно простой.
  • Вы можете использовать практически любой основной язык программирования с PhidgetIR. Это означало, что я мог использовать Java и быстро закончить работу.
  • Наконец, я работаю на Phidgets, поэтому мне нравится API, и всегда есть запасные устройства.

Поскольку я решил использовать PhidgetIR, мне понадобился компьютер, чтобы запустить его. Я хотел, чтобы этот проект был автономным приложением, очень похожим на обычный пульт, поэтому настольный компьютер или ноутбук отсутствовали. Я решил использовать PhidgetSBC4 (одноплатный компьютер под управлением Debian Linux), потому что он позволял мне взаимодействовать с обеими кнопками без какого-либо дополнительного оборудования. Их можно просто подключить напрямую к встроенному VINT Hub. Примечание: вы также можете использовать Raspberry Pi для этого проекта. Наконец, я хотел, чтобы этот проект был не только функционально надежным, но и отлично смотрелся, поэтому решил, что потребуется корпус, напечатанный на 3D-принтере.

Шаг 3: 3D-печать

3D печать
3D печать
3D печать
3D печать

В этом проекте Geomagic использовалась для моделирования корпуса. Как для PhidgetIR, так и для PhidgetSBC4 доступны файлы трехмерных шагов, которые упростили процесс. На этом этапе были приняты некоторые решения относительно размера и функциональности корпуса:

  • PhidgetIR имеет два ИК-светодиода, которые должны быть направлены в сторону телевизора для отправки команд. Вместо того, чтобы строить корпус вокруг платы PhidgetIR, ИК-светодиоды можно было распаять и вклеить в отверстия на боковой стороне корпуса. После этого плату PhidgetIR можно было установить отдельно от светодиодов, используя пустое пространство.
  • Разъемы VINT Hub на PhidgetSBC4 можно было согнуть вверх, что по-прежнему обеспечило бы доступ для кнопочных соединений, а также предотвратило бы необходимость создания большего корпуса.

Я также решил добавить метку для кнопок и метку, указывающую направление, в котором они должны быть повернуты, чтобы ИК-светодиоды были направлены в правильном направлении. Я распечатал корпус локально из черного АБС-пластика.

Шаг 4: Сборка - Снимите светодиоды

Сборка - Снимаем светодиоды
Сборка - Снимаем светодиоды
Сборка - Снимаем светодиоды
Сборка - Снимаем светодиоды
Сборка - Снимаем светодиоды
Сборка - Снимаем светодиоды

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

Шаг 5: Сборка - добавление заголовков сквозных отверстий

Сборка - добавление заголовков сквозных отверстий
Сборка - добавление заголовков сквозных отверстий
Сборка - добавление заголовков сквозных отверстий
Сборка - добавление заголовков сквозных отверстий

Затем на место светодиодов были добавлены сквозные разъемы, что упростило их подключение с помощью 4-контактной перемычки. Используйте термоусадочную трубку, чтобы предотвратить случайный контакт.

Шаг 6: Сборка - прикрепите светодиоды

Сборка - прикрепить светодиоды
Сборка - прикрепить светодиоды
Сборка - прикрепить светодиоды
Сборка - прикрепить светодиоды

Приклейте светодиоды к боковой стенке корпуса.

Шаг 7: Сборка - прикрепите PhidgetIR

Сборка - прикрепите PhidgetIR
Сборка - прикрепите PhidgetIR
Сборка - прикрепите PhidgetIR
Сборка - прикрепите PhidgetIR
Сборка - прикрепите PhidgetIR
Сборка - прикрепите PhidgetIR

Присоедините PhidgetIR к корпусу и подключите светодиоды.

Шаг 8: Сборка - добавление кнопок

Сборка - Добавление кнопок
Сборка - Добавление кнопок
Сборка - Добавление кнопок
Сборка - Добавление кнопок
Сборка - Добавление кнопок
Сборка - Добавление кнопок

Кнопки необходимо подключить к встроенному VINT Hub на PhidgetSBC, поэтому я разрезал кабель Phidget пополам и припаял концы к кнопкам. Обратите внимание, что требуются только белый провод (сигнал) и черный (земля).

Шаг 9: Сборка - Собираем все вместе

Сборка - собираем все вместе
Сборка - собираем все вместе
Сборка - собираем все вместе
Сборка - собираем все вместе

Чтобы собрать все вместе, потребовалось некоторое управление кабелями, однако корпус работал хорошо.

Шаг 10: Программное обеспечение - Код

Для этого проекта требуется только один файл Java, который вы можете найти здесь. Программа использует один объект PhidgetIR и два объекта DigitalInput. Вы можете создать эти объекты следующим образом:

PhidgetIR ir = новый PhidgetIR ();

DigitalInput tvButton = новый DigitalInput (); DigitalInput otherButton = новый DigitalInput ();

Объекты цифрового ввода отображаются на физическую кнопку на VINT Hub. События присоединения, отсоединения, ошибки и изменения состояния также подписываются на:

tv.setIsHubPortDevice (правда);

tvButton.setHubPort (4); tvButton.addAttachListener (onAttachListener); tvButton.addDetachListener (onDetachListener); tvButton.addErrorListener (onErrorListener); tvButton.addStateChangeListener (onStateChangeListener); tvButton.open (); otherButton.setIsHubPortDevice (истина); otherButton.setHubPort (5); otherButton.addAttachListener (onAttachListener); otherButton.addDetachListener (onDetachListener); otherButton.addErrorListener (onErrorListener); otherButton.addStateChangeListener (onStateChangeListener); otherButton.open ();

Слушатель изменения состояния, упомянутый выше, выглядит так:

privatestatic DigitalInputStateChangeListener onStateChangeListener = new DigitalInputStateChangeListener () {@ OverridepublicvoidonStateChange (DigitalInputStateChangeEvent disce) {

DigitalInput ch = (DigitalInput) disce.getSource (); попробуйте {if (ch.getHubPort () == 4 && disce.getState () == true) {tvButtonActivated = true;} if (ch.getHubPort () == 5 && disce.getState () == true) {otherButtonActivated = true;}} catch (PhidgetException ex) {System.out.println ("Ошибка:" + ex.getDescription ());}}};

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

while (true) {if (tvButtonActivated) {

tvButtonActivated = false; Log.log (LogLevel. INFO, «СМЕНА ИСТОЧНИКА - ТВ»); ir.transmit (sourceButtonString, codeInfo); Thread.sleep (500); ir.transmit (rightButtonString, codeInfo); Thread.sleep (500); ir.transmit (enterButtonString, codeInfo);} если (otherButtonActivated) {otherButtonActivated = false; Log.log (LogLevel. INFO, «СМЕНА ИСТОЧНИКА - DVD»); ir.transmit (sourceButtonString, codeInfo); Thread.sleep (500); ir.transmit (leftButtonString, codeInfo); Thread.sleep (500); ir.transmit (enterButtonString, codeInfo);} Thread.sleep (250);}

Шаг 11: Программное обеспечение - Команды CIR

Программное обеспечение - Команды CIR
Программное обеспечение - Команды CIR

Вот пример того, как создать команду (в данном случае команду увеличения громкости):

// ИК-код

IRCodeInfo sourceButtonCI = новый IRCodeInfo (); String volumeUp = "77e1d0f0"; // Настраиваем кнопку источника sourceButtonCI.bitCount = 32; sourceButtonCI.encoding = IRCodeEncoding. SPACE; sourceButtonCI.gap = 108921; sourceButtonCI.trail = 549; sourceButtonCI.zero = newint [2]; sourceButtonCI.zero [0] = 549; sourceButtonCI.zero [1] = 627; sourceButtonCI.one = newint [2]; sourceButtonCI.one [0] = 549; sourceButtonCI.one [1] = 1755; sourceButtonCI.header = newint [2]; sourceButtonCI.header [0] = 9084; sourceButtonCI.header [1] = 4600; sourceButtonCI.repeat = newint [3]; sourceButtonCI.repeat [0] = 9084; sourceButtonCI.repeat [1] = 2308; sourceButtonCI.repeat [2] = 549; sourceButtonCI.length = IRCodeLength. CONSTANT;

Чтобы получить информацию для этой команды, я просто использовал пример PhidgetIR, который поставляется с библиотеками Phidget. Направив пульт на PhidgetIR и удерживая кнопку увеличения громкости, IR «изучает» код и заполняет пример. Затем эту информацию можно просто скопировать в код.

Шаг 12: Запуск программы

Файл Java можно записать и скомпилировать на внешнем компьютере. Поместите PhidgetRemote.java и phidget22.jar в одну папку и выполните следующую команду:

Windowsjavac -classpath.; Phidget22.jar PhidgetRemote.java

macOS / Linuxjavac -classpath.: phidget22.jar PhidgetRemote.java

После компиляции скопируйте сгенерированные файлы классов в PhidgetSBC4 и настройте его для запуска при загрузке.

Шаг 13: Результат

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

Конкурс дистанционного управления 2017
Конкурс дистанционного управления 2017
Конкурс дистанционного управления 2017
Конкурс дистанционного управления 2017

Третий приз в конкурсе дистанционного управления 2017

Рекомендуемые: