Kazalo:

IR sprejemnik ATtiny85 IR: 11 korakov (s slikami)
IR sprejemnik ATtiny85 IR: 11 korakov (s slikami)

Video: IR sprejemnik ATtiny85 IR: 11 korakov (s slikami)

Video: IR sprejemnik ATtiny85 IR: 11 korakov (s slikami)
Video: Лучший из ЛУЧШИХ???. Радиоприемник TECSUN PL680 ПОЛНЫЙ ОБЗОР!!! #tecsun 2024, November
Anonim
IR USB sprejemnik ATtiny85
IR USB sprejemnik ATtiny85

OPOZORILO, TO NAVODLJIVO JE ZDRAVILO

Knjižnica v-usb je zasnovana za delo s protokolom USB 1.1, ki ga danes skoraj ni. S prihodom USB3 boste imeli več kot glavobol, ko poskušate v-usb naprave delovati. Po menjavi večpredstavnostnega centra imam veliko težav s stabilnostjo in čeprav sprejemnik deluje, čez nekaj časa preneha delovati. Neuspešno sem poskušal popraviti. Naredil sem tudi različico atmega328p, vendar je imela ta enake težave. Uporaba časovnika za redne nastavitve plošče ni pomagala, zato sem opustil v-usb.

Naredite si uslugo in ne nadaljujte s tem navodilom, razen če gre za izobraževalne namene. Priporočam, da namesto tega kupite čip modul ATmega 32U4, ki je že integriral USB vmesnik, in sledite tem navodilom:

www.sparkfun.com/tutorials/337

Nato vstavite IR senzor TSOP31238 in ste pripravljeni.

Pozdravljeni ustvarjalci! to je navodilo za izdelavo delujočega USB IR sprejemnika z mikrokrmilnikom Attiny85. Ta projekt sem začel, da bi premagal pomanjkanje podpore (vsaj popolne podpore) za nekatere IR daljince v OS GNU/Linux. Po teh navodilih lahko za nekaj dolarjev sestavite programirljiv USB IR sprejemnik, ki deluje z vsakim IR daljincem.

Prvič, tega navodila ne bi bilo brez trdega dela ljudi, ki so ustvarili knjižnice, ki jih tukaj uporabljam:

  • David A. Mellis za njegovo jedro stališča
  • Programska oprema Rowdy Dog za njihovo knjižnico TinyTuner
  • Programska oprema Rowdy Dog za njihov majhen zagonski nalagalnik
  • Rancidbacon (https://rancidbacon.com/) za svoja vrata arduino v knjižnici v-usb (https://code.google.com/archive/p/vusb-for-arduino/downloads)
  • seejaydee za njegovo knjižnico IR za drobna jedra, ki jo najdete v komentarjih poučne https://www.instructables.com/id/Attiny-IR-librar… kode na https://www.instructables.com/id/Attiny-IR -knjižnica …

Včasih ni enostavno najti pravega lastnika knjižnice, zato v primeru napake pustite komentar in jaz bi težavo rešil čim prej.

Ta priročnik obstaja, ker nisem našel celotnega vodiča/vodnika, ki bi deloval iz škatle (morda obstaja, vendar ga nisem našel), zato sem zbral vse informacije, ki so na voljo v spletu, in po dobrem številu poskusov in napake Pripravil sem popoln vodnik za izdelavo delujočega USB IR sprejemnika, ki dejansko deluje zelo dobro.

Glavni viri informacij, ki sem jim sledil:

  • 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. korak: Nekaj premislekov

  • Nimam programerja ponudnika internetnih storitev AVR in si ga ne želim kupiti, zato sem za programiranje attiny85 uporabil Arduino
  • Ne zanima me noben drug OS razen GNU/Linux, zato ne vem, ali bo to delovalo drugače.
  • obstajajo še druge knjižnice IR, vendar jih nisem mogel narediti niti z arduinom. Upoštevajte, da sem začel z omejenim znanjem o knjižnicah IR. Mogoče bi jih lahko po pridobljenih izkušnjah, ki se ukvarjajo s precejšnjim številom vprašanj, zdaj delal. Kakorkoli že, bil sem izgubljen in obupan, preden sem našel knjižnico, ki jo je ponudila Seejaydee, in jo od takrat uporabljam (hvala lepa!).
  • Obstajajo še druge konfiguracije strojne opreme, vendar sem uporabil samo tisto, ki uporablja 5V za napajanje attiny85 in dve 3,6V 0,5W zener diode za vpenjanje napetosti podatkovnih vodov, deluje brez težav, zato se nisem motil druge konfiguracije.
  • Uporabite lahko 16MHz kristal ali pa knjižnico tinytuner za umerjanje notranje ure vašega attiny85. Močno svetujem uporabo kristala, je veliko bolj stabilen in vam bo verjetno prihranil veliko glavobolov.
  • Za attiny85 uporabljam dva različna zagonska nalagalnika:

a) Različica programske opreme Rowdy Dog ima integriran serijski vmesnik, ki je zelo kul in je zelo majhen, tako da imate več prostora za svoj program in druge knjižnice. Težava je v tem, da je iz nekaterih razlogov, čeprav deluje precej dobro, čez nekaj časa odklopila usb napravo (težave lahko najdete z ukazom dmesg). Ne vem, ali je to problem jedra ali mešane kombinacije jedra in izbranih knjižnic, zato sem se čez nekaj časa odločil, da to jedro uporabim samo za dekodiranje oddaljenih tipk in umerjanje ure (če ne uporabljam 16 MHz kristal). Po tem preprosto zažgem zagonski program Mellis in naložim dokončno skico, ki ne uporablja serijskega vmesnika.

b) Različica Mellis, stabilen zagonski nalagalnik, to sem uporabljal v številnih projektih. Ta zagonski nalagalnik bi vedno uporabil, če bi vseboval serijski vmesnik. To jedro uporabljam v zadnji skici, potem ko dekodiram vse ključe na daljinskem upravljalniku.

2. korak: Začnimo s strojno opremo

Začnimo s strojno opremo
Začnimo s strojno opremo
Začnimo s strojno opremo
Začnimo s strojno opremo
Začnimo s strojno opremo
Začnimo s strojno opremo

Orodja, ki jih potrebujete:

  • plošča, združljiva z arduinom
  • adapter za serijsko povezavo z USB za dekodiranje oddaljenih ključev (uporabite samo FT232RL)
  • računalnik z nameščenim GNU/Linuxom in arduino IDE pravilno konfiguriran, uporabljam arduino IDE 1.8.0
  • infrardeči daljinski upravljalnik za preizkušanje vaše naprave (tudi neumni, kot so tisti v začetnih kompletih arduino, bodo delovali)
  • multimeter za odpravljanje napak na vaši plošči (upam, da je ne boste potrebovali, srečno!)

Seznam materialov:

  • 1 attiny85
  • 2 upori 68R
  • 1 1,5K upor
  • 1 4,7K upor
  • 1 16Mhz kristal
  • 1 22pF kondenzator
  • 1 0,1uF kondenzator
  • 1 10uF kondenzator
  • 2 zener diode 3,6 V 0,5 W
  • 1 moški priključek USB tipa A
  • 1 zatič s 6 zatiči za programiranje in odpravljanje napak na plošči.
  • 1 IR senzor TSOP31238
  • veliko kave, da ne boste spali

Pred spajkanjem dokončne plošče bi verjetno želeli narediti prototip mize za preizkušanje, saj bi morala shema, priložena temu navodilu, zadostovati za njeno izdelavo.

Za priključitev attiny85 na osebni računalnik se pri končni zasnovi uporablja priključek USB tipa A, ki je spajen v ploščo, za prototip pa boste morali narediti kabel USB, ki ga lahko priključite na ploščo:

Spajkajte na majhen kos perfboard 4 zatičev, nato odrežite star kabel USB in spajjte zatiče na 4 žice v kablu USB:

  • rdeča je VCC (5V)
  • črna je GND
  • bela je D-
  • zelena je D+

Vse skupaj hranite z vročim lepilom.

Zdaj moramo priključiti programer ISP (Arduino), USB na serijski adapter (FT232RL) in IR senzor na attiny85.

Lahko pustite vse skupaj povezane, da boste lahko zapisovali različne zagonske nalagalnike, nalagali skice in preverjali serijska vrata brez menjave žic, Če želite to narediti, povežite vse po teh navodilih:

Programer ISP (Arduino): to nam omogoča zapisovanje zagonskih nalagalnikov in nalaganje skic

  • attiny85 PB0 (pin5) do pin11 (MOSI) v arduinu
  • attiny85 PB1 (pin6) na pin12 (MISO) v arduinu
  • attiny85 PB2 (pin7) do pin13 (SCK) v arduinu
  • attiny85 RESET (pin1) z izvlekom (4.6k do VCC) na pin10 v arduinu
  • attiny85 VCC do 5V v arduinu
  • attiny85 GND v GND v arduinu

usb na serijski adapter (FT232RL): to nam omogoča preverjanje serijskih vrat

  • attiny85 PB0 (pin5 RX) do TX v FT232RL
  • attiny85 PB2 (pin7 TX) do RX v FT232RL
  • attiny85 GND (pin4) do GND na FT232RL
  • ker attiny85 že poganja arduino, vam ni treba priključiti 5v na FT232RL, sicer pa priključite: attiny85 VCC (pin8) na 5V na FT232RL

usb na serijski adapter (FT232RL) samo za umerjanje ure (samo za zagonski nalagalnik "ATtiny85 @ 8MHz (notranji oscilator; BOD onemogočen)")

  • PB4 (pin3 RX) do TX v FT232RL attiny85
  • PB3 (pin2 TX) do RX v FT232RL attiny85
  • GND (pin4) do GND na FT232RL
  • ker attiny85 že poganja arduino, vam ni treba priključiti 5V na FT232RL, sicer pa priključite: attiny85 VCC (pin8) na 5V na FT232RL

Če uporabljate 16Mhz kristal, ga povežite z nožicami Attiny85 PB3 (pin2) in PB4 (pin3) in povežite vsak pin z GND tudi skozi kapo 22pF.

Filtrirajte Attiny85 VCC z 0,1uF in 10uF kondenzatorji, ki ju povezujejo vzporedno z GND

Priključite izhodni zatič IR senzorja na attiny85 PB1 (pin6) in ga vklopite.

Zgradite in povežite USB vmesnik:

  • GND (črna žica): priključite ga na skupni GND (vsi temelji so povezani skupaj)
  • D- (bela žica), priključena na attiny85 PB0 (pin5) preko upora 68R, jo priključite tudi na ozemljitev preko zenerja 3,6 V 0,5 W in jo z 1,5K uporom povlecite do VCC
  • D+ (zelena žica), priključena na PB2 preko upora 68R, ga priključite na ozemljitev preko zenerja 3,6 V 0,5 W
  • 5V, ga lahko pustite brez povezave, saj na tej stopnji vse napaja Arduino, sicer pa ga priključite na attiny85 VCC

Zener diode so povezane tako, da so anode vezane na GND, katode pa na podatkovne linije D+ in D-.

3. korak: Končno oblikovanje

Končna zasnova
Končna zasnova
Končna zasnova
Končna zasnova
Končna zasnova
Končna zasnova

Za končno zasnovo lahko uporabite perfboard s sestavnimi deli skozi luknje ali jedkate svojo ploščo in uporabite smd komponente. Če želite izvedeti, kako jedkati ploščo, jo poiščite v Googlu, na spletu so na voljo odlične vaje.

Vrezal sem svojo ploščo in sem zelo zadovoljen s končnimi rezultati (majhna, stabilna in robustna plošča). Da, vem, da je rez zanič, vendar nisem mogel uporabiti nobenega električnega orodja tako pozno v noč in sem samo odrežite desko s škarjami za kositer.

Mimogrede, sledi na slikah niso goli baker, obdelane so bile z neprijetno kemikalijo, ki rahlo pločevinka baker (obstaja sum, da povzroča raka, zato ga uporabljajte previdno, globusi iz lateksa in masko za prah):

Uporabite zgornje sheme za oblikovanje vaše postavitve ali pa preprosto uporabite moj odtis tiskane plošče za jedkanje vaše plošče.

4. korak: Ukvarjanje s programsko opremo

Vezje v tem projektu je zelo enostavno, namesto tega programska oprema zahteva več truda.

Za to potrebujemo vsaj 2 knjižnici (še eno, če ne uporabljate kristala) in 2 zagonska nalagalnika. Ko sem začel s tem projektom, sem preizkusil nekatere knjižnice, včasih niso delovale in velikokrat preprosto niso bile konfigurirane za delo z Attiny85 izven škatle (tega še nisem vedel). Potem sem odkril težave s prekrivanjem prekinitev knjižnic / zagonskih nalagalnikov. Nazadnje sem se moral spopasti s precejšnjo količino napak, ko sem priključil končno vezje na računalnik. Nisem imel tega vodnika, zato mislim, da bi bilo vse v redu, samo sledite korakom v tem navodilu, če to storite brez napak, bi morali biti v redu:)

Zdaj moramo namestiti in konfigurirati nekaj knjižnic:

  • v-usb za knjižnico arduino: ta knjižnica omogoča, da računalnik mikrokontroler prepozna kot HID USB tipkovnico in ga bomo uporabili za pošiljanje tipk v računalnik. Ta knjižnica potrebuje nekaj sprememb, da bo združljiva z attiny85
  • knjižnica tinytuner samo, če ne boste uporabljali 16Mhz kristala. Nato boste morali umeriti notranjo uro mikrokrmilnika. Ta knjižnica deluje brezhibno.
  • Attiny-IR-knjižnica za interakcijo z IR senzorjem. Ta knjižnica deluje brezhibno.

Potrebujemo tudi 2 zagonska nalagalnika:

  • Različica programske opreme za pse s serijskim vmesnikom. Ta zagonski nalagalnik potrebuje majhen popravek za delo z attiny85, saj uporablja timer1 za funkcijo millis () in ne bo deloval z IR knjižnico. Časovnik moramo spremeniti v timer0.
  • Različica Mellis, stabilen zagonski nalagalnik, ki ga bomo uporabili v zadnji fazi. To deluje brezhibno.

5. korak: Namestitev in konfiguracija knjižnice V-usb

Prenesite knjižnico s spletnega mesta https://code.google.com/archive/p/vusb-for-arduin… Razpakirajte datoteko in kopirajte knjižnice map/UsbKeyboard v mapo knjižnic skicirk.

Zdaj morate urediti nekaj datotek, da bodo združljive z ATtiny85 (konfiguriran je za delo z arduinom):

A) uredite usbconfig.h:

pod "Hardware Config" spremenite:

#define USB_CFG_IOPORTNAME Ddo ## opredelite USB_CFG_IOPORTNAME B

in

#define USB_CFG_DMINUS_BIT 4to#define USB_CFG_DMINUS_BIT 0

pod "Izbirna konfiguracija strojne opreme" spremenite:

#define USB_CFG_PULLUP_IOPORTNAME Dto ## opredelite USB_CFG_PULLUP_IOPORTNAME B

Če želite ustvariti popolno specifikacijo HID, ki je skladna z zagonom (sicer ne bodo delovali večpredstavnostni ključi), spremenite tudi:

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

in

#define USB_CFG_INTERFACE_PROTOCOL 0 // Tipkovnica za#opredelitev USB_CFG_INTERFACE_PROTOCOL 0x01 // Tipkovnica

Po želji lahko spremenite tudi proizvajalca in ime naprave v naslednjih opredelitvah:

#define USB_CFG_VENDOR_NAME

#define USB_CFG_DEVICE_NAME

B) uredite UsbKeyboard.h:

sprememba:

PORTD = 0; // TODO: Samo za zatiče USB? DDRD | = ~ USBMASK;

do

PORTB = 0; // TODO: Samo za zatiče USB? DDRB | = ~ USBMASK;

Če želite dovoliti spremembo več kot 101 kod:

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

in

0x29, 0x65, // USAGE_MAXIMUM (aplikacija za tipkovnico) do: 0x29, 0xE7, // USAGE_MAXIMUM (aplikacija za tipkovnico)

Morda boste morali urediti tudi te 3 datoteke:

usbdrv.husbdrv.cUsbKeyboard.h

in vsakič, ko vidite, da PROGMEM pred imenom vrste spremenljivke doda "const" (npr.: PROGMEN char usbHidReportDescriptor [35] ==> PROGMEM const char usbHidReportDescriptor [35])

Če to ni jasno, obiščite

Vsem tem spremembam se lahko izognete, če preprosto prenesete priloženo knjižnico (vse te spremembe sem naredil sam) in jo preprosto izvlečete v mapo knjižnic sketchbook:

UsbKeyboard je konfiguriran za attiny85

Edit: pred kratkim sem odkril, da je Alejandro Leiva (https://github.com/gloob) skrbel za to knjižnico in deluje tudi dobro. Lahko poskusite tudi njegovo različico s potrebnimi spremembami, ki sem jih naredil, da bi delovala z attiny, zato, če želite to preveriti, jo izvlecite v mapo knjižnic sketchbook.

UsbKeyboard konfiguriran za attiny85 (različica Alejandra Leiva)

6. korak: Namestitev knjižnic Attiny-IR in Tinytuner

A) Attiny-IR knjižnica:

