Mundarija:

ATtiny85 IR USB qabul qiluvchisi: 11 qadam (rasmlar bilan)
ATtiny85 IR USB qabul qiluvchisi: 11 qadam (rasmlar bilan)

Video: ATtiny85 IR USB qabul qiluvchisi: 11 qadam (rasmlar bilan)

Video: ATtiny85 IR USB qabul qiluvchisi: 11 qadam (rasmlar bilan)
Video: Потерян передатчик для беспроводной мышки или клавиатуры Logitech Unifying receiver 2024, Iyul
Anonim
ATtiny85 IQ USB qabul qiluvchisi
ATtiny85 IQ USB qabul qiluvchisi

OGOHLANTIRISH, BU O'RNATILMASLIK KO'RSATILGAN

V-usb kutubxonasi hozirda deyarli mavjud bo'lmagan USB 1.1 protokoli bilan ishlashga mo'ljallangan. USB3 kelishi bilan sizda v-usb qurilmalarini ishga solishga harakat qiladigan bosh og'rig'i bo'lmaydi. Multimediya markazimni o'zgartirgandan so'ng, menda barqarorlik bilan bog'liq ko'plab muammolar paydo bo'ldi va qabul qilgich ishlashiga qaramay, bir muncha vaqt o'tgach, u ishlamay qoladi. Men uni tuzatishga urinib ko'rdim. Men ham atmega328p versiyasini yaratdim, lekin bu bir xil muammolarga ega edi. Vaqti-vaqti bilan taxtani tiklash uchun qo'riqchi taymeridan foydalanish ham yordam bermadi, shuning uchun men v-usbdan voz kechdim.

O'zingizga yaxshilik qiling va agar ta'lim maqsadli bo'lmasa, bu ko'rsatmaga bormang. Men o'rniga USB interfeysini birlashtirgan ATmega 32U4 chip modulini sotib olishni maslahat beraman va ushbu qo'llanmani bajaring:

www.sparkfun.com/tutorials/337

Keyin TSOP31238 infraqizil sensorini kiriting va siz borishingiz mumkin.

Salom ijodkorlar! Bu ATiny85 mikrokontrolderi yordamida ishlaydigan USB IR qabul qilgichni yaratish uchun ko'rsatma. Men bu loyihani GNU/Linux operatsion tizimida ba'zi IR masofadan boshqarish pultlarini qo'llab -quvvatlamasligini (hech bo'lmaganda to'liq qo'llab -quvvatlash) bartaraf etish uchun boshladim. Ushbu ko'rsatmalarga amal qilib, har qanday IQ masofadan boshqarish pulti bilan bir necha dollarga ishlaydigan, dasturlashtiriladigan USB IR qabul qilgichni qurishingiz mumkin.

Birinchidan, bu ko'rsatma men foydalanadigan kutubxonalarni yaratgan odamlarning mashaqqatli mehnatisiz bo'lmaydi:

  • Devid A. Mellis o'zining attinasi uchun
  • Rowdy Dog dasturi TinyTuner kutubxonasi uchun
  • Kichkina bootloader uchun Rowdy Dog dasturiy ta'minoti
  • Rancidbacon (https://rancidbacon.com/) v-usb kutubxonasining arduino porti uchun (https://code.google.com/archive/p/vusb-for-arduino/downloads)
  • https://www.instructables.com/id/Attiny-IR saytidagi https://www.instructables.com/id/Attiny-IR-librar… kodining izohlarida topilgan mayda yadrolar uchun IR kutubxonasi uchun qarang. -kutubxona …

Ba'zida kutubxonaning to'g'ri egasini topish oson emas, shuning uchun agar men xato qilgan bo'lsam, iltimos, izoh qoldiring va men muammoni tezroq hal qilaman.

Ushbu qo'llanma mavjud, chunki men qutidan ishlaydigan to'liq qo'llanma/qo'llanma topa olmadim (u mavjud bo'lishi mumkin, lekin men topa olmadim), shuning uchun Internetda mavjud bo'lgan barcha ma'lumotlarni to'pladim va ko'p miqdordagi sinovlardan so'ng xatolar Men juda yaxshi ishlaydigan ishlaydigan USB IR -qabul qilgichni yaratish bo'yicha to'liq qo'llanma bilan keldim.

Men kuzatgan asosiy ma'lumot manbalari:

  • 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 -qadam: Ba'zi fikrlar

  • Menda AVR ISP dasturchisi yo'q va men uni sotib olishni yoqtirmayman, shuning uchun men attiny85 -ni dasturlash uchun Arduino -dan foydalandim.
  • Menga GNU/Linuxdan boshqa OS haqida qayg'urmaydi, shuning uchun bu boshqacha ishlaydimi, bilmayman.
  • boshqa IR kutubxonalari bor, lekin men ularni hatto arduino bilan ham ishlay olmadim. Men IR kutubxonalari haqida cheklangan bilimdan boshlaganimni o'ylab ko'ring. Balki, tajriba orttirganimdan keyin, ularni adolatli masalalar bilan shug'ullanishga majbur qilardim. Yaxshiyamki, men Seejaydee taqdim etgan kutubxonani topishdan oldin adashdim va umidsizlikka tushib qoldim va o'sha paytdan beri ishlataman (odamga katta rahmat!).
  • Boshqa apparat konfiguratsiyasi mavjud, lekin men atiny85ni quvvatlantirish uchun 5V va ikkita 3.6V 0,5V zenerli diodli ma'lumot uzatish liniyalarining kuchlanishini kesish uchun ishlatganman, u qutidan ishlaydi, shuning uchun men aralashmaganman. boshqa konfiguratsiyalar.
  • Siz 16 MGts chastotali kristallni ishlatishingiz mumkin yoki tinytuner kutubxonasidan foydalanib attiny85 ichki soatini sozlashingiz mumkin. Men kristaldan foydalanishni qat'iy tavsiya qilaman, u ancha barqaror va, ehtimol, ko'p bosh og'rig'idan qutqaradi.
  • Men bu erda attiny85 uchun ikki xil yuklovchi ishlataman:

a) Rowdy Dog dasturiy ta'minot versiyasi, u juda seriyali va juda kichik bo'lgan ketma -ket interfeysni birlashtirgan, shuning uchun sizning dasturingiz va boshqa kutubxonalar uchun ko'proq joy bor. Muammo shundaki, ba'zi sabablarga ko'ra u juda yaxshi ishlasa -da, bir muncha vaqt o'tgach, usb qurilmasi uzilib qoldi (dmesg buyrug'i bilan bog'liq muammolarni topishingiz mumkin). Men bilmayman, bu yadro muammosi yoki yadroning aralash kombinatsiyasi va tanlangan kutubxonalarmi, shuning uchun bir muncha vaqt o'tgach, men bu yadroni masofadan boshqarish tugmachalarini dekodlash va soatni kalibrlash uchun ishlatishga qaror qildim (16 MGts ishlatilmaganda) kristal). Shundan so'ng, men faqat Mellis bootloader -ni yoqaman va ketma -ket interfeysni ishlatmaydigan aniq eskizni yuklayman.

b) Mellis versiyasi, barqaror yuklovchi, men buni ko'plab loyihalarda ishlatganman. Agar men ketma -ket interfeysni o'z ichiga olgan bo'lsa, men har doim bu yuklovchini ishlatardim. Men bu yadroni masofadan boshqarish pultidagi barcha kalitlarni dekodlashdan so'ng oxirgi eskizda ishlataman.

2 -qadam: Uskuna bilan boshlaylik

Uskuna bilan boshlaylik
Uskuna bilan boshlaylik
Uskuna bilan boshlaylik
Uskuna bilan boshlaylik
Uskuna bilan boshlaylik
Uskuna bilan boshlaylik

Sizga kerak bo'lgan asboblar:

  • Arduino bilan mos keladigan taxta
  • masofadan boshqarish tugmachalarini dekodlash uchun usb adapterli ketma -ketlik (faqat FT232RL dan foydalaning)
  • GNU/Linux o'rnatilgan va arduino IDE to'g'ri sozlangan kompyuter, men arduino IDE 1.8.0 dan foydalanayapman
  • Sizning qurilmangizni sinab ko'rish uchun IR masofadan boshqarish pulti (hatto arduino boshlang'ich to'plamlaridagi kabi nopok ham ishlaydi)
  • taxtani disk raskadrovka qilish uchun multimetr (umid qilamanki, sizga kerak bo'lmaydi, omad tilaymiz!)

Materiallar ro'yxati:

  • 85 ta
  • 2 68R qarshilik
  • 1, 1,5K qarshilik
  • 1, 4,7K qarshilik
  • 1 16 MGts kristalli
  • 1 22pF kondansatör
  • 1 0.1uF kondansatör
  • 1 10 uF kondansatör
  • 2, 3,6 V 0,5 V zenerli diodlar
  • 1 USB tipidagi A erkak ulagichi
  • Kengashni dasturlash va disk raskadrovka qilish uchun 6 ta pinli 1 tasma pin.
  • 1 ta TSOP31238 IQ sensori
  • sizni uyg'otmaslik uchun ko'p qahva

Aniq taxtani lehimlashdan oldin, ehtimol siz sinov uchun non paneli prototipini yasashni xohlar edingiz, bu ko'rsatmaga biriktirilgan sxemaga amal qilib, uni qurish uchun etarli bo'lishi kerak.

Attiny85 -ni shaxsiy kompyuterga ulash uchun oxirgi dizayn taxtaga lehimlangan USB tipidagi A ulagichidan foydalanadi, lekin prototip uchun siz non paneliga ulashingiz mumkin bo'lgan USB kabelini yasashingiz kerak bo'ladi:

Kichik bir bo'lakka 4 ta pinni lehimlang, so'ng eski USB kabelini kesib oling va pinlarni usb kabeli ichidagi 4 ta simga lehimlang:

  • qizil - VCC (5V)
  • qora - GND
  • oq- D
  • yashil - D+

Har bir narsani issiq elim bilan saqlang.

Endi biz ISP dasturchisini (Arduino), USB -ni ketma -ket adapterga (FT232RL) va IQ sensori attiny85 -ga ulashimiz kerak.

Siz har xil yuklash vositalarini yoqishingiz, eskizlarni yuklashingiz va simlarni almashtirmasdan ketma -ket portni tekshirishingiz mumkin, shuning uchun hammasini bir -biriga bog'lab qo'yishingiz mumkin.

Buning uchun hamma narsani quyidagi ko'rsatmalarga muvofiq ulang:

ISP dasturchisi (Arduino): bu bizga bootloaderlarni yoqish va eskizlarni yuklash imkonini beradi

  • attiny85 PB0 (pin5) arduino -dagi pin11 -ga (MOSI)
  • attiny85 PB1 (pin6) arduino -dagi pin12 -ga (MISO)
  • attiny85 PB2 (pin7) arduino -dagi pin13 -ga (SCK)
  • attiny85 RESET (pin1) arduino -dagi pin10 -ga (VCC -dan 4.6k gacha)
  • arduino -da attiny85 VCC dan 5V gacha
  • attiny85 GND dan GND gacha arduino

usb to serial adapter (FT232RL): bu bizga ketma -ket portni tekshirishga imkon beradi

  • attiny85 PB0 (pin5 RX) FT232RL da TX ga
  • attiny85 PB2 (pin7 TX) FT232RL da RX ga
  • attiny85 GND (pin4) FT232RL da GND ga
  • attiny85 allaqachon arduino tomonidan quvvatlangani uchun siz FT232RL -ga 5v -ni ulashingiz shart emas, aks holda ulang: attiny85 VCC (pin8) FT232RL -da 5V ga

USB -dan ketma -ket adapterga (FT232RL) faqat soatni kalibrlash uchun (faqat "ATtiny85 @ 8MHz yuklash qurilmasi uchun (ichki osilator; BOD o'chirilgan)")

  • FT232RL attiny85 da PB4 (pin3 RX) dan TXgacha
  • FT232RL attiny85 da PB3 (pin2 TX) dan RXgacha
  • GND (pin4) FT232RL da GND ga
  • attiny85 allaqachon arduino tomonidan quvvatlanganligi sababli, siz FT232RL -ga 5v ulashingiz shart emas, aks holda ulang: attiny85 VCC (pin8) FT232RL -da 5V ga.

Agar siz 16 MGts chastotali kristaldan foydalansangiz, uni PB3 (pin2) va PB4 (pin3) Attiny85 pinlariga ulang va har bir pinni har biriga 22pF qopqoq orqali GND ga ulang.

Filtr Attiny85 VCC 0,1uF va 10uF kondansatkichli, ularni GND ga parallel ravishda ulaydi

IQ sensori chiqish pinini attiny85 PB1 (pin6) ga ulang, uni quvvatlang.

USB interfeysini yarating va ulang:

  • GND (qora sim): uni umumiy GND ga ulang (barcha asoslar bir -biriga ulangan)
  • Attiny85 PB0 (pin5) ga 68R rezistor orqali ulangan D- (oq sim), uni 3,6 V 0,5 V zener orqali erga ulang va 1,5K rezistor bilan VCC ga torting.
  • 68+ rezistor orqali PB2 ga ulangan D+ (yashil sim), uni 3,6 V 0,5 V zener orqali erga ulang.
  • 5V, siz uni uzilmagan holda qoldirishingiz mumkin, chunki bu bosqichda hamma narsa Arduino tomonidan quvvatlanadi, aks holda uni attiny85 VCC ga ulang.

Zener diodlari shunday bog'langanki, anotlar GND ga, katodlar esa D+ va D- ma'lumotlar uzatish liniyalariga ulanadi.

3 -qadam: yakuniy dizayn

Yakuniy dizayn
Yakuniy dizayn
Yakuniy dizayn
Yakuniy dizayn
Yakuniy dizayn
Yakuniy dizayn

Oxirgi dizayn uchun siz teshikli komponentli perfboarddan foydalanishingiz yoki o'zingizning taxtangizni chizishingiz va smd komponentlarini ishlatishingiz mumkin. Qanday qilib taxtani yasashni bilish uchun, uni google -ga yuboring, Internetda ajoyib darsliklar mavjud.

Men o'z taxtamni chizib qo'ydim va men yakuniy natijalardan juda xursandman (kichik, barqaror va mustahkam taxta). Ha, bilaman, bu kesish so'nib ketadi, lekin men hech qanday elektr asbobini tunda ishlata olmadim va men faqat qalayni qaychi bilan taxtani kesib tashlang.

Aytgancha, tasvirlardagi izlar yalang'och mis emas, ular misni ozgina qalaytiradigan yoqimsiz kimyoviy moddalar bilan ishlangan (u saraton kasalligiga sabab bo'lishi mumkin, shuning uchun uni juda ehtiyotkorlik bilan, lateks globus va chang niqobidan foydalaning):

O'z sxemangizni tuzish uchun yuqoridagi sxemalardan foydalaning, yoki siz taxtangizni chizish uchun mening shaxsiy kompyuter izimdan foydalanishingiz mumkin.

4 -qadam: dasturiy ta'minot bilan ishlash

Loyihaning sxemasi juda oson, buning o'rniga dasturiy ta'minot katta kuch talab qiladi.

Bu ishni bajarish uchun bizga kamida 2 ta kutubxona (agar siz kristal ishlatmasangiz, yana bittasi) va 2 ta yuklash vositasi kerak bo'ladi. Men ushbu loyihani boshlaganimda, ba'zi kutubxonalarni sinab ko'rdim, ba'zida ular ishlamadi va ko'p hollarda ular Attiny85 bilan ishlash uchun tuzilmagan edi (men buni hali bilmasdim). Keyin kutubxonalar / yuklovchilar bilan uzilishlar bir -biriga mos kelmasligi bilan bog'liq muammolarni topdim. Oxir -oqibat, men kompyuterga oxirgi sxemani ulaganimda juda ko'p xatolarga duch keldim. Menda bu qo'llanma yo'q edi, shuning uchun menimcha, sizda hamma narsa yaxshi bo'lardi, faqat ko'rsatmalarni bajaring, agar xato qilmasangiz yaxshi bo'lardi:)

Endi biz bir nechta kutubxonalarni o'rnatishimiz va sozlashimiz kerak:

  • v-usb arduino kutubxonasi uchun: bu kutubxona mikrokontrollerni shaxsiy kompyuter tomonidan HID USB klaviaturasi sifatida tan olish imkonini beradi va biz uni kompyuterga asosiy zarbalarni yuborish uchun ishlatamiz. Bu kutubxona attiny85 bilan mos bo'lishi uchun ba'zi o'zgarishlar kerak
  • tinytuner kutubxonasi, agar siz 16 MGts kristalli ishlatmasangiz. Shundan so'ng siz mikrokontrolderning ichki soatini sozlashingiz kerak bo'ladi. Bu kutubxona qutidan tashqarida ishlaydi.
  • IQ sensori bilan ishlash uchun Attiny-IR-kutubxonasi. Bu kutubxona qutidan tashqarida ishlaydi.

Bizga yana 2 ta yuklovchi kerak bo'ladi:

  • Dog dasturiy ta'minot versiyasi, ketma -ket interfeysi mavjud. Bu yuklovchiga attiny85 bilan ishlash uchun ozgina o'zgartirish kerak bo'ladi, chunki u millis () funktsiyasi uchun taymer1dan foydalanadi va IR kutubxonasi bilan ishlamaydi. Taymerni taymer0 ga o'zgartirishimiz kerak.
  • Mellis versiyasi, biz oxirgi bosqichda foydalanadigan barqaror yuklovchi. Bu qutidan tashqarida ishlaydi.

5-qadam: V-usb kutubxonasini o'rnatish va sozlash

Kutubxonani https://code.google.com/archive/p/vusb-for-arduin… manzilidan yuklab oling Faylni oching va papkalar kutubxonalarini/UsbKeyboardni eskizlar kutubxonalari papkasiga ko'chiring.

Endi siz ATtiny85 bilan mos keladigan bir nechta faylni tahrir qilishingiz kerak (u arduino bilan ishlash uchun tuzilgan):

A) usbconfig.h -ni tahrir qiling:

"Uskuna konfiguratsiyasi" bo'limida o'zgartirishlar kiritiladi:

USB_CFG_IOPORTNAME B ni belgilang.

va

USB_CFG_DMINUS_BIT 4 ni aniqlang, USB_CFG_DMINUS_BIT 0 ni belgilang.

"Ixtiyoriy uskuna konfiguratsiyasi" bo'limida:

#USB_CFG_PULLUP_IOPORTNAME ni belgilang ## USB_CFG_PULLUP_IOPORTNAME B ni belgilang

To'liq "yuklashga mos keladigan HID" spetsifikatsiyasini yaratish uchun (aks holda multimediya tugmachalari ishlamaydi), shuningdek quyidagilarni o'zgartiring:

#USB_CFG_INTERFACE_SUBCLASS 0 ni aniqlang // Bootto#USB_CFG_INTERFACE_SUBCLASS 0x01 ni belgilang // Bootto

va

#debine USB_CFG_INTERFACE_PROTOCOL 0 // USB_CFG_INTERFACE_PROTOCOL 0x01 ni belgilaydigan klaviatura // Klaviatura

Ixtiyoriy ravishda, ishlab chiqaruvchi va qurilma nomini quyidagi ta'riflarda o'zgartirishingiz mumkin:

#USB_CFG_VENDOR_NAME ni aniqlang

#USB_CFG_DEVICE_NAME ni aniqlang

B) UsbKeyboard.h -ni tahrir qiling:

o'zgartirish:

PORTD = 0; // TODO: Faqat USB pinlari uchunmi? DDRD | = ~ USBMASK;

ga

PORTB = 0; // TODO: Faqat USB pinlari uchunmi? DDRB | = ~ USBMASK;

101 dan ortiq kalit kodlarga ruxsat berish uchun:

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

va

0x29, 0x65, // USAGE_MAXIMUM (klaviatura ilovasi): 0x29, 0xE7, // USAGE_MAXIMUM (klaviatura ilovasi)

Siz ham ushbu 3 ta faylni tahrir qilishingiz kerak bo'lishi mumkin:

usbdrv.husbdrv.cUsbKeyboard.h

va har safar PROGMEMni ko'rsangiz, o'zgarmaydigan turi nomidan oldin "const" qo'shing (masalan: PROGMEN char usbHidReportDescriptor [35] ==> PROGMEM const char usbHidReportDescriptor [35])

Agar bu aniq bo'lmasa, tashrif buyuring

Agar siz biriktirilgan kutubxonani yuklab olsangiz (men bu o'zgarishlarni o'zim qilganman) va uni sketchbook kutubxonalari papkasidan chiqarib olsangiz, bu o'zgarishlardan qochishingiz mumkin:

UsbKeyboard attiny85 uchun tuzilgan

Tartibga solish: yaqinda men bildimki, Alejandro Leyva (https://github.com/gloob) bu kutubxonaga g'amxo'rlik qilgan va u yaxshi ishlayotganga o'xshaydi. Siz uning versiyasini attine bilan ishlash uchun qilgan kerakli o'zgartirishlar bilan sinab ko'rishingiz mumkin, shuning uchun agar siz buni tekshirmoqchi bo'lsangiz, uni eskizlar kutubxonasi papkasidan chiqarib oling.

UsbKeyboard attiny85 uchun tuzilgan (Alejandro Leiva versiyasi)

6-qadam: Attiny-IR va Tinytuner kutubxonalarini o'rnatish

A) Attiny-IR kutubxonasi:

drive.google.com/open?id=0B_w9z88wnDtFNHlq… dan yuklab oling, so'ngra eskizlar kutubxonalari papkasida oching.

B) Tinytuner kutubxonasi:

Bu faqat siz 16 MGtsli kristallni ishlatmasangiz kerak, lekin ishoning, garchi u kristalsiz ham ishlasa ham, u ancha barqaror va ular bir necha sent turadi, shuning uchun uni oddiy saqlang, kristaldan foydalaning va o'tkazib yuboring. bu kutubxona.

Hali ham ishonchingiz komil emasmi? OK, kutubxonani https://storage.googleapis.com/google-code-archive… dan yuklab oling, so'ngra uni eskizlar kutubxonalari papkasida oching.

Kutubxonalar bilan ishimiz tugadi, endi yuklovchilarni o'rnatishga o'tamiz.

7 -qadam: yuklash vositalarini o'rnatish va sozlash

Men tajribamga ko'ra, Mellis -ning ikkita yuklagichini o'rnatmoqchiman, biz uni oxirgi eskizda ishlatamiz. Rowdy Dog Software tomonidan ishlab chiqilgan ikkinchisi - bu juda kichik va ketma -ket interfeysli ajoyib yadro, lekin mening masofadan boshqarish pulti bir muncha vaqt o'tgach qulab tushdi, shuning uchun biz bu yuklovchidan faqat attiny85 ichki soatini sozlash va masofadan boshqarish pultini dekodlash uchun foydalanamiz. tugmalar.

Bilaman, attiny85 -ga ketma -ket imkoniyatlar beradigan kutubxonalar bor, lekin keyin siz ketma -ket ob'ektni ishlatadigan kutubxonalarni o'zgartirishingiz kerak bo'ladi … Menga bu protsedura ko'proq yoqadi.

O'rnatishdan boshlaylik:

A) Mellis yuklovchi:

Arduino IDE parametrlarini oching va Qo'shimcha taxtalar menejeri URL -larini qo'shing:

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

Keyin Arduino IDE platalari menejerini oching va attellani qidiring, Mellis -dan taxtalarni o'rnating, endi siz Arduino ID -ni ATtiny25/45/85 va ATtiny24/44/84 -ni ko'rishingiz kerak.

B) Rowdy Dog Software kichik yuklovchi:

bootloader-ni https://storage.googleapis.com/google-code-archive… saytidan yuklab oling.

Faylni oching va eskiz daftarchangizdagi kichik papkadan nusxa oling (agar u hali mavjud bo'lmasa, bu papkani yarating). keyin sketchbook/hardware/tiny/avr/papkasiga o'ting va:

1) Prospective Boards.txt faylini board.txt fayliga nusxalash

2) platform.txt faylini tahrir qiling va ba'zi o'zgartirishlar kiriting:

Compiler.path o'zgaruvchisiga izoh bermang va arduino o'rnatish papkasida apparat/tools/avr/bin/papkasini ko'rsatib qoldiring:

compiler.path = {PATH_TO_YOUR_ARDUINO_FOLDER}/apparat/asboblar/avr/bin/

alfokompilyatorni o'zgartiring.

Keyin quyidagi o'zgaruvchilarni o'zgartiring, hamma narsa o'z joyida (bu fayllar bo'lishi kerak, aks holda o'zgaruvchilarni to'g'ri yo'llarga yo'naltiring):

tools.avrdude.cmd.path = {runtime.ide.path}/apparat/asboblar/avr/bin/avrdude

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

tools.avrdude.cmd.path.linux = {runtime.ide.path}/apparat/tools/avr/bin/avrdude

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

3) cores/tiny/core_build_options.h faylini tahrir qiling va o'zgartiring:

#TIMER_TO_USE_FOR_MILLIS 1 ni belgilang, TIMER_TO_USE_FOR_MILLIS 0 ni belgilang 0

Bu juda muhim, aks holda IQ qabul qiluvchisi har bir tugma uchun nolni chiqaradi. Bu bayonot miller () funktsiyasi uchun taymer0 ni sozlaydi, taymer1ni IR kutubxonasida qoldiradi. Yakuniy eskiz timer0 ni o'chirib qo'yadi, shuning uchun sizda millis () va delay () funktsiyalari mavjud bo'lmaydi. Buning o'rniga mavjud delayMicroseconds () funktsiyasi bo'lishi mumkin.

Bu bootloader minimal, lekin ketma -ket ob'ektni qo'llab -quvvatlashni o'z ichiga oladi:

Attiny85 PB2 (pin7) - TX va PB0 (pin5) - RX

Siz Internet -provayderingiz (arduino) va ketma -ket usb adapteri bilan bir vaqtning o'zida ulanishingiz mumkin, shuning uchun simlarni tez -tez o'zgartirishingiz shart emas:

Endi bizda kutubxonalar ham, yuklash qurilmalari ham o'rnatilgan va to'g'ri sozlangan, eng og'ir ish tugadi va biz hamma narsani sinab ko'rishni boshlashimiz mumkin.

8 -qadam: Bootloaderlarni yoqish va eskizlarni yuklash

Men Arduino IDE sozlamalari ostida aniq ma'lumotlarni faollashtirishni maslahat beraman, shunda siz har qanday muammoni hal qila olasiz.

Bootloader -ni Attiny85 -ga yozish uchun siz ISP -ning misolini Arduino -ga yuklashingiz kerak, so'ngra Arduino -ni dasturchi -provayder sifatida tanlashingiz kerak.

Endi arduino -ga qayta o'rnatish va ulash pimlari orasiga 10 uF kondansatör joylashtiring (bu yonish jarayoni uchun kerak emas, lekin eskizlarni attiny85 -ga yuklash).

Endi arduino bootloaderlarni yoqish va eskizlarni yuklashga tayyor. Siz o'zingizning attinangizga mos keladigan to'g'ri taxtani tanlashingiz va uni yoqishingiz kerak.

Attiny85 -ga eskizni yuklash uchun uni arduino IDE -ga yuklang va "Dasturchi yordamida yuklash" -ni bosing.

MUHIM: eskizni yuklashda 3 bosqichdan iborat, kompilyatsiya, yozish va tekshirish. Agar kompilyatsiya va yozish muvaffaqiyatli ishlagan bo'lsa, lekin tekshirish jarayoni muvaffaqiyatsiz bo'lsa, eskiz baribir ishlayveradi.

9 -qadam: Attiny85 ichki soatini sozlang (agar siz billurdan foydalansangiz, buni o'tkazib yuboring)

Agar siz 16 MGts chastotali kristallni ishlatmaslikka qaror qilsangiz, siz attiny85 soatini sozlashingiz kerak, shuning uchun bizga ketma -ket interfeysli bootloader kerak bo'ladi va biz to'g'ri kalibrlash uchun tinytuner kutubxonasidan foydalanamiz.

Keyingi qadamlarni bajaring

  • asboblar ostida Arduino -ni Internet -provayder sifatida tanlang
  • "ATtiny85 @ 8MHz (ichki osilator; BOD o'chirilgan)" taxtasini tanlang.
  • O'ylaymanki, sizda Internet -provayderingiz ulanishdan oldin tasvirlanganidek tayyor, aks holda ulanishlar mavjud
  • bootloaderni yoqish
  • Bu yuklash vositasi ketma -ket interfeys uchun turli xil pinlarni sozlagan, bu konfiguratsiyani faqat joriy yuklovchi uchun ishlating

- FT232RL attiny85 -dagi PB4 (pin3 RX) dan TX -ga - FT232RL -dagi PB3 (pin2 TX) dan RX -ga FT232RL -da GND (pin4) dan GND -ga, chunki attiny85 allaqachon arduino bilan ishlaydi, siz ulashingiz shart emas. FT232RL -dagi 5v, aks holda ulang: attiny85 VCC (pin8) FT232RL -dagi 5V ga

  • tinytuner misolini attiny85 -ga yuklang
  • ketma -ket aloqani kuzatish uchun ekran dasturini oching: screen /dev /ttyUSB0 9600
  • RESET pinini (pin1) GND ga ulaydigan attiny85 -ni qayta o'rnating (bir lahza), ekran oynasida xush kelibsiz xabar ko'rsatilishi kerak.
  • Kalibrlash tugagunga qadar bitta "x" belgilarini yuborishni davom eting (aravachani qaytarish, chiziqni uzatish)
  • kalibrlash qiymatini izohlang (OSCCAL = 0x). Bu yakuniy eskizlarda e'lon qilishingiz kerak bo'lgan qiymat

10 -qadam: Masofadagi tugmachalarni dekodlash

Endi masofadan boshqarish pultidagi tugmachalarni dekodlash va ularni shaxsiy kompyuterdagi maxsus zarbalarga tayinlash vaqti keldi, buning uchun keyingi bosqichlarni bajaring:

  • "ATtiny85 @ 16MHz (ichki PLL; 4.3V BOD)" taxtasini tanlang, agar siz kristal ishlatmasangiz, "ATtiny85 @ 16 MGts (tashqi kristall; 4.3 V BOD"), aks holda uni yoqing.
  • eskizni yuklang:
  • Agar siz kristal ishlatmasangiz, OSCCAL o'zgaruvchisini o'z ichiga olgan qatorni sharhlang va uni soatni kalibrlash paytida topilgan qiymatga belgilang.
  • Menimcha, sensor oldindan tasvirlanganidek ulangan, aks holda uni ulang
  • Menimcha, USB adapterga FT232RL ketma -ket ulangan, aks holda uni ulang
  • RESET pinini (pin1) GND ga ulaydigan attiny85 -ni qayta o'rnating (bir zum)
  • masofadan boshqarish pultining tugmachalarini bir necha marta bosing va ekran oynasini tekshiring, siz har bir yozuv uchun oxirgi raqamga izoh berishingiz kerak, har bir tugma 2 xil raqamni berishi mumkin.

Misol:

Qabul qilingan D44 3396 Qabul qilingan 544 1348

3396 va 1348 raqamlarini yangi bosilgan tugmachaga izohlang, keyin siz bu tugma bilan nima qilishni xohlayotganingizni hal qilishingiz kerak. Masalan, men tugmachani "Ovozni ko'tarish" multimediya kalit kodini yuborishini xohlardim, keyin bu kalit kodining identifikatorini topishim kerak. Buning uchun PDF -ni yuklab oling:

53 -bet "Klaviatura/klaviatura sahifasi" bo'limiga e'tibor bering va masofadan boshqarish tugmachalarini klaviatura kodlariga bog'lash uchun Foydalanish identifikatori (Dek) ustunidagi raqamlardan foydalaning. Bizning misolimizda "Ovozni ko'tarish" tugmachasining kodi: 128.

UsbKeyboard.h faylini UsbKeyboard kutubxonasi ichidagi biz o'rnatgan v-usb paketidan tahrirlang va agar u mavjud bo'lmasa, mavjud ta'riflarga qo'shing:

128

Hamma masofadan boshqarish tugmachalari va UsbKeyboard.h faylidagi barcha ta'riflar tayyor bo'lganda, biz oxirgi bosqichga o'tishimiz mumkin.

11 -qadam: Oxirgi eskizni yuklash va eng yaxshisiga umid

Yakuniy eskiz va umidlar yuklanmoqda!
Yakuniy eskiz va umidlar yuklanmoqda!
Yakuniy eskiz va umidlar yuklanmoqda!
Yakuniy eskiz va umidlar yuklanmoqda!

Endi bizda barcha masofadan boshqarish tugmalari dekodlangan, UsbKeyboard.h fayli bizning kalit kodlarimiz bilan to'ldirilgan, shuning uchun endi biz arduino IDE -ga aniq eskizni yuklashimiz mumkin:

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

Bu fayl men qabul qilgich uchun ishlatadigan aniq fayl va u 2 xil masofadan boshqarish pultida ishlaydi, shuning uchun masofadan boshqarish pulti bilan ishlash uchun uni yangilash kerak.

Agar siz kristal ishlatmasangiz, OSCCAL o'zgaruvchisini o'z ichiga olgan qatorni sharhlang va uni soatni kalibrlash paytida topilgan qiymatga belgilang.

E'tibor bering, loop funktsiyasida shunga o'xshash ko'plab iboralar mavjud:

if (results.value == 3405 || results.value == 1357) {// strelka yuqoriga

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

}

Masofadan boshqarish pultidagi har bir tugma uchun bitta bayonot yaratish kerak. "If" holatida siz masofadan boshqarish pultini dekodlashda topilgan qiymatlarni results.value -ga kiritishingiz kerak va UsbKeyboard.sendKeyStroke usulining argumenti sifatida UsbKeyboard.h fayliga allaqachon aniqlangan kalit kodlaridan birini qo'yish kerak.

"If (lastStroke! = Results.value)" sharti kerak, chunki ba'zi masofadan boshqarish pultlari har bir zarbaga bir xil kodni ikki marta yuboradi va bu ikkinchi zarbani oldini oladi. Ishonchim komil emas va bu masofadan boshqarish pultiga o'rnatilgan IQ protokoliga bog'liq bo'lishi mumkin (men IR protokoli bo'yicha mutaxassis emasman), lekin o'z masofadan boshqarish pultimdagi tajribamga ko'ra, har bir tugma 2 xil kodni ishlab chiqarishi mumkin. tugmachani bosib ushlab turganda, u xuddi shu kodni yuboradi, lekin tugmani yana bosganingizda, ikkinchisini yuboradi. Ko'rinib turibdiki, kodlar muqobil tarzda yuboriladi, menimcha, bu tugmani necha marta bosganingizni bilish standart rejim.

OK, biz deyarli tayyor bo'ldik, oxirgi eskizni yuklang, uni kompyuterga ulang va uning qanday ketayotganini ko'ring.

Agar siz arduino va usb -ni ketma -ket adapterga ulab qo'ysangiz, USB -ni kompyuter portiga ulang (agar biror narsa noto'g'ri bo'lsa, kontaktlarning zanglashiga olib kelishi osonroq bo'ladi).

Agar hamma narsa yaxshi ishlagan bo'lsa, terminalni ochganingizda va dmesg buyrug'ini yuborganingizda, bu qadamda birinchi rasmga o'xshash narsani ko'rishingiz kerak. Muammo bo'lsa, sizda ikkinchi rasmda bo'lgani kabi xatolar bo'lishi kerak va siz elektron va/yoki dasturiy ta'minotni tuzatishni boshlashingiz kerak. Men boshlagan xatolarning manbalaridan biri bu IQ qabul qilgichim bilan ishlamaydigan USB uyasi edi (boshqalar ishlagan bo'lsa ham) … shuning uchun bu oxirgi bosqichda IQ qabul qilgichni to'g'ridan -to'g'ri kompyuter portiga ulash yaxshiroqdir. Oxir -oqibat xatolarni topish qiyin bo'lishi mumkin edi, lekin oxir -oqibat, men kabi, siz ham ko'p narsani o'rgangan bo'lar edingiz va to'lashga arziydigan narx bunga arziydi, ishontirib aytamanki.

Hammasi shu, agar siz ushbu ko'rsatmada xatolarni sezsangiz va yangi IR USB qabul qiluvchidan bahramand bo'lsangiz, menga xabar bering!

Tavsiya: