Съдържание:

IR USB приемник ATtiny85: 11 стъпки (със снимки)
IR USB приемник ATtiny85: 11 стъпки (със снимки)

Видео: IR USB приемник ATtiny85: 11 стъпки (със снимки)

Видео: IR USB приемник ATtiny85: 11 стъпки (със снимки)
Видео: Using Digispark Attiny85 Mini Arduino boards: Lesson 108 2024, Юли
Anonim
ATtiny85 IR USB приемник
ATtiny85 IR USB приемник

ВНИМАНИЕ, ТОВА ИНСТРУКЦИЯ Е СТАНАЛА ОСТАЛКА

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

Направете си услуга и не продължавайте с тази инструкция, освен ако не е за образователни цели. Препоръчвам вместо това да закупите чип модул ATmega 32U4, който вече е интегрирал usb интерфейса, и следвайте това ръководство:

www.sparkfun.com/tutorials/337

След това пуснете IR сензор TSOP31238 и сте готови.

Здравейте създатели! това е инструкция за изграждане на работещ USB IR приемник с помощта на микроконтролер Attiny85. Започнах този проект, за да преодолея липсата на поддръжка (поне пълна поддръжка) за някои IR дистанционни в GNU/Linux OS. Следвайки тези инструкции, можете да изградите програмируем USB IR приемник, който работи с всяко IR дистанционно за няколко долара.

На първо място, тази инструкция няма да съществува без упоритата работа на хората, създали библиотеките, които използвам тук:

  • Дейвид А. Мелис за ядрото му на отношение
  • Софтуер Rowdy Dog за тяхната библиотека TinyTuner
  • Софтуер Rowdy Dog за техния малък буутлоудър
  • Rancidbacon (https://rancidbacon.com/) за неговия arduino порт на библиотеката v-usb (https://code.google.com/archive/p/vusb-for-arduino/downloads)
  • seejaydee за неговата IR библиотека за малки ядра, намерени в коментарите на инструкционния https://www.instructables.com/id/Attiny-IR-librar… код на https://www.instructables.com/id/Attiny-IR -библиотека …

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

Това ръководство съществува, защото не намерих пълен урок/ръководство, работещо от кутията (може да съществува, но не успях да го намеря), така че събрах цялата информация, достъпна в мрежата и след много опити и грешки Измислих пълно ръководство за изграждане на работещ USB IR приемник, който всъщност работи доста добре.

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

  • 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 библиотеки, но не можах да ги накарам да работят дори с arduino. Помислете обаче, че започнах с ограничени познания за IR библиотеките. Може би бих могъл да ги накарам да работят сега след натрупания опит за справяне с немалко проблеми. Както и да е, бях изгубен и отчаян, преди да намеря библиотеката, която Seejaydee предостави и оттогава го използвам (много благодаря човече!).
  • Има и други хардуерни конфигурации, но аз съм използвал само тази, която използва 5V за захранване на attiny85 и два 3.6V 0.5W ценерови диода за захващане на напрежението на линиите за данни, той работи извън кутията, така че не се забърквам с други конфигурации.
  • Можете да използвате 16Mhz кристал или да използвате библиотеката tinytuner, за да калибрирате вътрешния часовник на вашия attiny85. Силно съветвам използването на кристала, той е много по -стабилен и вероятно ще ви спести много главоболия.
  • Използвам тук два различни зареждащи устройства за attiny85:

а) Версия на софтуера Rowdy Dog, тя има интегриран сериен интерфейс, който е много готин и е много малък, така че имате повече място за вашата програма и други библиотеки. Проблемът е, че поради някои причини, въпреки че работи доста добре, след известно време USB устройството се изключи (можете да намерите проблемите с командата dmesg). Не знам дали това е проблем на ядрото или смесена комбинация от ядро плюс избраните библиотеки, така че след известно време реших да използвам това ядро само за декодиране на дистанционните клавиши и калибриране на часовника (когато не използвам 16Mhz кристал). След това просто записвам зареждащия механизъм на Mellis и качвам окончателната скица, която не използва серийния интерфейс.

б) Mellis версия, стабилен буутлоудър, използвал съм го в много проекти. Бих използвал този буутлоудър винаги, ако включваше сериен интерфейс. Използвам това ядро в последната скица след декодиране на всички ключове на моите дистанционни.

Стъпка 2: Нека започнем с хардуера

Нека започнем с хардуера
Нека започнем с хардуера
Нека започнем с хардуера
Нека започнем с хардуера
Нека започнем с хардуера
Нека започнем с хардуера

Инструменти, от които се нуждаете:

  • съвместима с arduino платка
  • сериен към usb адаптер за декодиране на вашите дистанционни ключове (просто използвайте FT232RL)
  • компютър с инсталиран GNU/Linux и arduino IDE правилно конфигуриран, използвам arduino IDE 1.8.0
  • инфрачервено дистанционно за тестване на вашето устройство (дори и скапано като тези, открити в стартовите комплекти на arduino ще работи)
  • мултицет за отстраняване на грешки на дъската (надявам се, че няма да ви е необходим, късмет!)

Списъкът на материалите:

  • 1 позиция 85
  • 2 68R резистора
  • 1 1.5K резистор
  • 1 4.7K резистор
  • 1 16Mhz кристал
  • 1 22pF кондензатор
  • 1 0,1uF кондензатор
  • 1 10uF кондензатор
  • 2 3.6V 0.5W стабилитрони
  • 1 USB тип A мъжки конектор
  • 1 лентов щифт с 6 пина за програмиране и отстраняване на грешки в платката.
  • 1 IR сензор TSOP31238
  • много кафе, което да ви държи будни

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

За да свържете attiny85 към компютъра, крайният дизайн използва USB конектор тип А, който е запоен в платката, но за прототипа ще трябва да направите USB кабел, който можете да свържете към макетна платка:

Запояйте в малко парче перфорирана плочка 4 пина, след това отрежете стар USB кабел и запоявайте щифтовете към 4 от проводниците вътре в USB кабела:

  • червеното е VCC (5V)
  • черното е GND
  • бялото е D-
  • зеленото е D+

Дръжте всичко заедно с горещо лепило.

Сега трябва да свържем ISP програмиста (Arduino), USB към сериен адаптер (FT232RL) и IR сензора към 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 до 5V в 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, не е нужно да свързвате 5v на FT232RL, в противен случай свържете: attiny85 VCC (pin8) към 5V на FT232RL

usb към сериен адаптер (FT232RL) само за калибриране на часовника (само за буутлоудъра "ATtiny85 @ 8MHz (вътрешен осцилатор; BOD деактивиран)")

  • PB4 (pin3 RX) към TX във FT232RL attiny85
  • PB3 (pin2 TX) към RX в FT232RL attiny85
  • GND (pin4) към GND на FT232RL
  • тъй като attiny85 вече се захранва от arduino, не е нужно да свързвате 5v на FT232RL, в противен случай свържете: attiny85 VCC (pin8) към 5V на FT232RL

Ако използвате 16Mhz кристал, свържете го към щифтовете Attiny85 PB3 (pin2) и PB4 (pin3) и свържете всеки щифт към GND също чрез капачка от 22pF.

Филтрирайте Attiny85 VCC с 0.1uF и 10uF кондензатори, свързващи ги паралелно към GND

Свържете изходния щифт на IR сензора към attiny85 PB1 (pin6), включете го.

Изградете и свържете usb интерфейса:

  • GND (черен проводник): свържете го към общия GND (всички основания са свързани заедно)
  • D- (бял проводник), свързан към attiny85 PB0 (pin5) чрез резистор 68R, свържете го и към земята чрез 3.6V 0.5W ценер и го издърпайте към VCC с 1.5K резистор
  • D+ (зелен проводник), свързан към PB2 чрез резистор 68R, свържете го към земята чрез 3.6V 0.5W ценер
  • 5V, можете да го оставите без връзка, тъй като на този етап всичко се захранва от Arduino, в противен случай го свържете към attiny85 VCC

Стабилитронните диоди са свързани така, че анодите са свързани към GND, а катодите са свързани към линиите за данни D+ и D-.

Стъпка 3: Окончателен дизайн

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

За окончателния дизайн можете да използвате perfboard с компоненти през отвори или да гравирате своя собствена дъска и да използвате smd компоненти. За да научите как да гравирате дъска, просто я потърсете в Google, има страхотни уроци, достъпни онлайн.

Издълбах собствената си дъска и съм много доволен от крайните резултати (малка, стабилна и здрава дъска). просто изрежете дъската с моите ножици за ламарина.

Между другото, следите върху изображенията не са гола мед, те са третирани с гаден химикал, който леко омекотява медта (има съмнение, че предизвиква рак, затова го използвайте много внимателно, латексови глобуси и маска за прах):

Използвайте горните схеми, за да проектирате оформлението си или просто можете да използвате моя печат на печатни платки, за да гравирате дъската си.

Стъпка 4: Справяне със софтуера

Схемата в този проект е много лесна, вместо това софтуерът изисква по -големи усилия.

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

Сега трябва да инсталираме и конфигурираме няколко библиотеки:

  • v-usb за arduino библиотека: тази библиотека позволява на микроконтролера да бъде разпознат от компютъра като HID USB клавиатура и ние ще го използваме за изпращане на клавишни удари към компютъра. Тази библиотека се нуждае от някои промени, за да бъде съвместима с attiny85
  • библиотека tinytuner само ако няма да използвате 16Mhz кристал. След това ще трябва да калибрирате вътрешния часовник на микроконтролера. Тази библиотека работи нестандартно.
  • Attiny-IR-библиотека за взаимодействие с IR сензора. Тази библиотека работи нестандартно.

Нуждаем се и от 2 зареждащи устройства:

  • Версия на софтуера за кучета с наличен сериен интерфейс. Този буутлоудър се нуждае от малка настройка, за да работи с attiny85, тъй като използва timer1 за функцията millis () и няма да работи с IR библиотеката. Трябва да променим таймера на timer0.
  • Mellis версия, стабилен буутлоудър, който ще използваме в последния етап. Това работи нестандартно.

Стъпка 5: Инсталиране и конфигуриране на V-usb библиотеката

Изтеглете библиотеката от https://code.google.com/archive/p/vusb-for-arduin… Разархивирайте файла и копирайте библиотеките с папки/UsbKeyboard във вашата папка с библиотеки за скици.

Сега трябва да редактирате няколко файла, за да бъдат съвместими с ATtiny85 (той е конфигуриран да работи с arduino):

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

под „Конфигурация на хардуера“промяна:

#define USB_CFG_IOPORTNAME Dза ## дефиниране на USB_CFG_IOPORTNAME B

и

#дефинирайте USB_CFG_DMINUS_BIT 4до#дефинирайте USB_CFG_DMINUS_BIT 0

под „Допълнителна конфигурация на хардуера“промяна:

#define USB_CFG_PULLUP_IOPORTNAME Dза ## дефиниране на USB_CFG_PULLUP_IOPORTNAME B

За да създадете пълна спецификация "HID", съвместима с зареждането (в противен случай няма да работят мултимедийни ключове), променете също:

#define USB_CFG_INTERFACE_SUBCLASS 0 // Bootto#define USB_CFG_INTERFACE_SUBCLASS 0x01 // Bootto

и

#define USB_CFG_INTERFACE_PROTOCOL 0 // Клавиатура за#дефиниране на USB_CFG_INTERFACE_PROTOCOL 0x01 // Клавиатура

По желание можете също да промените производителя и името на устройството в следните дефиниции:

#дефинирайте USB_CFG_VENDOR_NAME

#define USB_CFG_DEVICE_NAME

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

промяна:

PORTD = 0; // TODO: Само за USB пинове? DDRD | = ~ USBMASK;

да се

PORTB = 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, така че ако искате да проверите това, просто я извлечете в папката си sketchbook libraries.

UsbKeyboard конфигуриран за attiny85 (версия на Alejandro Leiva)

Стъпка 6: Инсталиране на библиотеките Attiny-IR и Tinytuner

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

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

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

Това е необходимо само ако не използвате 16Mhz кристал, но повярвайте ми, въпреки че работи и без кристала, той е много по -стабилен с него и те струват няколко цента, така че бъдете прости, използвайте кристал и пропуснете тази библиотека.

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

С библиотеките сме приключили, сега преминаваме към инсталиране на буутлоудърите.

Стъпка 7: Инсталиране и конфигуриране на зареждащите програми

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

Знам, че има налични библиотеки, които да дадат atiny85 серийни възможности, но след това ще трябва да настроите библиотеките, които използват серийния обект … Тази процедура ми харесва повече.

Нека започнем с инсталацията:

A) Bootloader на Mellis:

просто отворете предпочитанията за IDE на Arduino и добавете в „Допълнителни URL адреси на мениджъра на дъски:

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

След това отворете мениджъра на дъски на Arduino и потърсете attiny, инсталирайте платките от Mellis, Сега трябва да видите Arduino ID на платките ATtiny25/45/85 и ATtiny24/44/84.

B) Rowdy Dog Software малък буутлоудър:

изтеглете зареждащото устройство от

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

1) копирайте файла Prospective Boards.txt във файла board.txt

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

Декомментирайте променливия compiler.path и го оставете да сочи към папката hardware/tools/avr/bin/във вашата инсталационна папка arduino:

compiler.path = {PATH_TO_YOUR_ARDUINO_FOLDER}/хардуер/инструменти/avr/bin/

променете също компилатора. S.flags = -c -g -assembler-with-cpptocompiler. S.flags = -c -g -x асемблер-с-cpp

След това променете следните променливи, като се уверите, че всичко е на мястото си (тези файлове трябва да съществуват, в противен случай насочете променливите към правилните пътища):

tools.avrdude.cmd.path = {runtime.ide.path}/хардуер/tools/avr/bin/avrdude

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

tools.avrdude.cmd.path.linux = {runtime.ide.path}/хардуер/tools/avr/bin/avrdude

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

3) редактирайте файловите ядра/tiny/core_build_options.h и променете:

#дефинирайте TIMER_TO_USE_FOR_MILLIS 1 до#дефинирайте TIMER_TO_USE_FOR_MILLIS 0

Това е много важно, в противен случай IR приемникът ще извежда нули за всеки бутон. Това изявление конфигурира 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.

Сега поставете 10uF кондензатор между щифтовете за нулиране и заземяване на arduino (това не е необходимо за процеса на изгаряне, но е за качване на скици в attiny85).

Сега arduino е готов за записване на буутлоудъри и зареждане на скици. Просто трябва да изберете правилната дъска, съвместима с вашето отношение, и да я запишете.

За да заредите скица в Attiny85, заредете я в arduino IDE и кликнете върху „Качване с помощта на програмист“.

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

Стъпка 9: Калибрирайте вътрешния часовник Attiny85 (пропуснете това, ако използвате кристал)

В случай, че решите да не използвате 16Mhz кристала, трябва да калибрирате часовника си attiny85, така че ще се нуждаем от буутлоудър със сериен интерфейс и ще използваме библиотеката tinytuner, за да получим правилното калибриране.

Следвайте следващите стъпки

  • изберете под инструментите Arduino като ISP програмист
  • изберете платката "ATtiny85 @ 8MHz (вътрешен осцилатор; BOD деактивиран)"
  • Предполагам, че имате готовата ISP връзка, както е описано преди свързване, в противен случай направете връзките
  • записване на зареждащ механизъм
  • този буутлоудър е конфигурирал различни пинове за серийния интерфейс, използвайте тази конфигурация само за текущия буутлоудър

- PB4 (pin3 RX) към TX във FT232RL attiny85 - PB3 (pin2 TX) към RX във FT232RL attiny85 - GND (pin4) към GND на FT232RL, тъй като attiny85 вече се захранва от arduino, не е необходимо да се свързвате 5v на FT232RL, в противен случай свържете: attiny85 VCC (pin8) към 5V на FT232RL

  • качете примера на tinytuner в attiny85
  • отворете екранната програма за наблюдение на серийната комуникация: screen /dev /ttyUSB0 9600
  • нулирайте attiny85, свързвайки щифта RESET (pin1) към GND (само за момент), на прозореца на екрана трябва да се покаже съобщение за добре дошли
  • Продължете да изпращате единични знаци „x“(без връщане на каретка; без подаване на ред), докато калибрирането приключи
  • анотирайте някъде стойността на калибрирането (OSCCAL = 0x). Това е стойността, която ще трябва да декларирате в крайните скици

Стъпка 10: Декодирайте бутоните за дистанционно управление

Сега е време да декодираме нашите дистанционни бутони и да ги назначим за конкретни клавишни удари в компютъра, за да направите това, следвайте следващите стъпки:

  • изберете платката "ATtiny85 @ 16MHz (вътрешен PLL; 4.3V BOD)", ако не използвате кристал, "ATtiny85 @ 16 MHz (външен кристал; 4.3 V 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, който сме инсталирали преди, и добавете към съществуващите дефиниции, ако още не е там:

#дефинирайте KEY_VOL_UP 128

Когато приключим с всички наши бутони за дистанционно управление и всички дефиниции във файла UsbKeyboard.h са готови можем да преминем към последната стъпка.

Стъпка 11: Заредете окончателната скица и се надявайте на най -доброто

Зареждане на последната скица и надежда за най -доброто!
Зареждане на последната скица и надежда за най -доброто!
Зареждане на последната скица и надежда за най -доброто!
Зареждане на последната скица и надежда за най -доброто!

Вече имаме декодирани всички отдалечени бутони, файлът UsbKeyboard.h е изпълнен с нашите ключови кодове, така че сега можем да заредим в IDU на arduino окончателната скица от:

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

Този файл е точният файл, който използвам за моя приемник, и работи за 2 различни дистанционни управления, така че очевидно ще трябва да го актуализирате, за да работите с вашето дистанционно управление.

Ако не използвате кристал, разкомментирайте реда, който съдържа променливата OSCCAL и го присвойте на стойността, която сте намерили, когато сте извършили калибрирането на часовника

Забележете, че във функцията цикъл има много изрази като този:

if (results.value == 3405 || results.value == 1357) {// стрелка нагоре

if (lastStroke! = results.value) UsbKeyboard.sendKeyStroke (KEY_ARROW_UP);

}

Трябва да създадете свои собствени изявления, по един на бутон на дистанционното управление. В условието "ако" трябва да въведете results.value стойностите, които сте открили при декодиране на вашето дистанционно управление и като аргумент на метода UsbKeyboard.sendKeyStroke трябва да поставите един от вече дефинираните кодове на ключове във файла UsbKeyboard.h.

Условието "if (lastStroke! = Results.value)" е необходимо, тъй като някои дистанционни управления изпращат един и същ код два пъти за едно попадение и това предотвратява второто попадение. Не съм напълно сигурен и може да зависи от IR протокола, който е програмиран във вашето дистанционно (всъщност не съм експерт в IR протоколите), но според моя опит със собствените ми дистанционни управления, всеки бутон може да произведе 2 различни кода и докато натиснете и задържите бутона, той изпраща същия код, но ако натиснете отново бутона, той изпраща другия. Така че изглежда, че кодовете се изпращат по алтернативен начин, предполагам, че това е стандартен режим, за да знаете колко пъти наистина натискате бутона.

Добре, почти приключихме, просто качете последната скица, свържете я с компютъра и вижте как върви.

За тази стъпка е по -добре, ако изключите както arduino, така и usb към сериен адаптер и едва след това включете USB в порта на вашия компютър (в случай, че нещо се обърка, вашата верига ще бъде по -проста за отстраняване на грешки).

Ако всичко работи добре, когато отворите терминал и изпратите командата dmesg, трябва да видите нещо подобно на първото изображение на тази стъпка. Ако имаше проблеми, трябва да имате грешки като тези, намерени във второто изображение, и трябва да започнете да отстранявате грешки във вашата схема и/или софтуера. Един от източниците на първоначалните грешки, които имах, беше USB хъб, който не работеше с моя IR приемник (въпреки че други работеха) … така че е по -добре за тази последна стъпка да включите IR приемника директно към порта на вашия компютър. Евентуални грешки може да са трудни за намиране, но в крайна сметка, като мен, ще научите много и цената, която трябва да платите, си заслужава, уверявам ви.

Това са всички хора, уведомете ме, ако забележите грешки в тази инструкция и се насладите на чисто новия си IR USB приемник!

Препоръчано: