Оглавление:
- Шаг 1. Некоторые соображения
- Шаг 2: Начнем с оборудования
- Шаг 3: Окончательный дизайн
- Шаг 4: Работа с программным обеспечением
- Шаг 5: Установка и настройка библиотеки V-usb
- Шаг 6: Установка библиотек Attiny-IR и Tinytuner
- Шаг 7: Установка и настройка загрузчиков
- Шаг 8: Запись загрузчиков и загрузка эскизов
- Шаг 9: откалибруйте внутренние часы Attiny85 (пропустите это, если вы используете кристалл)
- Шаг 10: расшифруйте кнопки пульта ДУ
- Шаг 11: загрузка финального наброска и надежда на лучшее
Видео: ИК-USB-приемник ATtiny85: 11 шагов (с изображениями)
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:53
ВНИМАНИЕ! ДАННАЯ ИНСТРУКЦИЯ УСТАРЕЛА.
Библиотека 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!
Рекомендуемые:
Миниатюрный компас с ATtiny85: 12 шагов (с изображениями)
Маленький компас с ATtiny85: это наш первый проект с ATtiny85; простой карманный цифровой компас (в сотрудничестве с J. Arturo Espejel Báez). ATtiny85 - это высокопроизводительный микроконтроллер с низким энергопотреблением. Он имеет 8 Кбайт программируемой флэш-памяти. В связи с этим чал
Как сделать консоль Attiny85 - ArduPlay: 5 шагов (с изображениями)
Как сделать консоль Attiny85 - ArduPlay: Это было примерно так: я бесцельно просматривал видео на YouTube, чтобы расслабиться за чашкой чая. Может быть, футбольный матч или сборник забавных видеороликов? Вдруг на телефон пришло уведомление - новое видео на канале Electronoobs. К сожалению
ATtiny85 Носимые часы с отслеживанием активности с вибрацией и программирование ATtiny85 с Arduino Uno: 4 шага (с изображениями)
ATtiny85 Носимые часы с отслеживанием активности с вибрацией и программирование ATtiny85 с Arduino Uno: как сделать носимые часы с отслеживанием активности? Это носимый гаджет, который вибрирует при обнаружении застоя. Вы проводите большую часть времени за компьютером, как я? Вы сидите часами, не осознавая этого? Тогда это устройство ф
Мини-метеостанция с Attiny85: 6 шагов (с изображениями)
Мини-метеостанция с Attiny85: в недавнем инструктивном сообщении Indigod0g описал мини-метеостанцию, которая работает довольно хорошо, используя два Arduinos. Может быть, не все хотят пожертвовать двумя Arduinos, чтобы получить показания влажности и температуры, и я заметил, что это должно быть возможно
Flappy Bird на ATtiny85 и OLED-дисплее SSD1306: 6 шагов (с изображениями)
Flappy Bird на ATtiny85 и OLED-дисплее SSD1306: Привет всем, сегодня я собираюсь показать вам базовый клон flappy Bird, который я создал, и то, как вы можете создать подобную игру. По сути, я пробегу с вами свой код и объясню, как он работает на каждом этапе. Эта игра построена на ру