Բովանդակություն:

ATtiny85 IR USB ընդունիչ ՝ 11 քայլ (նկարներով)
ATtiny85 IR USB ընդունիչ ՝ 11 քայլ (նկարներով)

Video: ATtiny85 IR USB ընդունիչ ՝ 11 քայլ (նկարներով)

Video: ATtiny85 IR USB ընդունիչ ՝ 11 քայլ (նկարներով)
Video: ATtiny85 Relay Control with IR Remote || 2-Channel IR Remote Control System Using ATtiny85 2024, Հուլիսի
Anonim
ATtiny85 IR USB ընդունիչ
ATtiny85 IR USB ընդունիչ

WԳՈՇԱՈՄ, ԱՅՍ Խրատը ԴԱՇՆԱ Է

V-usb գրադարանը նախագծված է USB 1.1 արձանագրությամբ աշխատելու համար, որը մեր օրերում գրեթե գոյություն չունի: USB3- ի գալուստով դուք ավելի շատ գլխացավ կունենաք, որը փորձում է v-usb սարքերը գործի դնել: Մուլտիմեդիա կենտրոնս փոխելուց հետո ես ունեմ կայունության բազմաթիվ խնդիրներ, և չնայած ընդունիչն աշխատում է, որոշ ժամանակ անց այն դադարում է աշխատել: Ես անհաջող փորձեցի շտկել այն: Ես պատրաստեցի նաև atmega328p տարբերակը, բայց այս մեկն ուներ նույն խնդիրները: boardամանակապահի ժամանակաչափ օգտագործելը ՝ խորհուրդը պարբերաբար վերակայելու համար նույնպես չօգնեց, ուստի ես հրաժարվում եմ v-usb- ից:

Ինքներդ ձեզ լավություն արեք և մի շարունակեք այս հրահանգով, եթե դա կրթական նպատակների համար չէ: Փոխարենը խորհուրդ եմ տալիս գնել չիպային մոդուլ ATmega 32U4, որն արդեն ինտեգրել է USB ինտերֆեյսը և հետևել այս ուղեցույցին.

www.sparkfun.com/tutorials/337

Հետո գցեք IR սենսոր TSOP31238 և լավ կլինի:

Բարև ստեղծողներ: սա ուսանելի է կառուցել աշխատանքային USB IR ընդունիչ `օգտագործելով Attiny85 միկրոկոնտրոլերը: Ես սկսեցի այս նախագիծը` GNU/Linux OS- ում որոշ IR հեռակառավարիչների աջակցության բացակայությունը (գոնե ամբողջական աջակցություն) հաղթահարելու համար: Այս հրահանգներին հետևելով ՝ կարող եք կառուցել ծրագրավորվող USB IR ընդունիչ, որը մի քանի դոլարով աշխատում է ցանկացած IR հեռակառավարման վահանակի հետ:

Առաջին հերթին, այս ուսանելիը գոյություն չէր ունենա առանց այն մարդկանց քրտնաջան աշխատանքի, որոնք ստեղծել են այն գրադարանները, որոնք ես օգտագործում եմ այստեղ.

  • Դեյվիդ Ա. Մելլիսը ՝ իր գրավիչ միջուկի համար
  • Rowdy Dog ծրագրակազմ իրենց գրադարանի համար TinyTuner
  • Rowdy Dog ծրագրակազմ իրենց փոքրիկ բեռնախցիկի համար
  • Rancidbacon (https://rancidbacon.com/) v-usb գրադարանի իր arduino նավահանգստի համար (https://code.google.com/archive/p/vusb-for-arduino/downloads)
  • seejaydee- ի իր IR գրադարանի համար փոքր միջուկներ, որոնք հայտնաբերված են ուսանելի https://www.instructables.com/id/Attiny-IR-librar… ծածկագրի վրա https://www.instructables.com/id/Attiny-IR -գրադարան…

Երբեմն հեշտ չէ գտնել գրադարանի ճիշտ սեփականատիրոջը, ուստի սխալվելու դեպքում խնդրում եմ թողնել մեկնաբանություն, և ես հարցը կլուծեի ՇՏԱՊ:

Այս ուղեցույցը գոյություն ունի, քանի որ ես չեմ գտել տուփից դուրս աշխատող ամբողջական ձեռնարկ/ուղեցույց (այն կարող է գոյություն ունենալ, բայց ես չկարողացա գտնել այն), այնպես որ ես հավաքեցի համացանցում առկա բոլոր տեղեկությունները և մի շարք փորձարկումներից հետո և սխալներ Ես հանդես եկա ամբողջական ուղեցույցով ՝ աշխատող USB IR ընդունիչ կառուցելու համար, որն իրականում բավականին լավ է աշխատում:

Տեղեկատվության հիմնական աղբյուրները, որոնց ես հետևել եմ.

  • 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: Որոշ նկատառումներ

  • Ես AVR ISP ծրագրավորող չունեմ և իսկապես չեմ էլ ցանկանում գնել այն, ուստի Arduino- ն օգտագործել եմ attiny85- ը ծրագրավորելու համար
  • Ես թքած ունեմ այլ OS- ի վրա, բացի GNU/Linux- ից, այնպես որ չգիտեմ, թե սա այլ կերպ կաշխատի:
  • կան այլ IR գրադարաններ, բայց ես չկարողացա ստիպել դրանք աշխատել նույնիսկ arduino- ով: Չնայած հաշվի առեք, որ ես սկսեցի IR գրադարանների վերաբերյալ սահմանափակ գիտելիքներով: Միգուցե ես կարող էի նրանց ստիպել աշխատել հիմա, երբ ձեռք են բերվել բավականին մեծ թվով խնդիրներ լուծելու փորձ: Ինչևէ, ես կորած էի և հուսահատ, նախքան գտնել այն գրադարանը, որը տրամադրել էր Սեյջեյդին, և ես դրանից հետո օգտագործում եմ դա (շատ շնորհակալ եմ):
  • Կան այլ ապարատային կոնֆիգուրացիաներ, բայց ես օգտագործել եմ միայն այն, որն օգտագործում է 5V ՝ attiny85 և երկու 3.6V 0.5W զեներային դիոդներ ՝ տվյալների գծերի լարումը սեղմելու համար, այն աշխատում է տուփից դուրս, այնպես որ ես չխառնվեցի այլ կազմաձևեր:
  • Դուք կարող եք օգտագործել 16 ՄՀց բյուրեղյա կամ կարող եք օգտագործել tinytuner գրադարանը ՝ ձեր ներքին ժամացույցը ճշգրտելու համար 85: Ես խստորեն խորհուրդ եմ տալիս օգտագործել բյուրեղը, այն շատ ավելի կայուն է և, հավանաբար, ձեզ շատ գլխացավերից կազատի:
  • Ես այստեղ օգտագործում եմ երկու տարբեր բեռնիչ ՝ attiny85- ի համար.

ա) Rowdy Dog Software- ի տարբերակը, այն ինտեգրված է սերիական ինտերֆեյս, որը շատ թույն է և շատ փոքր, այնպես որ դուք ավելի շատ տարածք ունեք ձեր ծրագրի և այլ գրադարանների համար: Խնդիրն այն է, որ ինչ -ինչ պատճառներով, չնայած այն բավականին լավ է աշխատում, որոշ ժամանակ անց USB սարքն անջատվեց (խնդիրները կարող եք գտնել dmesg հրամանով): Չգիտեմ, արդյոք դա միջուկի խնդիր է, թե միջուկի խառը համադրություն գումարած ընտրված գրադարանները, այնպես որ որոշ ժամանակ անց որոշեցի օգտագործել այս միջուկը պարզապես հեռակա ստեղները վերծանելու և ժամացույցը չափաբերելու համար (երբ 16 ՄՀց չօգտագործելը բյուրեղյա): Դրանից հետո ես պարզապես այրում եմ Mellis bootloader- ը և վերբեռնում վերջնական ուրվագիծը, որը չի օգտագործում սերիական ինտերֆեյսը:

բ) Mellis տարբերակ, կայուն bootloader, ես դա օգտագործել եմ բազմաթիվ նախագծերում: Ես միշտ կօգտագործեի այս bootloader- ը, եթե այն ներառեր սերիական ինտերֆեյս: Ես օգտագործում եմ այս միջուկը վերջնական ուրվագծում ՝ հեռակառավարման վահանակի բոլոր ստեղները վերծանելուց հետո:

Քայլ 2: Սկսենք սարքավորումից

Սկսենք Սարքաշարից
Սկսենք Սարքաշարից
Սկսենք Սարքաշարից
Սկսենք Սարքաշարից
Սկսենք Սարքաշարից
Սկսենք Սարքաշարից

Ձեզ անհրաժեշտ գործիքներ

  • arduino- ի հետ համատեղելի տախտակ
  • սերիալ դեպի USB ադապտեր ՝ ձեր հեռակառավարման բանալիները վերծանելու համար (պարզապես օգտագործեք FT232RL)
  • համակարգիչ GNU/Linux- ով և arduino IDE- ի ճիշտ կազմաձևված համակարգիչ, ես օգտագործում եմ arduino IDE 1.8.0
  • IR սարքը ՝ ձեր սարքը փորձարկելու համար (նույնիսկ այնպիսի խայտառակ սարքը, ինչպիսին arduino մեկնարկային հավաքածուներում է, կաշխատի)
  • մուլտիմետր ՝ ձեր տախտակը կարգաբերելու համար (հուսով եմ, որ դրա կարիքը չեք ունենա, հաջողություն!)

Նյութերի ցանկ

  • 1 ուշադրություն
  • 2 68R դիմադրիչներ
  • 1 1.5K ռեզիստոր
  • 1 4.7K դիմադրություն
  • 1 16 ՄՀց բյուրեղյա
  • 1 22pF կոնդենսատոր
  • 1 0.1uF կոնդենսատոր
  • 1 10uF կոնդենսատոր
  • 2 3.6V 0.5W զեներային դիոդներ
  • 1 USB տիպ A արական միակցիչ
  • 1 շերտագիծ ՝ 6 կապով, խորհուրդը ծրագրավորելու և կարգաբերելու համար:
  • 1 IR տվիչ TSOP31238
  • շատ սուրճ ՝ արթուն պահելու համար

Նախքան վերջնական տախտակը միացնելը, հավանաբար կցանկանայիք թեստի նախատիպ պատրաստել փորձարկման նպատակով, քանի որ այս հրահանգին կից սխեման հետևելը պետք է բավական լինի այն կառուցելու համար:

Attiny85- ը համակարգչին միացնելու համար վերջնական դիզայնում օգտագործվում է USB տիպի A միակցիչ, որը զոդված է տախտակին, սակայն նախատիպի համար անհրաժեշտ է պատրաստել USB մալուխ, որը կարող եք միացնել հացատախտակին.

Sոդեք մի փոքրիկ կտորի մեջ ՝ 4 կապում, այնուհետև կտրեք հին USB մալուխը և կպցրեք կապերը USB մալուխի ներսում գտնվող 4 լարերի վրա.

  • կարմիրը VCC է (5V)
  • սևը GND է
  • սպիտակ է D-
  • կանաչը D+ է

Ամեն ինչ պահեք տաք սոսինձով:

Այժմ մենք պետք է միացնենք ISP ծրագրավորողին (Arduino), USB սերիական ադապտերին (FT232RL) և IR սենսորին attiny85- ին:

Դուք կարող եք միացված թողնել բոլորը միասին, որպեսզի կարողանաք այրել տարբեր բեռնախցիկներ, բեռնել էսքիզներ և ստուգել սերիական նավահանգիստը ՝ առանց լարերը փոխելու, Դա անելու համար միացրեք ամեն ինչ ՝ հետևելով այս հրահանգներին.

ISP ծրագրավորող (Arduino). Սա թույլ է տալիս մեզ այրել bootloaders և բեռնել էսքիզներ

  • arduino- ում attiny85 PB0 (pin5) մինչև pin11 (MOSI)
  • attiny85 PB1 (pin6) մինչև pin12 (MISO) arduino- ում
  • attiny85 PB2 (pin7) մինչև pin13 (SCK) arduino- ում
  • attiny85 RESET (pin1) քաշքշուկով (4.6k մինչև VCC) մինչև pin10 arduino- ում
  • attiny85 VCC- ից մինչև 5V arduino- ում
  • attiny85 GND- ից GND arduino- ում

usb դեպի սերիական ադապտեր (FT232RL). սա թույլ է տալիս մեզ ստուգել սերիական պորտը

  • attiny85 PB0 (pin5 RX) դեպի TX ՝ FT232RL- ում
  • attiny85 PB2 (pin7 TX) դեպի RX FT232RL- ում
  • attiny85 GND (pin4) դեպի GND FT232RL- ի վրա
  • քանի որ attiny85- ն արդեն աշխատում է arduino- ով, ձեզ հարկավոր չէ 5v- ը միացնել FT232RL- ին, հակառակ դեպքում միացրեք. attiny85 VCC (pin8) 5V- ին FT232RL- ով:

usb սերիական ադապտեր (FT232RL) միայն ժամացույցի ճշգրտման համար (պարզապես բեռնիչ «ATtiny85 @ 8MHz (ներքին տատանող. BOD անջատված է)»)

  • PB4 (pin3 RX) դեպի TX ՝ FT232RL attiny85- ում
  • PB3 (pin2 TX) դեպի RX ՝ FT232RL attiny85- ում
  • GND (pin4) GND- ից FT232RL- ում
  • քանի որ attiny85- ն արդեն աշխատում է arduino- ով, ձեզ հարկավոր չէ 5v- ը միացնել FT232RL- ին, հակառակ դեպքում միացրեք. attiny85 VCC (pin8) 5V- ին FT232RL- ով:

Եթե օգտագործում եք 16 ՄՀց բյուրեղ, միացրեք այն Attiny85 կապում PB3 (pin2) և PB4 (pin3) և յուրաքանչյուր կապում միացրեք GND- ին, ինչպես նաև յուրաքանչյուրը 22pF գլխարկով:

Terտեք Attiny85 VCC- ն ՝ 0.1uF և 10uF կոնդենսատորներով, որոնք դրանք միացնում են GND- ին զուգահեռ

Միացրեք IR տվիչի ելքային կապը attiny85 PB1- ին (pin6), միացրեք այն:

Կառուցեք և միացրեք USB ինտերֆեյսը

  • GND (սև մետաղալար). Միացրեք այն ընդհանուր GND- ին (բոլոր հիմքերը միացված են միասին)
  • D- (սպիտակ մետաղալար), որը միացված է attiny85 PB0 (pin5) 68R ռեզիստորի միջոցով, միացրեք այն նաև գետնին 3.6V 0.5W զեների միջոցով և քաշեք այն մինչև VCC ՝ 1.5K ռեզիստորով
  • D+ (կանաչ մետաղալար), որը միացված է PB2- ին 68R ռեզիստորի միջոցով, այն միացրեք գետնին 3.6 Վ 0.5 Վ զենեռի միջոցով
  • 5V, կարող եք այն միացնել, քանի որ այս փուլում ամեն ինչ սնուցվում է Arduino- ով, հակառակ դեպքում միացրեք այն attiny85 VCC- ին

Enեներ դիոդները միացված են այնպես, որ անոդները կապված են GND- ին, իսկ կաթոդները `D+ և D- տվյալների տողերին:

Քայլ 3: Վերջնական ձևավորում

Վերջնական դիզայն
Վերջնական դիզայն
Վերջնական դիզայն
Վերջնական դիզայն
Վերջնական դիզայն
Վերջնական դիզայն

Վերջնական ձևավորման համար կարող եք օգտագործել տախտակ ՝ անցքերի բաղադրամասերով կամ փորագրել ձեր սեփական տախտակը և օգտագործել smd բաղադրիչներ: Սովորելու համար, թե ինչպես փորագրել տախտակ, պարզապես google- ում կատարեք, կան հիանալի ձեռնարկներ, որոնք հասանելի են առցանց:

Ես փորագրել եմ իմ սեփական տախտակը և շատ գոհ եմ վերջնական արդյունքներից (փոքր, կայուն և ամուր տախտակ): Այո, ես գիտեմ, որ կտրվածքը տհաճ է, բայց ես չէի կարող օգտագործել որևէ էլեկտրական գործիք այդքան ուշ գիշեր, և ես պարզապես կտրեք տախտակը իմ թիթեղյա մկրատով:

Ի դեպ, պատկերների հետքերը պղինձ չեն, դրանք բուժվել են պղնձը փոքր -ինչ պղտորող տհաճ քիմիկատով (կասկածվում է, որ դա քաղցկեղ է առաջացնում, ուստի այն օգտագործեք մեծ խնամքով, լատեքսային գլոբուսներով և փոշու դիմակով).

Օգտագործեք վերը նշված սխեմաները `ձեր դասավորությունը նախագծելու համար, կամ պարզապես կարող եք օգտագործել իմ pcb- ի հետքը` ձեր տախտակը փորագրելու համար:

Քայլ 4: Deրագրային ապահովման հետ գործ ունենալը

Այս նախագծի սխեման շատ հեշտ է, դրա փոխարեն ծրագրաշարը ավելի մեծ ջանքեր է պահանջում:

Մեզ անհրաժեշտ է առնվազն 2 գրադարան (ևս մեկը, եթե բյուրեղ չեք օգտագործում) և 2 բեռնիչ ՝ այս աշխատանքը կատարելու համար: Երբ ես սկսեցի այս նախագիծը, ես որոշ գրադարաններ փորձարկեցի, երբեմն դրանք չէին աշխատում, և շատ անգամ նրանք պարզապես կազմաձևված չէին, որ տուփից դուրս աշխատեն Attiny85- ով (ես դա դեռ չգիտեի): Հետո ես իսկապես խնդիրներ գտա գրադարանների / բեռնողների հետ, որոնք համընկնում էին ընդհատումների հետ: Ի վերջո, ես ստիպված եղա գործ ունենալ բավականին մեծ թվով սխալների հետ, երբ վերջնական միացումը միացրի իմ համակարգչին: Չնայած ես չունեի այս ուղեցույցը, ուստի կարծում եմ, որ ամեն ինչ լավ կլիներ, պարզապես հետևիր այս հրահանգի քայլերին, եթե դա անես առանց սխալներ անելու, դու լավ կլինես:)

Այժմ մենք պետք է տեղադրենք և կազմաձևենք մի քանի գրադարաններ.

  • v-usb arduino գրադարանի համար. այս գրադարանը թույլ է տալիս միկրոկառավարիչին ԱՀ-ն ճանաչել որպես HID USB ստեղնաշար, և մենք այն կօգտագործենք համակարգչին առանցքային հարվածներ ուղարկելու համար: Այս գրադարանին անհրաժեշտ են որոշ փոփոխություններ attiny85- ի հետ համատեղելի լինելու համար
  • tinytuner գրադարան միայն այն դեպքում, եթե չեք օգտագործի 16 ՄՀց բյուրեղ: Այնուհետև ձեզ հարկավոր է չափագրել միկրոկառավարիչի ներքին ժամացույցը: Այս գրադարանը աշխատում է տուփից դուրս:
  • Attiny-IR- գրադարանը `IR սենսորի հետ փոխազդեցության համար: Այս գրադարանը աշխատում է տուփից դուրս:

Մեզ անհրաժեշտ են նաև 2 բեռնիչ ՝

  • Dog Software- ի տարբերակ ՝ սերիական ինտերֆեյսի առկայությամբ: Այս bootloader- ին անհրաժեշտ է փոքր փոփոխություն attiny85- ի հետ աշխատելու համար, քանի որ այն օգտագործում է timer1- ը millis () գործառույթի համար և չի աշխատի IR գրադարանի հետ: Մենք պետք է ժամաչափը փոխենք timer0- ի:
  • Mellis տարբերակ, կայուն bootloader, որը մենք կօգտագործենք վերջնական փուլում: Սա աշխատում է տուփից դուրս:

Քայլ 5: V-usb գրադարանի տեղադրում և կազմաձևում

Ներբեռնեք գրադարանը https://code.google.com/archive/p/vusb-for-arduin… Տեղահանեք ֆայլը և պատճենեք գրադարանները/UsbKeyboard- ը ձեր ուրվագծային գրադարանների պանակում:

Այժմ դուք պետք է խմբագրեք մի քանի ֆայլ ՝ ATtiny85- ի հետ համատեղելի լինելու համար (կազմաձևված է աշխատել arduino- ի հետ).

Ա) խմբագրել usbconfig.h:

«Hardware Config» փոփոխության ներքո ՝

#սահմանել USB_CFG_IOPORTNAME D ## սահմանել USB_CFG_IOPORTNAME B

եւ

#սահմանել USB_CFG_DMINUS_BIT 4 ՝#սահմանելու համար USB_CFG_DMINUS_BIT 0

«Լրացուցիչ սարքավորումների կազմաձևում» փոփոխության ներքո.

#սահմանել USB_CFG_PULLUP_IOPORTNAME D##սահմանել USB_CFG_PULLUP_IOPORTNAME B

Լրիվ «boot compliant HID» բնութագիրը ստեղծելու համար (հակառակ դեպքում մուլտիմեդիա ստեղներ չեն աշխատի), փոխեք նաև.

#սահմանել USB_CFG_INTERFACE_SUBCLASS 0 // Bootto#define USB_CFG_INTERFACE_SUBCLASS 0x01 // Boot

եւ

#սահմանել USB_CFG_INTERFACE_PROTOCOL 0 // Ստեղնաշար#սահմանելու համար USB_CFG_INTERFACE_PROTOCOL 0x01 // Ստեղնաշար

Ptionանկության դեպքում կարող եք նաև փոխել արտադրողի և սարքի անունը հետևյալ սահմանումներում.

#սահմանեք USB_CFG_VENDOR_NAME

#սահմանեք USB_CFG_DEVICE_NAME

Բ) խմբագրել UsbKeyboard.h:

փոփոխություն:

PORTD = 0; // TODO: Միայն USB կապերի համար? DDRD | = ~ USBMASK;

դեպի

PORTB = 0; // TODO: Միայն USB կապերի համար? DDRB | = ~ USBMASK;

101 -ից ավելի հիմնաբառեր թույլատրելու համար նաև.

0x25, 0x65, // LOGICAL_MAXIMUM (101) դեպի ՝ 0x25, 0xE7, // LOGICAL_MAXIMUM (231)

եւ

0x29, 0x65, // USAGE_MAXIMUM (Ստեղնաշարի դիմում) մինչև ՝ 0x29, 0xE7, // USAGE_MAXIMUM (Ստեղնաշարի դիմում)

Կարող է անհրաժեշտ լինել նաև խմբագրել այս 3 ֆայլերը.

usbdrv.husbdrv.cUsbKeyboard.h

և ամեն անգամ, երբ տեսնում եք, որ PROGMEM- ը փոփոխական տիպի անունից առաջ ավելացնում է «const» (օրինակ ՝ PROGMEN char usbHidReportDescriptor [35] ==> PROGMEM const char usbHidReportDescriptor [35])

Եթե դա պարզ չէ, այցելեք

Դուք կարող եք խուսափել այս բոլոր փոփոխություններից, եթե պարզապես ներբեռնեք կցված գրադարանը (այս բոլոր փոփոխություններն ինքս եմ կատարել) և պարզապես հանեք այն ձեր ուրվագծային գրադարանների գրադարանների պանակից.

UsbKeyboard- ը կազմաձևված է attiny85- ի համար

Խմբագրում. Վերջերս ես հայտնաբերեցի, որ Ալեխանդրո Լեյվան (https://github.com/gloob) հոգացել է այս գրադարանի մասին և, կարծես, նույնպես լավ է աշխատում: Կարող եք նաև փորձել նրա տարբերակը անհրաժեշտ փոփոխություններով, որոնք ես կատարել եմ, որպեսզի այն աշխատի շքեղությամբ, այնպես որ, եթե ցանկանում եք դա ստուգել, պարզապես հանեք այն ձեր ուրվագծային գրադարանների գրադարանների պանակից:

UsbKeyboard- ը կազմաձևված է attiny85- ի համար (Alejandro Leiva տարբերակ)

Քայլ 6. Attiny-IR և Tinytuner գրադարանների տեղադրում

Ա) Attiny-IR գրադարան

ներբեռնեք այն https://drive.google.com/open?id=0B_w9z88wnDtFNHlq… ապա բացեք այն ձեր ուրվագծային գրադարանների գրադարանների պանակում:

Բ) Tinytuner գրադարան.

Սա անհրաժեշտ է միայն այն դեպքում, եթե դուք չեք օգտագործում 16 ՄՀց բյուրեղ, բայց հավատացեք ինձ, չնայած այն աշխատում է նաև առանց բյուրեղի, այն շատ ավելի կայուն է դրա հետ և դրանք արժեն մի քանի ցենտ, ուստի պարզ պահեք, օգտագործեք բյուրեղ և բաց թողեք այս գրադարանը:

Դեռ համոզված չե՞ք: լավ, ներբեռնեք գրադարանը https://storage.googleapis.com/google-code-archive… այնուհետև այն բացեք ձեր ուրվագծային գրադարանների գրադարանների պանակում:

Ավարտեցինք գրադարանները, այժմ անցնում ենք բեռնախցիկների տեղադրմանը:

Քայլ 7: Բեռնիչ սարքերի տեղադրում և կազմաձևում

Մենք մտադիր ենք տեղադրել երկու bootloader, որոնցից մեկն Mellis- ն, իմ փորձի համաձայն, ավելի կայուն է, և մենք այն կօգտագործենք վերջնական ուրվագծում: Մյուսը, որը մշակվել է Rowdy Dog Software- ի կողմից, հիանալի միջուկ է, շատ փոքր և հասանելի է ինտեգրված սերիական ինտերֆեյսով, սակայն իմ հեռակառավարման վահանակը որոշ ժամանակ անց վթարի է ենթարկվել դրա հետ, այնպես որ մենք կօգտագործենք այս բեռնիչը միայն ուշադրության ներքին ժամացույցը ճշգրտելու և մեր հեռակառավարման ապակոդավորման համար: կոճակներ:

Ես գիտեմ, որ կան գրադարաններ, որոնք տալիս են attiny85 սերիական հնարավորությունները, բայց հետո ձեզ հարկավոր է կարգավորել գրադարանները, որոնք օգտագործում են սերիական օբյեկտը … Ինձ ավելի դուր է գալիս այս ընթացակարգը:

Սկսենք տեղադրումից.

Ա) Mellis bootloader:

պարզապես բացեք Arduino IDE- ի նախապատվությունները և ավելացրեք «Լրացուցիչ խորհուրդների մենեջերի URL- ներ.

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

Այնուհետև բացեք Arduino IDE տախտակների կառավարիչը և փնտրեք փայլ, տեղադրեք տախտակները Mellis- ից: Այժմ դուք պետք է տեսնեք Arduino ID- ն ՝ ATtiny25/45/85 և ATtiny24/44/84 տախտակները:

Բ) Rowdy Dog Software փոքրիկ bootloader:

ներբեռնեք bootloader- ը

Բացեք ֆայլը և պատճենեք ձեր ուրվագծային գրքույկի/սարքաշարի ներսում գտնվող փոքրիկ թղթապանակը (ստեղծեք այս պանակը, եթե այն դեռ գոյություն չունի): ապա անցեք sketchbook/hardware/tiny/avr/թղթապանակին և.

1) պատճենեք Prospective Boards.txt ֆայլը boards.txt ֆայլում

2) խմբագրել platform.txt ֆայլը և կատարել որոշ փոփոխություններ.

Մեկնաբանեք փոփոխիչ compiler.path- ը և թողեք այն մատնանշելով դեպի arduino տեղադրման թղթապանակի hardware/tools/avr/bin/պանակը.

compiler.path = {PATH_TO_YOUR_ARDUINO_FOLDER}/սարքավորում/գործիքներ/avr/bin/

փոխել alsocompiler. S.flags = -c -g -assembler-with-cpptocompiler. S.flags = -c -g -x assembler-with-cpp

Այնուհետև փոխեք հետևյալ փոփոխականները ՝ համոզվելով, որ ամեն ինչ իր տեղում է (այդ ֆայլերը պետք է գոյություն ունենան, հակառակ դեպքում փոփոխականներն ուղղեք դեպի ճիշտ ուղիներ).

tools.avrdude.cmd.path = {runtime.ide.path}/սարքավորում/գործիքներ/avr/bin/avrdude

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

tools.avrdude.cmd.path.linux = {runtime.ide.path}/սարքավորում/գործիքներ/avr/bin/avrdude

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

3) խմբագրել ֆայլի միջուկները/tiny/core_build_options.h և փոխել.

#սահմանել TIMER_TO_USE_FOR_MILLIS 1 -ից#սահմանելու համար TIMER_TO_USE_FOR_MILLIS 0

Սա շատ կարևոր է, հակառակ դեպքում IR ստացողը զրոներ է թողնում յուրաքանչյուր կոճակի համար: Այս հայտարարությունը կարգավորում է timer0- ը millis () ֆունկցիայի համար ՝ թողնելով ժամանակաչափը հասանելի IR գրադարանին: Վերջնական ուրվագիծը ամեն դեպքում անջատելու է timer0- ը, այնպես որ դուք չեք ունենա ոչ millis () և delay () գործառույթներ: Դրա փոխարեն կարող եք ունենալ delayMicroseconds () գործառույթ:

Այս bootloader- ը նվազագույն է, բայց ներառում է սերիական օբյեկտի աջակցություն.

Attiny85 PB2 (pin7) TX է, իսկ PB0 (pin5) ՝ RX

Կարող եք ունենալ կոնֆիգուրացիա ISP ծրագրավորողի (arduino) և սերիական usb ադապտերի հետ միացված միաժամանակ, որպեսզի լարերը շատ հաճախ փոխելու կարիք չունենաք.

Այժմ մենք ունենք ինչպես գրադարանները, այնպես էլ բեռնախցիկները տեղադրված և ճիշտ կազմաձևված, ամենադժվար աշխատանքն ավարտված է, և մենք կարող ենք սկսել ամեն ինչ փորձարկել:

Քայլ 8: Բեռնիչ սարքերի այրում և էսքիզների վերբեռնում

Ես խստորեն խորհուրդ եմ տալիս ակտիվացնել Arduino IDE- ի նախասիրությունների ներքո բուռն ելքը, որպեսզի կարողանաք պարզել ցանկացած վերջնական խնդիր:

Bootloader- ը Attiny85- ում այրելու համար անհրաժեշտ է ISP- ի օրինակը վերբեռնել Arduino- ում, այնուհետև ծրագրավորող Arduino- ն ընտրել որպես ISP:

Այժմ տեղադրեք 10uF կոնդենսատոր arduino- ի վերակայման և գրունտային կապերի միջև (դա անհրաժեշտ չէ այրման գործընթացի համար, բայց այն պետք է էսքիզներ վերբեռնել attiny85):

Այժմ arduino- ն պատրաստ է այրել բեռնախցիկները և բեռնել էսքիզներ: Պարզապես պետք է ընտրել ձեր երանգի հետ համատեղելի ճիշտ տախտակը և այրել այն:

Էսքիզը Attiny85- ում բեռնելու համար այն տեղադրեք arduino IDE- ում և կտտացրեք «Վերբեռնել ծրագրավորողի միջոցով»:

ԿԱՐԵՎՈՐ. Էսքիզը վերբեռնելիս կա 3 քայլ ՝ հավաքում, գրում և հաստատում: Եթե կազմումը և գրելը հաջողությամբ աշխատեն, բայց ստուգման գործընթացը ձախողվի, հնարավոր է, որ էսքիզն ամեն դեպքում աշխատի:

Քայլ 9. Կալիբրացնել Attiny85 ներքին ժամացույցը (բաց թողեք սա, եթե բյուրեղ եք օգտագործում)

Այն դեպքում, երբ որոշեք չօգտագործել 16 ՄՀց բյուրեղը, դուք պետք է ճշգրտեք ձեր attiny85 ժամացույցը, ուստի մեզ անհրաժեշտ կլինի սերիական ինտերֆեյս ունեցող բեռնիչ, և մենք կօգտագործենք tinytuner գրադարանը `ճշգրիտ ճշգրտումը ստանալու համար:

Հետևեք հաջորդ քայլերին

  • գործիքների ներքո ընտրեք Arduino- ն որպես ISP ծրագրավորող
  • ընտրել տախտակը «ATtiny85 @ 8MHz (ներքին տատանում, BOD- ն անջատված է)»
  • Ենթադրում եմ, որ դուք ունեք ISP կապը, ինչպես նկարագրված է միացումից առաջ, հակառակ դեպքում կատարեք կապերը
  • այրել bootloader- ը
  • այս bootloader- ը կարգավորել է սերիական ինտերֆեյսի տարբեր կապում, օգտագործեք այս կազմաձևը միայն ընթացիկ bootloader- ի համար

- PB4 (pin3 RX) դեպի TX FT232RL attiny85 - PB3 (pin2 TX) դեպի RX FT232RL attiny85 - GND (pin4) դեպի GND FT232RL- ում, քանի որ attiny85- ն արդեն սնուցվում է arduino- ով, որը ձեզ անհրաժեշտ չէ միացնել 5v- ը FT232RL- ի վրա, այլապես միացրեք. attiny85 VCC (pin8) 5V- ին FT232RL- ի վրա

  • վերբեռնեք tinytuner- ի օրինակը attiny85- ում
  • բացել էկրանի ծրագիրը `սերիական հաղորդակցությունը վերահսկելու համար. screen /dev /ttyUSB0 9600
  • զրոյացնել վերականգնումը attiny85- ը, որը միացնում է RESET քորոցը (pin1) GND- ին (ընդամենը մի պահ), ողջույնի հաղորդագրությունը պետք է ցուցադրվի էկրանի պատուհանում
  • Շարունակեք ուղարկել միայնակ «x» նշաններ (առանց փոխադրման-հետադարձման, առանց տողերի հոսքի) մինչև ճշգրտման ավարտը
  • ինչ -որ տեղ նշեք ստուգաչափման արժեքը (OSCCAL = 0x): Սա այն արժեքն է, որը ձեզ հարկավոր կլինի հայտարարելու վերջնական ուրվագծերի վրա

Քայլ 10: Վերծանեք ձեր հեռակա կոճակները

Այժմ ժամանակն է վերծանել մեր հեռակառավարման կոճակները և դրանք վերագրել համակարգչի որոշակի առանցքային հարվածներին: Դա անելու համար հետևեք հետևյալ քայլերին.

  • ընտրեք «ATtiny85 @ 16MHz (ներքին PLL; 4.3V BOD) տախտակը, եթե բյուրեղ չեք օգտագործում», հակառակ դեպքում `ATtiny85 @ 16 MHz (արտաքին բյուրեղ; 4.3 V BOD), այնուհետև այրեք այն
  • բեռնել ուրվագիծը ՝
  • Եթե դուք չեք օգտագործում բյուրեղ, ապա մեկնաբանեք OSCCAL փոփոխական պարունակող տողը և նշանակեք այն այն արժեքին, որը գտել եք ժամացույցի ճշգրտումը կատարելիս:
  • Ենթադրում եմ, որ սենսորը միացված է ինչպես նկարագրված է նախկինում, հակառակ դեպքում միացրեք այն
  • Ես նաև ենթադրում եմ, որ FT232RL սերիալը usb ադապտերին միացված է, հակառակ դեպքում միացրեք այն
  • զրոյացնել attiny85- ը, որը միացնում է RESET քորոցը (pin1) GND- ին (ընդամենը մի պահ)
  • բազմիցս հարվածել հեռակառավարման վահանակի կոճակներին և ստուգել էկրանի պատուհանը, անհրաժեշտ է յուրաքանչյուր գրառման համար նշել վերջին թիվը, յուրաքանչյուր կոճակ կարող է առաջացնել 2 տարբեր թվեր

Օրինակ:

ՍՏԵՎԵԼ Է D44 3396 ԸՆԴՈՆԵԼ Է 544 1348

3396 -ը և 1348 -ը նշեք այն կոճակի հետ, որը դուք պարզապես սեղմել եք, ապա դուք պետք է որոշեք, թե ինչ եք ուզում անել այդ կոճակի հետ: Օրինակ, ես կարող եմ ցանկանալ, որ այդ կոճակը ուղարկի «Volume up» մուլտիմեդիա ստեղնաշարի կոդը, այնուհետև պետք է գտնեմ այդ հիմնական կոդի ID- ն: Դա անելու համար ներբեռնեք PDF- ը ՝

Ուշադրություն դարձրեք «Ստեղնաշար/ստեղնաշարի էջ» բաժին 53 -ին և օգտագործեք «Օգտագործման ID» (դեկտեմբեր) սյունակի թվերը `ձեր հեռակառավարման կոճակները ստեղնաշարի կոդերին կապելու համար: Մեր օրինակում մենք կարող ենք տեսնել, որ «Ձայնի բարձրացման» հիմնական կոդը `128:

Խմբագրեք ֆայլը UsbKeyboard.h ֆայլը UsbKeyboard գրադարանի ներսում, v-usb փաթեթից, որը մենք տեղադրել էինք նախկինում և ավելացնել գոյություն ունեցող սահմանումներին, եթե այն արդեն չկա:

#սահմանեք KEY_VOL_UP 128

Երբ մենք ավարտենք մեր բոլոր հեռավոր/կոճակները և ֆայլում բոլոր սահմանումները UsbKeyboard.h պատրաստ են, մենք կարող ենք անցնել վերջին քայլին:

Քայլ 11: Վերջնական ուրվագիծը բեռնելը և լավագույնի հույսը:

Բեռնում է վերջնական ուրվագիծը և հուսով լավագույնի համար
Բեռնում է վերջնական ուրվագիծը և հուսով լավագույնի համար
Բեռնում է վերջնական ուրվագիծը և հուսով լավագույնի համար
Բեռնում է վերջնական ուրվագիծը և հուսով լավագույնի համար

Այժմ մենք ունենք բոլոր հեռակա կոճակները վերծանված, UsbKeyboard.h ֆայլը լցված է մեր հիմնաբառերով, այնպես որ այժմ մենք կարող ենք բեռնել arduino IDE- ի վերջնական ուրվագիծը հետևյալից.

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

Այս ֆայլը ճշգրիտ ֆայլն է, որն ես օգտագործում եմ իմ ընդունիչի համար, և այն աշխատում է 2 տարբեր հեռակառավարման վահանակների վրա, ուստի ակնհայտ է, որ անհրաժեշտ է այն թարմացնել ՝ ձեր հեռակառավարման վահանակների հետ աշխատելու համար:

Եթե դուք չեք օգտագործում բյուրեղ, ապա մեկնաբանեք OSCCAL փոփոխական պարունակող տողը և նշանակեք այն այն արժեքին, որը գտել եք ժամացույցի ճշգրտումը կատարելիս:

Ուշադրություն դարձրեք, որ օղակի գործառույթում կան այսպիսի բազմաթիվ հայտարարություններ.

եթե (results.value == 3405 || results.value == 1357) {// սլաքը դեպի վեր

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

}

Դուք պետք է ստեղծեք ձեր սեփական հայտարարությունները ՝ մեկ կոճակի վրա ձեր հեռակառավարման վահանակում: «Եթե» վիճակում դուք պետք է տեղադրեք արդյունքները: գնահատեք այն արժեքները, որոնք գտել եք ձեր հեռակառավարման վահանակի վերծանումը, և որպես UsbKeyboard.sendKeyStroke մեթոդի փաստարկ ՝ պետք է UsbKeyboard.h ֆայլի մեջ դնել արդեն սահմանված հիմնաբառերից մեկը:

«Եթե (lastStroke! = Results.value)» պայմանն անհրաժեշտ է, քանի որ որոշ հեռակառավարման վահանակներ մեկ հարվածը երկու անգամ ուղարկում են նույնը, և դա կանխում է երկրորդ հարվածը: Ես լիովին վստահ չեմ, և դա կարող է կախված լինել ձեր հեռակառավարման վահանակում տեղադրված IR արձանագրությունից (ես իրականում IR արձանագրությունների մասնագետ չեմ), բայց իմ հեռակառավարման վահանակների իմ փորձի համաձայն, յուրաքանչյուր կոճակ կարող է արտադրել 2 տարբեր կոդեր և երբ սեղմում և պահում ես կոճակը, այն ուղարկում է նույն ծածկագիրը, բայց եթե նորից սեղմում ես, այն ուղարկում է մյուսը: Այսպիսով, թվում է, թե կոդերն ուղարկվում են այլընտրանքային եղանակով, ես ենթադրում եմ, որ դա ստանդարտ ռեժիմ է `իմանալ, թե քանի անգամ եք իսկապես սեղմել կոճակը:

Լավ, մենք գրեթե ավարտված ենք, պարզապես վերբեռնեք վերջնական ուրվագիծը, միացրեք այն ԱՀ -ին և տեսեք, թե ինչպես է այն ընթանում:

Այս քայլի համար ավելի լավ է, եթե arduino- ն և USB- ը միացնեք սերիական ադապտերին և միայն դրանից հետո միացրեք USB- ը ձեր համակարգչի պորտին (եթե ինչ -որ բան սխալ առաջանա, ձեր սխեման կարգաբերելը ավելի պարզ կլինի):

Եթե ամեն ինչ լավ է աշխատել, երբ բացում եք տերմինալը և ուղարկում dmesg հրամանը, ապա պետք է տեսնեք այս քայլի առաջին պատկերի նման մի բան: Եթե խնդիրներ կային, դուք պետք է ունենաք սխալներ, ինչպես երկրորդ պատկերում հայտնաբերվածները, և դուք պետք է սկսեք կարգաբերել ձեր սխեման և/կամ ծրագրակազմը: Սկզբնական սխալների աղբյուրներից մեկը USB հանգույցն էր, որը չէր աշխատի իմ IR ընդունիչի հետ (մյուսները, սակայն, աշխատում էին)… ուստի ավելի լավ է, որ այս վերջին քայլին IR ընդունիչը միացնել անմիջապես ձեր համակարգչի պորտին: Հնարավոր է, որ դժվար լինի գտնել սխալներ, բայց վերջում, ինչպես և դուք, դուք շատ բան կսովորեք, և վճարելու գինը արժե այն, վստահեցնում եմ ձեզ:

Այսքանը, մարդիկ, ինձ տեղեկացրեք, եթե այս ուսուցանման մեջ որևէ սխալ նկատե՞ք և վայելեք ձեր բոլորովին նոր IR USB ընդունիչը:

Խորհուրդ ենք տալիս: