Sadržaj:

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

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

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

UPOZORENJE, OVO UPUTSTVO JE POSTALO Zastarijelo

Knjižnica v-usb dizajnirana je za rad s USB 1.1 protokolom koji danas rijetko postoji. Dolaskom USB3-a imat ćete više od glavobolje pokušavajući natjerati v-usb uređaje da rade. 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 timera za povremeno resetiranje ploče također nije pomoglo pa sam odustao od v-usba.

Učinite si uslugu i nemojte nastaviti s ovim uputama, osim ako je to u obrazovne svrhe. Preporučujem da umjesto toga 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.

Pozdrav tvorci! ovo je uputstvo za izgradnju ispravnog USB IR prijemnika pomoću mikrokontrolera Attiny85. Ovaj sam projekt 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 s bilo kojim IC 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 njegovu jezgru stavova
  • Rowdy Dog softver za njihovu knjižnicu 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 u komentarima uputnog https://www.instructables.com/id/Attiny-IR-librar… koda na https://www.instructables.com/id/Attiny-IR -knjižnica …

Ponekad nije lako pronaći pravog vlasnika knjižnice, pa u slučaju pogreš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 dosta probnih i pogreške Došao sam do potpunog vodiča za izgradnju ispravnog USB IR prijemnika koji zapravo radi prilično dobro.

Glavni izvori informacija koje sam slijedio:

  • 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

  • Nemam programera AVR ISP -a 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 raditi drugačije.
  • postoje i druge IR knjižnice, ali nisam ih mogao natjerati da rade čak ni s arduinom. Uzmite u obzir da sam počeo s ograničenim znanjem o IR knjižnicama. 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 knjižnicu koju je Seejaydee ponudila 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 podatkovnih vodova, radi izvan kutije pa se nisam petljao druge konfiguracije.
  • Možete koristiti kristal od 16 Mhz ili biblioteku tinytuner za kalibriranje unutarnjeg sata vašeg attiny85. Snažno savjetujem uporabu kristala, mnogo je stabilniji i vjerojatno će vas poštedjeti mnogo glavobolje.
  • Ovdje koristim dva različita pokretačka programa za attiny85:

a) Rowdy Dog Software verzija, ima integrirano serijsko sučelje koje je jako cool i vrlo je malo pa imate više prostora za svoj program i druge knjižnice. 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 knjižnica pa sam nakon nekog vremena odlučio koristiti ovu jezgru samo za dekodiranje udaljenih tipki i kalibriranje 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. Koristim ovu jezgru u završ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čunalo s instaliranim GNU/Linuxom i arduino IDE -om ispravno konfiguriranim, koristim arduino IDE 1.8.0
  • infracrveni daljinski za testiranje vašeg uređaja (čak će i usrani poput onih koji se nalaze u arduino starter kompletima raditi)
  • multimetar za otklanjanje pogrešaka na ploči (nadam se da vam neće trebati, sretno!)

Popis 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 zener diode od 3,6 V 0,5 W
  • 1 USB muški priključak tipa A
  • 1 iglica sa 6 pinova za programiranje i otklanjanje pogrešaka na ploči.
  • 1 IR senzor TSOP31238
  • puno kave 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 njezinu 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 kabel i lemite pinove na 4 žice unutar USB kabela:

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

Držite sve zajedno vrućim ljepilom.

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

Možete ostaviti sve povezane zajedno kako biste mogli snimati različite pokretačke programe, učitavati skice i provjeriti serijski port bez promjene žica, Da biste to učinili, sve spojite slijedeći ove upute:

ISP programer (Arduino): to 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) s izvlačenjem (4.6k na VCC) na pin10 u arduinu
  • attiny85 VCC na 5V u arduinu
  • attiny85 GND prema GND u arduinu

USB na serijski adapter (FT232RL): to nam omogućuje provjeru serijskog porta

  • attiny85 PB0 (pin5 RX) na TX u FT232RL
  • attiny85 PB2 (pin7 TX) do 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 spojite: attiny85 VCC (pin8) na 5V na FT232RL

USB na serijski adapter (FT232RL) samo za kalibraciju sata (samo za pokretački program "ATtiny85 @ 8MHz (unutarnji oscilator; BOD onemogućen)")

  • PB4 (pin3 RX) do 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 spojite: 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 22 pF.

Filtrirajte Attiny85 VCC s kondenzatorima od 0,1 uF i 10 uF koji ih povezuju paralelno s 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 (svi su uzemljeni spojeni zajedno)
  • D- (bijela žica) spojena na attiny85 PB0 (pin5) kroz 68R otpornik, spojite je i na masu preko 3,6V 0,5W zenera i izvucite je do VCC s 1,5K otpornikom
  • D+ (zelena žica) spojena na PB2 preko 68R otpornika, spojite je na masu preko 3,6V 0,5W zenera
  • 5V, možete ga ostaviti nepovezanim jer u ovoj fazi sve napaja Arduino, inače ga spojite 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

Konačni dizajn
Konačni dizajn
Konačni dizajn
Konačni dizajn
Konačni dizajn
Konačni dizajn

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

Urezao sam vlastitu ploču i jako 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 odrežite dasku mojim škarama za kos.

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 svog izgleda ili jednostavno upotrijebite moj otisak na ploči za urezivanje ploče.

Korak 4: Suočavanje sa softverom

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

Za ovo nam trebaju najmanje 2 knjižnice (jedna više ako ne koristite kristal) plus 2 pokretačka programa. Kad sam započeo ovaj projekt, testirao sam neke knjižnice, ponekad nisu radile, a često jednostavno nisu bile konfigurirane za rad s Attiny85 -om (još to nisam znao). Tada sam ipak našao probleme s knjižnicama / pokretačkim programima koji se preklapaju. Konačno, morao sam se nositi s priličnom količinom pogrešaka kada sam spojio završni krug na računalo. Nisam imao ovaj vodič, pa mislim da bi bilo 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 knjižnica:

  • v-usb za arduino knjižnicu: ova knjižnica omogućuje da računalo prepozna mikrokontroler kao HID USB tipkovnicu, a mi ćemo ga koristiti za slanje tipki na računalo. Ova knjižnica treba 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 knjižnica radi bez kutije.
  • Attiny-IR-biblioteka za interakciju s IR senzorom. Ova knjižnica radi bez kutije.

Također su nam potrebna 2 pokretačka programa:

  • Verzija softvera za pse s 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 mjerač vremena u timer0.
  • Mellis verzija, stabilan bootloader koji ćemo koristiti u završnoj fazi. Ovo radi izvan okvira.

Korak 5: Instalacija i konfiguracija V-usb knjižnice

Preuzmite biblioteku s https://code.google.com/archive/p/vusb-for-arduin… Raspakirajte datoteku i kopirajte biblioteke mapa/UsbKeyboard u mapu knjižnica sketchbook-a.

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 "usklađena s pokretanjem" (inače neće raditi multimedijski ključevi), promijenite i sljedeće:

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

i

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

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:

promijeniti:

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

do

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

Da biste dopustili promjenu kodova ključeva dalje od 101:

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

i

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

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

usbdrv.husbdrv.cUsbKeyboard.h

i svaki put kada vidite PROGMEM dodajte "const" ispred naziva vrste 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 knjižnica sketchbook -a:

UsbKeyboard konfiguriran za attiny85

Edit: nedavno sam otkrio da se Alejandro Leiva (https://github.com/gloob) pobrinuo za ovu knjižnicu i čini se da i ona dobro funkcionira. Također možete isprobati njegovu verziju s potrebnim izmjenama koje sam napravio kako bi funkcionirala s attinyjem, pa ako to želite provjeriti, samo je raspakirajte u mapu knjižnica sketchbook -a.

UsbKeyboard konfiguriran za attiny85 (verzija Alejandra Leiva)

Korak 6: Instaliranje knjižnica Attiny-IR i Tinytuner

A) Attiny-IR biblioteka:

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

B) Tinytuner biblioteka:

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

Još niste uvjereni? ok, preuzmite biblioteku shttps://storage.googleapis.com/google-code-archive…, zatim je raspakirajte u svoju mapu knjižnica sketchbook.

Završili smo s knjižnicama, 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 izvrsna je jezgra, vrlo mala i s integriranim serijskim sučeljem, ali moj daljinski upravljač se nakon nekog vremena srušio pa ćemo koristiti ovaj pokretački program samo za kalibriranje attiny85 unutarnjeg sata i za dekodiranje našeg daljinskog upravljača gumbi.

Znam da postoje dostupne knjižnice koje daju attiny85 serijske mogućnosti, ali tada ćete morati prilagoditi knjižnice koje koriste serijski objekt … Više mi se sviđa ovaj postupak.

Počnimo s instalacijom:

A) Mellisov bootloader:

samo otvorite Arduino IDE postavke i dodajte URL -ove dodatnih 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 iz Mellisa. Sada biste trebali vidjeti Arduino ID ploče ATtiny25/45/85 i ATtiny24/44/84.

B) Sićušni pokretač softvera Rowdy Dog Software:

preuzmite pokretački program s

Raspakirajte datoteku i kopirajte sićušnu 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/

promijenite 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

To je vrlo važno jer će u protivnom IC prijemnik za svaku tipku izlaziti nule. Ova naredba konfigurira timer0 za funkciju millis () ostavljajući timer1 dostupnim IR biblioteci. Konačna skica ionako će 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 serijskim na USB adapterom spojenim istovremeno tako da ne morate mijenjati žice prečesto:

Sada imamo instalirane i ispravno konfigurirane knjižnice i pokretačke programe, najteži posao je dovršen i možemo početi testirati stvari.

Korak 8: Snimanje 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 10uF kondenzator 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 snimanje pokretačkih programa i učitavanje skica. Vi samo trebate odabrati pravu ploču kompatibilnu s vašim stavovima i zapaliti je.

Za učitavanje skice u Attiny85, učitajte je u arduino IDE i kliknite "Prenesi pomoću programatora".

VAŽNO: prilikom učitavanja 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 unutarnji sat Attiny85 (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 (unutarnji oscilator; BOD onemogućen)"
  • Pretpostavljam da imate pripremljenu ISP vezu kao što je opisano prije povezivanja, u suprotnom povežite
  • spali bootloader
  • ovaj bootloader je konfigurirao različite pinove za serijsko sučelje, koristite ovu konfiguraciju samo za trenutni bootloader

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

  • prenesite primjer malenog tunera na attiny85
  • otvorite zaslon za nadzor serijske komunikacije: screen /dev /ttyUSB0 9600
  • resetirajte attiny85 povezujući pin za resetiranje (pin1) na GND (samo trenutak), poruka dobrodošlice trebala bi se prikazati na prozoru zaslona
  • Nastavite slati pojedinačne znakove "x" (bez povratka nosača; bez unosa retka) dok kalibracija ne završi
  • zabilježiti negdje vrijednost kalibracije (OSCCAL = 0x). To je vrijednost koju ćete morati prijaviti na posljednjim skicama

Korak 10: Dekodirajte gumbe na daljinskom upravljaču

Sada je vrijeme da dekodiramo naše gumbe na daljinskom upravljaču i dodijelimo ih posebnim potezima tipki na računalu, a da biste to učinili, slijedite sljedeće korake:

  • odaberite ploču "ATtiny85 @ 16MHz (unutarnji 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 varijablu OSCCAL i dodijelite mu vrijednost 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 spojite
  • 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 zabilježiti posljednji broj za svaki zapis, svaki gumb može proizvesti 2 različita broja

Primjer:

PRIMLJENO D44 3396 PRIMLJENO 544 1348

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

Potražite odjeljak "Tipkovnica/Stranica tipkovnice" stranica 53 i upotrijebite brojeve u stupcu Usage ID (Dec) za povezivanje gumba na daljinskom upravljaču s kodovima tipkovnice. U našem primjeru možemo vidjeti da je ključni kod 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

Kad završimo sa svim gumbima 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 tipke za daljinsko upravljanje, datoteka UsbKeyboard.h ispunjena je našim ključevima, tako da sada možemo učitati konačnu skicu u arduino IDE:

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

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

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

Primijetite da u funkciji petlje postoji mnogo izraza 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 gumbu 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, a 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 (zapravo nisam 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 gumb, on šalje isti kôd, ali ako ponovno pritisnete gumb, š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 gumb.

U redu, skoro smo gotovi, samo prenesite konačnu skicu, povežite je s računalom i pogledajte kako ide.

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 se krug 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 pogreške poput onih na drugoj slici i morate početi otklanjati pogreške u krugu i/ili softveru. Jedan od izvora početnih pogrešaka koje sam imao bilo 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 izravno na vaš priključak za računalo. Eventualne pogreš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čeni: