Mündəricat:

ATtiny85 IR USB Alıcısı: 11 Addım (Şəkillərlə birlikdə)
ATtiny85 IR USB Alıcısı: 11 Addım (Şəkillərlə birlikdə)

Video: ATtiny85 IR USB Alıcısı: 11 Addım (Şəkillərlə birlikdə)

Video: ATtiny85 IR USB Alıcısı: 11 Addım (Şəkillərlə birlikdə)
Video: ATtiny85 Relay Control with IR Remote || 2-Channel IR Remote Control System Using ATtiny85 2024, Iyul
Anonim
ATtiny85 IR USB Qəbulu
ATtiny85 IR USB Qəbulu

XƏBƏRDARLIQ, BU TƏLİMAT OLMAYAN OLDU

V-usb kitabxanası, hazırda çətin ki, mövcud olan USB 1.1 protokolu ilə işləmək üçün nəzərdə tutulmuşdur. USB3-ün gəlişi ilə v-usb cihazlarını işə salmağa çalışan baş ağrısından daha çox əziyyət çəkəcəksiniz. Multimediya mərkəzimi dəyişdikdən sonra bir çox sabitlik problemim var və alıcı işləsə də, bir müddət sonra işləmir. Düzəltməyə çalışsam da uğursuz olmuşam. Bir atmega328p versiyasını da hazırladım, amma eyni problem var idi. Vaxtaşırı lövhəni sıfırlamaq üçün bir gözətçi taymeri istifadə etmək də kömək etmirdi, buna görə də v-usb-dan imtina edirəm.

Özünüzə bir lütf edin və təhsil məqsədli olmadığı təqdirdə bu təlimata davam etməyin. Bunun əvəzinə usb interfeysini artıq birləşdirmiş ATmega 32U4 çip modulu almağı məsləhət görürəm və bu təlimatı izləyin:

www.sparkfun.com/tutorials/337

Sonra TSOP31238 bir IR sensoru atın və getməyiniz yaxşıdır.

Salam ustalar! Bu, Attiny85 mikro nəzarətçisindən istifadə edərək işləyən bir USB IR qəbuledicisi qurmaq üçün bir təlimatdır. GNU/Linux OS -də bəzi IR uzaqdan idarəetmə dəstəyinin (ən azından tam dəstək) olmaması üçün bu layihəyə başladım. Bu təlimatlara əsasən, bir neçə dollara hər hansı bir IR uzaqdan idarəetmə ilə işləyən proqramlaşdırıla bilən USB IR qəbuledicisi qura bilərsiniz.

Əvvəla, bu təlimat, burada istifadə etdiyim kitabxanaları yaradan insanların zəhməti olmadan mövcud olmazdı:

  • David A. Mellis, attiny əsas üçün
  • TinyTuner kitabxanası üçün Rowdy Dog Proqramı
  • Kiçik yükləyiciləri üçün Rowdy Dog Proqramı
  • V-usb kitabxanasının arduino portu üçün Rancidbacon (https://rancidbacon.com/) (https://code.google.com/archive/p/vusb-for-arduino/downloads)
  • https://www.instructables.com/id/Attiny-IR-də göstərişli https://www.instructables.com/id/Attiny-IR-librar… kodunun şərhlərində tapılan kiçik nüvələr üçün IR kitabxanası üçün seejaydee -kitabxana …

Bəzən kitabxananın düzgün sahibini tapmaq asan olmur, buna görə də səhv etmişəmsə, zəhmət olmasa bir şərh yazın və problemi ASAP həll edərdim.

Bu təlimat, qutudan işləyən tam bir dərslik/bələdçi tapmadığım üçün mövcuddur (mövcud ola bilər, amma tapa bilmədim) buna görə internetdəki bütün məlumatları topladım və çoxlu sınaqlardan sonra səhvlər, həqiqətən yaxşı işləyən işləyən bir USB IR alıcısı qurmaq üçün tam bir bələdçi ilə gəldim.

İzlədiyim əsas məlumat mənbələri:

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

Addım 1: Bəzi mülahizələr

  • Bir AVR ISP proqramçısına sahib deyiləm və həqiqətən satın almaq istəmirəm, buna görə attiny85 -i proqramlaşdırmaq üçün bir Arduino istifadə etdim
  • GNU/Linux -dan başqa heç bir OS ilə maraqlanmıram, bunun başqa cür işləyəcəyini bilmirəm.
  • digər IR kitabxanaları var, amma onları arduino ilə belə işləməyə məcbur edə bilmədim. IR kitabxanaları haqqında məhdud bir məlumatla başladığımı düşünün. Bəlkə də kifayət qədər problemlərlə məşğul olan təcrübə qazandıqdan sonra onları indi işə sala bilərəm. Nəysə, Seejaydee -nin təmin etdiyi kitabxananı tapmadan əvvəl itirdim və ümidsiz oldum və o vaxtdan bəri istifadə etdim (çox sağol adam!).
  • Başqa hardware konfiqurasiyaları var, ancaq məlumat xətlərinin gərginliyini sıxmaq üçün attiny85 -i gücləndirmək üçün 5V və iki 3.6V 0.5W zener diodunu istifadə edəndən istifadə etdim, qutudan işləyir, buna görə qarışmıram digər konfiqurasiyalar.
  • 16Mhz bir kristal istifadə edə bilərsiniz və ya tinytuner kitabxanasından istifadə edərək attiny85 -in daxili saatını kalibr edə bilərsiniz. Kristaldan istifadə etməyi şiddətlə məsləhət görürəm, daha sabitdir və yəqin ki, bir çox baş ağrınızdan xilas olacaq.
  • Burada attiny85 üçün iki fərqli yükləyicidən istifadə edirəm:

a) Rowdy Dog Software versiyası, çox sərin və çox kiçik bir serial interfeysi birləşdirmişdir, buna görə proqramınız və digər kitabxanalar üçün daha çox yeriniz var. Problem ondadır ki, bəzi səbəblərə görə olduqca yaxşı işləsə də, bir müddət sonra usb cihazının bağlantısı kəsildi (problemləri dmesg əmri ilə tapa bilərsiniz). Bunun nüvə problemi və ya nüvənin qarışıq birləşməsi ilə seçilmiş kitabxanalar olduğunu bilmirəm, buna görə də bir müddət sonra bu nüvəni yalnız uzaq düymələrin kodunu açmaq və saatı kalibr etmək üçün istifadə etməyə qərar verdim (16 MHz istifadə etməyəndə) kristal). Bundan sonra, yalnız Mellis yükləyicisini yandırıram və serial interfeysini istifadə etməyən qəti eskizi yükləyirəm.

b) Mellis versiyası, sabit yükləyici, bunu bir çox layihələrdə istifadə etmişəm. Bir serial interfeysi daxil olsaydı, həmişə bu yükləyicidən istifadə edərdim. Uzaqdan idarəetmə düymələrimin hamısını açdıqdan sonra bu nüvəni son eskizdə istifadə edirəm.

Addım 2: Hardware ilə başlayaq

Hardware ilə başlayaq
Hardware ilə başlayaq
Hardware ilə başlayaq
Hardware ilə başlayaq
Hardware ilə başlayaq
Hardware ilə başlayaq

Lazım olan vasitələr:

  • arduino ilə uyğun bir lövhə
  • Uzaqdakı düymələri deşifr etmək üçün usb adapterinə serial (sadəcə FT232RL istifadə edin)
  • GNU/Linux quraşdırılmış və arduino IDE düzgün qurulmuş bir kompüter, arduino IDE 1.8.0 istifadə edirəm
  • cihazınızı sınamaq üçün bir IR uzaqdan idarəetmə cihazı (arduino başlanğıc dəstlərində tapılanlar kimi bir pis də işləyəcək)
  • lövhənizi düzəltmək üçün bir multimetr (ümid edirəm ehtiyacınız olmayacaq, uğurlar!)

Materialların siyahısı:

  • 1 çarıq 85
  • 2 68R rezistor
  • 1 1.5K rezistor
  • 1 4.7K müqavimət
  • 11 16 MHz kristal
  • 1 22pF kondansatör
  • 1 0.1uF kondansatör
  • 1 10 uF kondansatör
  • 2 3.6V 0.5W zener diodları
  • 1 USB tip A kişi konnektoru
  • Lövhəni proqramlaşdırmaq və düzəltmək üçün 6 pinli 1 zolaqlı pin.
  • 1 IR sensoru TSOP31238
  • oyaq saxlamaq üçün çoxlu qəhvə

Qəti lövhəni lehimləmədən əvvəl, ehtimal ki, test məqsədləri üçün bir çörək taxtası prototipi hazırlamaq istəyərdiniz, bu təlimata əlavə edilmiş sxemə riayət etmək onu qurmaq üçün kifayət etməlidir.

Attiny85 -i PC -yə bağlamaq üçün son dizaynda lövhəyə lehimlənmiş USB tip A konnektoru istifadə olunur, lakin prototip üçün çörək taxtasına qoşula biləcəyiniz bir USB kabeli hazırlamalısınız:

Kiçik bir perforasiya lövhəsinə 4 sancaqla lehimləyin, sonra köhnə bir USB kabelini kəsin və pinləri usb kabelinin içərisindəki 4 telə lehimləyin:

  • qırmızı VCC (5V)
  • qara GND -dir
  • ağ D-
  • yaşıl D+

Hər şeyi isti yapışqan ilə bir yerdə saxlayın.

İndi ISP proqramçısını (Arduino), USB -ni serial adapterə (FT232RL) və İQ sensoru attiny85 -ə bağlamalıyıq.

Fərqli yükləyiciləri yandıra, eskizləri yükləyə və telləri dəyişdirmədən serial portunu yoxlaya biləcəyiniz üçün hamısını birlikdə bağlaya bilərsiniz.

Bunu etmək üçün hər şeyi bu təlimatlara uyğun olaraq bağlayın:

ISP proqramçısı (Arduino): bu, önyükleyiciləri yandırmağa və eskizləri yükləməyimizə imkan verir

  • attiny85 PB0 (pin5) arduinoda pin11 (MOSI)
  • attiny85 PB1 (pin6) arduinoda pin12 (MISO)
  • attiny85 PB2 (pin7) arduino -da pin13 -ə (SCK)
  • attiny85 RESET (pin1) arduino -da pin10 -a (VCC -dən 4.6k -a) qədər
  • arduino -da attiny85 VCC -dən 5V -ə qədər
  • attiny85 GND - GND arduino

usb -dən serial adapterə (FT232RL): bu, serial portunu yoxlamağa imkan verir

  • attiny85 PB0 (pin5 RX) FT232RL -dən TX -ə
  • attiny85 PB2 (pin7 TX) FT232RL -də RX -ə
  • attiny85 GND (pin4) üçün FT232RL
  • attiny85 artıq arduino ilə işlədiyi üçün FT232RL -də 5v -ni bağlamağa ehtiyac yoxdur, əks halda qoşulun: attiny85 VCC (pin8) FT232RL -də 5V -a

usb -dən seriya adapterinə (FT232RL) yalnız saat kalibrlənməsi üçün (yalnız "ATtiny85 @ 8MHz (daxili osilator; BOD deaktivdir)" yükləyicisi üçün)

  • FT232RL attiny85 -də PB4 (pin3 RX) -dən TX -ə
  • FT232RL attiny85 -də PB3 (pin2 TX) -dən RX -ə
  • FT232RL -də GND (pin4) üçün GND
  • attiny85 artıq arduino ilə işlədiyi üçün FT232RL -də 5v -ni bağlamağa ehtiyac yoxdur, əks halda qoşulun: attiny85 VCC (pin8) FT232RL -də 5V -a

16Mhz bir kristal istifadə edirsinizsə, onu Attiny85 pinləri PB3 (pin2) və PB4 (pin3) -ə qoşun və hər pinini 22pF qapaq vasitəsilə GND -yə bağlayın.

Onları GND -ə paralel bağlayan 0.1uF və 10uF kondansatörlü Attiny85 VCC -ni süzün

İQ sensoru çıxış pinini attiny85 PB1 -ə (pin6) qoşun, onu yandırın.

USB interfeysini qurun və qoşun:

  • GND (qara tel): ümumi GND -yə bağlayın (bütün əsaslar bir -birinə bağlıdır)
  • 68R rezistoru vasitəsilə attiny85 PB0 (pin5) -ə qoşulan D- (ağ tel), onu 3.6V 0.5W zener vasitəsilə yerə qoşun və 1.5K rezistorla VCC-yə çəkin.
  • 68R rezistor vasitəsilə PB2 -yə qoşulan D+ (yaşıl tel), onu 3.6V 0.5W zener vasitəsilə yerə bağlayın
  • 5V, bu mərhələdə hər şey Arduino tərəfindən dəstəkləndiyi üçün onu əlaqəsiz buraxa bilərsiniz, əks halda attiny85 VCC -yə qoşun

Zener diodları, anodların GND-yə, katotların isə D+ və D- məlumat xətlərinə bağlanması üçün bağlanır.

Addım 3: Son Dizayn

Son Dizayn
Son Dizayn
Son Dizayn
Son Dizayn
Son Dizayn
Son Dizayn

Son dizayn üçün deşik komponentləri olan perfboard istifadə edə və ya öz lövhənizi aşındıra və smd komponentlərindən istifadə edə bilərsiniz. Lövhəni necə düzəltməyi öyrənmək üçün sadəcə google -a daxil olun, İnternetdə zəhmli dərslər var.

Mən öz taxtamı taxdım və son nəticələrdən (kiçik, sabit və möhkəm lövhə) çox məmnunam. Bəli, bilirəm ki, kəsik çox pisdir, amma gecəyarısı heç bir elektrik alətindən istifadə edə bilmədim və lövhəni qalay qayçı ilə kəsin.

Yeri gəlmişkən, şəkillərdəki izlər çılpaq mis deyil, misin bir az qalınlaşdırdığı pis bir kimyəvi maddə ilə müalicə edilmişdir (xərçəngə səbəb olduğu ehtimal olunur, buna görə də çox diqqətlə istifadə edin, lateks kürələr və toz maskası):

Layihənizi tərtib etmək üçün yuxarıdakı sxemlərdən istifadə edin və ya lövhənizi düzəltmək üçün sadəcə pcb izimdən istifadə edə bilərsiniz.

Addım 4: Proqram təminatı ilə məşğul olmaq

Bu layihənin dövrəsi çox asandır, bunun əvəzinə proqram təminatı daha böyük səy tələb edir.

Bu işi yerinə yetirmək üçün ən azı 2 kitabxanaya (bir kristal istifadə etmirsinizsə daha bir) və 2 önyükləyiciyə ehtiyacımız var. Bu layihəyə başlayanda bəzi kitabxanaları sınadım, bəzən işləmədi və bir çox dəfə Attiny85 ilə işləmək üçün konfiqurasiya olunmadı (hələ bunu bilmirdim). Sonra kəsişmələrin üst -üstə düşdüyü kitabxana / yükləyicilərlə bağlı problemlər tapdım. Nəhayət, son dövrəni PC -yə qoşduğumda kifayət qədər səhvlərlə qarşılaşmalı oldum. Bu bələdçiyə sahib deyiləm, buna görə də hər şeyin yaxşı olacağını düşünürəm, sadəcə bu təlimatdakı addımları izləyin, əgər səhv etmədən etsəniz, yaxşı olmalısınız:)

İndi bir neçə kitabxana qurmalı və konfiqurasiya etməliyik:

  • v-usb arduino kitabxanası üçün: bu kitabxana mikrokontrolörün PC tərəfindən HID USB Klaviatura kimi tanınmasına imkan verir və biz düyməni PC-yə göndərmək üçün istifadə edəcəyik. Bu kitabxananın attiny85 ilə uyğun olması üçün bəzi dəyişikliklərə ehtiyacı var
  • tinytuner kitabxanası yalnız 16Mhz bir kristal istifadə etməsəniz. Sonra mikro nəzarətçinin daxili saatını kalibr etməlisiniz. Bu kitabxana qutudan kənarda işləyir.
  • İQ sensoru ilə qarşılıqlı əlaqə qurmaq üçün Attiny-IR-kitabxana. Bu kitabxana qutudan kənarda işləyir.

Həm də 2 yükləyiciyə ehtiyacımız var:

  • Dog Software versiyası, serial interfeysi mövcuddur. Bu bootloader, millis () funksiyası üçün timer1 istifadə etdiyi üçün İT kitabxanası ilə işləməyəcəyi üçün attiny85 ilə işləmək üçün kiçik bir düzəlişə ehtiyac duyur. Taymeri timer0 olaraq dəyişdirməliyik.
  • Mellis versiyası, son mərhələdə istifadə edəcəyimiz sabit bir yükləyici. Bu qutudan işləyir.

Addım 5: V-usb kitabxanasının quraşdırılması və konfiqurasiyası

Kitabxananı https://code.google.com/archive/p/vusb-for-arduin… ünvanından yükləyin və faylı açın və qovluq kitabxanalarını/UsbKeyboardu eskiz kitabxanaları qovluğuna kopyalayın.

İndi ATtiny85 ilə uyğun olmaq üçün bir neçə faylı redaktə etməlisiniz (arduino ilə işləmək üçün qurulmuşdur):

A) usbconfig.h redaktə edin:

"Avadanlıq Konfiqurasiyası" altında dəyişiklik edin:

#USB_CFG_IOPORTNAME D təyin edin ## USB_CFG_IOPORTNAME B təyin edin

USB_CFG_DMINUS_BIT 4 təyin edin#USB_CFG_DMINUS_BIT 0 təyin edin

"İsteğe Bağlı Avadanlıq Konfiqurasiyası" altında:

#USB_CFG_PULLUP_IOPORTNAME Dto ## USB_CFG_PULLUP_IOPORTNAME B təyin etmək

Tam "açılışa uyğun HID" spesifikasiyası yaratmaq üçün (əks halda heç bir multimediya düyməsi işləməyəcək), həmçinin dəyişdirin:

#define USB_CFG_INTERFACE_SUBCLASS 0 // Bootto#USB_CFG_INTERFACE_SUBCLASS 0x01 təyin edin // Bootto

#define USB_CFG_INTERFACE_PROTOCOL 0 // USB_CFG_INTERFACE_PROTOCOL 0x01 müəyyən etmək üçün klaviatura // Klaviatura

İsteğe bağlı olaraq, aşağıdakı təriflərdə istehsalçı və cihaz adını da dəyişə bilərsiniz:

#USB_CFG_VENDOR_NAME təyin edin

#USB_CFG_DEVICE_NAME təyin edin

B) UsbKeyboard.h redaktə edin:

dəyişdirmək:

PORTD = 0; // TODO: Yalnız USB pinləri üçün? DDRD | = ~ USBMASK;

PORTB = 0; // TODO: Yalnız USB pinləri üçün? DDRB | = ~ USBMASK;

101 -dən çox olan açar kodlarına icazə vermək üçün:

0x25, 0x65, // LOGICAL_MAXIMUM (101) - 0x25, 0xE7, // LOGICAL_MAXIMUM (231)

0x29, 0x65, // USAGE_MAXIMUM (Klaviatura Tətbiqi): 0x29, 0xE7, // USAGE_MAXIMUM (Klaviatura Tətbiqi)

Bu 3 faylı da redaktə etməyiniz lazım ola bilər:

usbdrv.husbdrv.cUsbKeyboard.h

və PROGMEM -i gördüyünüz zaman dəyişən növ adından əvvəl "const" əlavə edin (məsələn: PROGMEN char usbHidReportDescriptor [35] ==> PROGMEM const char usbHidReportDescriptor [35])

Bu aydın deyilsə, https://forum.arduino.cc/index.php?topic=391253.0#… ziyarət edin.

Yalnız əlavə edilmiş kitabxananı yükləsəniz (bütün bu dəyişiklikləri özüm etdim) və sadəcə sketchbook kitabxanalar qovluğundan çıxararsanız, bütün bu dəyişikliklərin qarşısını ala bilərsiniz:

UsbKeyboard attiny85 üçün qurulmuşdur

Düzəliş: bu yaxınlarda Alejandro Leivanın (https://github.com/gloob) bu kitabxanaya qulluq edildiyini və yaxşı işlədiyi görünür. Onun versiyasını attini ilə işləmək üçün etdiyim zəruri dəyişikliklərlə sınaya bilərsiniz, buna görə yoxlamaq istəyirsinizsə, onu eskiz kitabxana qovluqlarınızdan çıxarın.

UsbKeyboard attiny85 üçün qurulmuşdur (Alejandro Leiva versiyası)

Addım 6: Attiny-IR və Tinytuner Kitabxanalarının quraşdırılması

A) Attiny-IR kitabxanası:

drive.google.com/open?id=0B_w9z88wnDtFNHlq… saytından yükləyin və sonra sketchbook kitabxana qovluğuna açın.

B) Tinytuner kitabxanası:

Bu yalnız 16Mhz bir kristal istifadə etmədiyiniz təqdirdə lazımdır, amma inanın ki, kristal olmadan da işləsə də, onunla daha sabitdir və bir neçə sentə başa gəlir, buna görə sadə saxlayın, bir kristal istifadə edin və atlayın bu kitabxana.

Hələ əmin deyilsiniz? tamam, kitabxananı https://storage.googleapis.com/google-code-archive… ünvanından yükləyin və sonra sketchbook kitabxana qovluğuna açın.

Kitabxanalar bitdi, indi yükləyiciləri quraşdırmağa davam edirik.

Addım 7: Yükləyicilərin Quraşdırılması və Konfiqurasiyası

Təcrübəmə görə daha sabit olan iki yükləyici yükləyəcəyik Mellis biri və son eskizdə istifadə edəcəyik. Rowdy Dog Software tərəfindən hazırlanan digəri çox kiçik və inteqrasiya olunmuş serial interfeysi olan möhtəşəm bir nüvədir, amma pultum bir müddət sonra qəzaya uğradı, buna görə də bu yükləyicidən yalnız attiny85 daxili saatını kalibr etmək və uzaqdan idarə etmək üçün istifadə edəcəyik. düymələr.

Bilirəm ki, attiny85 -ə seriya imkanları verən kitabxanalar var, amma sonra serial obyektindən istifadə edən kitabxanaları düzəltməlisiniz … Bu proseduru daha çox bəyənirəm.

Quraşdırma ilə başlayaq:

A) Mellis yükləyicisi:

sadəcə Arduino IDE seçimlərini açın və Əlavə Kartlar Meneceri URL -lərini əlavə edin:

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

Arduino IDE lövhələr menecerini açın və attellə axtarın, Mellis -dən lövhələri quraşdırın. İndi Arduino ID -ni ATtiny25/45/85 və ATtiny24/44/84 lövhələrini görməlisiniz.

B) Rowdy Dog Software kiçik yükləyicisi:

storage.googleapis.com/google-code-archive… yükləyicisini yükləyin.

Dosyanı açın və eskiz kitabınızın/aparatınızın içindəki kiçik qovluğu kopyalayın (hələ yoxdursa bu qovluğu yaradın). sonra sketchbook/hardware/tiny/avr/qovluğuna keçin və:

1) Prospective Boards.txt faylını board.txt faylına kopyalayın

2) platform.txt faylını redaktə edin və bəzi dəyişikliklər edin:

Compiler.path dəyişəninə fikir bildirməyin və arduino quraşdırma qovluğunuzdakı hardware/tools/avr/bin/qovluğuna işarə edərək buraxın:

compiler.path = {PATH_TO_YOUR_ARDUINO_FOLDER}/hardware/tools/avr/bin/

alsocompiler dəyişdirin. S.flags = -c -g -asseptor-cpptocompiler ilə

Sonra hər şeyin yerində olduğuna əmin olaraq aşağıdakı dəyişənləri dəyişdirin (bu fayllar mövcud olmalıdır, əks halda dəyişənləri doğru yollara yönəldin):

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) cores/tiny/core_build_options.h faylını redaktə edin və dəyişdirin:

#TIMER_TO_USE_FOR_MILLIS 1 üçün#TIMER_TO_USE_FOR_MILLIS təyin etmək üçün 1 təyin edin 0

Bu çox vacibdir, əks halda IR qəbuledicisi hər düymə üçün sıfır çıxaracaq. Bu ifadə, timer1 -i millis () funksiyası üçün konfiqurasiya edir və timer1 -i IR kitabxanasına buraxır. Yekun eskiz timer0 -i hər halda deaktiv edəcək, buna görə nə millis () və gecikmə () funksiyalarınız olmayacaq. Bunun əvəzinə gecikdirmə funksiyasına malik ola bilərsiniz.

Bu yükləyici minimaldır, lakin Serial obyekt dəstəyi daxildir:

Attiny85 PB2 (pin7) TX və PB0 (pin5) RX -dir

ISP proqramçısı (arduino) və eyni anda qoşulan usb adapter ilə bir konfiqurasiyaya sahib ola bilərsiniz, buna görə də telləri tez -tez dəyişdirməyinizə ehtiyac yoxdur:

İndi həm kitabxanalarımız var, həm də yükləyicilərimiz düzgün qurulub, ən çətin iş başa çatıb və hər şeyi sınaqdan keçirməyə başlaya bilərik.

Addım 8: Yükləyiciləri yandırmaq və eskizləri yükləmək

Arduino IDE üstünlükləri altında hərtərəfli çıxışı aktivləşdirməyi şiddətlə məsləhət görürəm ki, hər hansı bir problemi həll edə biləsiniz.

Bir bootloader'ı Attiny85 -ə yazmaq üçün ISP nümunəsini Arduinoya yükləməlisiniz və sonra ISP olaraq proqramçı Arduino seçməlisiniz.

İndi arduino üzərindəki sıfırlama və yer sancaqları arasında 10 uF kondansatör qoyun (yanma prosesi üçün lazım deyil, ancaq eskizləri attiny85 -ə yükləməkdir).

İndi arduino bootloaderları yandırmağa və eskizləri yükləməyə hazırdır. Yalnız attinanıza uyğun olan düzgün lövhəni seçib yandırmalısınız.

Bir eskizi Attiny85 -ə yükləmək üçün arduino IDE -yə yükləyin və "Proqramçıdan istifadə edərək yüklə" düyməsini basın.

ƏHƏMİYYƏTLİ: eskizi yükləyərkən tərtib etmək, yazmaq və yoxlamaq üçün 3 addım var. Əgər tərtib və yazı uğurla işləsəydi, amma yoxlama prosesi uğursuz olardısa, eskizin hər halda işləməsi mümkündür.

Addım 9: Attiny85 Daxili Saatı Kalibr edin (Kristal istifadə edirsinizsə Bunu atlayın)

16Mhz kristalını istifadə etməmək qərarına gəlsəniz, attiny85 saatınızı kalibr etməlisiniz, buna görə də seriyalı interfeysi olan bir yükləyiciyə ehtiyacımız olacaq və düzgün kalibrləmə üçün tinytuner kitabxanasından istifadə edəcəyik.

Sonrakı addımları izləyin

  • alətlər altında Arduinonu ISP proqramçısı olaraq seçin
  • "ATtiny85 @ 8MHz (daxili osilatör; BOD deaktivdir)" lövhəsini seçin
  • Güman edirəm ki, qoşulmadan əvvəl təsvir edildiyi kimi ISP bağlantınız hazırdır, əks halda bağlantıları edin
  • bootloader yandırın
  • bu bootloader, serial interfeysi üçün fərqli pinlər qurdu, bu konfiqurasiyanı yalnız cari bootloader üçün istifadə edin

- FT232RL attiny85 -də TX -ə PB4 (pin3 RX) - FT232RL -də PB3 (pin2 TX) -dən RX -ə FT232RL -də GND -dən GND -yə (pin4) - attiny85 artıq arduino ilə təchiz olunmağa ehtiyac yoxdur. FT232RL -də 5v, əks halda qoşun: attiny85 VCC (pin8) FT232RL -də 5V

  • tinytuner nümunəsini attiny85 -ə yükləyin
  • Serial ünsiyyətini izləmək üçün ekran proqramını açın: screen /dev /ttyUSB0 9600
  • RESET pinini (pin1) GND -ə bağlayan attiny85 -i sıfırlayın (yalnız bir an), ekran pəncərəsində xoş mesaj göstərilməlidir.
  • Kalibrləmə bitənə qədər tək 'x' simvollarını göndərməyə davam edin
  • kalibrləmə dəyərini bir yerə əlavə edin (OSCCAL = 0x). Bu, son eskizlərdə elan etməyiniz lazım olan dəyərdir

Addım 10: Uzaqdakı düymələrinizi deşifrə edin

İndi uzaqdakı düymələrimizi deşifr etmə və onları PC -də xüsusi vuruşlara təyin etmə vaxtı gəldi, bunu etmək üçün aşağıdakı addımları izləyin:

  • "ATtiny85 @ 16MHz (daxili PLL; 4.3V BOD)" lövhəsini seçin, əgər bir kristal istifadə etmirsinizsə, "ATtiny85 @ 16 MHz (xarici kristal; 4.3 V BOD"), əks halda yandırın
  • eskizi yükləyin:
  • Bir kristal istifadə etmirsinizsə, OSCCAL dəyişənini ehtiva edən sətri şərh edin və saatın kalibrini edərkən tapdığınız dəyərə təyin edin.
  • Sensorun əvvəl təsvir edildiyi kimi bağlandığını düşünürəm, əks halda bağlayın
  • FT232RL -in usb adapterinə qoşulduğunu düşünürəm, əks halda bağlayın
  • RESET pinini (pin1) GND -ə bağlayan attiny85 -i sıfırlayın (bir an)
  • pultunuzun düymələrini dəfələrlə vurun və ekran pəncərəsini yoxlayın, hər bir qeyd üçün son nömrəni qeyd etməlisiniz, hər düymə 2 fərqli nömrə çıxara bilər.

Misal:

Qəbul D44 3396 Qəbul 544 1348

Yeni vurduğunuz düyməyə bağlı olaraq 3396 və 1348 -i əlavə edin, sonra o düymə ilə nə etmək istədiyinizə qərar verməlisiniz. Məsələn, bu düymənin "Səs artır" multimediya açar kodunu göndərməsini istəyə bilərəm, sonra həmin kodun identifikatorunu tapmalıyam. Bunu etmək üçün PDF -ni yükləyin:

"Klaviatura/Klaviatura Səhifəsi" səhifə 53 bölməsinə baxın və uzaq düymələrinizi klaviatura kodlarına bağlamaq üçün İstifadə ID (Dek) sütunundakı nömrələri istifadə edin. Misalımızda "Səs artırma" düyməsinin 128 olduğunu görə bilərik.

Daha əvvəl quraşdırdığımız v-usb paketindən UsbKeyboard kitabxanasındakı UsbKeyboard.h faylını redaktə edin və hələ də yoxdursa mövcud təriflərə əlavə edin:

128

Bütün uzaqdan idarəetmə düymələrimiz və UsbKeyboard.h sənədindəki bütün təriflər hazır olduqda, son addıma keçə bilərik.

Addım 11: Final eskizini yükləyin və ən yaxşısına ümid

Final Sketch və Ən Yaxşı Ümid Yüklənir!
Final Sketch və Ən Yaxşı Ümid Yüklənir!
Final Sketch və Ən Yaxşı Ümid Yüklənir!
Final Sketch və Ən Yaxşı Ümid Yüklənir!

İndi bütün uzaq düymələrin deşifrəsi var, UsbKeyboard.h faylı açar kodlarımızla doludur, buna görə də indi qəti eskizi arduino IDE -yə yükləyə bilərik:

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

Bu fayl qəbuledicim üçün istifadə etdiyim tam sənəddir və 2 fərqli uzaqdan idarəetmə üçün işləyir, buna görə uzaqdan idarəetmə cihazlarınızla işləmək üçün onu yeniləməlisiniz.

Bir kristal istifadə etmirsinizsə, OSCCAL dəyişənini ehtiva edən sətri şərh edin və saatın kalibrini edərkən tapdığınız dəyərə təyin edin.

Diqqət yetirin ki, loop funksiyasında buna bənzər çoxlu ifadələr var:

if (results.value == 3405 || results.value == 1357) {// yuxarı ox

əgər (son vuruş! = nəticələr. dəyər) UsbKeyboard.sendKeyStroke (KEY_ARROW_UP);

}

Uzaqdan idarəetmə düymələrinizdən birində öz ifadələrinizi yaratmalısınız. "If" vəziyyətində, uzaqdan idarəetmə kodunu açarkən tapdığınız dəyərləri results.value daxil etməlisiniz və UsbKeyboard.sendKeyStroke metodunun arqumenti olaraq UsbKeyboard.h faylına əvvəlcədən təyin edilmiş kod kodlarından birini qoymalısınız.

Bəzi uzaqdan idarəedicilər eyni kodu hər dəfə iki dəfə göndərdikləri üçün "if (lastStroke! = Results.value)" şərti lazımdır və bu, ikinci vuruşun qarşısını alır. Tamamilə əmin deyiləm və uzaqdan idarəetmə sistemində proqramlaşdırılmış IR protokolundan asılı ola bilər (həqiqətən də IR protokolları üzrə mütəxəssis deyiləm), amma öz uzaqdan idarəetmə təcrübəmə görə hər düymə 2 fərqli kod istehsal edə bilər. düyməni basıb saxlayın, eyni kodu göndərir, ancaq düyməni yenidən vurursanız digərini göndərir. Kodların alternativ bir şəkildə göndərildiyi görünür, sanki düyməni neçə dəfə vurduğunuzu bilmək standart bir üsuldur.

Tamam, demək olar ki, bitirdik, son eskizi yükləyin, PC -yə qoşun və necə getdiyini görün.

Bu addım üçün həm arduino, həm də usb -ni seriya adapterinə ayırsanız və yalnız bundan sonra USB -ni PC portunuza bağlasanız daha yaxşı olar (bir şey səhv olarsa, dövrənizi düzəltmək daha asan olar).

Hər şey yaxşı işləyirsə, bir terminal açıb dmesg əmrini göndərdiyiniz zaman bu addımdakı ilk görüntüyə bənzər bir şey görməlisiniz. Problemlər olsaydı, ikinci şəkildəki kimi səhvləriniz olmalı və dövrə və/və ya proqram təminatını ayırmağa başlamalısınız. Sahib olduğum ilk səhvlərin mənbəyindən biri də IR qəbuledicimlə işləməyən bir USB qovşağı idi (digərləri işləsə də) … buna görə də İR alıcısını birbaşa PC portuna bağlamaq daha yaxşıdır. Nəhayət səhvləri tapmaq çətin ola bilər, amma sonunda mənim kimi çox şey öyrənərdiniz və ödəməli olduğunuz qiymət buna dəyər, sizi əmin edirəm.

Hamısı budur, bu təlimatda hər hansı bir səhv görsəniz və yeni IR USB qəbuledicinizdən zövq alsanız mənə bildirin!

Tövsiyə: