Sadržaj:

ATtiny85 IR USB prijemnik: 11 koraka (sa slikama)
ATtiny85 IR USB prijemnik: 11 koraka (sa slikama)

Video: ATtiny85 IR USB prijemnik: 11 koraka (sa slikama)

Video: ATtiny85 IR USB prijemnik: 11 koraka (sa slikama)
Video: Make your own Arduino UNO 2024, Juli
Anonim
ATtiny85 IR USB prijemnik
ATtiny85 IR USB prijemnik

UPOZORENJE, OVO UPUTSTVO JE POSTALO Zastarelo

Biblioteka v-usb dizajnirana je za rad s USB 1.1 protokolom koji danas rijetko postoji. Dolaskom USB3-a imat ćete više od glavobolje u pokušajima da v-usb uređaje funkcionirate. Nakon promjene multimedijskog centra, imam mnogo problema sa stabilnošću, iako prijemnik radi, nakon nekog vremena prestaje raditi. Neuspješno sam pokušavao to popraviti. Napravio sam i verziju atmega328p, ali i ova je imala iste probleme. Korištenje nadzornog tajmera za periodično resetiranje ploče također nije pomoglo pa sam odustao od v-usb-a.

Učinite si uslugu i nemojte nastaviti s ovim uputstvom, osim ako je to u obrazovne svrhe. Umjesto toga preporučujem da kupite čip modul ATmega 32U4 koji je već integrirao USB sučelje i slijedite ovaj vodič:

www.sparkfun.com/tutorials/337

Zatim ubacite IC senzor TSOP31238 i spremni ste za rad.

Zdravo tvorci! ovo je uputstvo za izgradnju ispravnog USB IR prijemnika pomoću mikrokontrolera Attiny85. Ovaj projekt sam započeo kako bih prevladao nedostatak podrške (barem potpune podrške) za neke IR daljinske upravljače u GNU/Linux OS -u. Slijedeći ove upute, mogli biste izgraditi programabilni USB IR prijemnik koji radi sa bilo kojim daljinskim upravljačem za nekoliko dolara.

Prije svega, ova instrukcija ne bi postojala bez napornog rada ljudi koji su stvorili biblioteke koje ovdje koristim:

  • David A. Mellis za jezgru stavova
  • Rowdy Dog softver za njihovu biblioteku TinyTuner
  • Rowdy Dog softver za njihov maleni bootloader
  • Rancidbacon (https://rancidbacon.com/) za svoj arduino port v-usb biblioteke (https://code.google.com/archive/p/vusb-for-arduino/downloads)
  • seejaydee za njegovu IR biblioteku za sitna jezgra koja se nalazi na komentarima uputnog https://www.instructables.com/id/Attiny-IR-librar… koda na https://www.instructables.com/id/Attiny-IR -biblioteka …

Ponekad nije lako pronaći pravog vlasnika biblioteke, pa u slučaju greške ostavite komentar i riješio bih problem u najkraćem mogućem roku.

Ovaj vodič postoji jer nisam našao kompletan vodič/vodič koji je radio bez kutije (možda postoji, ali ga nisam mogao pronaći) pa sam prikupio sve informacije dostupne na webu i nakon velikog broja proba i greške Došao sam do potpunog vodiča za izgradnju funkcionalnog USB IR prijemnika koji zapravo radi prilično dobro.

Glavni izvori informacija koje sam pratio:

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

Korak 1: Neka razmatranja

  • Ne posjedujem AVR ISP programera i ne želim ga kupiti pa sam koristio Arduino za programiranje attiny85
  • Nije me briga za bilo koji drugi OS osim GNU/Linuxa pa ne znam hoće li ovo drugačije funkcionirati.
  • postoje i druge IR biblioteke, ali nisam ih mogao natjerati da rade čak ni sa arduinom. Uzmite u obzir da sam počeo s ograničenim znanjem o IR bibliotekama. Možda bih ih sada mogao natjerati da rade nakon stečenog iskustva u rješavanju priličnog broja pitanja. U svakom slučaju, bio sam izgubljen i očajan prije nego što sam pronašao biblioteku koju je obezbijedio Seejaydee i od tada sam je koristio (veliko hvala čovječe!).
  • Postoje i druge hardverske konfiguracije, ali ja sam koristio samo onu koja koristi 5V za napajanje attiny85 i dvije zener diode od 3,6V 0,5W za stezanje napona na podatkovnim linijama, radi izvan kutije pa se nisam petljao sa druge konfiguracije.
  • Možete koristiti kristal od 16 Mhz ili biblioteku tinytuner za kalibraciju unutrašnjeg sata vašeg attiny85. Snažno savjetujem upotrebu kristala, mnogo je stabilniji i vjerovatno će vas poštedjeti mnogo glavobolje.
  • Ovdje koristim dva različita pokretačka programa za attiny85:

a) Verzija softvera Rowdy Dog, ima integrirano serijsko sučelje koje je vrlo cool i vrlo je malo pa imate više prostora za svoj program i druge biblioteke. Problem je u tome što je iz nekih razloga, iako radi prilično dobro, nakon nekog vremena USB uređaj isključen (probleme možete pronaći pomoću naredbe dmesg). Ne znam je li to problem jezgre ili mješovite kombinacije jezgre i odabranih biblioteka pa sam nakon nekog vremena odlučio koristiti ovu jezgru samo za dekodiranje daljinskih ključeva i kalibraciju sata (kad ne koristim 16 MHz kristal). Nakon toga samo narežem Mellisov bootloader i postavim konačnu skicu koja ne koristi serijsko sučelje.

b) Mellis verzija, stabilan bootloader, ovo sam koristio u mnogim projektima. Uvijek bih koristio ovaj pokretački program da sadrži serijsko sučelje. Ovo jezgro koristim u konačnoj skici nakon dekodiranja svih ključeva na daljinskom upravljaču.

Korak 2: Počnimo s hardverom

Počnimo s hardverom
Počnimo s hardverom
Počnimo s hardverom
Počnimo s hardverom
Počnimo s hardverom
Počnimo s hardverom

Alati koji su vam potrebni:

  • ploča kompatibilna s arduinom
  • serijski na usb adapter za dekodiranje daljinskih ključeva (samo upotrijebite FT232RL)
  • računar sa instaliranim GNU/Linux -om i arduino IDE -om ispravno konfigurisan, koristim arduino IDE 1.8.0
  • infracrveni daljinski za testiranje vašeg uređaja (čak i loši poput onih koji se nalaze u arduino starter kompletima će raditi)
  • multimetar za otklanjanje grešaka na ploči (nadam se da vam neće trebati, sretno!)

Lista materijala:

  • 1 attiny85
  • 2 68R otpornika
  • 1 1.5K otpornik
  • 1 4.7K otpornik
  • 1 kristal od 16 MHz
  • 1 22pF kondenzator
  • 1 0,1uF kondenzator
  • 1 10uF kondenzator
  • 2 3.6V 0.5W zener diode
  • 1 USB muški konektor tipa A
  • 1 iglica sa 6 pinova za programiranje i otklanjanje grešaka na ploči.
  • 1 IC senzor TSOP31238
  • puno kafe da ne budete budni

Prije lemljenja konačne ploče, vjerojatno biste htjeli napraviti prototip matične ploče za potrebe testiranja, slijedeći shemu priloženu ovom uputstvu trebalo bi biti dovoljno za njenu izgradnju.

Za povezivanje attiny85 s računalom, konačni dizajn koristi USB priključak tipa A koji je lemljen u ploči, ali za prototip ćete morati napraviti USB kabel koji možete spojiti na matičnu ploču:

Lemite u mali komad perfboard ploče sa 4 pina, a zatim izrežite stari USB kabl i lemite pinove na 4 žice unutar USB kabla:

  • crvena je VCC (5V)
  • crna je GND
  • bijela je D-
  • zelena je D+

Držite sve zajedno vrućim ljepilom.

Sada moramo spojiti ISP programator (Arduino), USB na serijski adapter (FT232RL) i IC senzor na attiny85.

Možete ostati povezani svi zajedno kako biste mogli snimati različite bootloadere, učitavati skice i provjeravati serijski port bez promjene žica, Da biste to učinili, sve spojite slijedeći ove upute:

ISP programer (Arduino): ovo nam omogućuje snimanje pokretačkih programa i učitavanje skica

  • attiny85 PB0 (pin5) na pin11 (MOSI) u arduinu
  • attiny85 PB1 (pin6) na pin12 (MISO) u arduinu
  • attiny85 PB2 (pin7) na pin13 (SCK) u arduinu
  • attiny85 RESET (pin1) sa izvlačenjem (4.6k na VCC) na pin10 u arduinu
  • attiny85 VCC na 5V u arduinu
  • attiny85 GND u GND u arduinu

USB na serijski adapter (FT232RL): ovo nam omogućava provjeru serijskog porta

  • attiny85 PB0 (pin5 RX) na TX u FT232RL
  • attiny85 PB2 (pin7 TX) na RX u FT232RL
  • attiny85 GND (pin4) u GND na FT232RL
  • budući da se attiny85 već napaja arduinom, ne morate spojiti 5v na FT232RL, inače povežite: attiny85 VCC (pin8) na 5V na FT232RL

usb na serijski adapter (FT232RL) samo za kalibraciju takta (samo za pokretački program "ATtiny85 @ 8MHz (unutrašnji oscilator; BOD onemogućen)")

  • PB4 (pin3 RX) na TX u FT232RL attiny85
  • PB3 (pin2 TX) do RX u FT232RL attiny85
  • GND (pin4) do GND na FT232RL
  • budući da se attiny85 već napaja arduinom, ne morate spojiti 5v na FT232RL, inače povežite: attiny85 VCC (pin8) na 5V na FT232RL

Ako koristite kristal od 16 MHz, spojite ga na Attiny85 pinove PB3 (pin2) i PB4 (pin3) i povežite svaki pin na GND kroz kapu od 22pF.

Filtrirajte Attiny85 VCC sa kondenzatorima od 0,1 uF i 10 uF koji ih povezuju paralelno sa GND

Spojite izlazni pin IC senzora na attiny85 PB1 (pin6), uključite ga.

Izgradite i povežite USB sučelje:

  • GND (crna žica): spojite ga na zajednički GND (sva uzemljenja su spojena zajedno)
  • D- (bijela žica) spojena na attiny85 PB0 (pin5) preko 68R otpornika, spojite ga i na masu preko 3,6V 0,5W zenera i izvucite ga do VCC sa 1,5K otpornikom
  • D+ (zelena žica) spojena na PB2 preko 68R otpornika, spojite ga na masu preko 3,6V 0,5W zenera
  • 5V, možete ga ostaviti nepovezanim jer u ovoj fazi sve napaja Arduino, inače ga povežite na attiny85 VCC

Zener diode su spojene tako da su anode vezane za GND, a katode na podatkovne vodove D+ i D-.

Korak 3: Konačni dizajn

Final Design
Final Design
Final Design
Final Design
Final Design
Final Design

Za konačni dizajn mogli biste upotrijebiti perfboard s komponentama kroz rupe ili urezati vlastitu ploču i koristiti smd komponente. Da biste naučili kako urezati ploču, samo je proguglajte, na mreži su dostupni sjajni vodiči.

Urezao sam vlastitu ploču i vrlo sam zadovoljan konačnim rezultatima (mala, stabilna i robusna ploča). Da, znam da je rez sranje, ali nisam mogao koristiti bilo koji električni alat tako kasno u noć i samo izrežite dasku mojim škarama za rezanje kositra.

Usput, tragovi na slikama nisu goli bakar, oni su tretirani gadnom kemikalijom koja blago kalira bakar (sumnja se da izaziva rak, pa ga koristite s velikom pažnjom, kuglice od lateksa i masku za prašinu):

Upotrijebite gornje sheme za dizajn vašeg izgleda ili možete jednostavno upotrijebiti moj otisak na ploči za urezivanje ploče.

Korak 4: Suočavanje sa softverom

Krug u ovom projektu je vrlo jednostavan, umjesto toga softver zahtijeva veći napor.

Potrebne su nam najmanje 2 biblioteke (još jedna ako ne koristite kristal) plus 2 pokretačka programa za rad. Kad sam započeo ovaj projekt, testirao sam neke biblioteke, ponekad nisu radile, a često jednostavno nisu bile konfigurirane za rad s Attiny85 standardom (to još nisam znao). Tada sam ipak našao probleme s preklapanjem biblioteka / pokretačkih programa. Konačno, morao sam se pozabaviti priličnom količinom grešaka kada sam spojio završni krug na svoj računar. Nisam imao ovaj vodič, pa mislim da biste bili u redu, samo slijedite korake u ovom uputstvu, ako to učinite bez grešaka, trebali biste biti u redu:)

Sada moramo instalirati i konfigurirati nekoliko biblioteka:

  • v-usb za arduino biblioteku: ova biblioteka omogućava da računar prepozna mikrokontroler kao HID USB tastaturu, a mi ćemo ga koristiti za slanje poteza ključem na računar. Ovoj biblioteci su potrebne neke promjene kako bi bila kompatibilna s attiny85
  • knjižnica tinytunera samo ako nećete koristiti kristal od 16Mhz. Tada ćete morati kalibrirati unutarnji sat mikrokontrolera. Ova biblioteka radi bez pakovanja.
  • Attiny-IR-biblioteka za interakciju s IC senzorom. Ova biblioteka radi bez pakovanja.

Potrebna su nam i 2 pokretačka programa:

  • Verzija softvera za pse sa dostupnim serijskim sučeljem. Ovom bootloaderu je potrebno malo podešavanje za rad s attiny85 jer koristi timer1 za funkciju millis () i neće raditi s IR bibliotekom. Moramo promijeniti tajmer u timer0.
  • Mellis verzija, stabilan bootloader koji ćemo koristiti u završnoj fazi. Ovo funkcionira izvan kutije.

Korak 5: Instalacija i konfiguracija V-usb biblioteke

Preuzmite biblioteku sa https://code.google.com/archive/p/vusb-for-arduin… Raspakujte datoteku i kopirajte biblioteke fascikli/UsbKeyboard u fasciklu biblioteka sketchbook.

Sada morate urediti nekoliko datoteka kako bi bile kompatibilne s ATtiny85 (konfiguriran je za rad s arduinom):

A) uredite usbconfig.h:

pod "Hardware Config" promjena:

#define USB_CFG_IOPORTNAME Ddo ## definirajte USB_CFG_IOPORTNAME B

i

#define USB_CFG_DMINUS_BIT 4to#define USB_CFG_DMINUS_BIT 0

pod "Optional Hardware Config" promjena:

#define USB_CFG_PULLUP_IOPORTNAME Ddo ## definirajte USB_CFG_PULLUP_IOPORTNAME B

Da biste stvorili potpunu HID specifikaciju "kompatibilna s pokretanjem" (inače neće raditi multimedijski ključevi), promijenite i:

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

i

#define USB_CFG_INTERFACE_PROTOCOL 0 // Tastatura za#definiranje USB_CFG_INTERFACE_PROTOCOL 0x01 // Tastatura

Po želji možete promijeniti i proizvođača i naziv uređaja u sljedećim definicijama:

#define USB_CFG_VENDOR_NAME

#define USB_CFG_DEVICE_NAME

B) uredite UsbKeyboard.h:

promjena:

PORTD = 0; // TODO: Samo za USB pinove? DDRD | = ~ USBMASK;

to

PORTB = 0; // TODO: Samo za USB pinove? DDRB | = ~ USBMASK;

Da dozvolite promjenu kodova ključeva dalje od 101:

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

i

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

Možda ćete morati urediti i ove 3 datoteke:

usbdrv.husbdrv.cUsbKeyboard.h

i svaki put kada vidite PROGMEM dodaj "const" prije naziva tipa varijable (npr.: PROGMEN char usbHidReportDescriptor [35] ==> PROGMEM const char usbHidReportDescriptor [35])

Ako ovo nije jasno posjetite

Sve ove promjene možete izbjeći ako samo preuzmete priloženu biblioteku (sve sam ove promjene napravio sam) i jednostavno je ekstrahirate u mapu biblioteka sketchbook:

UsbKeyboard konfigurisan za attiny85

Edit: nedavno sam otkrio da se Alejandro Leiva (https://github.com/gloob) pobrinuo za ovu biblioteku i čini se da i ona dobro funkcionira. Možete isprobati i njegovu verziju s neophodnim izmjenama koje sam napravio kako bi funkcionirala s attinyjem, pa ako želite to provjeriti, samo je ekstrahirajte u mapu biblioteka sketchbook.

UsbKeyboard konfiguriran za attiny85 (verzija Alejandra Leive)

Korak 6: Instaliranje biblioteka Attiny-IR i Tinytuner

A) Attiny-IR biblioteka:

preuzmite ga sa https://drive.google.com/open?id=0B_w9z88wnDtFNHlq…, a zatim ga raspakirajte u fasciklu biblioteka sketchbook.

B) Tinytuner biblioteka:

Ovo je potrebno samo ako ne koristite kristal od 16 Mhz, ali vjerujte, iako radi i bez kristala, s njim je mnogo stabilniji i koštaju nekoliko centi, pa neka bude jednostavno, koristite kristal i preskočite ovu biblioteku.

Niste još uvjereni? ok, preuzmite biblioteku sa https://storage.googleapis.com/google-code-archive…, a zatim je raspakirajte u svoju mapu biblioteka sketchbook.

Završili smo s bibliotekama, sada idemo na instaliranje bootloadera.

Korak 7: Instalacija i konfiguracija pokretačkih programa

Instalirat ćemo dva bootloadera, jedan Mellis je prema mom iskustvu stabilniji i upotrijebit ćemo ga u konačnoj skici. Drugi koji je razvio Rowdy Dog Software odlično je jezgro, vrlo malo i s integriranim serijskim sučeljem, ali moj daljinski upravljač se nakon nekog vremena srušio s njim pa ćemo koristiti ovaj pokretački program samo za kalibriranje attiny85 internog sata i za dekodiranje našeg daljinskog upravljača dugmad.

Znam da postoje dostupne biblioteke koje daju attiny85 serijske mogućnosti, ali tada ćete morati prilagoditi biblioteke koje koriste serijski objekt … Više mi se sviđa ova procedura.

Počnimo s instalacijom:

A) Mellisov pokretač za pokretanje:

samo otvorite Arduino IDE postavke i dodajte Dodatne URL -ove upravitelja ploča:

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

Zatim otvorite Arduino IDE upravitelj ploča i potražite attiny, instalirajte ploče s Mellisa. Sada biste trebali vidjeti Arduino ID na pločama ATtiny25/45/85 i ATtiny24/44/84.

B) Mali program za pokretanje softvera Rowdy Dog Software:

preuzmite bootloader sa

Raspakirajte datoteku i kopirajte malenu mapu unutar svoje skice/hardvera (stvorite ovu mapu ako još ne postoji). zatim prijeđite u mapu sketchbook/hardware/tiny/avr/i:

1) kopirajte datoteku Prospective Boards.txt u datoteku board.txt

2) uredite datoteku platform.txt i unesite neke promjene:

Dekomentirajte varijablu compiler.path i ostavite je usmjerenu na mapu hardware/tools/avr/bin/unutar vaše arduino instalacijske mape:

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

promijeni i kompajler. S.flags = -c -g -asembler-sa-cpptokompilator. S.flags = -c -g -x asembler-sa-cpp

Zatim promijenite sljedeće varijable pazeći da je sve na svom mjestu (te datoteke moraju postojati, inače usmjerite varijable na prave staze):

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

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

3) uredite datotečne jezgre/tiny/core_build_options.h i promijenite:

#define TIMER_TO_USE_FOR_MILLIS 1 to#define TIMER_TO_USE_FOR_MILLIS 0

Ovo je vrlo važno, inače će IR prijemnik emitirati nule za svako dugme. Ova naredba konfigurira timer0 za funkciju millis () ostavljajući timer1 dostupnim IR biblioteci. Konačna skica će svejedno onemogućiti timer0 pa nećete imati dostupne funkcije millis () i delay (). Možda ćete umjesto toga imati dostupnu funkciju delayMicroseconds ().

Ovaj bootloader je minimalan, ali uključuje podršku za serijske objekte:

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

Možete imati konfiguraciju s ISP programatorom (arduino) i serijski na USB adapter povezanim istovremeno, tako da ne morate mijenjati žice prečesto:

Sada imamo instalirane i pravilno konfigurirane biblioteke i pokretačke programe, najteži posao je završen i možemo početi testirati stvari.

Korak 8: Paljenje programa za pokretanje i učitavanje skica

Toplo vam savjetujem da aktivirate detaljni ispis u okviru Arduino IDE postavki kako biste mogli shvatiti eventualne probleme.

Da biste pokrenuli bootloader u Attiny85, morate učitati primjer ISP -a na Arduino, a zatim odabrati programera Arduino kao ISP -a.

Sada postavite kondenzator od 10uF između pinova za resetiranje i uzemljenje na arduinu (nije potreban za proces snimanja, ali je potrebno prenijeti skice na attiny85).

Sada je arduino spreman za narezivanje pokretačkih programa i učitavanje skica. Samo trebate odabrati pravu ploču kompatibilnu s vašim stavom i zapaliti je.

Da biste učitali skicu u Attiny85, učitajte je u arduino IDE i kliknite na "Prenesi pomoću programatora".

VAŽNO: prilikom postavljanja skice postoje 3 koraka, sastavljanje, pisanje i provjera. Ako su kompilacija i pisanje uspješno radili, ali postupak provjere nije uspio, moguće je da bi skica ipak uspjela.

Korak 9: Kalibrirajte Attiny85 unutrašnji sat (preskočite ovo ako koristite kristal)

U slučaju da odlučite ne koristiti kristal od 16 Mhz, morate kalibrirati svoj attiny85 sat, pa će nam trebati pokretački program s dostupnim serijskim sučeljem, a mi ćemo koristiti knjižnicu tinytunera kako bismo dobili ispravnu kalibraciju.

Slijedite sljedeće korake

  • u okviru alata odaberite Arduino kao ISP programera
  • odaberite ploču "ATtiny85 @ 8MHz (unutrašnji oscilator; BPK onemogućen)"
  • Pretpostavljam da imate pripremljenu ISP vezu kako je opisano prije povezivanja. U suprotnom, povežite se
  • burn bootloader
  • ovaj bootloader je konfigurirao različite pinove za serijsko sučelje, koristite ovu konfiguraciju samo za trenutni bootloader

- PB4 (pin3 RX) na TX u FT232RL attiny85 - PB3 (pin2 TX) na RX u FT232RL attiny85 - GND (pin4) na GND na FT232RL budući da attiny85 već napaja arduino, ne morate se povezivati 5v na FT232RL, inače povežite: attiny85 VCC (pin8) na 5V na FT232RL

  • prenesite primjer sitnog tunera na attiny85
  • otvorite ekran program za nadgledanje serijske komunikacije: screen /dev /ttyUSB0 9600
  • resetirajte attiny85 povezujući RESET pin (pin1) na GND (samo trenutak), poruka dobrodošlice bi se trebala prikazati na prozoru ekrana
  • Nastavite slati pojedinačne znakove 'x' (bez povratka nosača; bez unosa linija) dok kalibracija ne završi
  • zabilježite negdje vrijednost kalibracije (OSCCAL = 0x). Ovo je vrijednost koju ćete morati prijaviti na konačnim skicama

Korak 10: Dekodirajte dugmad na daljinskom upravljaču

Sada je vrijeme da dekodiramo naše tipke na daljinskom upravljaču i dodijelimo ih posebnim potezima tipki na računaru, da biste to učinili slijedeći sljedeće korake:

  • odaberite ploču "ATtiny85 @ 16MHz (unutrašnji PLL; 4.3V BOD)" ako ne koristite kristal, "ATtiny85 @ 16 MHz (vanjski kristal; 4.3 V BOD" u suprotnom), a zatim je zapalite
  • učitajte skicu:
  • Ako ne koristite kristal, raskomentirajte red koji sadrži OSCCAL varijablu i dodijelite je vrijednosti koju ste pronašli prilikom kalibracije sata
  • Pretpostavljam da je senzor spojen na prethodno opisani način, inače ga spojite
  • Pretpostavljam i da je priključen serijski na usb adapter FT232RL, inače ga povežite
  • resetirajte attiny85 povezujući RESET pin (pin1) na GND (samo trenutak)
  • više puta pritisnite tipke na daljinskom upravljaču i provjerite prozor na ekranu, morate označiti posljednji broj za svaki zapis, svako dugme može proizvesti 2 različita broja

Primjer:

PRIMLJENO D44 3396 PRIMLJENO 544 1348

Označite 3396 i 1348 zajedno s gumbom koje ste upravo pritisnuli, tada morate odlučiti što želite učiniti s tim gumbom. Na primjer, mogao bih htjeti da to dugme šalje kôd multimedijskog ključa "Pojačaj", tada moram pronaći ID tog ključa. Da biste to učinili, preuzmite PDF:

Potražite odjeljak "Tastatura/stranica tastature" stranica 53 i upotrijebite brojeve u koloni ID upotrebe (odbijanje) za povezivanje dugmadi na daljinskom upravljaču sa kodovima tastature. U našem primjeru možemo vidjeti da je šifra ključa za "Pojačavanje": 128.

Uredite datoteku datoteku UsbKeyboard.h unutar biblioteke UsbKeyboard iz v-usb paketa koji smo prethodno instalirali i dodajte postojećim definicijama ako već ne postoji:

#define KEY_VOL_UP 128

Kada završimo sa svim dugmadima na daljinskom upravljaču i svim definicijama u datoteci UsbKeyboard.h su spremni, možemo prijeći na posljednji korak.

Korak 11: Učitajte konačnu skicu i nadajte se najboljem

Učitavam konačnu skicu i nadam se najboljem!
Učitavam konačnu skicu i nadam se najboljem!
Učitavam konačnu skicu i nadam se najboljem!
Učitavam konačnu skicu i nadam se najboljem!

Sada imamo dekodirane sve daljinske tipke, datoteka UsbKeyboard.h ispunjena je našim šiframa ključeva, pa sada možemo učitati konačnu skicu u arduino IDE:

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

Ova datoteka je tačna datoteka koju koristim za svoj prijemnik i radi na 2 različita daljinska upravljača, pa je jasno da ćete je morati ažurirati kako biste radili s vašim daljinskim upravljačem.

Ako ne koristite kristal, raskomentirajte red koji sadrži OSCCAL varijablu i dodijelite je vrijednosti koju ste pronašli prilikom kalibracije sata

Primijetite da u funkciji petlje postoji mnogo iskaza poput ovog:

if (results.value == 3405 || results.value == 1357) {// strelica gore

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

}

Morate stvoriti vlastite izjave, jednu po dugmetu na daljinskom upravljaču. U "if" uvjetu morate unijeti results.value vrijednosti koje ste pronašli dekodirajući vaš daljinski upravljač, a kao argument metode UsbKeyboard.sendKeyStroke morate staviti jedan od već definiranih kodova ključeva u datoteku UsbKeyboard.h.

Uvjet "if (lastStroke! = Results.value)" je potreban jer neki daljinski upravljači šalju isti kod dva puta po pogotku, što sprječava drugi pogodak. Nisam potpuno siguran i to može ovisiti o IC protokolu koji je programiran na vašem daljinskom upravljaču (nisam baš stručnjak za IC protokole), ali prema mom iskustvu s vlastitim daljinskim upravljačima, svaki gumb može proizvesti 2 različita koda i dok pritisnete i držite dugme, on šalje isti kôd, ali ako ponovo pritisnete dugme, šalje drugi. Čini se da se kodovi šalju na zamjenski način, pretpostavljam da je to standardni način da znate koliko ste puta zaista pritisnuli dugme.

U redu, skoro smo završili, samo postavite konačnu skicu, povežite je s računarom i pogledajte kako će proći.

Za ovaj korak, bolje je ako isključite arduino i USB na serijski adapter i tek tada priključite USB u priključak za računalo (u slučaju da nešto pođe po zlu, vaše će se kolo lakše otkloniti pogreške).

Ako je sve radilo dobro, kada otvorite terminal i pošaljete naredbu dmesg, trebali biste vidjeti nešto slično prvoj slici na ovom koraku. Ako je bilo problema, trebali biste imati greške poput onih na drugoj slici i morate započeti otklanjanje grešaka u krugu i/ili softveru. Jedan od izvora početnih grešaka koje sam imao je USB čvorište koje ne bi radilo s mojim IC prijamnikom (iako su drugi radili) … pa je za ovaj posljednji korak bolje priključiti IC prijemnik direktno na vaš priključak za računalo. Eventualne greške moglo bi biti teško pronaći, ali na kraju biste, poput mene, naučili mnogo i cijena koju morate platiti, uvjeravam vas.

To je sve, ljudi, javite mi ako primijetite greške u ovom uputstvu i uživate u svom potpuno novom IR USB prijemniku!

Preporučuje se: