Obsah:

ATtiny85 IR USB přijímač: 11 kroků (s obrázky)
ATtiny85 IR USB přijímač: 11 kroků (s obrázky)

Video: ATtiny85 IR USB přijímač: 11 kroků (s obrázky)

Video: ATtiny85 IR USB přijímač: 11 kroků (s obrázky)
Video: Programming Attiny85 IC Directly Through USB || Attiny Programming Without Arduino 2024, Červenec
Anonim
ATtiny85 IR USB přijímač
ATtiny85 IR USB přijímač

UPOZORNĚNÍ, TENTO NÁVOD SE STAL OBSOLETEM

Knihovna v-usb je navržena pro práci s protokolem USB 1.1, který v dnešní době téměř neexistuje. S příchodem USB3 vás bude víc než bolet hlava při pokusu o fungování zařízení v-usb. Po změně multimediálního centra mám mnoho problémů se stabilitou a přestože přijímač funguje, po chvíli přestane fungovat. Byl jsem neúspěšný při pokusu o opravu. Vytvořil jsem také verzi atmega328p, ale tato měla stejné problémy. Nepomohlo ani pravidelné hlídání časovače k resetování desky, takže jsem se vzdal v-usb.

Udělejte si laskavost a nepokračujte v tomto pokynu, pokud to není pro vzdělávací účely. Místo toho doporučuji koupit čipový modul ATmega 32U4, který již má integrované rozhraní USB, a postupujte podle tohoto průvodce:

www.sparkfun.com/tutorials/337

Poté přihoďte infračervený senzor TSOP31238 a můžete vyrazit.

Ahoj tvůrci! toto je instrukce k vybudování funkčního USB IR přijímače pomocí mikrokontroléru Attiny85. Začal jsem tento projekt, abych překonal nedostatek podpory (alespoň úplné podpory) pro některé IR dálkové ovladače v operačním systému GNU/Linux. Podle těchto pokynů můžete postavit programovatelný USB IR přijímač, který pracuje s jakýmkoli IR dálkovým ovladačem za pár peněz.

Za prvé, tento instruktáž by neexistoval bez tvrdé práce lidí, kteří vytvořili knihovny, které zde používám:

  • Davidu A. Mellisovi za jeho upřímné jádro
  • Software Rowdy Dog pro jejich knihovnu TinyTuner
  • Software Rowdy Dog pro jejich malý bootloader
  • Rancidbacon (https://rancidbacon.com/) pro svůj arduino port knihovny v-usb (https://code.google.com/archive/p/vusb-for-arduino/downloads)
  • seejaydee za svou IR knihovnu pro malá jádra nalezenou v komentářích instruktážního https://www.instructables.com/id/Attiny-IR-librar… kódu na https://www.instructables.com/id/Attiny-IR -knihovna…

Někdy není snadné najít správného vlastníka knihovny, takže v případě, že jsem udělal chybu, zanechte prosím komentář a problém bych vyřešil ASAP.

Tato příručka existuje, protože jsem nenašel kompletní návod/příručku, která by fungovala po vybalení (může existovat, ale nenašel jsem ji), takže jsem shromáždil všechny dostupné informace na webu a po dobrém počtu zkoušek a chyby Přišel jsem s kompletním návodem na sestavení funkčního USB IR přijímače, který ve skutečnosti funguje docela dobře.

Hlavní zdroje informací, které jsem 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: Několik úvah

  • Nevlastním programátor AVR ISP a po nákupu se mi moc nechce, proto jsem k programování Attiny85 použil Arduino
  • Nezajímá mě žádný jiný OS než GNU/Linux, takže nevím, jestli to bude fungovat i jinak.
  • existují i jiné IR knihovny, ale nedokázal jsem je nechat fungovat ani s Arduinem. Uvažte však, že jsem začal s omezenými znalostmi o IR knihovnách. Možná bych je mohl přimět pracovat nyní po zkušenostech získaných při řešení velkého množství problémů. Každopádně jsem byl ztracený a zoufalý, než jsem našel knihovnu, kterou Seejaydee poskytoval, a od té doby ji používám (díky, člověče!).
  • Existují i jiné hardwarové konfigurace, ale já jsem použil pouze ten, který používá 5V k napájení attiny85 a dvě 3,6V 0,5W zenerovy diody k upnutí napětí datových linek, funguje to po vybalení z krabice, takže jsem si s tím nezahrál jiné konfigurace.
  • Můžete použít 16Mhz krystal nebo můžete použít knihovnu tinytuner ke kalibraci vnitřních hodin vašeho attiny85. Důrazně doporučuji použití krystalu, je mnohem stabilnější a pravděpodobně vám ušetří spoustu bolestí hlavy.
  • Zde používám dva různé bootloadery pro attiny85:

a) Verze softwaru Rowdy Dog, má integrované sériové rozhraní, které je velmi cool a je velmi malé, takže máte více místa pro svůj program a další knihovny. Problém je v tom, že z nějakých důvodů, i když to funguje docela dobře, se USB zařízení po nějaké době odpojilo (problémy najdete s příkazem dmesg). Nevím, jestli je to problém jádra nebo smíšená kombinace jádra plus vybraných knihoven, takže jsem se po chvíli rozhodl použít toto jádro jen k dekódování klíčů na dálku a kalibraci hodin (když nepoužívám 16Mhz krystal). Poté už jen vypálím zavaděč Mellis a nahraji definitivní skicu, která nepoužívá sériové rozhraní.

b) Verze Mellis, stabilní bootloader, použil jsem to v mnoha projektech. Tento bootloader bych používal vždy, kdyby obsahoval sériové rozhraní. Toto jádro používám v závěrečném náčrtu po dekódování všech klíčů na mých dálkových ovladačích.

Krok 2: Začněme hardwarem

Začněme hardwarem
Začněme hardwarem
Začněme hardwarem
Začněme hardwarem
Začněme hardwarem
Začněme hardwarem

Potřebné nástroje:

  • deska kompatibilní s arduino
  • Sériový adaptér na USB k dekódování vašich dálkových klíčů (stačí použít FT232RL)
  • PC s nainstalovaným GNU/Linuxem a správně nakonfigurovaným arduino IDE, používám arduino IDE 1.8.0
  • IR dálkové ovládání k otestování vašeho zařízení (i takové mizerné zařízení, jaké najdete v arduino startovacích sadách, bude fungovat)
  • multimetr k ladění desky (doufám, že ji nebudete potřebovat, hodně štěstí!)

Seznam materiálů:

  • 1 Attiny85
  • 2 odpory 68R
  • 1 odpor 1,5 K
  • 1 odpor 4,7K
  • 1 krystal 16 MHz
  • 1 kondenzátor 22 pF
  • 1 kondenzátor 0,1uF
  • 1 10uF kondenzátor
  • 2 zenerovy diody 3,6V 0,5W
  • 1 konektor USB typu A samec
  • 1 páskový kolík se 6 piny pro programování a ladění desky.
  • 1 IR senzor TSOP31238
  • hodně kávy, abys nespal

Před pájením definitivní desky byste pravděpodobně chtěli vytvořit prototyp prkénka pro testovací účely, podle schématu připojeného k tomuto pokynu by mělo stačit k jeho sestavení.

Pro připojení attiny85 k počítači konečný design používá konektor USB typu A, který je připájen k desce, ale pro prototyp budete potřebovat kabel USB, který můžete připojit k prkénku:

Pájejte do malého kousku 4 pinů perfboardu, poté ustřihněte starý USB kabel a připájejte piny na 4 vodiče uvnitř USB kabelu:

  • červená je VCC (5V)
  • černá je GND
  • bílá je D-
  • zelená je D+

Vše držte pohromadě horkým lepidlem.

Nyní musíme k programátoru attiny85 připojit programátor ISP (Arduino), adaptér USB na sériový port (FT232RL) a IR senzor.

Můžete nechat připojené všechny dohromady, abyste mohli vypalovat různé zavaděče, načítat náčrty a kontrolovat sériový port, aniž byste měnili kabely, Chcete -li to provést, připojte vše podle následujících pokynů:

ISP programátor (Arduino): to nám umožňuje vypalovat bootloadery a načítat skici

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

usb to serial adapter (FT232RL): to nám umožňuje zkontrolovat sériový port

  • attiny85 PB0 (pin5 RX) k TX v FT232RL
  • attiny85 PB2 (pin7 TX) k RX v FT232RL
  • attiny85 GND (pin4) na GND na FT232RL
  • protože attiny85 je již napájen arduinem, nemusíte připojovat 5v na FT232RL, jinak připojte: attiny85 VCC (pin8) na 5V na FT232RL

usb na sériový adaptér (FT232RL) pouze pro kalibraci hodin (pouze pro zavaděč „ATtiny85 @ 8MHz (interní oscilátor; BOD deaktivován)“)

  • PB4 (pin3 RX) na TX v FT232RL attiny85
  • PB3 (pin2 TX) na RX v FT232RL attiny85
  • GND (pin4) až GND na FT232RL
  • protože attiny85 je již napájen arduinem, nemusíte připojovat 5v na FT232RL, jinak připojte: attiny85 VCC (pin8) na 5V na FT232RL

Pokud používáte krystal 16 MHz, připojte jej ke kolíkům Attiny85 PB3 (pin2) a PB4 (pin3) a každý pin připojte také k GND přes každý kryt 22 pF.

Filtrujte Attiny85 VCC s kondenzátory 0,1 uF a 10uF, které je spojují paralelně s GND

Připojte výstupní kolík IR senzoru k atiny85 PB1 (pin6), zapněte jej.

Vytvořte a připojte rozhraní USB:

  • GND (černý vodič): připojte jej ke společnému GND (všechny uzemnění jsou spojeny dohromady)
  • D- (bílý vodič) připojený k attiny85 PB0 (pin5) přes odpor 68R, připojte jej také k zemi pomocí zeneru 3,6 V 0,5 W a přitáhněte jej k VCC s odporem 1,5 K
  • D+ (zelený vodič) připojený k PB2 přes odpor 68R, připojte jej k zemi pomocí 3,6V 0,5W zeneru
  • 5V, můžete jej nechat nezapojený, protože v této fázi je vše napájeno Arduinem, jinak jej připojte k attiny85 VCC

Zenerovy diody jsou spojeny tak, že anody jsou svázány s GND a katody jsou spojeny s datovými linkami D+ a D-.

Krok 3: Konečný návrh

Konečný design
Konečný design
Konečný design
Konečný design
Konečný design
Konečný design

Pro konečný návrh můžete použít perfboard s průchozími součástmi nebo vyleptat vlastní desku a použít komponenty smd. Chcete -li se naučit leptat desku, jednoduše si ji vygooglete, na internetu jsou k dispozici úžasné návody.

Vyleptal jsem si vlastní desku a jsem velmi spokojený s konečnými výsledky (malá, stabilní a robustní deska). Ano, vím, že řez je na nic, ale nemohl jsem použít žádné elektrické nářadí tak pozdě v noci a já prostě nastříhejte desku mými nůžkami na plech.

Mimochodem, stopy na obrázcích nejsou holá měď, byly ošetřeny ošklivou chemikálií, která měď mírně konzervuje (existuje podezření, že vyvolává rakovinu, takže ji používejte s velkou opatrností, latexové koule a protiprachovou masku):

Při navrhování rozvržení použijte výše uvedená schémata, nebo můžete k vyleptání desky použít pouze moji stopu na desce plošných spojů.

Krok 4: Nakládání se softwarem

Obvod v tomto projektu je velmi snadný, software místo toho vyžaduje větší úsilí.

Aby to fungovalo, potřebujeme alespoň 2 knihovny (ještě jednu, pokud nepoužíváte krystal) plus 2 zavaděče. Když jsem zahájil tento projekt, testoval jsem některé knihovny, někdy nefungovaly a mnohokrát prostě nebyly nakonfigurovány pro práci s Attiny85 po vybalení z krabice (to jsem ještě nevěděl). Poté jsem našel problémy s překrývajícími se knihovnami / zavaděči. Nakonec jsem se musel vypořádat se spoustou chyb, když jsem připojil konečný obvod k počítači. Tento průvodce jsem však neměl, takže si myslím, že byste byli v pořádku, postupujte podle pokynů v tomto návodu, pokud to uděláte bez chyb, měli byste být v pořádku:)

Nyní musíme nainstalovat a nakonfigurovat několik knihoven:

  • v-usb pro knihovnu arduino: tato knihovna umožňuje počítači rozpoznat mikrokontrolér jako HID USB klávesnici a my ji použijeme k odesílání úderů klíčů do PC. Tato knihovna potřebuje nějaké změny, aby byla kompatibilní s attiny85
  • knihovna tinytuner, pouze pokud nebudete používat krystal 16 MHz. Poté budete muset kalibrovat vnitřní hodiny mikrokontroléru. Tato knihovna funguje po vybalení z krabice.
  • Attiny-IR-knihovna pro interakci s IR senzorem. Tato knihovna funguje po vybalení z krabice.

Potřebujeme také 2 bootloadery:

  • Verze softwaru pro psy s dostupným sériovým rozhraním. Tento zavaděč potřebuje pro práci s attiny85 malé vylepšení, protože používá funkci timer1 pro funkci millis () a nebude fungovat s knihovnou IR. Musíme změnit časovač na timer0.
  • Verze Mellis, stabilní bootloader, který použijeme v konečné fázi. To funguje po vybalení z krabice.

Krok 5: Instalace a konfigurace knihovny V-usb

Stáhněte si knihovnu z https://code.google.com/archive/p/vusb-for-arduin… Rozbalte soubor a zkopírujte složky knihovny/UsbKeyboard do složky knihoven skicářů.

Nyní musíte upravit několik souborů, aby byly kompatibilní s ATtiny85 (je nakonfigurováno pro práci s arduino):

A) upravit usbconfig.h:

pod změnou „Konfigurace hardwaru“:

#define USB_CFG_IOPORTNAME Dto ## definovat USB_CFG_IOPORTNAME B

a

#define USB_CFG_DMINUS_BIT 4 to#define USB_CFG_DMINUS_BIT 0

pod změnou "Volitelná konfigurace hardwaru":

#define USB_CFG_PULLUP_IOPORTNAME Dto ## define USB_CFG_PULLUP_IOPORTNAME B

Chcete -li vytvořit úplnou specifikaci „boot kompatibilní HID“(jinak nebudou fungovat žádné multimediální klíče), změňte také:

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

a

#define USB_CFG_INTERFACE_PROTOCOL 0 // Klávesnice k#definování USB_CFG_INTERFACE_PROTOCOL 0x01 // Klávesnice

Volitelně můžete také změnit výrobce a název zařízení v následujících definicích:

#define USB_CFG_VENDOR_NAME

#define USB_CFG_DEVICE_NAME

B) upravit UsbKeyboard.h:

změna:

PORTD = 0; // TODO: Pouze pro USB piny? DDRD | = ~ USBMASK;

na

PORTB = 0; // TODO: Pouze pro USB piny? DDRB | = ~ USBMASK;

Chcete -li změnit kódy klíčů dále než 101, změňte také:

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

a

0x29, 0x65, // USAGE_MAXIMUM (aplikace klávesnice) až: 0x29, 0xE7, // USAGE_MAXIMUM (aplikace klávesnice)

Možná budete muset upravit také tyto 3 soubory:

usbdrv.husbdrv.cUsbKeyboard.h

a pokaždé, když uvidíte PROGMEM, přidejte před název typu proměnné „const“(např. PROGMEN char usbHidReportDescriptor [35] ==> PROGMEM const char usbHidReportDescriptor [35])

Pokud to není jasné, navštivte

Všem těmto změnám se můžete vyhnout, pokud si pouze stáhnete připojenou knihovnu (všechny tyto změny jsem provedl sám) a pouze ji rozbalíte do složky knihoven skicářů:

UsbKeyboard nakonfigurován pro attiny85

Upravit: Nedávno jsem zjistil, že Alejandro Leiva (https://github.com/gloob) má o tuto knihovnu postaráno a zdá se, že funguje dobře. Můžete také vyzkoušet jeho verzi s nezbytnými změnami, které jsem provedl, aby fungovala s atiny, takže pokud to chcete zkontrolovat, stačí ji extrahovat do složky knihoven skicářů.

UsbKeyboard nakonfigurován pro attiny85 (verze Alejandro Leiva)

Krok 6: Instalace knihoven Attiny-IR a Tinytuner

A) Attiny-IR knihovna:

stáhněte si jej z https://drive.google.com/open?id=0B_w9z88wnDtFNHlq… poté jej rozbalte do složky knihoven skicářů.

B) Knihovna Tinytuner:

To je potřeba pouze v případě, že nepoužíváte krystal 16 MHz, ale věřte mi, že i když to funguje i bez krystalu, je to s ním mnohem stabilnější a stojí to pár centů, takže je to jednoduché, použijte krystal a přeskočte tuto knihovnu.

Ještě nejste přesvědčeni? ok, stáhněte si knihovnu z https://storage.googleapis.com/google-code-archive… poté ji rozbalte do složky knihoven skicářů.

S knihovnami jsme skončili, nyní přejdeme k instalaci zavaděčů.

Krok 7: Instalace a konfigurace zavaděčů

Chystáme se nainstalovat dva bootloadery, ten Mellis je podle mých zkušeností stabilnější a použijeme ho v konečném náčrtu. Ten druhý vyvinutý společností Rowdy Dog Software je úžasné jádro, velmi malé a s integrovaným sériovým rozhraním, ale moje dálkové ovládání se po nějaké době s ním zhroutilo, takže použijeme tento zavaděč pouze ke kalibraci interních hodin attiny85 a k dekódování našeho dálkového ovladače tlačítka.

Vím, že jsou k dispozici knihovny, které dávají schopnosti attiny85 pro sériové použití, ale pak budete muset vyladit knihovny, které používají sériový objekt … Tento postup se mi líbí víc.

Začněme instalací:

A) Zavaděč Mellis:

stačí otevřít předvolby Arduino IDE a přidat „Adresy URL dalšího správce desek:

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

Poté otevřete správce desek Arduino IDE a vyhledejte Attiny, nainstalujte desky z Mellis. Nyní byste měli vidět Arduino ID desky ATtiny25/45/85 a ATtiny24/44/84.

B) Malý zavaděč softwaru Rowdy Dog Software:

stáhněte si bootloader z

Rozbalte soubor a zkopírujte malou složku do skicáře/hardwaru (vytvořte tuto složku, pokud ještě neexistuje). poté přejděte do složky skicář/hardware/tiny/avr/a:

1) zkopírujte soubor Prospective Boards.txt do souboru boardss.txt

2) Upravte soubor platform.txt a proveďte některé změny:

Odkomentujte proměnnou compiler.path a nechte ji směřovat do složky hardware/tools/avr/bin/uvnitř instalační složky arduino:

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

změnit takécompiler. S.flags = -c -g -assembler-with-cpptocompiler. S.flags = -c -g -x assembler-with-cpp

Poté změňte následující proměnné a ujistěte se, že je vše na svém místě (tyto soubory musí existovat, v opačném případě nasměrujte proměnné na správné 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 jádra souboru/tiny/core_build_options.h a změňte:

#define TIMER_TO_USE_FOR_MILLIS 1 to#define TIMER_TO_USE_FOR_MILLIS 0

To je velmi důležité, jinak bude IR přijímač vydávat nuly pro každé tlačítko. Tento příkaz konfiguruje Timer0 pro funkci millis () a ponechá Timer1 dostupný pro IR knihovnu. Konečný náčrt stejně vypne časový spínač0, takže nebudete mít k dispozici ani funkce millis () a delay (). Místo toho můžete mít k dispozici funkci delayMicroseconds ().

Tento bootloader je minimální, ale obsahuje podporu sériových objektů:

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

Můžete mít konfiguraci s programátorem ISP (arduino) a adaptérem sériový na USB připojený současně, takže nemusíte měnit kabely příliš často:

Nyní máme nainstalované a správně nakonfigurované knihovny i zavaděče, nejtěžší práce je dokončena a můžeme začít věci testovat.

Krok 8: Vypalování bootloaderů a nahrávání skic

Důrazně doporučuji aktivovat podrobný výstup v předvolbách Arduino IDE, abyste mohli zjistit případný problém.

Chcete -li do Attiny85 vypálit bootloader, musíte nahrát příklad ISP do Arduina a poté vybrat programátora Arduino jako ISP.

Nyní umístěte 10uF kondenzátor mezi resetovací a zemnící piny na arduino (není to nutné pro proces vypalování, ale je to k nahrání skic na attiny85).

Nyní je arduino připraveno vypalovat bootloadery a načítat skici. Stačí vybrat správnou desku kompatibilní s vaším atiny a vypálit ji.

Chcete -li načíst skicu do Attiny85, načtěte ji do arduino IDE a klikněte na „Nahrát pomocí programátoru“.

DŮLEŽITÉ: při nahrávání skici existují 3 kroky, kompilace, psaní a ověřování. Pokud kompilace a psaní fungovaly úspěšně, ale proces ověření selže, je možné, že by skica fungovala i tak.

Krok 9: Kalibrace interních hodin Attiny85 (přeskočte to, pokud používáte krystal)

V případě, že se rozhodnete nepoužit 16Mhz krystal, potřebujete kalibrovat hodiny attiny85, budeme tedy potřebovat zavaděč se sériovým rozhraním a pro správnou kalibraci použijeme knihovnu tinytuner.

Postupujte podle následujících kroků

  • vyberte v nástrojích Arduino jako ISP programátor
  • vyberte desku „ATtiny85 @ 8MHz (interní oscilátor; BOD deaktivováno)“
  • Předpokládám, že máte připojení ISP připraveno, jak bylo popsáno před připojením, jinak proveďte připojení
  • vypálit bootloader
  • tento zavaděč nakonfiguroval různé piny pro sériové rozhraní, použijte tuto konfiguraci pouze pro aktuální zavaděč

- PB4 (pin3 RX) na TX v FT232RL attiny85 - PB3 (pin2 TX) na RX v FT232RL attiny85 - GND (pin4) na GND na FT232RL, protože attiny85 je již napájen arduino, které nemusíte připojovat 5v na FT232RL, jinak připojte: attiny85 VCC (pin8) na 5V na FT232RL

  • nahrajte ukázku tinytuner na attiny85
  • otevřete program obrazovky a sledujte sériovou komunikaci: screen /dev /ttyUSB0 9600
  • resetujte attiny85 připojením pinů RESET (pin1) k GND (jen na okamžik), na obrazovce by se měla zobrazit uvítací zpráva
  • Pokračujte v odesílání jednotlivých znaků „x“(žádný návrat na vozík; žádné podávání řádků), dokud kalibrace neskončí
  • anotujte někde hodnotu kalibrace (OSCCAL = 0x). To je hodnota, kterou budete muset deklarovat na konečných skicách

Krok 10: Dekódujte tlačítka dálkového ovladače

Nyní je čas dekódovat naše dálková tlačítka a přiřadit je ke konkrétním stiskům kláves v počítači, postupujte podle následujících kroků:

  • vyberte desku „ATtiny85 @ 16MHz (interní PLL; 4,3V BOD)“, pokud nepoužíváte krystal, „ATtiny85 @ 16 MHz (externí krystal; 4,3 V BOD“, jinak jej vypalte
  • načíst skicu:
  • Pokud nepoužíváte krystal, odkomentujte řádek obsahující proměnnou OSCCAL a přiřaďte jej hodnotě, kterou jste našli při kalibraci hodin
  • Předpokládám, že senzor je připojen tak, jak bylo popsáno výše, jinak jej připojte
  • Předpokládám také, že je připojen adaptér FT232RL serial to usb, jinak jej připojte
  • resetujte attiny85 připojením kolíku RESET (pin1) k GND (jen na okamžik)
  • opakovaně stiskněte tlačítka na dálkovém ovladači a zaplaťte okno na obrazovce, u každého záznamu musíte označit poslední číslo, každé tlačítko může vytvořit 2 různá čísla

Příklad:

PŘIJATO D44 3396 PŘIJATO 544 1348

Komentujte 3396 a 1348 ve spojení s tlačítkem, které jste právě stiskli, pak se musíte rozhodnout, co s tímto tlačítkem chcete dělat. Například bych mohl chtít, aby toto tlačítko poslalo multimediální klíčový kód „Zvýšení hlasitosti“, pak potřebuji najít ID pro tento kód klíče. Chcete -li to provést, stáhněte si soubor PDF:

Podívejte se do sekce „Stránka klávesnice/klávesnice“na straně 53 a pomocí čísel ve sloupci ID použití (prosinec) přiřaďte tlačítka dálkového ovladače ke kódům klávesnice. V našem příkladu vidíme, že klíčový kód pro „Zvýšení hlasitosti“je: 128.

Upravte soubor UsbKeyboard.h v knihovně UsbKeyboard z balíčku v-usb, který jsme nainstalovali dříve, a přidejte jej do existujících definic, pokud ještě nejsou:

#define KEY_VOL_UP 128

Když jsme hotovi se všemi našimi tlačítky na dálkovém ovládání a se všemi definicemi v souboru UsbKeyboard.h, můžeme přejít na poslední krok.

Krok 11: Načtení finální skici a naděje na nejlepší

Načítání konečného náčrtu a naděje na nejlepší!
Načítání konečného náčrtu a naděje na nejlepší!
Načítání konečného náčrtu a naděje na nejlepší!
Načítání konečného náčrtu a naděje na nejlepší!

Nyní máme všechna vzdálená tlačítka dekódovaná, soubor UsbKeyboard.h je naplněn našimi kódy klíčů, takže nyní můžeme do arduino IDE načíst definitivní skicu z:

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

Tento soubor je přesný soubor, který používám pro svůj přijímač, a pracuje pro 2 různé dálkové ovladače, takže je jasné, že ho budete muset aktualizovat, aby fungoval s vaším dálkovým ovladačem.

Pokud nepoužíváte krystal, odkomentujte řádek obsahující proměnnou OSCCAL a přiřaďte jej hodnotě, kterou jste našli při kalibraci hodin

Všimněte si, že ve funkci smyčky existuje mnoho příkazů, jako je tento:

if (results.value == 3405 || results.value == 1357) {// šipka nahoru

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

}

Musíte vytvořit vlastní prohlášení, jedno na tlačítko na dálkovém ovladači. Do podmínky „if“musíte vložit výsledky.hodnoty, které jste našli při dekódování dálkového ovladače, a jako argument metody UsbKeyboard.sendKeyStroke musíte do souboru UsbKeyboard.h vložit jeden z již definovaných kódů klíčů.

Podmínka „if (lastStroke! = Results.value)“je nutná, protože některé dálkové ovladače posílají stejný kód dvakrát na přístup, a to brání druhému zásahu. Nejsem si úplně jistý a může to záviset na IR protokolu, který byl naprogramován do vašeho dálkového ovladače (nejsem opravdu odborník na IR protokoly), ale podle mých zkušeností s vlastními dálkovými ovladači může každé tlačítko produkovat 2 různé kódy a zatímco stisknete a podržíte tlačítko, odešle stejný kód, ale pokud znovu stisknete tlačítko, odešle druhé. Zdá se tedy, že kódy jsou odesílány alternativním způsobem, myslím, že je to standardní režim, abyste věděli, kolikrát opravdu stisknete tlačítko.

Dobře, jsme téměř hotovi, stačí nahrát finální skicu, připojit ji k PC a uvidíte, jak to půjde.

Pro tento krok je lepší, když odpojíte arduino i USB na sériový adaptér a teprve potom zapojíte USB do portu PC (v případě, že se něco pokazí, bude ladění obvodu jednodušší).

Pokud vše fungovalo dobře, při otevření terminálu a odeslání příkazu dmesg byste měli vidět něco podobného jako první obrázek v tomto kroku. Pokud by došlo k problémům, měli byste mít chyby podobné těm, které najdete na druhém obrázku, a musíte začít ladit obvod a/nebo software. Jedním ze zdrojů počátečních chyb, které jsem měl, byl USB rozbočovač, který by nefungoval s mým IR přijímačem (ostatní však fungovaly) … takže je lepší pro tento poslední krok připojit IR přijímač přímo k vašemu PC portu. Hledání případných chyb může být obtížné, ale na konci, stejně jako já, byste se toho hodně naučili a cena za to stojí za to, ujišťuji vás.

To je vše, lidi, dejte mi vědět, pokud si všimnete jakýchkoli chyb v tomto návodu a užijte si svůj zbrusu nový IR USB přijímač!

Doporučuje: