Turinys:

ATtiny85 IR USB imtuvas: 11 žingsnių (su nuotraukomis)
ATtiny85 IR USB imtuvas: 11 žingsnių (su nuotraukomis)

Video: ATtiny85 IR USB imtuvas: 11 žingsnių (su nuotraukomis)

Video: ATtiny85 IR USB imtuvas: 11 žingsnių (su nuotraukomis)
Video: LDmicro 20: решен вопрос жидкокристаллического дисплея I2C (программирование ПЛК микроконтроллера с помощью LDmicro) 2024, Liepa
Anonim
ATtiny85 IR USB imtuvas
ATtiny85 IR USB imtuvas

ĮSPĖJIMAS, ŠI INSTRUKCIJA TAPO NEPRIKLAUSOMA

„V-usb“biblioteka sukurta dirbti su USB 1.1 protokolu, kurio šiais laikais beveik nėra. Atėjus USB3, turėsite daugiau nei galvos skausmą bandydami priversti „v-usb“įrenginius veikti. Pakeitus daugialypės terpės centrą, iškilo daug stabilumo problemų ir, nors imtuvas veikia, po kurio laiko jis nustoja veikti. Man nesisekė bandyti ją ištaisyti. Aš taip pat sukūriau „atmega328p“versiją, tačiau ši turėjo tas pačias problemas. Naudojant laikrodžio laikmatį periodiškai iš naujo nustatyti lentą, taip pat nepadėjo, todėl atsisakiau „v-usb“.

Padarykite sau paslaugą ir nesinaudokite šia pamoka, nebent ji skirta švietimo tikslams. Rekomenduoju pirkti lusto modulį ATmega 32U4, kuriame jau yra integruota USB sąsaja, ir vadovaukitės šiuo vadovu:

www.sparkfun.com/tutorials/337

Tada įmeskite IR jutiklį TSOP31238 ir viskas gerai.

Sveiki kūrėjai! tai yra instrukcija, kaip sukurti veikiantį USB IR imtuvą naudojant „Attiny85“mikrovaldiklį. Aš pradėjau šį projektą, kad pašalinčiau kai kurių IR nuotolinio valdymo pultų palaikymą (bent jau visišką palaikymą) GNU/Linux OS. Vadovaudamiesi šiomis instrukcijomis, galite sukurti programuojamą USB IR imtuvą, kuris už keletą dolerių veikia su bet kokiu IR nuotolinio valdymo pultu.

Visų pirma, šis nurodymas neegzistuotų be sunkaus žmonių, sukūrusių bibliotekas, kurias naudoju čia:

  • Davidas A. Mellisas už savo atminimo šerdį
  • „Rowdy Dog“programinė įranga jų bibliotekai „TinyTuner“https://storage.googleapis.com/google-code-archiv…
  • „Rowdy Dog“programinė įranga jų mažam įkrovos įkrovikliui
  • Rancidbacon (https://rancidbacon.com/) už savo „arduino“prievadą „v-usb“bibliotekoje (https://code.google.com/archive/p/vusb-for-arduino/downloads)
  • žr. -biblioteka…

Kartais nėra lengva rasti tinkamą bibliotekos savininką, todėl jei suklydau, palikite komentarą ir kuo greičiau išspręsiu problemą.

Šis vadovas egzistuoja, nes neradau išsamaus vadovėlio/vadovo, kuris veiktų iš dėžutės (jis gali būti, bet negalėjau jo rasti), todėl surinkau visą žiniatinklyje prieinamą informaciją ir po daugybės bandymų ir klaidos Aš sugalvojau pilną vadovą, kaip sukurti veikiantį USB IR imtuvą, kuris iš tikrųjų veikia gana gerai.

Pagrindiniai informacijos šaltiniai, kuriais sekiau:

  • 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 žingsnis: kai kurios aplinkybės

  • Aš neturiu AVR ISP programuotojo ir tikrai nenoriu jo nusipirkti, todėl naudoju „Arduino“programuoti attiny85
  • Man nerūpi jokia kita OS, išskyrus GNU/Linux, todėl nežinau, ar tai veiks kitaip.
  • yra ir kitų IR bibliotekų, bet negalėjau priversti jų dirbti net su arduino. Tačiau pagalvokite, kad pradėjau turėdamas ribotas žinias apie IR bibliotekas. Galbūt galėčiau priversti juos veikti dabar, įgijęs patirties sprendžiant nemažai problemų. Bet kokiu atveju aš buvau pasimetęs ir beviltiškas, kol radau Seejaydee pateiktą biblioteką, ir aš nuo šiol ja naudojuosi (didelis ačiū žmogui!).
  • Yra ir kitų aparatūros konfigūracijų, bet aš naudojau tik tą, kuri naudoja 5 V maitinimą „attiny85“, ir du 3,6 V 0,5 W „Zener“diodus, skirtus įtempti duomenų linijas, jis veikia iš dėžutės, todėl aš nesu kitos konfigūracijos.
  • Galite naudoti 16Mhz kristalą arba naudoti tinytuner biblioteką, kad sukalibruotumėte savo vidinį laikrodį85. Aš primygtinai patariu naudoti kristalą, jis yra daug stabilesnis ir greičiausiai jums sutaupys daug galvos skausmo.
  • Čia naudoju du skirtingus „attiny85“įkrovos įkroviklius:

a) „Rowdy Dog“programinės įrangos versija, joje yra labai šauni ir labai maža serijinė sąsaja, todėl turite daugiau vietos savo programai ir kitoms bibliotekoms. Problema ta, kad dėl tam tikrų priežasčių, nors ir veikia gana gerai, po kurio laiko USB įrenginys buvo atjungtas (problemas galite rasti su komanda dmesg). Nežinau, ar tai yra branduolio problema, ar mišrus branduolio ir pasirinktų bibliotekų derinys, todėl po kurio laiko nusprendžiau naudoti šį branduolį tik norėdamas iššifruoti nuotolinius klavišus ir kalibruoti laikrodį (kai nenaudoju 16Mhz kristalas). Po to aš tiesiog įrašau „Mellis“įkrovos tvarkyklę ir įkeliu galutinį eskizą, kuriame nenaudojama serijinė sąsaja.

b) „Mellis“versija, stabili įkrovos tvarkyklė, aš tai panaudojau daugelyje projektų. Aš visada naudočiau šį įkrovos tvarkyklę, jei jame būtų nuosekli sąsaja. Aš naudoju šį branduolį galutiniame eskize, iššifravęs visus nuotolinio valdymo pulto klavišus.

2 žingsnis: Pradėkime nuo aparatūros

Pradėkime nuo aparatūros
Pradėkime nuo aparatūros
Pradėkime nuo aparatūros
Pradėkime nuo aparatūros
Pradėkime nuo aparatūros
Pradėkime nuo aparatūros

Jums reikalingi įrankiai:

  • su arduino suderinama lenta
  • serijinis į USB adapteris, skirtas iššifruoti nuotolinius raktus (tiesiog naudokite FT232RL)
  • kompiuteris su įdiegtu GNU/Linux ir tinkamai sukonfigūruotas arduino IDE, aš naudoju arduino IDE 1.8.0
  • IR nuotolinio valdymo pultas, skirtas jūsų įrenginiui išbandyti (net ir toks kraupus, koks yra arduino pradiniuose rinkiniuose, veiks)
  • multimetras, skirtas jūsų plokštės derinimui (tikiuosi, kad jums to neprireiks, sėkmės!)

Medžiagų sąrašas:

  • 1
  • 2 68R rezistoriai
  • 1 1,5K rezistorius
  • 1 4,7K rezistorius
  • 1 16Mhz kristalas
  • 1 22pF kondensatorius
  • 1 0,1uF kondensatorius
  • 1 10uF kondensatorius
  • 2 3,6 V 0,5 W „Zener“diodai
  • 1 A tipo USB jungtis
  • 1 juostelės smeigtukas su 6 kaiščiais, skirtas programuoti ir derinti plokštę.
  • 1 IR jutiklis TSOP31238
  • daug kavos, kad neužmigtumėte

Prieš lituodami galutinę plokštę, tikriausiai norėtumėte išbandyti bandomosios plokštės prototipą, kad ją sukūrus pakaktų laikytis schemos, pridėtos prie šios instrukcijos.

Norėdami prijungti „attiny85“prie kompiuterio, galutiniame projekte naudojama A tipo USB jungtis, kuri yra įterpta į plokštę, tačiau prototipui turėsite pagaminti USB kabelį, kurį galėsite prijungti prie duonos lentos:

Lituokite į nedidelį 4 kaiščių perforatorių gabalėlį, tada perpjaukite seną USB kabelį ir lituokite kaiščius prie 4 laidų, esančių USB kabelio viduje:

  • raudona yra VCC (5V)
  • juoda yra GND
  • balta yra D-
  • žalia yra D+

Viską laikykite karštais klijais.

Dabar prie attiny85 turime prijungti ISP programuotoją („Arduino“), USB prie nuoseklaus adapterio (FT232RL) ir IR jutiklį.

Galite palikti visus prijungtus, kad galėtumėte įrašyti įvairius įkrovos įkėlėjus, įkelti eskizus ir patikrinti nuoseklųjį prievadą nekeisdami laidų, Norėdami tai padaryti, prijunkite viską pagal šias instrukcijas:

ISP programuotojas („Arduino“): tai leidžia mums įrašyti įkrovos įkėlėjus ir įkelti eskizus

  • attiny85 PB0 (pin5) į pin11 (MOSI) arduino
  • attiny85 PB1 (pin6) į pin12 (MISO) arduino
  • attiny85 PB2 (kaištis 7) į kaištį 13 (SCK) „arduino“
  • „attiny85 RESET“(kaištis 1) su prisitraukimu (nuo 4,6 tūkst. VCC) iki kaiščio 10 „arduino“
  • attiny85 VCC to 5V in arduino
  • attiny85 GND į GND in arduino

USB į nuoseklųjį adapterį (FT232RL): tai leidžia patikrinti nuoseklųjį prievadą

  • attiny85 PB0 (pin5 RX) į TX FT232RL
  • attiny85 PB2 (pin7 TX) į RX FT232RL
  • attiny85 GND (pin4) į GND FT232RL
  • kadangi „attiny85“jau maitinamas „arduino“, jums nereikia prijungti 5 V prie FT232RL, kitaip prijunkite: „attiny85 VCC“(kaištis 8) prie 5 V „FT232RL“

USB į nuoseklųjį adapterį (FT232RL) tik laikrodžio kalibravimui (tik įkrovos įkrovikliui „ATtiny85 @ 8MHz (vidinis osciliatorius; BOD išjungtas)“)

  • PB4 (pin3 RX) į TX FT232RL attiny85
  • PB3 (pin2 TX) į RX FT232RL attiny85
  • GND (pin4) į GND FT232RL
  • kadangi „attiny85“jau maitinamas „arduino“, jums nereikia prijungti 5 V prie FT232RL, kitaip prijunkite: „attiny85 VCC“(kaištis 8) prie 5 V „FT232RL“

Jei naudojate 16Mhz kristalą, prijunkite jį prie „Attiny85“kaiščių PB3 (pin2) ir PB4 (pin3) ir prijunkite kiekvieną kaištį prie GND, taip pat per 22pF dangtelį.

Filtruokite „Attiny85 VCC“su 0,1uF ir 10uF kondensatoriais, jungiančiais juos lygiagrečiai su GND

Prijunkite IR jutiklio išvesties kaištį prie attiny85 PB1 (kaištis 6), įjunkite.

Sukurkite ir prijunkite USB sąsają:

  • GND (juodas laidas): prijunkite jį prie bendro GND (visi pagrindai yra sujungti)
  • D- (balta viela), prijungta prie attiny85 PB0 (pin5) per 68R rezistorių, taip pat prijunkite jį prie žemės per 3,6 V 0,5 W „Zener“ir patraukite iki VCC su 1,5 K rezistoriumi
  • D+ (žalias laidas) prijungtas prie PB2 per 68R rezistorių, prijunkite jį prie žemės per 3,6 V 0,5 W „Zener“
  • 5 V, galite palikti jį neprijungtą, nes šiuo metu viskas įjungiama „Arduino“, kitaip prijunkite jį prie „attiny85 VCC“

Zenerio diodai yra sujungti taip, kad anodai būtų susieti su GND, o katodai-su duomenų linijomis D+ ir D-.

3 žingsnis: galutinis dizainas

Galutinis dizainas
Galutinis dizainas
Galutinis dizainas
Galutinis dizainas
Galutinis dizainas
Galutinis dizainas

Galutiniam dizainui galite naudoti perforatorių su skylių komponentais arba išgraviruoti savo plokštę ir naudoti smd komponentus. Norėdami sužinoti, kaip išgraviruoti lentą, tiesiog „Google“ją rasite internete.

Aš išgraviravau savo lentą ir esu labai patenkintas galutiniais rezultatais (maža, stabili ir tvirta plokštė). Taip, aš žinau, kad pjūvis yra nemalonus, bet aš negalėjau naudoti jokio elektrinio įrankio taip vėlai vakare ir aš tiesiog supjaustykite lentą mano skardinėmis žirklėmis.

Beje, pėdsakai vaizduose nėra plikas varis, jie buvo apdoroti bjauria chemine medžiaga, kuri šiek tiek skardina varį (įtariama, kad jis sukelia vėžį, todėl naudokite jį labai atsargiai, latekso rutuliukus ir dulkių kaukę):

Naudokite aukščiau pateiktas schemas, kad sukurtumėte savo išdėstymą, arba galite tiesiog naudoti mano plokštės pėdsaką, kad išgraviruotumėte savo plokštę.

4 žingsnis: Darbas su programine įranga

Šio projekto grandinė yra labai paprasta, o programinė įranga reikalauja daugiau pastangų.

Kad tai veiktų, mums reikia mažiausiai 2 bibliotekų (dar vienos, jei nenaudojate kristalo) ir dar 2 įkrovos tvarkyklių. Kai pradėjau šį projektą, išbandžiau kai kurias bibliotekas, kartais jos neveikė ir daug kartų tiesiog nebuvo sukonfigūruotos dirbti su „Attiny85“iš dėžutės (aš to dar nežinojau). Tada radau problemų, susijusių su bibliotekų / įkrovos įkroviklių sutapimais. Galiausiai, kai prijungiau galutinę grandinę prie kompiuterio, turėjau susidoroti su daugybe klaidų. Tačiau neturėjau šio vadovo, todėl manau, kad jums viskas gerai, tiesiog atlikite šioje instrukcijoje nurodytus veiksmus, jei tai padarysite nepadarę klaidų, jums turėtų būti gerai:)

Dabar turime įdiegti ir sukonfigūruoti kelias bibliotekas:

  • „v-usb“, skirtas „arduino“bibliotekai: ši biblioteka leidžia kompiuteriui atpažinti mikrovaldiklį kaip HID USB klaviatūrą, ir mes jį naudosime, norėdami nusiųsti klavišų paspaudimus į kompiuterį. Šiai bibliotekai reikia tam tikrų pakeitimų, kad ji būtų suderinama su attiny85
  • tinytuner biblioteką tik tuo atveju, jei nenaudosite 16Mhz kristalų. Tada turėsite kalibruoti vidinį mikrovaldiklio laikrodį. Ši biblioteka veikia iš dėžutės.
  • „Attiny-IR“biblioteka, skirta sąveikai su IR jutikliu. Ši biblioteka veikia iš dėžutės.

Mums taip pat reikia 2 įkrovos įkroviklių:

  • Šunų programinės įrangos versija su serijine sąsaja. Šiam įkrovos įkrovikliui reikia šiek tiek patobulinti, kad jis veiktų su „attiny85“, nes jis naudoja „timer1“funkcijai „millis“() ir neveiks su IR biblioteka. Turime pakeisti laikmatį į laikmatį0.
  • „Mellis“versija, stabilus įkrovos įkroviklis, kurį naudosime paskutiniame etape. Tai veikia iš dėžutės.

5 veiksmas: „V-usb“bibliotekos diegimas ir konfigūravimas

Atsisiųskite biblioteką iš https://code.google.com/archive/p/vusb-for-arduin… Išpakuokite failą ir nukopijuokite aplankų bibliotekas/„UsbKeyboard“į eskizų knygų bibliotekų aplanką.

Dabar turite redaguoti keletą failų, kad jie būtų suderinami su ATtiny85 (jis sukonfigūruotas dirbti su arduino):

A) redaguoti usbconfig.h:

„Hardware Config“pakeitime:

#define USB_CFG_IOPORTNAME D##apibrėžti USB_CFG_IOPORTNAME B

ir

#define USB_CFG_DMINUS_BIT 4to#apibrėžti USB_CFG_DMINUS_BIT 0

„Neprivalomos aparatūros konfigūracijos“pakeitime:

#define USB_CFG_PULLUP_IOPORTNAME D##define USB_CFG_PULLUP_IOPORTNAME B

Norėdami sukurti pilną „įkrovos reikalavimus atitinkančią HID“specifikaciją (kitaip jokie daugialypės terpės raktai neveiks), taip pat pakeiskite:

#define USB_CFG_INTERFACE_SUBCLASS 0 // Bootto#define USB_CFG_INTERFACE_SUBCLASS 0x01 // Įkrovimas

ir

#define USB_CFG_INTERFACE_PROTOCOL 0 // Klaviatūra#apibrėžti USB_CFG_INTERFACE_PROTOCOL 0x01 // Klaviatūra

Pasirinktinai taip pat galite pakeisti gamintoją ir įrenginio pavadinimą taip:

#define USB_CFG_VENDOR_NAME

#define USB_CFG_DEVICE_NAME

B) redaguoti „UsbKeyboard.h“:

pakeisti:

Uostas = 0; // TODO: Tik USB kaiščiams? DDRD | = ~ USBMASK;

į

PORTB = 0; // TODO: Tik USB kaiščiams? DDRB | = ~ USBMASK;

Taip pat pakeiskite daugiau nei 101 raktų kodus:

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

ir

0x29, 0x65, // USAGE_MAXIMUM (klaviatūros programa) iki: 0x29, 0xE7, // USAGE_MAXIMUM (klaviatūros programa)

Taip pat gali tekti redaguoti šiuos 3 failus:

usbdrv.husbdrv.cUsbKeyboard.h

ir kiekvieną kartą, kai pamatysite, kad PROGMEM prieš kintamojo tipo pavadinimą prideda „const“(pvz., PROGMEN char usbHidReportDescriptor [35] ==> PROGMEM const char usbHidReportDescriptor [35])

Jei tai neaišku, apsilankykite

Galite išvengti visų šių pakeitimų, jei tiesiog atsisiųsite pridėtą biblioteką (visus šiuos pakeitimus padariau pats) ir tiesiog ištraukite ją į eskizų knygų bibliotekų aplanką:

„USB“klaviatūra, sukonfigūruota „attiny85“

Redaguoti: neseniai atradau, kad Alejandro Leiva (https://github.com/gloob) buvo pasirūpinta šia biblioteka ir, atrodo, gerai veikia. Taip pat galite išbandyti jo versiją su reikiamais pakeitimais, kuriuos padariau, kad ji veiktų su attiny, taigi, jei norite tai patikrinti, tiesiog ištraukite ją į savo eskizų knygų bibliotekų aplanką.

„USB“klaviatūra, sukonfigūruota „attiny85“(„Alejandro Leiva“versija)

6 žingsnis: „Attiny-IR“ir „Tinytuner“bibliotekų diegimas

A) „Attiny-IR“biblioteka:

atsisiųskite jį iš https://drive.google.com/open?id=0B_w9z88wnDtFNHlq…, tada išpakuokite jį į eskizų knygelių bibliotekų aplanką.

B) „Tinytuner“biblioteka:

Tai reikalinga tik tuo atveju, jei nenaudojate 16Mhz kristalų, tačiau patikėkite manimi, nors jis veikia ir be kristalo, tačiau su juo yra daug stabilesnis ir kainuoja kelis centus, todėl laikykitės paprastumo, naudokite kristalą ir praleiskite šią biblioteką.

Dar neįtikino? gerai, atsisiųskite biblioteką iš https://storage.googleapis.com/google-code-archive…, tada išpakuokite ją į eskizų knygelių bibliotekų aplanką.

Baigėme naudotis bibliotekomis, o dabar pradedame diegti įkrovos tvarkykles.

7 veiksmas: įkrovos tvarkyklių diegimas ir konfigūravimas

Mes ketiname įdiegti du įkrovos įkroviklius, „Mellis“, mano nuomone, yra stabilesnis, ir mes jį naudosime paskutiniame eskize. Kitas, sukurtas „Rowdy Dog Software“, yra nuostabus branduolys, labai mažas ir turintis integruotą nuosekliąją sąsają, tačiau po kurio laiko su juo sugedo mano nuotolinio valdymo pultas, todėl šį įkrovos įkroviklį naudosime tik tam, kad sukalibruotume vidinį „attiny85“laikrodį ir iššifruotume nuotolinio valdymo pultą. mygtukus.

Žinau, kad yra turimų bibliotekų, kurios suteikia „attiny85“serijines galimybes, bet tada turėsite patobulinti bibliotekas, kuriose naudojamas serijinis objektas … Man ši procedūra labiau patinka.

Pradėkime nuo diegimo:

A) „Mellis“įkrovos tvarkyklė:

tiesiog atidarykite „Arduino IDE“nuostatas ir pridėkite „Papildomų lentų tvarkyklės URL:

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

Tada atidarykite „Arduino IDE“plokščių tvarkyklę ir ieškokite „attiny“, įdiekite plokštes iš „Mellis“. Dabar turėtumėte pamatyti „Arduino ID“ATtiny25/45/85 ir ATtiny24/44/84 plokštes.

B) „Rowdy Dog“programinės įrangos mažasis įkrovos įkroviklis:

atsisiųskite įkrovos tvarkyklę iš

Išpakuokite failą ir nukopijuokite mažą aplanką eskizų knygelėje/techninėje įrangoje (sukurkite šį aplanką, jei jo dar nėra). tada pereikite prie aplanko eskizų knyga/aparatūra/tiny/avr/ir:

1) nukopijuokite failą Prospective Boards.txt į failą boards.txt

2) redaguokite failą platform.txt ir atlikite keletą pakeitimų:

Pašalinkite kintamąjį „compiler.path“ir palikite jį nukreipdami į aparatūros/įrankių/avr/bin/aplanką, esantį jūsų „arduino“diegimo aplanke:

compiler.path = {PATH_TO_YOUR_ARDUINO_FOLDER}/aparatinė įranga/įrankiai/avr/bin/

pakeisti taip pat kompiliatorių. S.flags = -c -g -assembler-with-cpptocompiler. S.flags = -c -g -x surinkėjas-su-cpp

Tada pakeiskite šiuos kintamuosius, įsitikindami, kad viskas yra savo vietose (tie failai turi egzistuoti, kitaip nukreipkite kintamuosius į teisingus kelius):

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) redaguokite failo šerdis/tiny/core_build_options.h ir pakeiskite:

#define TIMER_TO_USE_FOR_MILLIS 1 to#define TIMER_TO_USE_FOR_MILLIS 0

Tai labai svarbu, nes priešingu atveju IR imtuvas kiekvienam mygtukui išves nulius. Šis teiginys sukonfigūruoja funkcijos „timer0“funkciją „millis“(), palikdamas laikmatį1 prieinamą IR bibliotekai. Galutinis eskizas vis tiek išjungs „timer0“, todėl neturėsite nei „millis“(), nei „delay“() funkcijų. Vietoj to galite turėti funkciją „delayMicroseconds ()“.

Šis įkrovos įkėlėjas yra minimalus, tačiau jame yra serijinių objektų palaikymas:

„Attiny85 PB2“(kaištis 7) yra TX, o PB0 (kaištis 5) yra RX

Galite turėti konfigūraciją, kai ISP programuotojas (arduino) ir serijinis USB adapteris yra prijungti vienu metu, todėl jums nereikia per dažnai keisti laidų:

Dabar turime įdiegtas ir tinkamai sukonfigūruotas ir bibliotekas, ir įkrovos įkėlimo programas, sunkiausias darbas baigtas ir galime pradėti testuoti.

8 veiksmas: įkrovos įkėlimo įrenginių deginimas ir eskizų įkėlimas

Aš primygtinai patariu aktyvuoti daugialypę išvestį pagal „Arduino IDE“nuostatas, kad galėtumėte išsiaiškinti bet kokią galimą problemą.

Norėdami įrašyti įkrovos įkėlimo programą į „Attiny85“, turite įkelti interneto paslaugų teikėjo pavyzdį į „Arduino“ir tada pasirinkti programuotoją „Arduino“kaip IPT.

Dabar įdėkite 10uF kondensatorių tarp arduino tarp atstatymo ir įžeminimo kaiščių (jis nėra reikalingas deginimo procesui, bet jis turi įkelti eskizus į attiny85).

Dabar „arduino“yra pasirengęs įrašyti įkrovos įkėlėjus ir įkelti eskizus. Jums tiesiog reikia pasirinkti tinkamą plokštę, suderinamą su jūsų attiny, ir sudeginti.

Norėdami įkelti eskizą į „Attiny85“, įkelkite jį į „arduino IDE“ir spustelėkite „Įkelti naudojant programuotoją“.

SVARBU: įkeliant eskizą yra 3 žingsniai: kompiliavimas, rašymas ir tikrinimas. Jei kompiliavimas ir rašymas pavyko sėkmingai, tačiau patvirtinimo procesas nepavyksta, gali būti, kad eskizas vis tiek pavyks.

9 veiksmas: kalibruokite vidinį „Attiny85“laikrodį (praleiskite tai, jei naudojate kristalą)

Jei nuspręsite nenaudoti 16Mhz kristalų, jums reikia kalibruoti „attiny85“laikrodį, todėl mums reikės įkrovos įkroviklio su serijine sąsaja, ir mes naudosime tinytuner biblioteką, kad gautume teisingą kalibravimą.

Atlikite tolesnius veiksmus

  • po įrankiais pasirinkite „Arduino“kaip ISP programuotoją
  • pasirinkite plokštę „ATtiny85 @ 8MHz (vidinis osciliatorius; BOD išjungtas)“
  • Manau, kad ISP ryšys yra paruoštas taip, kaip aprašyta prieš prisijungiant, priešingu atveju atlikite ryšius
  • įrašyti įkrovos tvarkyklę
  • šis įkrovos tvarkyklė sukonfigūravo skirtingus nuosekliosios sąsajos kaiščius, naudokite šią konfigūraciją tik dabartiniam įkrovos įkrovikliui

- PB4 (pin3 RX) į TX FT232RL attiny85 - PB3 (pin2 TX) į RX FT232RL attiny85 - GND (pin4) į GND FT232RL, nes attiny85 jau maitinamas arduino, jums nereikia prisijungti 5V ant FT232RL, kitu atveju prijunkite: attiny85 VCC (pin8) į 5V FT232RL

  • įkelkite tinytuner pavyzdį į attiny85
  • atidarykite ekrano programą, kad galėtumėte stebėti nuoseklųjį ryšį: screen /dev /ttyUSB0 9600
  • iš naujo nustatykite „attiny85“, prijungdami RESET kaištį (kaištį 1) prie GND (tik akimirka), ekrano lange turėtų būti rodomas pasveikinimo pranešimas
  • Toliau siųskite atskirus „x“simbolius (be vežimo grąžinimo; be eilutės tiekimo), kol kalibravimas bus baigtas
  • kur nors pažymėkite kalibravimo vertę (OSCCAL = 0x). Tai vertė, kurią turėsite deklaruoti galutiniuose eskizuose

10 veiksmas: iššifruokite nuotolinius mygtukus

Dabar atėjo laikas iššifruoti nuotolinius mygtukus ir priskirti juos tam tikriems kompiuterio klavišų paspaudimams, kad atliktumėte šiuos veiksmus:

  • pasirinkite plokštę „ATtiny85 @ 16MHz (vidinis PLL; 4,3 V BOD)“, jei nenaudojate kristalo, „ATtiny85 @ 16 MHz (išorinis kristalas; 4,3 V BOD“), tada sudeginkite
  • įkelkite eskizą:
  • Jei nenaudojate kristalo, panaikinkite komentarą eilutėje, kurioje yra OSCCAL kintamasis, ir priskirkite ją vertei, kurią radote kalibruodami laikrodį
  • Manau, kad jutiklis yra prijungtas, kaip aprašyta anksčiau, kitaip prijunkite
  • Taip pat darau prielaidą, kad FT232RL serijos prie USB adapteris yra prijungtas, kitaip prijunkite
  • iš naujo nustatykite „attiny85“, prijungdami RESET kaištį (1 kaištį) prie GND (tik akimirka)
  • pakartotinai paspauskite nuotolinio valdymo pulto mygtukus ir patikrinkite ekrano langą, turite pažymėti paskutinį kiekvieno įrašo numerį, kiekvienas mygtukas gali duoti 2 skirtingus skaičius

Pavyzdys:

Gautas D44 3396 Gautas 544 1348

Pažymėkite 3396 ir 1348 kartu su mygtuku, kurį ką tik paspaudėte, tada turite nuspręsti, ką norite daryti su šiuo mygtuku. Pavyzdžiui, norėčiau, kad tas mygtukas atsiųstų daugialypės terpės kodo kodą „Garsumo didinimas“, tada turiu rasti to rakto kodo ID. Norėdami tai padaryti, atsisiųskite PDF failą:

Ieškokite skyriaus „Klaviatūra/klaviatūros puslapis“53 psl. Ir naudokite stulpelio Naudojimo ID (gruodis) skaičius, kad nuotolinio valdymo mygtukai būtų susieti su klaviatūros kodais. Mūsų pavyzdyje matome, kad „Garsumo didinimo“raktinis kodas yra: 128.

Redaguokite failą UsbKeyboard.h „UsbKeyboard“bibliotekoje iš anksčiau įdiegto „v-usb“paketo ir pridėkite prie esamo apibrėžimo, jei jo dar nėra:

#124

Kai baigsime naudoti visus nuotolinio valdymo pulto mygtukus ir visus failo „UsbKeyboard.h“apibrėžimus, būsime pasiruošę, galime pereiti prie paskutinio veiksmo.

11 veiksmas: įkelkite galutinį eskizą ir tikėkitės geriausio

Įkeliamas paskutinis eskizas ir tikimasi geriausio!
Įkeliamas paskutinis eskizas ir tikimasi geriausio!
Įkeliamas paskutinis eskizas ir tikimasi geriausio!
Įkeliamas paskutinis eskizas ir tikimasi geriausio!

Dabar visi mūsų nuotolinio valdymo pulto mygtukai yra iššifruoti, failas UsbKeyboard.h yra užpildytas mūsų rakto kodais, todėl dabar galime įkelti arduino IDE galutinį eskizą iš:

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

Šis failas yra tikslus failas, kurį naudoju savo imtuvui, ir jis veikia 2 skirtinguose nuotolinio valdymo pultuose, todėl, žinoma, turėsite jį atnaujinti, kad galėtumėte dirbti su nuotolinio valdymo pultu.

Jei nenaudojate kristalo, panaikinkite komentarą eilutėje, kurioje yra OSCCAL kintamasis, ir priskirkite ją vertei, kurią radote kalibruodami laikrodį

Atkreipkite dėmesį, kad ciklo funkcijoje yra daug tokių teiginių:

if (results.value == 3405 || results.value == 1357) {// rodyklė aukštyn

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

}

Jūs turite sukurti savo pareiškimus, vieną kiekvienam nuotolinio valdymo pulto mygtukui. Sąlygoje „jei“turite įvesti rezultatus. Įvertinti reikšmes, kurias radote dekoduojant nuotolinio valdymo pultą, ir kaip „UsbKeyboard.sendKeyStroke“metodo argumentą turite įvesti vieną iš jau apibrėžtų raktų kodų į failą UsbKeyboard.h.

Sąlyga „if (lastStroke! = Results.value)“reikalinga, nes kai kurie nuotolinio valdymo pultai siunčia tą patį kodą du kartus per įvykį, ir tai užkerta kelią antram smūgiui. Aš nesu visiškai tikras ir tai gali priklausyti nuo jūsų nuotolinio valdymo pulte užprogramuoto IR protokolo (aš tikrai nesu IR protokolų ekspertas), tačiau, remiantis mano patirtimi naudojant savo nuotolinio valdymo pultus, kiekvienas mygtukas gali sukurti 2 skirtingus kodus ir kai paspaudžiate ir laikote mygtuką, jis siunčia tą patį kodą, bet jei paspaudžiate mygtuką dar kartą, jis siunčia kitą. Taigi atrodo, kad kodai siunčiami kitu būdu, manau, kad tai yra standartinis režimas žinoti, kiek kartų iš tikrųjų paspaudėte mygtuką.

Gerai, mes beveik baigėme, tiesiog įkelkite galutinį eskizą, prijunkite jį prie kompiuterio ir pažiūrėkite, kaip tai vyksta.

Šiam žingsniui geriau, jei atjungsite ir „arduino“, ir „USB“prie nuoseklaus adapterio ir tik tada prijunkite USB prie kompiuterio prievado (jei kažkas negerai, grandinę bus lengviau derinti).

Jei viskas veikė gerai, atidarę terminalą ir išsiųsdami komandą dmesg, turėtumėte pamatyti kažką panašaus į pirmąjį šio veiksmo vaizdą. Jei iškilo problemų, turėtumėte turėti klaidų, tokių kaip antrame paveikslėlyje, ir turite pradėti derinti grandinę ir (arba) programinę įrangą. Vienas iš pradinių klaidų, kurias turėjau, buvo USB šakotuvas, kuris neveiks su mano IR imtuvu (kiti dirbo) … todėl geriau, kad šis paskutinis žingsnis būtų prijungti IR imtuvą tiesiai prie kompiuterio prievado. Galimas klaidas gali būti sunku rasti, bet galų gale, kaip ir aš, jūs daug išmoktumėte, ir kaina, kurią reikia sumokėti, yra verta, aš jus patikinu.

Tai visi žmonės, praneškite man, jei pastebėjote klaidų šioje instrukcijoje ir mėgaukitės savo nauju IR USB imtuvu!

Rekomenduojamas: