Obsah:

ATtiny85 IR USB prijímač: 11 krokov (s obrázkami)
ATtiny85 IR USB prijímač: 11 krokov (s obrázkami)

Video: ATtiny85 IR USB prijímač: 11 krokov (s obrázkami)

Video: ATtiny85 IR USB prijímač: 11 krokov (s obrázkami)
Video: Part 2. Our First Program - Embedded C Programming with the PIC18F14K50 2024, Júl
Anonim
IR prijímač ATtiny85 IR
IR prijímač ATtiny85 IR

UPOZORNENIE, TENTO NÁVOD SA STAL OBSOLETOM

Knižnica v-usb je navrhnutá tak, aby pracovala s protokolom USB 1.1, ktorý v dnešnej dobe takmer neexistuje. S príchodom USB3 vás bude viac ako bolesť hlavy pokúšať zaistiť, aby zariadenia v-usb fungovali. Po zmene multimediálneho centra mám mnoho problémov so stabilitou a napriek tomu, že prijímač funguje, po chvíli prestane fungovať. Neúspešný som sa pokúšal to napraviť. Vytvoril som aj verziu atmega328p, ale táto mala rovnaké problémy. Pravidelné používanie časovača strážneho psa na resetovanie dosky tiež nepomohlo, takže som sa vzdal v-usb.

Urobte si láskavosť a nepokračujte v tomto návode, pokiaľ to nie je na vzdelávacie účely. Odporúčam namiesto toho kúpiť čipový modul ATmega 32U4, ktorý už má integrované rozhranie USB, a postupujte podľa tohto sprievodcu:

www.sparkfun.com/tutorials/337

Potom nahoďte infračervený senzor TSOP31238 a môžete vyraziť.

Ahojte tvorcovia! toto je návod, ako vytvoriť funkčný USB IR prijímač pomocou mikrokontroléra Attiny85. Začal som tento projekt, aby som prekonal nedostatok podpory (aspoň úplnej podpory) pre niektoré IR diaľkové ovládače v systéme GNU/Linux. Podľa týchto pokynov môžete zostaviť programovateľný USB IR prijímač, ktorý funguje s akýmkoľvek IR diaľkovým ovládačom za pár dolárov.

Po prvé, tento návod by neexistoval bez tvrdej práce ľudí, ktorí vytvorili knižnice, ktoré tu používam:

  • Davidovi A. Mellisovi za jeho pozorné jadro
  • Software Rowdy Dog pre svoju knižnicu TinyTuner
  • Software Rowdy Dog pre ich malý bootloader
  • Rancidbacon (https://rancidbacon.com/) pre svoj arduino port knižnice v-usb (https://code.google.com/archive/p/vusb-for-arduino/downloads)
  • seejaydee za svoju IR knižnicu pre malé jadrá, ktoré sa nachádzajú v komentároch inštrukčného kódu https://www.instructables.com/id/Attiny-IR-librar… na https://www.instructables.com/id/Attiny-IR -knižnica…

Niekedy nie je ľahké nájsť správneho vlastníka knižnice, takže v prípade, že som sa mýlil, zanechajte komentár a problém by som vyriešil ASAP.

Táto príručka existuje, pretože som nenašiel úplný návod/návod, ktorý by bol vybalený z krabice (môže existovať, ale nenašiel som ju), takže som zhromaždil všetky dostupné informácie na internete a po dostatočnom počte skúšok a chyby Prišiel som s kompletným sprievodcom vybudovania funkčného USB IR prijímača, ktorý v skutočnosti funguje celkom dobre.

Hlavné zdroje informácií, ktoré som sledoval:

  • 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…

Krok 1: Niektoré úvahy

  • Nevlastním programátor AVR ISP a veľmi sa mi nechce kupovať ho, takže som na programovanie Attiny85 použil Arduino.
  • Nezaujíma ma žiadny iný operačný systém ako GNU/Linux, takže neviem, či to bude fungovať inak.
  • existujú aj iné IR knižnice, ale nedokázal som ich nechať fungovať ani s arduinom. Uvažujte však, že som začal s obmedzenými znalosťami o IR knižniciach. Možno by som ich mohol nechať fungovať teraz po získaní skúseností s riešením veľkého počtu problémov. Každopádne som bol stratený a zúfalý pred nájdením knižnice, ktorú Seejaydee poskytol a odvtedy ju používam (veľká vďaka, človeče!).
  • Existujú aj iné hardvérové konfigurácie, ale ja som použil iba tú, ktorá používa 5V na napájanie attiny85 a dve 3,6V 0,5W zenerove diódy na upnutie napätia dátových liniek, funguje ako vybité, takže som sa s nimi nemaznal iné konfigurácie.
  • Môžete použiť kryštál 16 MHz alebo knižnicu tinytuner na kalibráciu vnútorných hodín vášho zariadenia attiny85. Dôrazne odporúčam použitie kryštálu, je oveľa stabilnejší a pravdepodobne vám ušetrí veľa bolestí hlavy.
  • Tu používam dva rôzne bootloadery pre attiny85:

a) Verzia softvéru Rowdy Dog Software má integrované veľmi cool a veľmi malé sériové rozhranie, takže máte viac priestoru pre svoj program a ďalšie knižnice. Problém je v tom, že z niektorých dôvodov, aj keď funguje celkom dobre, sa USB zariadenie po určitom čase odpojilo (problémy nájdete s príkazom dmesg). Neviem, či je to problém jadra alebo zmiešanej kombinácie jadra a vybraných knižníc, takže som sa po chvíli rozhodol použiť toto jadro iba na dekódovanie diaľkových kľúčov a kalibráciu hodín (keď nepoužívam 16 MHz) kryštál). Potom už len napálim bootloader Mellis a nahrajem definitívny náčrt, ktorý nepoužíva sériové rozhranie.

b) Verzia Mellis, stabilný bootloader, použil som to v mnohých projektoch. Tento bootloader by som používal vždy, ak by obsahoval sériové rozhranie. Toto jadro používam v konečnom náčrte po dekódovaní všetkých kľúčov na mojich diaľkových ovládačoch.

Krok 2: Začnime s hardvérom

Začnime s hardvérom
Začnime s hardvérom
Začnime s hardvérom
Začnime s hardvérom
Začnime s hardvérom
Začnime s hardvérom

Potrebné nástroje:

  • doska kompatibilná s arduino
  • sériový adaptér na USB na dekódovanie vašich diaľkových kľúčov (stačí použiť FT232RL)
  • počítač s nainštalovaným GNU/Linux a správne nakonfigurovaným arduino IDE, používam arduino IDE 1.8.0
  • IR diaľkové ovládanie na otestovanie vášho zariadenia (aj taký mizerný, ako sú tie, ktoré sa nachádzajú v štartovacích súpravách Arduino, bude fungovať)
  • multimetr na ladenie dosky (dúfam, že ho nebudete potrebovať, veľa šťastia!)

Zoznam materiálov:

  • 1 Attiny85
  • 2 odpory 68R
  • 1 odpor 1,5 K
  • 1 odpor 4,7K
  • 1 kryštál 16 MHz
  • 1 kondenzátor 22 pF
  • 1 0,1uF kondenzátor
  • 1 10uF kondenzátor
  • 2 zenerove diódy 3,6V 0,5W
  • 1 konektor USB typu A samec
  • 1 kolíkový pás so 6 kolíkmi na programovanie a ladenie dosky.
  • 1 IR snímač TSOP31238
  • veľa kávy, aby si nespal

Pred spájkovaním konečnej dosky by ste pravdepodobne chceli vytvoriť prototyp nepájivej dosky na testovacie účely. Na jej zostavenie by malo stačiť schéma podľa tohto návodu.

Na pripojenie zariadenia attiny85 k počítaču používa konečný dizajn konektor USB typu A, ktorý je spájkovaný s doskou, ale pre prototyp budete potrebovať kábel USB, ktorý môžete pripojiť k doske:

Spájkujte na malý kúsok 4 pinov perfboardu, potom odstrihnite starý kábel USB a spájkujte kolíky na 4 vodiče vo vnútri kábla USB:

  • červená je VCC (5V)
  • čierna je GND
  • biela je D-
  • zelená je D+

Všetko držte pohromade horúcim lepidlom.

Teraz musíme k programu attiny85 pripojiť programátor ISP (Arduino), adaptér USB na sériový port (FT232RL) a infračervený snímač.

Môžete nechať všetko spojené, aby ste mohli napaľovať rôzne bootloadery, načítať náčrty a kontrolovať sériový port bez toho, aby ste menili káble, Za týmto účelom pripojte všetko podľa týchto pokynov:

Programátor ISP (Arduino): to nám umožňuje napaľovať bootloadery a načítať náčrty

  • attiny85 PB0 (pin5) až pin11 (MOSI) v arduine
  • attiny85 PB1 (pin6) až pin12 (MISO) v arduine
  • attiny85 PB2 (pin7) až pin13 (SCK) v arduine
  • attiny85 RESET (pin1) s vytiahnutím (4,6 k na VCC) na pin10 v arduino
  • attiny85 VCC až 5V v arduine
  • attiny85 GND až GND v arduine

USB na sériový adaptér (FT232RL): umožňuje nám to skontrolovať sériový port

  • attiny85 PB0 (pin5 RX) k TX v modeli FT232RL
  • attiny85 PB2 (pin7 TX) na RX v modeli FT232RL
  • attiny85 GND (pin4) k GND na FT232RL
  • pretože attiny85 je už napájaný arduino, nemusíte pripojiť 5v na FT232RL, inak pripojte: attiny85 VCC (pin8) na 5V na FT232RL

USB na sériový adaptér (FT232RL) iba na kalibráciu hodín (iba na bootloader „ATtiny85 @ 8MHz (interný oscilátor; BOD deaktivovaný)“)

  • PB4 (pin3 RX) až TX v Attiny85 FT232RL
  • PB3 (pin2 TX) na RX v Attiny85 FT232RL
  • GND (pin4) až GND na FT232RL
  • pretože attiny85 je už napájaný arduino, nemusíte pripájať 5v na FT232RL, inak pripojte: attiny85 VCC (pin8) na 5V na FT232RL

Ak používate kryštál 16 MHz, pripojte ho k kolíkom Attiny85 PB3 (pin2) a PB4 (pin3) a každý kolík pripojte aj k GND cez každý kryt 22 pF.

Filtrujte Attiny85 VCC s kondenzátormi 0,1 uF a 10uF, ktoré ich spájajú paralelne s GND

Pripojte výstupný kolík infračerveného senzora k attiny85 PB1 (pin6), zapnite ho.

Vytvorte a pripojte rozhranie USB:

  • GND (čierny vodič): pripojte ho k spoločnému GND (všetky uzemnenia sú spojené dohromady)
  • D- (biely vodič) pripojený k attiny85 PB0 (pin5) cez odpor 68R, pripojte ho tiež k zemi pomocou 3,6V 0,5W zenera a potiahnite ho k VCC 1,5K odporom
  • D+ (zelený vodič) pripojený k PB2 cez odpor 68R, pripojte ho k zemi pomocou zenera 3,6 V 0,5 W
  • 5V, môžete ho nechať nezapojený, pretože v tejto fáze je všetko napájané Arduinom, inak ho pripojte k attiny85 VCC

Zenerove diódy sú spojené tak, že anódy sú viazané na GND a katódy sú pripojené k dátovým linkám D+ a D-.

Krok 3: Konečný návrh

Konečný dizajn
Konečný dizajn
Konečný dizajn
Konečný dizajn
Konečný dizajn
Konečný dizajn

Na konečný návrh môžete použiť perfboard s priechodnými komponentmi alebo vyleptať vlastnú dosku a použiť komponenty smd. Ak sa chcete naučiť leptať tabuľu, jednoducho si ju vygooglite, na internete sú k dispozícii úžasné návody.

Vyleptal som si vlastnú dosku a som veľmi spokojný s konečnými výsledkami (malá, stabilná a robustná doska). Áno, viem, že strih je nanič, ale tak neskoro v noci som nemohol používať žiadne elektrické náradie a ja stačí dosku nastrihať mojimi nožnicami na plech.

Mimochodom, stopy na obrázkoch nie sú holá meď, boli ošetrené nepríjemnou chemikáliou, ktorá meď mierne konzervuje (existuje podozrenie, že spôsobuje rakovinu, preto ju používajte s veľkou opatrnosťou, latexové guľôčky a masku proti prachu):

Na navrhnutie rozloženia použite vyššie uvedené schémy alebo na vyleptanie dosky môžete použiť iba moju stopu plošných spojov.

Krok 4: Nakladanie so softvérom

Obvod v tomto projekte je veľmi ľahký, softvér namiesto toho vyžaduje väčšie úsilie.

Na to, aby to fungovalo, potrebujeme najmenej 2 knižnice (ešte jednu, ak nepoužívate kryštál) a 2 bootloadery. Keď som začínal s týmto projektom, testoval som niektoré knižnice, niekedy nefungovali a mnohokrát boli jednoducho nakonfigurované tak, aby nepracovali s Attiny85 (to som ešte nevedel). Potom som zistil problémy s prekrývajúcimi sa prerušeniami knižníc / bootloaderov. Nakoniec som sa musel vysporiadať s veľkým počtom chýb, keď som pripojil koncový obvod k počítaču. Tento návod som však nemal, takže si myslím, že by ste boli v poriadku, postupujte podľa pokynov v tomto návode, ak to urobíte bez chýb, mali by ste byť v poriadku:)

Teraz musíme nainštalovať a nakonfigurovať niekoľko knižníc:

  • v-usb pre arduino knižnicu: táto knižnica umožňuje počítaču rozpoznať mikrokontrolér ako klávesnicu HID USB a použijeme ju na odosielanie úderov kľúčov do počítača. Táto knižnica potrebuje určité zmeny, aby bola kompatibilná s attiny85
  • knižnica tinytuner iba vtedy, ak nebudete používať kryštál 16 MHz. Potom budete musieť kalibrovať vnútorné hodiny mikrokontroléra. Táto knižnica je vybalená.
  • Attiny-IR-knižnica na interakciu s IR senzorom. Táto knižnica je vybalená.

Potrebujeme tiež 2 bootloadery:

  • Verzia softvéru pre psy s dostupným sériovým rozhraním. Tento bootloader potrebuje na prácu s attiny85 malé vyladenie, pretože používa funkciu timer1 pre funkciu millis () a nebude fungovať s IR knižnicou. Musíme zmeniť časovač na timer0.
  • Verzia Mellis, stabilný bootloader, ktorý použijeme v konečnej fáze. Toto funguje ako po vybalení z krabice.

Krok 5: Inštalácia a konfigurácia knižnice V-usb

Stiahnite si knižnicu z https://code.google.com/archive/p/vusb-for-arduin… Rozbaľte súbor a skopírujte priečinky libraries/UsbKeyboard do priečinka s knižnicami skicárov.

Teraz musíte upraviť niekoľko súborov, aby boli kompatibilné s ATtiny85 (je nakonfigurovaný na prácu s arduino):

A) upraviť usbconfig.h:

pod zmenou „Konfigurácia hardvéru“:

#define USB_CFG_IOPORTNAME Dto ## definujte USB_CFG_IOPORTNAME B

a

#define USB_CFG_DMINUS_BIT 4to#define USB_CFG_DMINUS_BIT 0

pod zmenou „Voliteľná konfigurácia hardvéru“:

#define USB_CFG_PULLUP_IOPORTNAME Dto ## define USB_CFG_PULLUP_IOPORTNAME B

Ak chcete vytvoriť úplnú špecifikáciu HID kompatibilnú so zavádzaním (inak nebudú fungovať žiadne multimediálne klávesy), zmeňte tiež:

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

a

#define USB_CFG_INTERFACE_PROTOCOL 0 // Klávesnica#definuje USB_CFG_INTERFACE_PROTOCOL 0x01 // klávesnica

Voliteľne môžete tiež zmeniť výrobcu a názov zariadenia v týchto definíciách:

#define USB_CFG_VENDOR_NAME

#define USB_CFG_DEVICE_NAME

B) upraviť UsbKeyboard.h:

zmeniť:

PORTD = 0; // TODO: Len pre USB piny? DDRD | = ~ USBMASK;

do

PORTB = 0; // TODO: Len pre piny USB? DDRB | = ~ USBMASK;

Ak chcete povoliť zmeny ďalších 101 kódov kľúčov, vykonajte tiež:

0x25, 0x65, // LOGICAL_MAXIMUM (101) až: 0x25, 0xE7, // LOGICAL_MAXIMUM (231)

a

0x29, 0x65, // USAGE_MAXIMUM (aplikácia pre klávesnicu) až: 0x29, 0xE7, // USAGE_MAXIMUM (aplikácia pre klávesnicu)

Možno budete musieť upraviť aj tieto 3 súbory:

usbdrv.husbdrv.cUsbKeyboard.h

a vždy, keď uvidíte PROGMEM, pridajte pred názov typu premennej „const“(napr. PROGMEN char usbHidReportDescriptor [35] ==> PROGMEM const char usbHidReportDescriptor [35])

Ak to nie je jasné, navštívte stránku

Všetkým týmto zmenám sa môžete vyhnúť, ak si stiahnete priloženú knižnicu (všetky tieto zmeny som vykonal sám) a extrahujete ju do priečinka s knižnicami skicárov:

UsbKeyboard nakonfigurovaný pre attiny85

Upraviť: Nedávno som zistil, že o Alejandra Leivu (https://github.com/gloob) je o túto knižnicu postarané a zdá sa, že funguje aj dobre. Môžete tiež vyskúšať jeho verziu s potrebnými zmenami, ktoré som urobil, aby fungoval s Attiny, takže ak si to chcete pozrieť, jednoducho ho rozbaľte do priečinka s knižnicami skicárov.

Klávesnica USB nakonfigurovaná pre attiny85 (verzia Alejandro Leiva)

Krok 6: Inštalácia knižníc Attiny-IR a Tinytuner

A) Knižnica Attiny-IR:

stiahnite si ho z https://drive.google.com/open?id=0B_w9z88wnDtFNHlq… potom ho rozbaľte do priečinka s knižnicami skicárov.

B) Knižnica Tinytuner:

Je to potrebné iba vtedy, ak nepoužívate 16Mhz kryštál, ale verte mi, že aj keď to funguje aj bez kryštálu, je to s ním oveľa stabilnejšie a stojí to niekoľko centov, takže je to jednoduché, použite kryštál a preskočte túto knižnicu.

Ešte nie ste presvedčení? ok, stiahnite si knižnicu z https://storage.googleapis.com/google-code-archive… potom ju rozbaľte do priečinka s knižnicami skicárov.

S knižnicami sme skončili, teraz prejdeme k inštalácii bootloaderov.

Krok 7: Inštalácia a konfigurácia bootloaderov

Chystáme sa nainštalovať dva bootloadery, ten Mellis je podľa mojich skúseností stabilnejší a použijeme ho v konečnom náčrte. Ten druhý vyvinutý spoločnosťou Rowdy Dog Software je úžasné jadro, veľmi malé a s integrovaným sériovým rozhraním, ktoré mám k dispozícii, ale môj diaľkový ovládač sa mi po nejakom čase zrútil, takže tento bootloader použijeme len na kalibráciu vnútorných hodín attiny85 a na dekódovanie nášho diaľkového ovládača. tlačidlá.

Viem, že existujú dostupné knižnice na poskytnutie sériových schopností attiny85, ale potom budete musieť vyladiť knižnice, ktoré používajú sériový objekt … Tento postup sa mi páči viac.

Začnime s inštaláciou:

A) Zavádzač Mellis:

stačí otvoriť predvoľby Arduino IDE a pridať „Adresy URL dodatočného správcu dosiek:

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

Potom otvorte správcu dosiek Arduino IDE a vyhľadajte atiny, nainštalujte dosky z Mellis. Teraz by ste mali vidieť Arduino ID dosky ATtiny25/45/85 a ATtiny24/44/84.

B) Malý bootloader softvéru Rowdy Dog Software:

stiahnite si bootloader z

Rozbaľte súbor a skopírujte malý priečinok do vášho skicára/hardvéru (vytvorte tento priečinok, ak ešte neexistuje). potom sa presuňte do priečinka sketchbook/hardware/tiny/avr/a:

1) skopírujte súbor Prospective Boards.txt do súboru boards.s.xt

2) upravte súbor platform.txt a vykonajte niektoré zmeny:

Odkomentujte premennú compiler.path a nechajte ju smerujúcu do priečinka hardware/tools/avr/bin/vo vašom inštalačnom priečinku arduino:

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

zmeniť tiežcompiler. S.flags = -c -g -assembler-with-cpptocompiler. S.flags = -c -g -x assembler-with-cpp

Potom zmeňte nasledujúce premenné a uistite sa, že je všetko na svojom mieste (tieto súbory musia existovať, v opačnom prípade nasmerujte premenné na správne cesty):

tools.avrdude.cmd.path = {runtime.ide.path}/hardware/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}/hardware/tools/avr/bin/avrdude

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

3) upravte jadrá súboru/tiny/core_build_options.h a zmeňte:

#define TIMER_TO_USE_FOR_MILLIS 1 až#definovať TIMER_TO_USE_FOR_MILLIS 0

To je veľmi dôležité, inak bude IR prijímač vydávať nuly pre každé tlačidlo. Tento príkaz konfiguruje časový spínač 0 pre funkciu millis () tak, aby bol časový spínač 1 k dispozícii pre IR knižnicu. Konečný náčrt aj tak vypne časový spínač0, takže nebudete mať k dispozícii ani funkcie millis () a delay (). Namiesto toho môžete mať k dispozícii funkciu delayMicroseconds ().

Tento bootloader je minimálny, ale obsahuje podporu sériových objektov:

Attiny85 PB2 (pin7) je TX a PB0 (pin5) je RX

Konfiguráciu môžete mať súčasne pripojenú k programátoru ISP (arduino) a adaptéru sériový na USB, takže nemusíte príliš často meniť káble:

Teraz máme nainštalované a správne nakonfigurované knižnice aj bootloadery, najťažšia práca je dokončená a môžeme začať testovať.

Krok 8: Napaľovanie bootloaderov a nahrávanie skíc

Dôrazne odporúčam aktivovať podrobný výstup podľa preferencií Arduino IDE, aby ste mohli zistiť prípadný problém.

Na napálenie bootloadera do Attiny85 musíte nahrať príklad ISP do Arduina a potom vybrať programátora Arduino ako ISP.

Teraz umiestnite 10uF kondenzátor medzi resetovacie a uzemňovacie kolíky na arduino (nie je to potrebné pre proces napaľovania, ale je to nahrať náčrty na attiny85).

Teraz je arduino pripravené napáliť bootloadery a načítať náčrty. Stačí si vybrať správnu dosku kompatibilnú s vašim atiny a napáliť ju.

Ak chcete načítať skicu do Attiny85, načítajte ju do arduino IDE a kliknite na „Nahrať pomocou programátora“.

DÔLEŽITÉ: pri odosielaní náčrtu existujú 3 kroky, kompilácia, napísanie a overenie. Ak kompilácia a písanie fungovali úspešne, ale proces overovania zlyhal, je možné, že by skica fungovala aj tak.

Krok 9: Kalibrujte interné hodiny Attiny85 (preskočte to, ak používate kryštál)

V prípade, že sa rozhodnete nepoužívať 16 MHz kryštál, musíte kalibrovať hodiny attiny85, takže budeme potrebovať bootloader so sériovým rozhraním a na správnu kalibráciu použijeme knižnicu tinytuner.

Vykonajte nasledujúce kroky

  • pod nástrojmi vyberte Arduino ako programátor ISP
  • vyberte dosku „ATtiny85 @ 8MHz (interný oscilátor; BOD deaktivované)“
  • Predpokladám, že máte pripojenie ISP pripravené tak, ako bolo popísané pred pripojením, inak vykonajte pripojenia
  • napáliť bootloader
  • tento bootloader nakonfiguroval rôzne piny pre sériové rozhranie, použite túto konfiguráciu iba pre aktuálny bootloader

- PB4 (pin3 RX) na TX v FT232RL attiny85 - PB3 (pin2 TX) na RX v FT232RL attiny85 - GND (pin4) na GND na FT232RL, pretože attiny85 je už napájaný arduino, ktoré nepotrebujete pripojiť 5v na FT232RL, inak pripojte: attiny85 VCC (pin8) na 5V na FT232RL

  • nahrajte príklad tinytuner na attiny85
  • otvorte program obrazovky na monitorovanie sériovej komunikácie: screen /dev /ttyUSB0 9600
  • resetujte Attiny85 pripojením kolíka RESET (pin1) k GND (len na chvíľu), V okne obrazovky by sa mala objaviť uvítacia správa
  • Pokračujte v odosielaní jednotlivých znakov „x“(bez návratu vozíka; bez posuvu riadka), kým sa kalibrácia nedokončí
  • niekde označte hodnotu kalibrácie (OSCCAL = 0x). To je hodnota, ktorú budete musieť deklarovať na konečných náčrtoch

Krok 10: Dekódujte tlačidlá na diaľkovom ovládači

Teraz je načase dekódovať naše diaľkové tlačidlá a priradiť ich ku konkrétnym úderom klávesov v počítači, postupujte podľa nasledujúcich krokov:

  • vyberte dosku „ATtiny85 @ 16MHz (interná PLL; 4,3 V BOD)“, ak nepoužívate kryštál, „ATtiny85 @ 16 MHz (externý kryštál; 4,3 V BOD“, v opačnom prípade ju napaľte
  • načítajte skicu:
  • Ak nepoužívate kryštál, odkomentujte riadok obsahujúci premennú OSCCAL a priraďte ho k hodnote, ktorú ste našli pri kalibrácii hodín.
  • Predpokladám, že snímač je pripojený tak, ako bolo popísané vyššie, inak ho pripojte
  • Tiež predpokladám, že je pripojený adaptér FT232RL na USB, inak ho pripojte
  • resetujte attiny85 pripojením kolíka RESET (pin1) k GND (len na chvíľu)
  • opakovane stláčajte tlačidlá na diaľkovom ovládači a poklepte na okno obrazovky, pre každý záznam musíte označiť posledné číslo, každé tlačidlo môže vytvoriť 2 rôzne čísla

Príklad:

PRIJATÉ D44 3396 ZÍSKANÉ 544 1348

Označte 3396 a 1348 v súvislosti s tlačidlom, ktoré ste práve stlačili, potom sa musíte rozhodnúť, čo s týmto tlačidlom chcete urobiť. Napríklad by som mohol chcieť, aby toto tlačidlo odoslalo multimediálny kód kľúča „Zvýšiť hlasitosť“, potom potrebujem nájsť ID tohto kľúčového kódu. Ak to chcete urobiť, stiahnite si súbor PDF:

Pozrite sa do sekcie „Stránka Klávesnica/klávesnica“na strane 53 a pomocou čísel v stĺpci ID použitia (december) spojte tlačidlá diaľkového ovládača s kódmi klávesnice. V našom príklade vidíme, že kód kľúča pre „Zvýšenie hlasitosti“je: 128.

Upravte súbor UsbKeyboard.h v knižnici UsbKeyboard z balíka v-usb, ktorý sme nainštalovali predtým, a pridajte ho do existujúcich definícií, ak tam ešte nie je:

#define KEY_VOL_UP 128

Keď sme hotoví so všetkými našimi tlačidlami diaľkového ovládača/s a všetkými definíciami v súbore UsbKeyboard.h, môžeme prejsť na posledný krok.

Krok 11: Načítanie konečného náčrtu a nádej na najlepšie

Načítava sa konečná skica a dúfate v to najlepšie!
Načítava sa konečná skica a dúfate v to najlepšie!
Načítava sa konečná skica a dúfate v to najlepšie!
Načítava sa konečná skica a dúfate v to najlepšie!

Teraz máme dekódované všetky diaľkové tlačidlá, súbor UsbKeyboard.h je naplnený našimi kľúčovými kódmi, takže teraz môžeme do arduino IDE načítať definitívny náčrt z:

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

Tento súbor je presný súbor, ktorý používam pre svoj prijímač, a funguje na 2 rôznych diaľkových ovládačoch, takže ho budete zrejme musieť aktualizovať, aby fungoval s vašim diaľkovým ovládaním.

Ak nepoužívate kryštál, odkomentujte riadok obsahujúci premennú OSCCAL a priraďte ho k hodnote, ktorú ste našli pri kalibrácii hodín.

Všimnite si, že vo funkcii loop je veľa príkazov ako je tento:

if (results.value == 3405 || results.value == 1357) {// šípka hore

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

}

Musíte vytvoriť vlastné vyhlásenia, jedno na tlačidlo na diaľkovom ovládači. Do podmienky „if“musíte vložiť výsledky.hodnota hodnôt, ktoré ste našli pri dekódovaní diaľkového ovládača, a ako argument metódy UsbKeyboard.sendKeyStroke musíte do súboru UsbKeyboard.h vložiť jeden z už definovaných kódov kľúčov.

Podmienka „if (lastStroke! = Results.value)“je potrebná, pretože niektoré diaľkové ovládače odosielajú pri každom prístupe dvakrát rovnaký kód, čo zabraňuje druhému zásahu. Nie som si úplne istý a môže to závisieť od IR protokolu, ktorý bol naprogramovaný do vášho diaľkového ovládača (nie som naozaj odborník na IR protokoly), ale podľa mojich skúseností s vlastnými diaľkovými ovládačmi môže každé tlačidlo vytvárať 2 rôzne kódy a zatiaľ čo stlačíte a podržíte tlačidlo, odošle rovnaký kód, ale ak znova stlačíte tlačidlo, odošle druhé. Zdá sa teda, že kódy sú odoslané alternatívnym spôsobom, myslím, že je to štandardný režim, aby ste vedeli, koľkokrát ste skutočne stlačili tlačidlo.

Ok, sme takmer hotoví, stačí nahrať konečný náčrt, pripojiť ho k počítaču a zistiť, ako to pokračuje.

Pre tento krok je lepšie, ak odpojíte arduino aj USB zo sériového adaptéra a až potom zapojíte USB do portu PC (v prípade, že sa niečo pokazí, bude ladenie obvodu jednoduchšie).

Ak všetko fungovalo dobre, po otvorení terminálu a odoslaní príkazu dmesg by ste mali vidieť niečo podobné ako na prvom obrázku v tomto kroku. Ak sa vyskytnú problémy, mali by ste mať chyby podobné tým, ktoré sú uvedené na druhom obrázku, a musíte začať ladiť obvod a/alebo softvér. Jedným zo zdrojov počiatočných chýb, ktoré som mal, bol rozbočovač USB, ktorý by nefungoval s mojím infračerveným prijímačom (ostatné však fungovali) … v tomto poslednom kroku je preto lepšie zapojiť infračervený prijímač priamo do portu počítača. Prípadné chyby by bolo ťažké nájsť, ale nakoniec, rovnako ako ja, by ste sa veľa naučili a cena za zaplatenie stojí za to, uisťujem vás.

To je všetko, ľudia, dajte mi vedieť, ak si v tomto návode všimnete nejaké chyby a užite si svoj úplne nový IR USB prijímač!

Odporúča: