Tartalomjegyzék:

ATtiny85 IR USB vevő: 11 lépés (képekkel)
ATtiny85 IR USB vevő: 11 lépés (képekkel)

Videó: ATtiny85 IR USB vevő: 11 lépés (képekkel)

Videó: ATtiny85 IR USB vevő: 11 lépés (képekkel)
Videó: Как передавать голос с помощью модуля приемопередатчика 433 МГц 2024, November
Anonim
ATtiny85 IR USB vevő
ATtiny85 IR USB vevő

FIGYELMEZTETÉS, EZ AZ UTASÍTÁS RENDKÍVÜL VÁLT

A v-usb könyvtárat úgy tervezték, hogy olyan USB 1.1 protokollal működjön, amely manapság alig létezik. Az USB3 érkezésével több, mint a fejfájása lesz, amikor megpróbálja működőképessé tenni a v-usb eszközöket. A multimédiás központom megváltoztatása után sok stabilitási problémám van, és bár a vevő működik, egy idő után leáll. Sikertelenül próbáltam kijavítani. Készítettem egy atmega328p verziót is, de ennek is ugyanazok voltak a problémái. A watchdog időzítő használata a tábla rendszeres visszaállítására sem segített, ezért feladom a v-usb-t.

Tegyen magának egy szívességet, és ne folytassa ezt az oktatható dolgot, hacsak nem oktatási célokra szolgál. Azt javaslom, hogy vásároljon egy ATmega 32U4 chipmodult, amely már integrálta az USB interfészt, és kövesse ezt az útmutatót:

www.sparkfun.com/tutorials/337

Ezután dobjon be egy TSOP31238 infravörös érzékelőt, és már indulhat is.

Helló készítők! ez egy tanulságos egy működő USB infravörös vevőkészülék létrehozásához egy Attiny85 mikrokontroller segítségével. Ezt a projektet azért kezdtem el, hogy kiküszöböljem a GNU/Linux operációs rendszer egyes infravörös távirányítóinak támogatását (legalább a teljes támogatást). Ezt az utasítást követve néhány dollárért felépíthet egy programozható USB IR vevőt, amely bármilyen IR távirányítóval működik.

Először is, ez az utasítás nem létezhetne azoknak az embereknek a kemény munkája nélkül, akik létrehozták az itt használt könyvtárakat:

  • David A. Mellis attini magjáért
  • Rowdy Dog szoftver a könyvtárukhoz TinyTuner
  • Rowdy Dog szoftver apró rendszerbetöltőjéhez
  • Rancidbacon (https://rancidbacon.com/) a v-usb könyvtár arduino portjához (https://code.google.com/archive/p/vusb-for-arduino/downloads)
  • seejaydee az IR könyvtárában, ahol megtalálhatók az apró magok, amelyek az oktatható https://www.instructables.com/id/Attiny-IR-librar… kód megjegyzésein találhatók a https://www.instructables.com/id/Attiny-IR webhelyen -könyvtár…

Néha nem könnyű megtalálni a könyvtár megfelelő tulajdonosát, ezért ha hibáznék, kérjük, írjon megjegyzést, és mielőbb megoldom a problémát.

Ez az útmutató létezik, mert nem találtam teljes oktatóanyagot/útmutatót a dobozból (lehet, hogy létezik, de nem találtam meg), ezért összeszedtem az összes elérhető információt a weben, és jó sok kísérlet után hibák Teljes útmutatót találtam ki egy működő USB infravörös vevőkészülék építéséhez, amely valójában nagyon jól működik.

A legfontosabb információforrások, amelyeket követtem:

  • 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. lépés: Néhány szempont

  • Nem rendelkezem AVR ISP programozóval, és nem is nagyon szeretnék ilyet vásárolni, ezért egy Arduino programozót használtam az attiny85 programozásához
  • Nem érdekel más operációs rendszer, csak a GNU/Linux, így nem tudom, hogy ez másként fog -e működni.
  • vannak más IR könyvtárak is, de nem tudtam őket működtetni, még arduino esetén sem. Vegyük azonban figyelembe, hogy az IR könyvtárak korlátozott ismeretével kezdtem. Lehet, hogy most már működőképessé tehetném őket, miután sok tapasztalattal rendelkezem a megfelelő számú kérdés kezelésében. Mindenesetre elveszett és kétségbeesett voltam, mielőtt megtaláltam a Seejaydee által biztosított könyvtárat, és azóta is ezt használom (köszönöm, ember!).
  • Vannak más hardverkonfigurációk is, de én csak azt használtam, amely 5 V -ot használ az attiny85 tápellátására, és két 3,6 V -os, 0,5 W -os Zener diódát az adatvezetékek feszültségének rögzítésére, ez a dobozból működik, így nem kavartam össze más konfigurációk.
  • Használhat 16 MHz -es kristályt, vagy használhatja a tinytuner könyvtárat az attiny85 belső órájának kalibrálásához. Határozottan javaslom a kristály használatát, sokkal stabilabb és valószínűleg sok fejfájástól kímél.
  • Itt két különböző rendszerbetöltőt használok az attiny85 számára:

a) A Rowdy Dog szoftver verziója beépített soros interfésszel rendelkezik, amely nagyon jó és nagyon kicsi, így több hely áll rendelkezésre a program és más könyvtárak számára. A probléma az, hogy bizonyos okok ellenére, bár elég jól működik, egy idő után az USB -eszköz levált (a dmesg paranccsal találja meg a problémákat). Nem tudom, hogy ez a mag problémája vagy a mag és a kiválasztott könyvtárak vegyes kombinációja, ezért egy idő után úgy döntöttem, hogy ezt a magot csak a távvezérlők dekódolására és az óra kalibrálására használom (ha nem 16 MHz -es frekvenciát használok kristály). Ezt követően csak égetem a Mellis rendszerbetöltőt, és feltöltöm a végleges vázlatot, amely nem használja a soros interfészt.

b) Mellis verzió, stabil rendszerbetöltő, ezt sok projektben használtam. Mindig ezt a rendszerbetöltőt használtam volna, ha soros interfészt tartalmazna. Ezt a magot használom az utolsó vázlatban, miután dekódoltam a távirányítóm összes gombját.

2. lépés: Kezdjük a hardverrel

Kezdjük a hardverrel
Kezdjük a hardverrel
Kezdjük a hardverrel
Kezdjük a hardverrel
Kezdjük a hardverrel
Kezdjük a hardverrel

Szükséges eszközök:

  • arduino kompatibilis tábla
  • soros USB -adapter a távoli kulcsok dekódolásához (csak használjon FT232RL -t)
  • számítógép, GNU/Linux telepítve, és az arduino IDE megfelelően konfigurálva, arduino IDE 1.8.0 -t használok
  • infravörös távirányító az eszköz tesztelésére (még egy olyan gagyi is működni fog, mint az arduino kezdő készletekben találhatók)
  • multiméter a tábla hibakereséséhez (remélem, nem lesz rá szüksége, sok sikert!)

Az anyagok listája:

  • 1 attiny85
  • 2 68R ellenállás
  • 1 1,5K ellenállás
  • 1 4,7K ellenállás
  • 1 16Mhz kristály
  • 1 22pF kondenzátor
  • 1 0,1uF kondenzátor
  • 1 10uF kondenzátor
  • 2 db 3,6 V 0,5 W -os Zener dióda
  • 1 A típusú USB -csatlakozó
  • 1 csík 6 tűvel a tábla programozásához és hibakereséséhez.
  • 1 TSOP31238 infravörös érzékelő
  • sok kávé, hogy ébren maradjon

Mielőtt forrasztaná a végleges táblát, valószínűleg szeretne egy kenyérsütő lemez prototípust készíteni tesztelésre, az utasításhoz csatolt séma követése elegendő lehet a felépítéséhez.

Az attiny85 számítógéphez való csatlakoztatásához a végső kialakítás egy A típusú USB -csatlakozót használ, amely be van forrasztva a táblába, de a prototípushoz el kell készítenie egy USB -kábelt, amelyet csatlakoztathat a kenyérsütő táblához:

Forrasztjon egy kis darab 4 db tűtáblába, majd vágjon le egy régi USB -kábelt, és forrasztja a tűket az USB -kábel belsejében lévő 4 vezetékhez:

  • piros a VCC (5V)
  • fekete a GND
  • fehér a D-
  • zöld a D+

Tartson mindent együtt forró ragasztóval.

Most az attiny85 -hez kell csatlakoztatnunk az ISP programozót (Arduino), az USB -t a soros adapterhez (FT232RL) és az infravörös érzékelőt.

Összekapcsolva hagyhatja, így különféle rendszerbetöltőket írhat fel, vázlatokat tölthet be, és vezeték nélküli csere nélkül ellenőrizheti a soros portot, Ehhez kövesse az alábbi utasításokat:

ISP programozó (Arduino): ez lehetővé teszi a rendszerbetöltők írását és a vázlatok betöltését

  • attiny85 PB0 (pin5) to pin11 (MOSI) in arduino
  • attiny85 PB1 (pin6) to pin12 (MISO) in arduino
  • attiny85 PB2 (pin7) to pin13 (SCK) in arduino
  • attiny85 RESET (pin1) felhúzással (4,6k - VCC) a pin10 -hez az arduino -ban
  • attiny85 VCC - 5V arduino -ban
  • attiny85 GND - GND in arduino

usb -soros adapter (FT232RL): ez lehetővé teszi a soros port ellenőrzését

  • attiny85 PB0 (pin5 RX) - TX az FT232RL -ben
  • attiny85 PB2 (pin7 TX) RX -re az FT232RL -ben
  • attiny85 GND (pin4) - GND az FT232RL -en
  • mivel az attiny85 -t már az arduino táplálja, nem kell csatlakoztatnia az 5V -ot az FT232RL -hez, különben csatlakoztassa: attiny85 VCC (pin8) 5V -ra az FT232RL -en

usb -soros adapter (FT232RL) csak az óra kalibrálásához (csak a rendszerbetöltőhöz "ATtiny85 @ 8MHz (belső oszcillátor; BOD kikapcsolva)")

  • PB4 (pin3 RX) - TX az FT232RL attiny85 -ben
  • PB3 (pin2 TX) - RX az FT232RL attiny85 -ben
  • GND (pin4) - GND az FT232RL -en
  • mivel az attiny85 -t már az arduino táplálja, nem kell csatlakoztatnia az 5V -ot az FT232RL -hez, különben csatlakoztassa: attiny85 VCC (pin8) 5V -ra az FT232RL -en

Ha 16 MHz -es kristályt használ, csatlakoztassa azt az Attiny85 csapokhoz PB3 (pin2) és PB4 (pin3), és csatlakoztassa mindegyik tűt a GND -hez, valamint egy 22pF -es kupakon keresztül.

Szűrje le az Attiny85 VCC -t 0,1uF és 10uF kondenzátorokkal, amelyek a GND -vel párhuzamosan kötik össze őket

Csatlakoztassa az infravörös érzékelő kimeneti csapját az attiny85 PB1 -hez (pin6), és kapcsolja be.

Készítse el és csatlakoztassa az USB interfészt:

  • GND (fekete vezeték): csatlakoztassa a közös GND -hez (minden földelés össze van kötve)
  • D- (fehér vezeték) csatlakozik az attiny85 PB0-hoz (pin5) egy 68R ellenálláson keresztül, csatlakoztassa azt is a földhöz egy 3,6 V-os 0,5 W-os zener-n keresztül, és húzza fel a VCC-hez egy 1,5K ellenállással
  • D+ (zöld vezeték) csatlakozik a PB2 -hez egy 68R ellenálláson keresztül, csatlakoztassa a földre egy 3,6 V -os, 0,5 W -os zener segítségével
  • 5 V, hagyhatja csatlakoztatva, mivel ebben a szakaszban mindent az Arduino táplál, különben csatlakoztassa az attiny85 VCC -hez

A Zener diódákat úgy kötik össze, hogy az anódok a GND-hez, a katódok pedig a D+ és D- adatvonalakhoz vannak kötve.

3. lépés: Végső tervezés

Végső tervezés
Végső tervezés
Végső tervezés
Végső tervezés
Végső tervezés
Végső tervezés

A végső kialakításhoz használhatja a perfboardot lyukasztó alkatrészekkel, vagy marathatja a saját tábláját, és smd alkatrészeket használhat. Ha meg szeretné tanulni, hogyan kell maratni egy táblát, csak google -olja, online félelmetes oktatóanyagok állnak rendelkezésre.

A saját táblámat maratottam, és nagyon elégedett vagyok a végeredménnyel (kicsi, stabil és robusztus tábla). Igen, tudom, hogy a vágás szar, de nem tudtam semmilyen elektromos szerszámot használni ilyen késő este, és csak vágja le a táblát az ónvágó ollómmal.

Egyébként a képeken látható nyomok nem csupasz rézből állnak, hanem egy csúnya vegyszerrel kezelték, amely enyhén barnítja a rézt (gyaníthatóan rákot okoz, ezért óvatosan használja, latexgömbökkel és porálarccal):

Használja a fenti sémákat az elrendezés megtervezéséhez, vagy egyszerűen használhatja a PCB lábnyomomat a tábla maratásához.

4. lépés: Kezelés a szoftverrel

Az áramkör ebben a projektben nagyon egyszerű, a szoftver helyette nagyobb erőfeszítést igényel.

Legalább 2 könyvtárra van szükségünk (még egyre, ha nem használ kristályt) és 2 rendszerbetöltőre. Amikor elkezdtem ezt a projektet, teszteltem néhány könyvtárat, néha nem működtek, és sokszor egyszerűen nem voltak konfigurálva úgy, hogy a dobozban lévő Attiny85 -tel működjenek (ezt még nem tudtam). Aztán találtam problémákat a könyvtárak / rendszerbetöltők átfedő megszakításaival. Végül elég sok hibával kellett megküzdenem, amikor a végső áramkört a PC -hez csatlakoztattam. Bár nem volt nálam ez az útmutató, úgyhogy szerintem minden rendben lesz, kövesse az utasításban leírt lépéseket, ha hibák nélkül teszi ezt, akkor rendben kell lennie:)

Most telepítenünk és konfigurálnunk kell néhány könyvtárat:

  • v-usb az arduino könyvtárhoz: ez a könyvtár lehetővé teszi, hogy a számítógép felismerje a mikrokontrollert HID USB billentyűzetként, és ezt használjuk billentyűleütések küldésére a számítógépre. Ez a könyvtár némi változtatást igényel, hogy kompatibilis legyen az attiny85 -tel
  • tinytuner könyvtárat csak akkor, ha nem használ 16 MHz -es kristályt. Ezután kalibrálnia kell a mikrovezérlő belső óráját. Ez a könyvtár a dobozon kívül működik.
  • Attiny-IR-könyvtár az IR-érzékelővel való interakcióhoz. Ez a könyvtár a dobozon kívül működik.

Szükségünk van 2 rendszerbetöltőre is:

  • Kutya szoftver verzió, elérhető soros interfésszel. Ez a rendszerbetöltő apró változtatásokat igényel az attiny85 használatához, mivel az időzítőt1 használja a millis () függvényhez, és nem fog működni az IR könyvtárral. Az időzítőt időzítőre kell cserélnünk.
  • Mellis verzió, stabil rendszerbetöltő, amelyet az utolsó szakaszban fogunk használni. Ez a dobozon kívül működik.

5. lépés: A V-usb könyvtár telepítése és konfigurálása

Töltse le a könyvtárat a https://code.google.com/archive/p/vusb-for-arduin… oldalról. Csomagolja ki a fájlt, és másolja a könyvtárakat/UsbKeyboard a vázlatfüzet-könyvtárak mappájába.

Most néhány fájlt kell szerkesztenie, hogy kompatibilis legyen az ATtiny85 -tel (ez úgy van konfigurálva, hogy együttműködjön az arduino -val):

A) az usbconfig.h szerkesztése:

a "Hardverkonfiguráció" alatt:

#define USB_CFG_IOPORTNAME D##define USB_CFG_IOPORTNAME B

és

#define USB_CFG_DMINUS_BIT 4to#define USB_CFG_DMINUS_BIT 0

az „Opcionális hardverkonfiguráció” alatt:

#define USB_CFG_PULLUP_IOPORTNAME D##define USB_CFG_PULLUP_IOPORTNAME B

Ha teljes "boot kompatibilis HID" specifikációt szeretne létrehozni (különben semmilyen multimédiás kulcs nem fog működni), módosítsa a következőket is:

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

és

#define USB_CFG_INTERFACE_PROTOCOL 0 // Keyboardto#define USB_CFG_INTERFACE_PROTOCOL 0x01 // Billentyűzet

Opcionálisan megváltoztathatja a gyártót és az eszköz nevét is az alábbiak szerint:

#define USB_CFG_VENDOR_NAME

#define USB_CFG_DEVICE_NAME

B) az UsbKeyboard.h szerkesztése:

változás:

PORTD = 0; // TODO: Csak USB tűk esetén? DDRD | = ~ USBMASK;

nak nek

PORTB = 0; // TODO: Csak USB tűk esetén? DDRB | = ~ USBMASK;

A 101 -nél nagyobb kulcskódok engedélyezése is:

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

és

0x29, 0x65, // USAGE_MAXIMUM (billentyűzet alkalmazás) - 0x29, 0xE7, // USAGE_MAXIMUM (billentyűzet alkalmazás)

Lehet, hogy ezt a 3 fájlt is szerkesztenie kell:

usbdrv.husbdrv.cUsbKeyboard.h

és valahányszor azt látja, hogy a PROGMEM hozzáadja a "const" szót a változótípus neve előtt (pl. PROGMEN char usbHidReportDescriptor [35] ==> PROGMEM const char usbHidReportDescriptor [35])

Ha ez nem világos, keresse fel a

Mindezeket a változtatásokat elkerülheti, ha csak letölti a mellékelt könyvtárat (ezeket a módosításokat magam végeztem), és csak kibontja a vázlatfüzet -könyvtárak mappájába:

UsbKeyboard konfigurálva attiny85

Szerkesztés: nemrég fedeztem fel, hogy Alejandro Leiva (https://github.com/gloob) gondoskodott erről a könyvtárról, és úgy tűnik, hogy jól működik. Kipróbálhatja az ő verzióját is a szükséges változtatásokkal, amelyeket az attiny -val együtt csináltam, így ha meg szeretné nézni ezt, csak bontsa ki a vázlatfüzet -könyvtárak mappájába.

UsbKeyboard konfigurálva attiny85 (Alejandro Leiva verzió)

6. lépés: Az Attiny-IR és a Tinytuner könyvtárak telepítése

A) Attiny-IR könyvtár:

töltse le a https://drive.google.com/open?id=0B_w9z88wnDtFNHlq… webhelyről, majd csomagolja ki a vázlatfüzet -könyvtárak mappájába.

B) Tinytuner könyvtár:

Erre csak akkor van szükség, ha nem 16 MHz -es kristályt használ, de higgye el, bár kristály nélkül is működik, sokkal stabilabb vele, és néhány centbe kerülnek, ezért legyen egyszerű, használjon kristályt és ugorjon ezt a könyvtárat.

Még nem győzte meg? Rendben, töltse le a könyvtárat a https://storage.googleapis.com/google-code-archive… címről, majd bontsa ki a vázlatfüzet-könyvtárak mappába.

Végeztünk a könyvtárakkal, most folytatjuk a rendszerbetöltők telepítését.

7. lépés: A rendszerbetöltők telepítése és konfigurálása

Két rendszerbetöltőt fogunk telepíteni, a Mellis egyik tapasztalataim szerint stabilabb, és ezt fogjuk használni a végső vázlatban. A másik, amelyet a Rowdy Dog Software fejlesztett ki, egy fantasztikus mag, nagyon kicsi és beépített soros interfésszel rendelkezik, de a távirányítóm egy idő után lezuhant vele, így ezt a rendszerbetöltőt csak az attiny85 belső óra kalibrálására és a távirányító dekódolására fogjuk használni gombok.

Tudom, hogy vannak elérhető könyvtárak az attiny85 soros képességek megadásához, de akkor módosítania kell a soros objektumot használó könyvtárakat … jobban szeretem ezt az eljárást.

Kezdjük a telepítéssel:

A) Mellis rendszerbetöltő:

csak nyissa meg az Arduino IDE beállításait, és adja hozzá a További táblák kezelő URL -jei:

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

Ezután nyissa meg az Arduino IDE táblák kezelőjét, és keresse meg az attiny -t, telepítse a táblákat a Mellis -ből. Most látnia kell az Arduino ID -t, az ATtiny25/45/85 és az ATtiny24/44/84 táblákat.

B) Rowdy Dog szoftver apró rendszerbetöltő:

töltse le a rendszerbetöltőt a https://storage.googleapis.com/google-code-archive… webhelyről

Csomagolja ki a fájlt, és másolja át a vázlatfüzetben/hardverben található apró mappát (hozza létre ezt a mappát, ha még nem létezik). majd lépjen a sketchbook/hardware/tiny/avr/mappába:

1) másolja a Prospective Boards.txt fájlt a boards.txt fájlba

2) szerkessze a platform.txt fájlt, és hajtson végre néhány módosítást:

Szüntesse meg a compiler.path változó megjegyzését, és hagyja a hardver/tools/avr/bin/mappára mutatva az arduino telepítési mappájában:

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

módosítsa a compiler-t is. S.flags = -c -g -assembler-with-cpptocompiler. S.flags = -c -g -x assembler-with-cpp

Ezután változtassa meg a következő változókat, győződjön meg arról, hogy minden a helyén van (ezeknek a fájloknak létezniük kell, különben mutassa a változókat a megfelelő útvonalakhoz):

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) szerkessze a/core/tiny/core_build_options.h fájlmagot és módosítsa:

#define TIMER_TO_USE_FOR_MILLIS 1 to#define TIMER_TO_USE_FOR_MILLIS 0

Ez nagyon fontos, különben az infravörös vevő nullát ad ki minden gombhoz. Ez az utasítás konfigurálja az időzítőt0 a millis () függvényhez, így az időzítő1 elérhető az IR könyvtár számára. Az utolsó vázlat egyébként letiltja a timer0 -t, így nem lesz elérhető sem millis (), sem delay () függvény. Lehet, hogy rendelkezésre áll a delayMicroseconds () függvény.

Ez a rendszerbetöltő minimális, de tartalmazza a soros objektumok támogatását:

Az Attiny85 PB2 (pin7) TX, a PB0 (pin5) pedig RX

Az ISP programozó (arduino) és a soros -usb adapter egyidejű csatlakoztatásával konfigurálhat, így nem kell túl gyakran cserélni a vezetékeket:

Most mind a könyvtárakat, mind a rendszerbetöltőket telepítettük és megfelelően konfiguráltuk, a legnehezebb munka befejeződött, és elkezdhetjük a dolgok tesztelését.

8. lépés: A rendszerbetöltők égetése és a vázlatok feltöltése

Határozottan azt tanácsolom, hogy aktiválja a bőbeszédű kimenetet az Arduino IDE beállításai alatt, hogy kiderüljön az esetleges probléma.

Ahhoz, hogy egy rendszerbetöltőt írjon be az Attiny85 -be, fel kell töltenie az internetszolgáltató példáját az Arduino -ba, majd válassza ki az Arduino programozót ISP -ként.

Most helyezzen egy 10uF kondenzátort az arduino nullázó és földelő csapjai közé (ez nem szükséges az égési folyamathoz, de vázlatok feltöltése az attiny85 -be).

Most az arduino készen áll a rendszerbetöltők írására és a vázlatok betöltésére. Csak ki kell választania a megfelelő táblát, amely kompatibilis az attinyával, és el kell égetnie.

Egy vázlat betöltéséhez az Attiny85 -be töltse be az arduino IDE -be, és kattintson a "Feltöltés programozó segítségével" gombra.

FONTOS: a vázlat feltöltésekor 3 lépés van: összeállítás, írás és ellenőrzés. Ha a fordítás és az írás sikeresen működött, de az ellenőrzési folyamat sikertelen, lehetséges, hogy a vázlat mindenképpen működik.

9. lépés: Kalibrálja az Attiny85 belső órát (ezt hagyja ki, ha kristályt használ)

Abban az esetben, ha úgy dönt, hogy nem használja a 16 MHz -es kristályt, akkor kalibrálnia kell az attiny85 óráját, ezért szükségünk lesz egy soros interfésszel rendelkező rendszerbetöltőre, és a tinytuner könyvtárat fogjuk használni a megfelelő kalibráláshoz.

Kövesse a következő lépéseket

  • válassza ki az eszközök alatt az Arduino -t, mint ISP programozót
  • válassza ki a táblát "ATtiny85 @ 8MHz (belső oszcillátor; BOD kikapcsolva)"
  • Feltételezem, hogy a csatlakoztatás előtt készen áll az internetszolgáltató -kapcsolatra, különben végezze el a csatlakozást
  • írási rendszerbetöltő
  • ez a rendszerbetöltő különböző csapokat konfigurált a soros interfészhez, ezt a konfigurációt csak az aktuális rendszerbetöltőhöz használja

- PB4 (pin3 RX) - TX az FT232RL attiny85 -ben - PB3 (pin2 TX) - RX az FT232RL attiny85 -ben - GND (pin4) a GND -hez az FT232RL -en, mivel az attiny85 már az arduino -ról működik, nem kell csatlakoztatnia az 5V -ot az FT232RL -en, különben csatlakoztassa: attiny85 VCC (pin8) 5V -ra az FT232RL -en

  • töltse fel a tinytuner példát az attiny85 -re
  • nyissa meg a képernyőprogramot a soros kommunikáció figyeléséhez: screen /dev /ttyUSB0 9600
  • állítsa alaphelyzetbe az attiny85 -öt, amely a RESET -tűt (pin1) a GND -hez csatlakoztatja (csak egy pillanat), üdvözlő üzenet jelenik meg a képernyőablakban
  • A kalibrálás befejezéséig folytassa az egyetlen „x” karakter küldését (nincs kocsi-visszatérés; nincs sor-előtolás)
  • jegyezze fel valahol a kalibrálás értékét (OSCCAL = 0x). Ezt az értéket kell megadnia az utolsó vázlatoknál

10. lépés: Dekódolja a távoli gombokat

Most itt az ideje, hogy dekódoljuk a távoli gombjainkat, és hozzárendeljük őket a számítógép bizonyos gombnyomásához, ehhez kövesse az alábbi lépéseket:

  • válassza az "ATtiny85 @ 16MHz (belső PLL; 4.3V BOD)" lapot, ha nem használ kristályt, "ATtiny85 @ 16 MHz (külső kristály; 4,3 V BOD"), akkor égesse el
  • töltse be a vázlatot:
  • Ha nem használ kristályt, vegye ki a megjegyzést az OSCCAL változót tartalmazó sorból, és rendelje hozzá ahhoz az értékhez, amelyet az óra kalibrálása során talált
  • Feltételezem, hogy az érzékelő az előzőekben leírtak szerint csatlakozik, ellenkező esetben csatlakoztassa
  • Feltételezem azt is, hogy az FT232RL soros -usb adapter csatlakoztatva van, különben csatlakoztassa
  • állítsa alaphelyzetbe az attiny85 -öt, amely a RESET csapot (pin1) a GND -hez csatlakoztatja (csak egy pillanat)
  • nyomja meg többször a távirányító gombjait, és nézze meg a képernyőablakot, minden egyes rekordhoz fel kell jegyeznie az utolsó számot, minden gomb 2 különböző számot eredményezhet

Példa:

FOGADOTT D44 3396FOGADOTT 544 1348

Jegyezze fel a 3396 -os és 1348 -as megjegyzést az éppen megnyomott gombhoz, majd el kell döntenie, hogy mit szeretne tenni ezzel a gombbal. Például azt szeretném, ha a gomb elküldené a multimédiás kulcskódot „Hangerő növelése”, akkor meg kell találnom az adott kulcskód azonosítóját. Ehhez töltse le a PDF -fájlt:

Keresse meg a "Billentyűzet/Billentyűzet oldal" 53. oldalt, és használja a Használati azonosító (Dec) oszlopban található számokat a távoli gombok billentyűzetkódokhoz való kötéséhez. Példánkban láthatjuk, hogy a "Hangerő növelése" kulcskódja: 128.

Szerkessze az UsbKeyboard.h fájlt az UsbKeyboard könyvtárban a korábban telepített v-usb csomagból, és adja hozzá a meglévő definícióhoz, ha még nincs meg:

#define KEY_VOL_UP 128

Ha elkészültünk a távirányító gombjaival és az UsbKeyboard.h fájl összes definíciójával készen állunk, akkor az utolsó lépésre léphetünk.

11. lépés: A végső vázlat betöltése, és reméljük a legjobbakat

A végső vázlat betöltése és reméljük a legjobbakat!
A végső vázlat betöltése és reméljük a legjobbakat!
A végső vázlat betöltése és reméljük a legjobbakat!
A végső vázlat betöltése és reméljük a legjobbakat!

Most már dekódoltuk az összes távoli gombot, az UsbKeyboard.h fájl meg van töltve a kulcskódjainkkal, így most betölthetjük az arduino IDE -be a végleges vázlatot:

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

Ez a fájl pontosan az a fájl, amelyet a vevőkészülékemhez használok, és 2 különböző távirányítóval működik, ezért nyilvánvalóan frissítenie kell, hogy működjön a távirányítóval.

Ha nem használ kristályt, vegye ki a megjegyzést az OSCCAL változót tartalmazó sorból, és rendelje hozzá ahhoz az értékhez, amelyet az óra kalibrálása során talált

Vegye figyelembe, hogy a hurokfüggvényben sok ilyen kijelentés található:

if (results.value == 3405 || results.value == 1357) {// nyíl felfelé

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

}

Saját utasításokat kell létrehoznia, egy gombot gombonként a távirányítón. Az "if" feltételben be kell írnia az results.value értékeket, amelyeket dekódolásakor talált, és az UsbKeyboard.sendKeyStroke metódus argumentumaként be kell helyeznie az egyik már meghatározott kulcskódot az UsbKeyboard.h fájlba.

Az "if (lastStroke! = Results.value)" feltételre azért van szükség, mert egyes távvezérlők ugyanazt a kódot küldik leütésenként kétszer, és ez megakadályozza a második találatot. Nem vagyok teljesen biztos benne, és függhet a távvezérlőbe programozott infravörös protokolltól (nem igazán vagyok szakértője az infravörös protokolloknak), de a saját távirányítóimmal kapcsolatos tapasztalataim szerint minden gomb 2 különböző kódot képes létrehozni miközben lenyomva tartja a gombot, ugyanazt a kódot küldi el, de ha ismét megnyomja a gombot, elküldi a másikat. Tehát úgy tűnik, hogy a kódokat alternatív módon küldik, azt hiszem, ez egy szabványos mód, hogy megtudja, hányszor nyomja meg a gombot.

Ok, majdnem készen vagyunk, csak töltsük fel a végső vázlatot, csatlakoztassuk a számítógéphez, és nézzük meg, hogyan megy.

Ehhez a lépéshez jobb, ha mind az arduino, mind az usb soros adaptert kihúzza, és csak ezután csatlakoztassa az USB -t a PC -portjához (ha valami baj történik, az áramkör egyszerűbb lesz a hibakeresésben).

Ha minden rendben működött, amikor megnyit egy terminált és elküldi a dmesg parancsot, akkor valami hasonlót kell látnia, mint az első kép ebben a lépésben. Ha problémák merültek fel, akkor olyan hibákat kell tapasztalnia, mint a második képen, és el kell kezdenie az áramkör és/vagy a szoftver hibakeresését. A kezdeti hibák egyik forrása egy olyan USB -elosztó volt, amely nem működött az IR -vevővel (mások működtek). Az esetleges hibákat nehéz lehet megtalálni, de végül, mint én, sokat tanulna, és a fizetendő ár megéri, biztosítom.

Ennyi az emberek, tudassa velem, ha bármilyen hibát észlel ebben az utasításban, és élvezze a vadonatúj IR USB -vevőt!

Ajánlott: