Оглавление:

ИК-USB-приемник ATtiny85: 11 шагов (с изображениями)
ИК-USB-приемник ATtiny85: 11 шагов (с изображениями)

Видео: ИК-USB-приемник ATtiny85: 11 шагов (с изображениями)

Видео: ИК-USB-приемник ATtiny85: 11 шагов (с изображениями)
Видео: Мультимедиа контроллер и USB-HID за сотку! EasyHID ч.2 2024, Ноябрь
Anonim
ATtiny85 ИК-USB-приемник
ATtiny85 ИК-USB-приемник

ВНИМАНИЕ! ДАННАЯ ИНСТРУКЦИЯ УСТАРЕЛА.

Библиотека v-usb предназначена для работы с протоколом USB 1.1, который в настоящее время практически не существует. С появлением USB3 у вас будет больше, чем головная боль, пытаясь заставить работать устройства v-usb. После смены мультимедийного центра у меня возникло много проблем со стабильностью, и хотя ресивер работает, через некоторое время он перестает работать. Я безуспешно пытался это исправить. Я также сделал версию для atmega328p, но у этой были те же проблемы. Использование сторожевого таймера для периодической перезагрузки платы тоже не помогло, поэтому я отказался от v-usb.

Сделайте себе одолжение и не используйте эту инструкцию, если она не предназначена для образовательных целей. Вместо этого я рекомендую купить чип-модуль ATmega 32U4, который уже интегрировал интерфейс USB, и следовать этому руководству:

www.sparkfun.com/tutorials/337

Затем добавьте ИК-датчик TSOP31238, и все готово.

Привет, создатели! Это инструкция по созданию рабочего USB-ИК-приемника с использованием микроконтроллера Attiny85. Я начал этот проект, чтобы преодолеть отсутствие поддержки (по крайней мере, полной поддержки) некоторых ИК-пультов в ОС GNU / Linux. Следуя этим инструкциям, вы можете создать программируемый ИК-приемник USB, который работает с любым ИК-пультом, за несколько долларов.

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

  • Дэвид А. Меллис за его чертовое ядро https://github.com/damellis/attiny
  • Программное обеспечение Rowdy Dog для их библиотеки TinyTuner
  • Программное обеспечение Rowdy Dog для их крошечного загрузчика
  • Rancidbacon (https://rancidbacon.com/) для его порта arduino библиотеки v-usb (https://code.google.com/archive/p/vusb-for-arduino/downloads)
  • Seejaydee за его ИК-библиотеку для крошечных ядер, найденную в комментариях к инструктируемому https://www.instructables.com/id/Attiny-IR-librar… коде на https://www.instructables.com/id/Attiny-IR -библиотека…

Иногда бывает непросто найти правильного владельца библиотеки, поэтому, если я допустил ошибку, оставьте комментарий, и я решу проблему как можно скорее.

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

Основные источники информации, за которыми я следил:

  • https://nathan.chantrell.net/20121014/tinypcremot…
  • https://forum.arduino.cc/index.php?PHPSESSID=ap4jg…
  • https://blog.petrockblock.com/2012/05/19/usb-keybo…
  • https://learn.adafruit.com/using-an-infrared-libr…
  • https://codeandlife.com/2012/03/03/diy-usb-passwor…
  • https://codeandlife.com/2012/02/22/v-usb-with-atti…
  • https://www.instructables.com/id/Attiny-IR-librar…

Шаг 1. Некоторые соображения

  • У меня нет программатора AVR ISP, и я не очень хочу его покупать, поэтому я использовал Arduino для программирования attiny85.
  • Меня не интересует никакая другая ОС, кроме GNU / Linux, поэтому я не знаю, будет ли это работать иначе.
  • есть и другие ИК-библиотеки, но я не мог заставить их работать даже с ардуино. Учтите, что я начал с ограниченных знаний об IR-библиотеках. Может быть, я смогу заставить их работать сейчас, после того, как я приобрету опыт работы с изрядным количеством вопросов. В любом случае, я был потерян и отчаялся, прежде чем нашел библиотеку, которую предоставил Seejaydee, и с тех пор использую ее (большое спасибо, чувак!).
  • Существуют и другие конфигурации оборудования, но я использовал только тот, который использует 5 В для питания attiny85 и два стабилитрона 3,6 В 0,5 Вт для ограничения напряжения линий передачи данных, он работает из коробки, поэтому я не стал связываться с другие конфигурации.
  • Вы можете использовать кристалл с частотой 16 МГц или библиотеку tinytuner для калибровки внутренних часов вашего attiny85. Я настоятельно рекомендую использовать кристалл, он намного стабильнее и, вероятно, избавит вас от многих головных болей.
  • Я использую два разных загрузчика для attiny85:

а) Версия Rowdy Dog Software, в нее интегрирован последовательный интерфейс, который очень крутой и очень маленький, поэтому у вас будет больше места для вашей программы и других библиотек. Проблема в том, что по некоторым причинам, даже если он работает довольно хорошо, через некоторое время USB-устройство отключилось (вы можете найти проблемы с помощью команды dmesg). Я не знаю, проблема ли это в ядре или в смешанной комбинации ядра и выбранных библиотек, поэтому через некоторое время я решил использовать это ядро только для декодирования удаленных ключей и калибровки часов (когда не используется 16 МГц кристалл). После этого я просто записываю загрузчик Mellis и загружаю окончательный эскиз, который не использует последовательный интерфейс.

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

Шаг 2: Начнем с оборудования

Начнем с оборудования
Начнем с оборудования
Начнем с оборудования
Начнем с оборудования
Начнем с оборудования
Начнем с оборудования

Необходимые инструменты:

  • плата, совместимая с arduino
  • адаптер последовательного порта к USB для декодирования ваших удаленных ключей (просто используйте FT232RL)
  • ПК с установленным GNU / Linux и правильно настроенной IDE arduino, я использую arduino IDE 1.8.0
  • ИК-пульт для тестирования вашего устройства (подойдет даже такой дрянной, как те, что есть в стартовых наборах Arduino)
  • мультиметр для отладки платы (надеюсь, он вам не понадобится, удачи!)

Список материалов:

  • 1 attiny85
  • 2 резистора 68R
  • 1 резистор 1,5 кОм
  • 1 резистор 4,7 кОм
  • 1 кристалл 16 МГц
  • 1 конденсатор 22 пФ
  • 1 конденсатор 0,1 мкФ
  • 1 конденсатор 10 мкФ
  • 2 стабилитрона 3,6 В 0,5 Вт
  • 1 штекер USB типа A
  • 1 полоска с 6 контактами для программирования и отладки платы.
  • 1 ИК-датчик TSOP31238
  • много кофе, чтобы не заснуть

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

Для подключения attiny85 к ПК в окончательной конструкции используется разъем USB типа A, впаянный в плату, но для прототипа вам потребуется сделать кабель USB, который можно подключить к макетной плате:

Припаяйте к небольшому куску перфорированной платы 4 контакта, затем отрежьте старый кабель USB и припаяйте контакты к 4 проводам внутри кабеля USB:

  • красный - VCC (5 В)
  • черный - GND
  • белый - D-
  • зеленый - D +

Держите все вместе горячим клеем.

Теперь нам нужно подключить программатор ISP (Arduino), адаптер USB к последовательному порту (FT232RL) и ИК-датчик к attiny85.

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

Программист ISP (Arduino): это позволяет нам записывать загрузчики и загружать скетчи

  • attiny85 PB0 (pin5) к pin11 (MOSI) в Arduino
  • attiny85 PB1 (pin6) к pin12 (MISO) в Arduino
  • attiny85 PB2 (pin7) к pin13 (SCK) в Arduino
  • attiny85 RESET (pin1) с подтягиванием (4.6k к VCC) к pin10 в Arduino
  • attiny85 VCC на 5 В в Arduino
  • attiny85 GND на GND в Arduino

USB-последовательный адаптер (FT232RL): это позволяет нам проверить последовательный порт

  • attiny85 PB0 (pin5 RX) к TX в FT232RL
  • attiny85 PB2 (pin7 TX) к RX в FT232RL
  • attiny85 GND (pin4) к GND на FT232RL
  • поскольку attiny85 уже запитан от Arduino, вам не нужно подключать 5 В на FT232RL, в противном случае подключите: attiny85 VCC (pin8) к 5 В на FT232RL

USB-последовательный адаптер (FT232RL) только для калибровки часов (только для загрузчика «ATtiny85 @ 8MHz (внутренний осциллятор; BOD отключен)»)

  • PB4 (pin3 RX) к TX в FT232RL attiny85
  • PB3 (pin2 TX) к RX в FT232RL attiny85
  • GND (pin4) к GND на FT232RL
  • поскольку attiny85 уже запитан от Arduino, вам не нужно подключать 5 В на FT232RL, в противном случае подключите: attiny85 VCC (pin8) к 5 В на FT232RL

Если вы используете кристалл с частотой 16 МГц, подключите его к контактам Attiny85 PB3 (контакт 2) и PB4 (контакт 3) и подключите каждый контакт к GND через колпачок 22 пФ каждый.

Фильтр Attiny85 VCC с конденсаторами 0,1 мкФ и 10 мкФ, подключенными параллельно к GND

Подключите выходной контакт ИК-датчика к attiny85 PB1 (контакт 6), включите его.

Собираем и подключаем интерфейс usb:

  • GND (черный провод): подключите его к общему GND (все заземления соединены вместе)
  • D- (белый провод), подключенный к attiny85 PB0 (контакт 5) через резистор 68R, подключите его также к земле через стабилитрон 3,6 В 0,5 Вт и подтяните его к VCC с помощью резистора 1,5 кОм.
  • D + (зеленый провод) подключен к PB2 через резистор 68R, подключить его к земле через стабилитрон 3,6 В 0,5 Вт
  • 5 В, вы можете оставить его неподключенным, так как на этом этапе все работает от Arduino, в противном случае подключите его к attiny85 VCC

Стабилитроны подключены так, что аноды подключены к земле, а катоды подключены к линиям передачи данных D + и D-.

Шаг 3: Окончательный дизайн

Окончательный дизайн
Окончательный дизайн
Окончательный дизайн
Окончательный дизайн
Окончательный дизайн
Окончательный дизайн

Для окончательного дизайна вы можете использовать перфорированную плату со сквозными отверстиями или протравить свою собственную плату и использовать компоненты smd. Чтобы узнать, как протравить доску, просто погуглите, в Интернете есть отличные руководства.

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

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

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

Шаг 4: Работа с программным обеспечением

Схема в этом проекте очень проста, вместо этого программное обеспечение требует больших усилий.

Нам нужны как минимум 2 библиотеки (еще одна, если вы не используете кристалл) плюс 2 загрузчика, чтобы это работало. Когда я начинал этот проект, я тестировал некоторые библиотеки, иногда они не работали, а во многих случаях они просто не были настроены для работы с Attiny85 из коробки (я этого еще не знал). Затем я обнаружил проблемы с перекрытием прерываний библиотек / загрузчиков. Наконец, мне пришлось столкнуться с изрядным количеством ошибок, когда я подключил последнюю схему к своему ПК. У меня не было этого руководства, поэтому я думаю, что с вами все будет в порядке, просто следуйте инструкциям в этом руководстве, если вы сделаете это без ошибок, все будет в порядке:)

Теперь нам нужно установить и настроить несколько библиотек:

  • v-usb для библиотеки arduino: эта библиотека позволяет ПК распознавать микроконтроллер как HID USB-клавиатуру, и мы будем использовать ее для отправки нажатий клавиш на ПК. Эта библиотека нуждается в некоторых изменениях, чтобы быть совместимой с attiny85.
  • tinytuner только в том случае, если вы не будете использовать кристалл с частотой 16 МГц. Затем вам нужно будет откалибровать внутренние часы микроконтроллера. Эта библиотека работает "из коробки".
  • Attiny-IR-библиотека для взаимодействия с ИК-датчиком. Эта библиотека работает "из коробки".

Также нам понадобится 2 загрузчика:

  • Версия программного обеспечения для собак с доступным последовательным интерфейсом. Этот загрузчик нуждается в небольшой настройке для работы с attiny85, поскольку он использует таймер1 для функции millis () и не будет работать с библиотекой IR. Нам нужно изменить таймер на timer0.
  • Версия Mellis, стабильный загрузчик, который мы будем использовать на заключительном этапе. Это работает из коробки.

Шаг 5: Установка и настройка библиотеки V-usb

Загрузите библиотеку со страницы https://code.google.com/archive/p/vusb-for-arduin… Разархивируйте файл и скопируйте папку libraries / UsbKeyboard в папку библиотек вашего альбома для рисования.

Теперь вам нужно отредактировать пару файлов, чтобы они были совместимы с ATtiny85 (он настроен для работы с arduino):

А) отредактируйте usbconfig.h:

в разделе "Конфигурация оборудования" изменить:

#define USB_CFG_IOPORTNAME Dto ## define USB_CFG_IOPORTNAME B

а также

#define USB_CFG_DMINUS_BIT 4, чтобы # определить USB_CFG_DMINUS_BIT 0

в разделе «Дополнительная конфигурация оборудования»:

#define USB_CFG_PULLUP_IOPORTNAME Dto ## определить USB_CFG_PULLUP_IOPORTNAME B

Чтобы создать полную спецификацию HID, совместимую с загрузкой (иначе никакие мультимедийные ключи не будут работать), также измените:

#define USB_CFG_INTERFACE_SUBCLASS 0 // Bootto # define USB_CFG_INTERFACE_SUBCLASS 0x01 // Загрузка

а также

#define USB_CFG_INTERFACE_PROTOCOL 0 // Клавиатура для # определения USB_CFG_INTERFACE_PROTOCOL 0x01 // Клавиатура

При желании вы также можете изменить производителя и имя устройства в следующих параметрах:

#define USB_CFG_VENDOR_NAME

#define USB_CFG_DEVICE_NAME

Б) отредактируйте UsbKeyboard.h:

изменение:

PORTD = 0; // TODO: только для контактов USB? DDRD | = ~ USBMASK;

к

ПОРТБ = 0; // TODO: только для контактов USB? DDRB | = ~ USBMASK;

Чтобы разрешить изменение кодов клавиш, превышающих 101:

0x25, 0x65, // LOGICAL_MAXIMUM (101) до: 0x25, 0xE7, // LOGICAL_MAXIMUM (231)

а также

0x29, 0x65, // USAGE_MAXIMUM (приложение клавиатуры) до: 0x29, 0xE7, // USAGE_MAXIMUM (приложение клавиатуры)

Вам может потребоваться также отредактировать эти 3 файла:

usbdrv.husbdrv.cUsbKeyboard.h

и каждый раз, когда вы видите, что PROGMEM добавляет "const" перед именем типа переменной (например: PROGMEN char usbHidReportDescriptor [35] ==> PROGMEM const char usbHidReportDescriptor [35])

Если это не ясно, посетите

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

UsbKeyboard настроен для attiny85

Изменить: недавно я обнаружил, что Алехандро Лейва (https://github.com/gloob) позаботился об этой библиотеке и, похоже, тоже хорошо работает. Вы также можете попробовать его версию с необходимыми изменениями, которые я внес, чтобы заставить ее работать с attiny, поэтому, если вы хотите проверить это, просто извлеките ее в папку библиотек вашего скетчбука.

UsbКлавиатура, настроенная для attiny85 (версия Алехандро Лейвы)

Шаг 6: Установка библиотек Attiny-IR и Tinytuner

А) Библиотека Attiny-IR:

загрузите его с https://drive.google.com/open?id=0B_w9z88wnDtFNHlq … затем распакуйте его в папку с библиотеками скетчей.

Б) Библиотека Tinytuner:

Это необходимо только в том случае, если вы не используете кристалл с частотой 16 МГц, но поверьте мне, даже если он работает и без кристалла, с ним он намного стабильнее и стоит несколько центов, так что будьте проще, используйте кристалл и пропустите эта библиотека.

Еще не убедили? хорошо, загрузите библиотеку с https://storage.googleapis.com/google-code-archive … затем распакуйте ее в папку с библиотеками скетчей.

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

Шаг 7: Установка и настройка загрузчиков

Мы собираемся установить два загрузчика, один из которых, по моему опыту, более стабилен, и мы будем использовать его в финальном скетче. Другой, разработанный Rowdy Dog Software, представляет собой потрясающее ядро, очень маленькое и со встроенным последовательным интерфейсом, но мой пульт через некоторое время вылетел из-за него, поэтому мы будем использовать этот загрузчик только для калибровки внутренних часов attiny85 и декодирования нашего пульта дистанционного управления. кнопки.

Я знаю, что есть доступные библиотеки для обеспечения возможностей последовательного порта attiny85, но тогда вам нужно будет настроить библиотеки, которые используют последовательный объект … Мне больше нравится эта процедура.

Начнем с установки:

А) Загрузчик Mellis:

просто откройте настройки Arduino IDE и добавьте в «Дополнительные URL-адреса диспетчера плат:

raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json

Затем откройте менеджер плат Arduino IDE и найдите attiny, установите платы от Mellis. Теперь вы должны увидеть Arduino ID платы ATtiny25 / 45/85 и ATtiny24 / 44/84.

Б) крошечный загрузчик программного обеспечения Rowdy Dog:

загрузите загрузчик с

Разархивируйте файл и скопируйте крошечную папку внутри вашего блокнота / оборудования (создайте эту папку, если она еще не существует). затем перейдите в папку sketchbook / hardware / tiny / avr / и:

1) скопируйте файл Prospective Boards.txt в файлboards.txt

2) отредактируйте файл platform.txt и внесите некоторые изменения:

Раскомментируйте переменную compiler.path и оставьте ее указывающей на папку hardware / tools / avr / bin / внутри папки установки arduino:

compiler.path = {PATH_TO_YOUR_ARDUINO_FOLDER} / hardware / tools / avr / bin /

изменить alsocompiler. S.flags = -c -g -assembler-with-cpptocompiler. S.flags = -c -g -x Assemblyr-with-cpp

Затем измените следующие переменные, убедившись, что все на своих местах (эти файлы должны существовать, в противном случае укажите переменные на правильные пути):

tools.avrdude.cmd.path = {runtime.ide.path} / оборудование / инструменты / avr / bin / avrdude

tools.avrdude.config.path = {runtime.ide.path} /hardware/tools/avr/etc/avrdude.conf

tools.avrdude.cmd.path.linux = {runtime.ide.path} / оборудование / инструменты / avr / bin / avrdude

tools.avrdude.config.path.linux = {runtime.ide.path} /hardware/tools/avr/etc/avrdude.conf

3) отредактируйте файл cores / tiny / core_build_options.h и измените:

#define TIMER_TO_USE_FOR_MILLIS 1 до # определить TIMER_TO_USE_FOR_MILLIS 0

Это очень важно, иначе ИК-приемник будет выводить нули для каждой кнопки. Этот оператор настраивает timer0 для функции millis (), оставляя timer1 доступным для библиотеки IR. Последний скетч в любом случае отключит timer0, поэтому у вас не будет доступных функций millis () и delay (). Вместо этого у вас может быть доступна функция delayMicroseconds ().

Этот загрузчик минимален, но включает поддержку серийных объектов:

Attiny85 PB2 (pin7) - это TX, а PB0 (pin5) - это RX

У вас может быть конфигурация с программатором ISP (arduino) и адаптером последовательного интерфейса USB, подключенными одновременно, поэтому вам не нужно слишком часто менять провода:

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

Шаг 8: Запись загрузчиков и загрузка эскизов

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

Чтобы записать загрузчик в Attiny85, вам нужно загрузить пример ISP в Arduino, а затем выбрать программатор Arduino в качестве ISP.

Теперь поместите конденсатор 10 мкФ между контактами сброса и заземления на Arduino (он не нужен для процесса записи, но он предназначен для загрузки эскизов в attiny85).

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

Чтобы загрузить скетч в Attiny85, загрузите его в IDE arduino и нажмите «Загрузить с помощью программатора».

ВАЖНО: при загрузке скетча есть 3 этапа: компиляция, запись и проверка. Если компиляция и запись прошли успешно, но процесс проверки завершился неудачно, возможно, скетч все равно будет работать.

Шаг 9: откалибруйте внутренние часы Attiny85 (пропустите это, если вы используете кристалл)

Если вы решите не использовать кристалл 16 МГц, вам необходимо откалибровать часы attiny85, поэтому нам понадобится загрузчик с доступным последовательным интерфейсом, и мы будем использовать библиотеку tinytuner для получения правильной калибровки.

Следуйте следующим шагам

  • выберите под инструментами Arduino как программист ISP
  • выберите плату «ATtiny85 @ 8MHz (внутренний генератор; BOD отключен)»
  • Я предполагаю, что у вас есть готовое соединение с интернет-провайдером, как описано перед подключением, в противном случае выполните соединения.
  • записать загрузчик
  • этот загрузчик настроил разные контакты для последовательного интерфейса, используйте эту конфигурацию только для текущего загрузчика

- PB4 (pin3 RX) к TX в FT232RL attiny85 - PB3 (pin2 TX) to RX в FT232RL attiny85 - GND (pin4) к GND на FT232RL, поскольку attiny85 уже запитан от Arduino, вам не нужно подключать 5 В на FT232RL, в противном случае подключите: attiny85 VCC (pin8) к 5 В на FT232RL

  • загрузите пример tinytuner в attiny85
  • откройте программу screen для мониторинга последовательной связи: screen / dev / ttyUSB0 9600
  • сбросьте attiny85, подключив контакт RESET (pin1) к GND (мгновение), в окне экрана должно появиться приветственное сообщение
  • Продолжайте посылать одиночные символы 'x' (без возврата каретки и без перевода строки) до завершения калибровки.
  • аннотируйте где-нибудь значение калибровки (OSCCAL = 0x). Это значение, которое вам нужно будет указать на окончательных эскизах.

Шаг 10: расшифруйте кнопки пульта ДУ

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

  • выберите плату «ATtiny85 @ 16 МГц (внутренняя ФАПЧ; 4,3 В BOD)», если вы не используете кристалл, или «ATtiny85 @ 16 МГц (внешний кристалл; 4,3 В BOD» в противном случае, затем сожгите его
  • загрузите скетч:
  • Если вы не используете кристалл, раскомментируйте строку, содержащую переменную OSCCAL, и присвойте ей значение, которое вы нашли при калибровке часов.
  • Я предполагаю, что датчик подключен как описано ранее, в противном случае подключите его
  • Я также предполагаю, что серийный адаптер FT232RL к usb подключен, в противном случае подключите его
  • сбросьте attiny85, подключив вывод RESET (pin1) к GND (подождите)
  • нажмите несколько раз кнопки пульта ДУ и проверьте окно экрана, вам нужно аннотировать последний номер для каждой записи, каждая кнопка может выдавать 2 разных числа

Пример:

ПОЛУЧЕНО D44 3396 ПОЛУЧЕНО 544 1348

Добавьте аннотации 3396 и 1348 к кнопке, которую вы только что нажали, затем вы должны решить, что вы хотите делать с этой кнопкой. Например, я мог бы захотеть, чтобы эта кнопка отправляла мультимедийный код клавиши «Увеличить громкость», тогда мне нужно найти идентификатор для этого кода клавиши. Для этого загрузите PDF-файл:

Найдите раздел «Клавиатура / страница клавиатуры» на стр. 53 и используйте числа в столбце Usage ID (Dec), чтобы привязать кнопки пульта дистанционного управления к кодам клавиатуры. В нашем примере мы видим, что код клавиши для увеличения громкости: 128.

Отредактируйте файл UsbKeyboard.h внутри библиотеки UsbKeyboard из пакета v-usb, который мы установили ранее, и добавьте к существующим определениям, если его еще нет:

#define KEY_VOL_UP 128

Когда мы закончили со всеми нашими кнопками пульта ДУ и все определения в файле UsbKeyboard.h готовы, мы можем перейти к последнему шагу.

Шаг 11: загрузка финального наброска и надежда на лучшее

Загружаем финальный набросок и надеемся на лучшее!
Загружаем финальный набросок и надеемся на лучшее!
Загружаем финальный набросок и надеемся на лучшее!
Загружаем финальный набросок и надеемся на лучшее!

Теперь у нас есть декодированные все удаленные кнопки, файл UsbKeyboard.h заполнен нашими кодами клавиш, поэтому теперь мы можем загрузить в Arduino IDE окончательный эскиз из:

github.com/venumz/ATtiny85-USB-IR-receiver…

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

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

Обратите внимание, что в функции цикла есть много таких операторов:

if (results.value == 3405 || results.value == 1357) {// стрелка вверх

если (lastStroke! = results.value) UsbKeyboard.sendKeyStroke (KEY_ARROW_UP);

}

Вы должны создать свои собственные операторы, по одному для каждой кнопки на пульте дистанционного управления. В условии «если» вы должны поместить в results.value значения, которые вы нашли при декодировании вашего пульта дистанционного управления, и в качестве аргумента метода UsbKeyboard.sendKeyStroke вы должны поместить один из уже определенных кодов клавиш в файл UsbKeyboard.h.

Условие «if (lastStroke! = Results.value)» необходимо, потому что некоторые пульты дистанционного управления отправляют один и тот же код дважды за попадание, и это предотвращает второе попадание. Я не совсем уверен, и это может зависеть от ИК-протокола, который запрограммирован в вашем пульте (я не особо разбираюсь в ИК-протоколах), но, согласно моему опыту работы с моими собственными пультами, каждая кнопка может выдавать 2 разных кода и пока вы нажимаете и удерживаете кнопку, он отправляет тот же код, но если вы снова нажимаете кнопку, он отправляет другой. Кажется, что коды отправляются альтернативным способом, я думаю, это стандартный режим, чтобы узнать, сколько раз вы действительно нажимаете кнопку.

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

Для этого шага лучше, если вы отключите и arduino, и usb к последовательному адаптеру, и только затем подключите USB к порту вашего ПК (в случае, если что-то пойдет не так, вашу схему будет проще отладить).

Если все работает нормально, когда вы открываете терминал и отправляете команду dmesg, вы должны увидеть что-то похожее на первое изображение на этом шаге. Если были проблемы, у вас должны быть ошибки, подобные тем, которые обнаружены на втором изображении, и вы должны начать отладку вашей схемы и / или программного обеспечения. Одним из источников первоначальных ошибок, которые у меня были, был USB-концентратор, который не работал с моим ИК-приемником (хотя другие работали)… поэтому на этом последнем шаге лучше подключить ИК-приемник непосредственно к порту вашего ПК. Возможные ошибки бывает трудно найти, но в конце, как и я, вы многому научитесь, и я вас уверяю, цена того стоит.

Это все, ребята, дайте мне знать, если вы заметите какие-либо ошибки в этой инструкции, и наслаждайтесь своим новым ИК-приемником USB!

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