prenesite ga s spletnega mesta https://drive.google.com/open?id=0B_w9z88wnDtFNHlq…, nato ga razpakirajte v mapo knjižnic skicirk.

B) Knjižnica Tinytuner:

To je potrebno le, če ne uporabljate 16MHz kristala, vendar verjemite, čeprav deluje tudi brez kristala, je z njim veliko bolj stabilen in stanejo nekaj centov, zato bodite preprosti, uporabite kristal in preskočite to knjižnico.

Še niste prepričani? ok, prenesite knjižnico s spletnega mesta https://storage.googleapis.com/google-code-archive…, nato jo razpakirajte v mapo knjižnic za skice.

S knjižnicami smo končali, zdaj nadaljujemo z namestitvijo zagonskih nalagalnikov.

7. korak: Namestitev in konfiguracija zagonskih nalagalnikov

Namestili bomo dva zagonska nalagalnika, od katerih je eden po mojih izkušnjah bolj stabilen in ga bomo uporabili v zadnji skici. Drugi, ki ga je razvil Rowdy Dog Software, je odlično jedro, zelo majhno in z vgrajenim serijskim vmesnikom, vendar se mi je daljinski upravljalnik čez nekaj časa zrušil, zato bomo ta zagonski nalagalnik uporabili samo za umerjanje notranje ure attiny85 in za dekodiranje našega daljinskega upravljalnika. gumbi.

Vem, da obstajajo knjižnice, ki dajejo serijske zmogljivosti attiny85, potem pa boste morali prilagoditi knjižnice, ki uporabljajo serijski objekt … Ta postopek mi je bolj všeč.

Začnimo z namestitvijo:

A) Mellisov zagonski nalagalnik:

samo odprite nastavitve Arduino IDE in dodajte URL -ji dodatnih upraviteljev plošč:

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

Nato odprite upravitelja plošč Arduino IDE in poiščite attiny, namestite plošče iz Mellisa, zdaj bi morali videti Arduino ID na ploščah ATtiny25/45/85 in ATtiny24/44/84.

B) Majhen zagonski program Rowdy Dog Software:

naložite zagonski nalagalnik s spletnega mesta

Razpakirajte datoteko in kopirajte majhno mapo v svojo skico/strojno opremo (ustvarite to mapo, če še ne obstaja). nato pojdite v mapo sketchbook/hardware/tiny/avr/in:

1) kopirajte datoteko Prospective Boards.txt v datoteko board.txt

2) uredite datoteko platform.txt in naredite nekaj sprememb:

Odkomentirajte spremenljivko compiler.path in jo pustite kazati na mapo strojna oprema/tools/avr/bin/v namestitveni mapi arduino:

compiler.path = {PATH_TO_YOUR_ARDUINO_FOLDER}/strojna oprema/orodja/avr/bin/

spremenite tudi compilerr. S.flags = -c -g -assembler-with-cpptocompiler. S.flags = -c -g -x asembler-with-cpp

Nato spremenite naslednje spremenljivke in se prepričajte, da je vse na svojem mestu (te datoteke morajo obstajati, sicer spremenljivke usmerite na prave poti):

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

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

3) uredite datotečna jedra/tiny/core_build_options.h in spremenite:

#define TIMER_TO_USE_FOR_MILLIS 1 to#define TIMER_TO_USE_FOR_MILLIS 0

To je zelo pomembno, sicer bo IR sprejemnik za vsako tipko oddajal ničle. Ta stavek konfigurira timer0 za funkcijo millis (), tako da timer1 ostane na voljo knjižnici IR. Končna skica bo tako ali tako onemogočila timer0, zato ne boste imeli na voljo niti funkcije millis () in delay (). Namesto tega imate morda na voljo funkcijo delayMicroseconds ().

Ta zagonski nalagalnik je minimalen, vendar vključuje podporo za serijske objekte:

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

Konfiguracijo lahko nastavite s programerjem ponudnika internetnih storitev (arduino) in vmesnikom za serijski v USB, tako da vam žic ni treba spreminjati prepogosto:

Zdaj imamo knjižnice in zagonske nalagalnike nameščene in pravilno konfigurirane, najtežje delo je končano in lahko začnemo preizkušati stvari.

8. korak: zapisovanje zagonskih nalagalnikov in nalaganje skic

Močno svetujem, da aktivirate podroben izhod v nastavitvah Arduino IDE, da boste lahko ugotovili morebitno težavo.

Če želite zagonski nalagalnik zapisati v Attiny85, morate naložiti primer ponudnika internetnih storitev v Arduino in nato izbrati programerja Arduina kot ponudnika internetnih storitev.

Sedaj postavite 10uF kondenzator med zatiče za ponastavitev in ozemljitev na arduinu (to ni potrebno za postopek zapisovanja, vendar je treba naložiti skice na attiny85).

Zdaj je arduino pripravljen za zapisovanje zagonskih nalagalnikov in nalaganje skic. Morate samo izbrati pravo ploščo, ki je združljiva z vašim stališčem, in jo zažgati.

Če želite naložiti skico v Attiny85, jo naložite v arduino IDE in kliknite »Naloži s programerjem«.

POMEMBNO: pri nalaganju skice so 3 koraki, sestavljanje, pisanje in preverjanje. Če sta sestavljanje in pisanje uspela, vendar postopek preverjanja ne uspe, je možno, da bi skica vseeno delovala.

9. korak: Umerite notranjo uro Attiny85 (preskočite to, če uporabljate kristal)

Če se odločite, da ne boste uporabljali 16Mhz kristala, morate kalibrirati uro attiny85, zato bomo potrebovali zagonski nalagalnik s serijskim vmesnikom, za pravilno kalibracijo pa bomo uporabili knjižnico tinytuner.

Sledite naslednjim korakom

  • v orodjih izberite Arduino kot programerja ISP
  • izberite ploščo "ATtiny85 @ 8MHz (notranji oscilator; BOD onemogočen)"
  • Predvidevam, da imate pripravljeno povezavo ponudnika internetnih storitev, kot je opisano pred povezovanjem, sicer pa povezave
  • spali zagonski nalagalnik
  • ta zagonski nalagalnik je konfiguriral različne zatiče za serijski vmesnik, uporabite to konfiguracijo samo za trenutni zagonski nalagalnik

- PB4 (pin3 RX) do TX v FT232RL attiny85 - PB3 (pin2 TX) do RX v FT232RL attiny85 - GND (pin4) do GND na FT232RL, saj attiny85 že napaja arduino, vam ga ni treba povezati 5v na FT232RL, sicer priključite: attiny85 VCC (pin8) na 5V na FT232RL

  • naložite primer tinytunerja v attiny85
  • odprite zaslonski program za spremljanje serijske komunikacije: screen /dev /ttyUSB0 9600
  • ponastavite attiny85, ki povezuje pin RESET (pin1) z GND (samo trenutek). Na oknu zaslona bi se moralo prikazati sporočilo dobrodošlice
  • Še naprej pošiljajte posamezne znake "x" (brez vrnitve nosilca; brez podajanja vrstic), dokler se kalibracija ne konča
  • označite vrednost kalibracije (OSCCAL = 0x). To je vrednost, ki jo boste morali prijaviti na končnih skicah

10. korak: Dešifrirajte gumbe za daljinsko upravljanje

Zdaj je čas, da dekodiramo gumbe na daljinskem upravljalniku in jih dodelimo določenim tipkam v računalniku, pri čemer sledite naslednjim korakom:

  • izberite ploščo "ATtiny85 @ 16MHz (notranji PLL; 4.3V BOD)", če ne uporabljate kristala, "ATtiny85 @ 16 MHz (zunanji kristal; 4.3 V BOD"), nato jo zažgite
  • naložite skico:
  • Če ne uporabljate kristala, odkomentirajte vrstico, ki vsebuje spremenljivko OSCCAL, in jo dodelite vrednosti, ki ste jo našli, ko ste opravili kalibracijo ure
  • Predvidevam, da je senzor priključen, kot je opisano prej, sicer ga priključite
  • Predvidevam tudi, da je priključen serijski na usb adapter FT232RL, sicer ga povežite
  • ponastavite attiny85, ki povezuje pin RESET (pin1) z GND (samo trenutek)
  • večkrat pritisnite gumbe na daljinskem upravljalniku in odjavite okno na zaslonu, za vsak zapis morate označiti zadnjo številko, vsak gumb lahko prikaže 2 različni številki

Primer:

PREJEMLJENO D44 3396 PREJEMLJENO 544 1348

Označite 3396 in 1348 skupaj z gumbom, ki ste ga pravkar pritisnili, nato se morate odločiti, kaj želite narediti s tem gumbom. Na primer, želel bi, da ta gumb pošlje večpredstavnostno kodo tipke "Povečanje glasnosti", potem moram najti ID te kode ključa. Če želite to narediti, prenesite PDF:

Poiščite razdelek "Tipkovnica/stran tipkovnice" stran 53 in uporabite številke v stolpcu ID uporabe (december), da gumbe daljinskega upravljalnika povežete s kodami tipkovnice. V našem primeru lahko vidimo, da je ključna koda za "Povečanje glasnosti": 128.

Uredite datoteko datoteko UsbKeyboard.h v knjižnici UsbKeyboard iz paketa v-usb, ki smo ga namestili prej, in dodajte obstoječim definicijam, če še ni tam:

#define KEY_VOL_UP 128

Ko končamo z vsemi gumbi na daljinskem upravljalniku in vsemi definicijami v datoteki UsbKeyboard.h so pripravljene, se lahko premaknemo na zadnji korak.

11. korak: Naložite končno skico in upajte na najboljše

Nalaganje zadnje skice in upanje na najboljše!
Nalaganje zadnje skice in upanje na najboljše!
Nalaganje zadnje skice in upanje na najboljše!
Nalaganje zadnje skice in upanje na najboljše!

Zdaj imamo dekodirane vse gumbe za daljinsko upravljanje, datoteka UsbKeyboard.h je napolnjena z našimi kodami ključev, zato lahko zdaj v IDE arduino naložimo dokončno skico iz:

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

Ta datoteka je natančna, ki jo uporabljam za sprejemnik, in deluje za 2 različna daljinska upravljalnika, zato jo morate očitno posodobiti, če želite delati z daljinskim upravljalnikom.

Če ne uporabljate kristala, odkomentirajte vrstico, ki vsebuje spremenljivko OSCCAL, in jo dodelite vrednosti, ki ste jo našli pri kalibraciji ure

Upoštevajte, da je v funkciji zanke veliko stavkov, kot je ta:

if (results.value == 3405 || results.value == 1357) {// puščica navzgor

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

}

Na daljinskem upravljalniku morate ustvariti lastne izjave, po eno na gumb. V pogoju "if" morate vnesti results.value vrednosti, ki ste jih našli pri dekodiranju vašega daljinskega upravljalnika, in kot argument metode UsbKeyboard.sendKeyStroke morate v datoteko UsbKeyboard.h vnesti eno od že definiranih kod.

Pogoj "if (lastStroke! = Results.value)" je potreben, ker nekateri daljinski upravljalniki pošljejo isto kodo dvakrat na zadetek, kar prepreči drugi zadetek. Nisem povsem prepričan in morda je odvisno od protokola IR, ki je programiran v vaš daljinski upravljalnik (res nisem strokovnjak za protokole IR), vendar glede na moje izkušnje z lastnimi daljinci lahko vsak gumb ustvari 2 različni kodi in medtem ko pritisnete in držite gumb, pošlje isto kodo, če pa znova pritisnete gumb, pošlje drugo. Tako se zdi, da so kode poslane na drug način, mislim, da je to standardni način, da veste, kolikokrat ste v resnici pritisnili gumb.

Ok, skoraj smo končali, samo naložite zadnjo skico, jo povežite z računalnikom in poglejte, kako bo šlo.

Za ta korak je bolje, če izklopite arduino in USB v serijski adapter in šele nato priključite USB v vrata računalnika (če bo šlo kaj narobe, bo vaše vezje lažje odpraviti napake).

Če je vse v redu, ko odprete terminal in pošljete ukaz dmesg, bi morali videti nekaj podobnega prvi sliki na tem koraku. Če bi prišlo do težav, bi morali imeti napake, kakršne so bile na drugi sliki, in začeti morate odpravljati napake v svojem vezju in/ali programski opremi. Eden od virov začetnih napak, ki sem jih imel, je bilo zvezdišče USB, ki ne bi delovalo z mojim IR sprejemnikom (čeprav so drugi delovali) … zato je za ta zadnji korak bolje, da IR sprejemnik priključite neposredno na vrata računalnika. Morebitne napake bi bilo težko najti, a na koncu bi se, tako kot jaz, veliko naučili in cena, ki jo je treba plačati, je to vredna, zagotavljam vam.

To je vse, sporočite mi, če opazite napake v tem navodilu in uživate v svojem popolnoma novem USB sprejemniku IR!

Priporočena: